@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 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/theme-context.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n useContext,\n useEffect,\n useRef,\n useState,\n ReactNode,\n useCallback,\n} from 'react';\nimport { Sun, Moon, Monitor } from 'lucide-react';\nimport { usePathname } from '@withpotter/lib/use-pathname';\nimport {\n DESKTOP_QUERY,\n LIGHT_SURFACE,\n isDesktopWindow,\n rootThemeFor,\n shellLightFor,\n themeForPath,\n} from './theme-policy';\nimport { ViewSwitch, type ViewOption } from '@withpotter/ui-kit/view-switch';\n\ntype Theme = 'light' | 'dark' | 'system';\ntype ResolvedTheme = 'light' | 'dark';\nexport type ThemeMode = 'dark' | 'light' | 'full-light';\n\ninterface ThemeContextType {\n theme: Theme;\n resolvedTheme: ResolvedTheme;\n /**\n * The desktop dashboard's content card should be light. The page root stays\n * dark there, so the sidebar and everything that opens over the page do too;\n * see `rootThemeFor`.\n */\n shellLight: boolean;\n /**\n * The three looks of the desktop dashboard: all dark; a light card on a dark\n * frame; and everything light. `cycleThemeMode` steps through them.\n */\n themeMode: ThemeMode;\n cycleThemeMode: () => void;\n /** Go straight to one of the three looks. */\n setThemeMode: (mode: ThemeMode) => void;\n setTheme: (theme: Theme) => void;\n toggleTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nconst STORAGE_KEY = 'potter-theme';\n/** `light` when the frame goes light with the card. Read by the pre-paint script. */\nconst FRAME_KEY = 'potter-theme-frame';\n\n/**\n * Fallback theme when the visitor has no stored preference. A box can pin its\n * default via NEXT_PUBLIC_BOX_DEFAULT_THEME (light | dark | system), inlined by\n * Next at build time. Defaults to 'dark' when unset or invalid. Users can\n * still toggle — their choice is persisted and always wins over this default.\n */\nconst DEFAULT_THEME: Theme = (() => {\n const v = (process.env.NEXT_PUBLIC_BOX_DEFAULT_THEME ?? '').toLowerCase();\n return v === 'light' || v === 'dark' || v === 'system'\n ? (v as Theme)\n : 'dark';\n})();\n\nfunction getSystemTheme(): ResolvedTheme {\n if (typeof window === 'undefined') return 'light';\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n}\n\n/**\n * Switching look repaints every surface at once, but each one has its own\n * colour transition (0.12s here, 0.2s there), so the page used to flicker as\n * they landed at different times. Transitions are switched off for the frame\n * the look changes in, then restored.\n */\nfunction withoutTransitions(change: () => void) {\n const style = document.createElement('style');\n style.textContent =\n '*,*::before,*::after{transition:none !important;animation-duration:0s !important}';\n document.head.appendChild(style);\n change();\n // Force the new styles to be computed with transitions off before lifting.\n void window.getComputedStyle(document.documentElement).opacity;\n requestAnimationFrame(() => requestAnimationFrame(() => style.remove()));\n}\n\nexport function ThemeProvider({ children }: { children: ReactNode }) {\n const pathname = usePathname();\n // Dark is the default; an explicitly stored choice still wins. These\n // seeds must match the pre-paint script in app/layout.tsx.\n const [theme, setThemeState] = useState<Theme>('dark');\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>('dark');\n const [mounted, setMounted] = useState(false);\n /* Whether this is a large screen. A ref as well as state, because\n `applyTheme` is called from event handlers and must read the current value\n without being re-created every time the window crosses the breakpoint. */\n const [desktop, setDesktop] = useState(false);\n const desktopRef = useRef(false);\n const [frameLight, setFrameLight] = useState(false);\n const frameLightRef = useRef(false);\n\n // Apply theme to document\n const applyTheme = useCallback((resolved: ResolvedTheme) => {\n const root = document.documentElement;\n /* On a large dashboard screen the root is dark whatever was chosen, and\n the setting only decides whether the content card is light. */\n const applied = rootThemeFor(\n resolved,\n window.location.pathname,\n desktopRef.current,\n frameLightRef.current,\n );\n root.classList.remove('light', 'dark');\n root.classList.add(applied);\n root.style.colorScheme = applied;\n /* Say on the root when the card is light, so CSS can give everything that\n opens over it (dialogs, menus, toasts) the same light; see globals.css. */\n if (\n shellLightFor(\n resolved,\n window.location.pathname,\n desktopRef.current,\n frameLightRef.current,\n )\n ) {\n root.dataset.shellLight = 'true';\n } else {\n delete root.dataset.shellLight;\n }\n }, []);\n\n // Set theme and persist\n const setTheme = useCallback(\n (newTheme: Theme) => {\n setThemeState(newTheme);\n localStorage.setItem(STORAGE_KEY, newTheme);\n const resolved = themeForPath(newTheme, getSystemTheme(), pathname);\n applyTheme(resolved);\n setResolvedTheme(resolved);\n },\n [applyTheme, pathname],\n );\n\n // Toggle between light and dark\n const toggleTheme = useCallback(() => {\n const newTheme = resolvedTheme === 'light' ? 'dark' : 'light';\n setTheme(newTheme);\n }, [resolvedTheme, setTheme]);\n\n const themeMode: ThemeMode =\n resolvedTheme === 'dark' ? 'dark' : frameLight ? 'full-light' : 'light';\n\n const setThemeMode = useCallback(\n (next: ThemeMode) => {\n withoutTransitions(() => {\n const frame = next === 'full-light';\n frameLightRef.current = frame;\n setFrameLight(frame);\n localStorage.setItem(FRAME_KEY, frame ? 'light' : 'dark');\n setTheme(next === 'dark' ? 'dark' : 'light');\n });\n },\n [setTheme],\n );\n\n // Dark → light card on a dark frame → everything light → dark.\n const cycleThemeMode = useCallback(() => {\n setThemeMode(\n themeMode === 'dark'\n ? 'light'\n : themeMode === 'light'\n ? 'full-light'\n : 'dark',\n );\n }, [themeMode, setThemeMode]);\n\n // Initialize theme on mount - use layout effect to avoid flash\n useEffect(() => {\n // Read stored theme synchronously during initial render\n const stored = localStorage.getItem(STORAGE_KEY) as Theme | null;\n const initialTheme = stored ?? DEFAULT_THEME;\n const path = window.location.pathname;\n frameLightRef.current = localStorage.getItem(FRAME_KEY) === 'light';\n desktopRef.current = isDesktopWindow(\n window.matchMedia(DESKTOP_QUERY).matches,\n window.self !== window.top,\n );\n // Apply theme immediately to avoid flash\n const resolvedInitialTheme = themeForPath(\n initialTheme,\n getSystemTheme(),\n path,\n );\n applyTheme(resolvedInitialTheme);\n\n // Then update React state\n // Using a microtask to batch state updates\n queueMicrotask(() => {\n setThemeState(initialTheme);\n setResolvedTheme(resolvedInitialTheme);\n setDesktop(desktopRef.current);\n setFrameLight(frameLightRef.current);\n setMounted(true);\n });\n }, [applyTheme]);\n\n /* Crossing the breakpoint (a window resized, a tablet turned) swaps between\n the phone's arrangement and the desktop's, so the root is re-applied. */\n useEffect(() => {\n const query = window.matchMedia(DESKTOP_QUERY);\n const onChange = (event: MediaQueryListEvent) => {\n const isDesktop = isDesktopWindow(\n event.matches,\n window.self !== window.top,\n );\n desktopRef.current = isDesktop;\n setDesktop(isDesktop);\n applyTheme(themeForPath(theme, getSystemTheme(), pathname));\n };\n query.addEventListener('change', onChange);\n return () => query.removeEventListener('change', onChange);\n }, [theme, pathname, applyTheme]);\n\n // Navigation must restore the current preference, never a palette captured\n // by an entry screen before the merchant changed their setting.\n useEffect(() => {\n if (!mounted) return;\n const resolved = themeForPath(theme, getSystemTheme(), pathname);\n applyTheme(resolved);\n let active = true;\n queueMicrotask(() => {\n if (active) setResolvedTheme(resolved);\n });\n return () => {\n active = false;\n };\n }, [mounted, theme, pathname, applyTheme]);\n\n // Listen for system theme changes\n useEffect(() => {\n if (theme !== 'system') return;\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = () => {\n const resolved = themeForPath(theme, getSystemTheme(), pathname);\n applyTheme(resolved);\n setResolvedTheme(resolved);\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [theme, pathname, applyTheme]);\n\n // Always wrap in provider, but hide visually until mounted to prevent flash\n return (\n <ThemeContext.Provider\n value={{\n theme,\n resolvedTheme,\n shellLight:\n mounted &&\n shellLightFor(resolvedTheme, pathname, desktop, frameLight),\n themeMode,\n cycleThemeMode,\n setThemeMode,\n setTheme,\n toggleTheme,\n }}\n >\n <div style={mounted ? undefined : { visibility: 'hidden' }}>\n {children}\n </div>\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n}\n\n/**\n * Three-way display control: Light / Dark / System. Reflects the chosen\n * SETTING (so \"System\" stays selectable and visible), not the resolved theme.\n *\n * `ViewSwitch`, because that is what this always was: one set re-drawn, a\n * recessed track with the chosen segment lifted out of it. It had been a\n * hand-rolled copy in `shell.css` — same shape, but the lifted chip carried\n * `rgba(0, 0, 0, 0.08)`, frozen in light theme on a control whose whole job is\n * switching to dark, and its icons were 15px, either side of the scale.\n */\nconst THEME_SEGMENTS: ViewOption<Theme>[] = [\n { value: 'light', label: 'Light', icon: Sun },\n { value: 'dark', label: 'Dark', icon: Moon },\n { value: 'system', label: 'System', icon: Monitor },\n];\n\nexport function ThemeSegmented({ className }: { className?: string } = {}) {\n const { theme, setTheme } = useTheme();\n return (\n <ViewSwitch\n options={THEME_SEGMENTS}\n value={theme}\n onChange={setTheme}\n size=\"comfortable\"\n aria-label=\"Theme\"\n className={className}\n />\n );\n}\n\nconst THEME_HINT = 'Light or dark theme';\n\n/**\n * Theme toggle. By default a bare icon button, as before.\n *\n * `hint` says what the button is for, because an icon alone was not found:\n * - 'label' — the words sit beside the icon, always visible. Use where there is room.\n * - 'tooltip' — the words appear under the button on hover, keyboard focus, and\n * after a tap. Use in a tight icon row.\n */\nexport function ThemeToggle({\n className = '',\n hint = 'none',\n}: {\n className?: string;\n hint?: 'none' | 'label' | 'tooltip';\n}) {\n const { resolvedTheme, toggleTheme } = useTheme();\n const button = (\n <ThemeToggleButton\n className={className}\n resolvedTheme={resolvedTheme}\n onToggle={toggleTheme}\n showLabel={hint === 'label'}\n />\n );\n\n if (hint !== 'tooltip') return button;\n\n // The button's aria-label already names it for screen readers, so the\n // tooltip is for sighted users only.\n return (\n <span className=\"group relative inline-flex\">\n {button}\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute right-0 top-full z-50 mt-1 hidden whitespace-nowrap rounded-md border border-[var(--border-default)] bg-[var(--bg-base)] px-2 py-1 text-xs text-[var(--text-secondary)] group-hover:block group-focus-within:block\"\n >\n {THEME_HINT}\n </span>\n </span>\n );\n}\n\nfunction ThemeToggleButton({\n className,\n resolvedTheme,\n onToggle,\n showLabel,\n}: {\n className: string;\n resolvedTheme: ResolvedTheme;\n onToggle: () => void;\n showLabel: boolean;\n}) {\n const next = resolvedTheme === 'light' ? 'dark' : 'light';\n\n return (\n <button\n type=\"button\"\n onClick={onToggle}\n className={`\n ${showLabel ? 'inline-flex items-center gap-2 text-sm' : ''}\n p-2 rounded-md transition-colors\n text-[var(--text-tertiary)] hover:text-[var(--text-secondary)] hover:bg-[var(--interactive-active)]\n dark:text-[var(--text-muted)] dark:hover:text-[var(--text-secondary)] dark:hover:bg-[var(--text-primary)]\n ${className}\n `}\n aria-label={\n showLabel\n ? `${THEME_HINT}: switch to ${next}`\n : `Switch to ${next} mode`\n }\n >\n {resolvedTheme === 'dark' ? (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ) : (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path d=\"M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z\" />\n </svg>\n )}\n {showLabel && <span>{THEME_HINT}</span>}\n </button>\n );\n}\n\n/**\n * Whether the desktop dashboard's content card is light, for anything that\n * needs to follow it. Unlike `useTheme` it does not throw outside the provider\n * (a popup rendered somewhere the provider does not reach): it says false.\n */\nexport function useShellLight(): boolean {\n return useContext(ThemeContext)?.shellLight ?? false;\n}\n\n/**\n * The class that makes a popup light while the desktop card is. Menus, selects\n * and panels mount on the body, outside the card, so they would otherwise\n * inherit the dark root and float over a white page as dark boxes. Dialogs,\n * menus and toasts are also covered by one rule in globals.css keyed on the\n * root, so this is for the popups that style themselves.\n */\nexport function useLightSurface(): string {\n return useShellLight() ? LIGHT_SURFACE : '';\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export type ThemePreference = 'light' | 'dark' | 'system';
|
|
2
|
+
export type ResolvedTheme = 'light' | 'dark';
|
|
3
|
+
export declare function isDarkEntryPath(path: string): boolean;
|
|
4
|
+
export declare function themeForPath(preference: ThemePreference, systemTheme: ResolvedTheme, path: string): ResolvedTheme;
|
|
5
|
+
/** The classes that make a subtree light on a dark page (see `.mb-force-light`). */
|
|
6
|
+
export declare const LIGHT_SURFACE = "mb-force-light text-[var(--text-primary)]";
|
|
7
|
+
/**
|
|
8
|
+
* A window inside a frame (the settings window is a page in an iframe) is not
|
|
9
|
+
* "the desktop dashboard", whatever its width: the frame around it is what is
|
|
10
|
+
* dark, and the page inside follows the setting. Saying so here keeps that from
|
|
11
|
+
* depending on the frame happening to be narrower than the breakpoint.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isDesktopWindow(matchesQuery: boolean, framed: boolean): boolean;
|
|
14
|
+
/** The `lg` breakpoint: where the dashboard stops being the phone shell. */
|
|
15
|
+
export declare const DESKTOP_QUERY = "(min-width: 1024px)";
|
|
16
|
+
export declare function isDashboardPath(path: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* THE DESKTOP DASHBOARD HAS A DARK FRAME AND A CONTENT CARD THAT FOLLOWS THE
|
|
19
|
+
* SETTING.
|
|
20
|
+
*
|
|
21
|
+
* On a large screen the sidebar, the ground around the card and everything that
|
|
22
|
+
* opens over the page (dialogs, menus, the settings window, toasts) stay dark
|
|
23
|
+
* whatever was chosen; the light setting turns the content card light and
|
|
24
|
+
* nothing else. It is the phone's arrangement (a dark frame around a light
|
|
25
|
+
* sheet), with the setting deciding whether the sheet is light.
|
|
26
|
+
*
|
|
27
|
+
* So for those screens the page root is always dark, and `shellLightFor` says
|
|
28
|
+
* whether the card on it should be light. Everywhere else, and on a phone, the
|
|
29
|
+
* root follows the setting as it always did.
|
|
30
|
+
*/
|
|
31
|
+
export declare function rootThemeFor(resolved: ResolvedTheme, path: string, desktop: boolean, frameLight?: boolean): ResolvedTheme;
|
|
32
|
+
export declare function shellLightFor(resolved: ResolvedTheme, path: string, desktop: boolean, frameLight?: boolean): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* FULL LIGHT: the frame goes light too.
|
|
35
|
+
*
|
|
36
|
+
* The arrangement above is the default for a light setting: a light card on a
|
|
37
|
+
* dark frame. Some people want the whole screen light, sidebar and everything
|
|
38
|
+
* that opens over the page included, so `frameLight` lets the root follow the
|
|
39
|
+
* setting on the desktop dashboard instead of staying dark. It only means
|
|
40
|
+
* anything when the setting is light.
|
|
41
|
+
*/
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
function isDarkEntryPath(path) {
|
|
2
|
+
return path === "/login" || path === "/onboarding" || path.startsWith("/onboarding/");
|
|
3
|
+
}
|
|
4
|
+
function themeForPath(preference, systemTheme, path) {
|
|
5
|
+
if (isDarkEntryPath(path)) return "dark";
|
|
6
|
+
return preference === "system" ? systemTheme : preference;
|
|
7
|
+
}
|
|
8
|
+
const LIGHT_SURFACE = "mb-force-light text-[var(--text-primary)]";
|
|
9
|
+
function isDesktopWindow(matchesQuery, framed) {
|
|
10
|
+
return matchesQuery && !framed;
|
|
11
|
+
}
|
|
12
|
+
const DESKTOP_QUERY = "(min-width: 1024px)";
|
|
13
|
+
function isDashboardPath(path) {
|
|
14
|
+
return path === "/dashboard" || path.startsWith("/dashboard/");
|
|
15
|
+
}
|
|
16
|
+
function rootThemeFor(resolved, path, desktop, frameLight = false) {
|
|
17
|
+
return desktop && isDashboardPath(path) && !frameLight ? "dark" : resolved;
|
|
18
|
+
}
|
|
19
|
+
function shellLightFor(resolved, path, desktop, frameLight = false) {
|
|
20
|
+
return desktop && isDashboardPath(path) && resolved === "light" && !frameLight;
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
DESKTOP_QUERY,
|
|
24
|
+
LIGHT_SURFACE,
|
|
25
|
+
isDarkEntryPath,
|
|
26
|
+
isDashboardPath,
|
|
27
|
+
isDesktopWindow,
|
|
28
|
+
rootThemeFor,
|
|
29
|
+
shellLightFor,
|
|
30
|
+
themeForPath
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=theme-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/theme-policy.ts"],"sourcesContent":["export type ThemePreference = 'light' | 'dark' | 'system';\nexport type ResolvedTheme = 'light' | 'dark';\n\nexport function isDarkEntryPath(path: string): boolean {\n return (\n path === '/login' ||\n path === '/onboarding' ||\n path.startsWith('/onboarding/')\n );\n}\n\nexport function themeForPath(\n preference: ThemePreference,\n systemTheme: ResolvedTheme,\n path: string,\n): ResolvedTheme {\n if (isDarkEntryPath(path)) return 'dark';\n return preference === 'system' ? systemTheme : preference;\n}\n\n/** The classes that make a subtree light on a dark page (see `.mb-force-light`). */\nexport const LIGHT_SURFACE = 'mb-force-light text-[var(--text-primary)]';\n\n/**\n * A window inside a frame (the settings window is a page in an iframe) is not\n * \"the desktop dashboard\", whatever its width: the frame around it is what is\n * dark, and the page inside follows the setting. Saying so here keeps that from\n * depending on the frame happening to be narrower than the breakpoint.\n */\nexport function isDesktopWindow(\n matchesQuery: boolean,\n framed: boolean,\n): boolean {\n return matchesQuery && !framed;\n}\n\n/** The `lg` breakpoint: where the dashboard stops being the phone shell. */\nexport const DESKTOP_QUERY = '(min-width: 1024px)';\n\nexport function isDashboardPath(path: string): boolean {\n return path === '/dashboard' || path.startsWith('/dashboard/');\n}\n\n/**\n * THE DESKTOP DASHBOARD HAS A DARK FRAME AND A CONTENT CARD THAT FOLLOWS THE\n * SETTING.\n *\n * On a large screen the sidebar, the ground around the card and everything that\n * opens over the page (dialogs, menus, the settings window, toasts) stay dark\n * whatever was chosen; the light setting turns the content card light and\n * nothing else. It is the phone's arrangement (a dark frame around a light\n * sheet), with the setting deciding whether the sheet is light.\n *\n * So for those screens the page root is always dark, and `shellLightFor` says\n * whether the card on it should be light. Everywhere else, and on a phone, the\n * root follows the setting as it always did.\n */\nexport function rootThemeFor(\n resolved: ResolvedTheme,\n path: string,\n desktop: boolean,\n frameLight = false,\n): ResolvedTheme {\n return desktop && isDashboardPath(path) && !frameLight ? 'dark' : resolved;\n}\n\nexport function shellLightFor(\n resolved: ResolvedTheme,\n path: string,\n desktop: boolean,\n frameLight = false,\n): boolean {\n return (\n desktop && isDashboardPath(path) && resolved === 'light' && !frameLight\n );\n}\n\n/**\n * FULL LIGHT: the frame goes light too.\n *\n * The arrangement above is the default for a light setting: a light card on a\n * dark frame. Some people want the whole screen light, sidebar and everything\n * that opens over the page included, so `frameLight` lets the root follow the\n * setting on the desktop dashboard instead of staying dark. It only means\n * anything when the setting is light.\n */\n"],"mappings":"AAGO,SAAS,gBAAgB,MAAuB;AACrD,SACE,SAAS,YACT,SAAS,iBACT,KAAK,WAAW,cAAc;AAElC;AAEO,SAAS,aACd,YACA,aACA,MACe;AACf,MAAI,gBAAgB,IAAI,EAAG,QAAO;AAClC,SAAO,eAAe,WAAW,cAAc;AACjD;AAGO,MAAM,gBAAgB;AAQtB,SAAS,gBACd,cACA,QACS;AACT,SAAO,gBAAgB,CAAC;AAC1B;AAGO,MAAM,gBAAgB;AAEtB,SAAS,gBAAgB,MAAuB;AACrD,SAAO,SAAS,gBAAgB,KAAK,WAAW,aAAa;AAC/D;AAgBO,SAAS,aACd,UACA,MACA,SACA,aAAa,OACE;AACf,SAAO,WAAW,gBAAgB,IAAI,KAAK,CAAC,aAAa,SAAS;AACpE;AAEO,SAAS,cACd,UACA,MACA,SACA,aAAa,OACJ;AACT,SACE,WAAW,gBAAgB,IAAI,KAAK,aAAa,WAAW,CAAC;AAEjE;","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { BookingItem, TicketItem } from '@withpotter/lib/api/types';
|
|
2
|
+
type TicketCodeCarrier = Pick<TicketItem, 'ticketCode'> | null | undefined;
|
|
3
|
+
type BookingCodeCarrier = Pick<BookingItem, 'ticketCode' | 'quantity'> | null | undefined;
|
|
4
|
+
/**
|
|
5
|
+
* A ticket code the rest of the app can rely on.
|
|
6
|
+
*
|
|
7
|
+
* Codes arrive from two places today: the ticket row itself, and the booking
|
|
8
|
+
* record for older or single-ticket flows. The second is only safe to use when
|
|
9
|
+
* one code really can stand for the booking.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveTicketCode(input: {
|
|
12
|
+
ticket?: TicketCodeCarrier;
|
|
13
|
+
booking?: BookingCodeCarrier;
|
|
14
|
+
}): string | null;
|
|
15
|
+
export declare function normaliseTicketCode(value: string | null | undefined): string | null;
|
|
16
|
+
export declare function buildTicketCheckInPath(ticketCode: string): string;
|
|
17
|
+
export declare function buildCustomerTicketPath(tenantSlug: string, ticketCode: string): string;
|
|
18
|
+
export declare function buildTicketCheckInUrl(origin: string, ticketCode: string): string;
|
|
19
|
+
export declare function findTicketByCode(tickets: TicketItem[], ticketCode: string, booking?: BookingCodeCarrier): TicketItem | null;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
function resolveTicketCode(input) {
|
|
2
|
+
const ticketCode = normaliseTicketCode(input.ticket?.ticketCode);
|
|
3
|
+
if (ticketCode) return ticketCode;
|
|
4
|
+
const bookingCode = normaliseTicketCode(input.booking?.ticketCode);
|
|
5
|
+
if (!bookingCode) return null;
|
|
6
|
+
const quantity = input.booking?.quantity;
|
|
7
|
+
return quantity == null || quantity <= 1 ? bookingCode : null;
|
|
8
|
+
}
|
|
9
|
+
function normaliseTicketCode(value) {
|
|
10
|
+
if (typeof value !== "string") return null;
|
|
11
|
+
const trimmed = value.trim();
|
|
12
|
+
return trimmed ? trimmed : null;
|
|
13
|
+
}
|
|
14
|
+
function buildTicketCheckInPath(ticketCode) {
|
|
15
|
+
return `/check-in/t/${encodeURIComponent(ticketCode)}`;
|
|
16
|
+
}
|
|
17
|
+
function buildCustomerTicketPath(tenantSlug, ticketCode) {
|
|
18
|
+
return `/tickets/${encodeURIComponent(tenantSlug)}/${encodeURIComponent(ticketCode)}`;
|
|
19
|
+
}
|
|
20
|
+
function buildTicketCheckInUrl(origin, ticketCode) {
|
|
21
|
+
return new URL(buildTicketCheckInPath(ticketCode), origin).toString();
|
|
22
|
+
}
|
|
23
|
+
function findTicketByCode(tickets, ticketCode, booking) {
|
|
24
|
+
const normalisedTarget = normaliseTicketCode(ticketCode);
|
|
25
|
+
if (!normalisedTarget) return null;
|
|
26
|
+
const exact = tickets.find(
|
|
27
|
+
(ticket) => resolveTicketCode({ ticket, booking }) === normalisedTarget
|
|
28
|
+
);
|
|
29
|
+
return exact ?? null;
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
buildCustomerTicketPath,
|
|
33
|
+
buildTicketCheckInPath,
|
|
34
|
+
buildTicketCheckInUrl,
|
|
35
|
+
findTicketByCode,
|
|
36
|
+
normaliseTicketCode,
|
|
37
|
+
resolveTicketCode
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=ticket-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ticket-access.ts"],"sourcesContent":["import type { BookingItem, TicketItem } from '@withpotter/lib/api/types';\n\ntype TicketCodeCarrier = Pick<TicketItem, 'ticketCode'> | null | undefined;\ntype BookingCodeCarrier =\n Pick<BookingItem, 'ticketCode' | 'quantity'> | null | undefined;\n\n/**\n * A ticket code the rest of the app can rely on.\n *\n * Codes arrive from two places today: the ticket row itself, and the booking\n * record for older or single-ticket flows. The second is only safe to use when\n * one code really can stand for the booking.\n */\nexport function resolveTicketCode(input: {\n ticket?: TicketCodeCarrier;\n booking?: BookingCodeCarrier;\n}): string | null {\n const ticketCode = normaliseTicketCode(input.ticket?.ticketCode);\n if (ticketCode) return ticketCode;\n\n const bookingCode = normaliseTicketCode(input.booking?.ticketCode);\n if (!bookingCode) return null;\n\n const quantity = input.booking?.quantity;\n return quantity == null || quantity <= 1 ? bookingCode : null;\n}\n\nexport function normaliseTicketCode(\n value: string | null | undefined,\n): string | null {\n if (typeof value !== 'string') return null;\n const trimmed = value.trim();\n return trimmed ? trimmed : null;\n}\n\nexport function buildTicketCheckInPath(ticketCode: string): string {\n return `/check-in/t/${encodeURIComponent(ticketCode)}`;\n}\n\nexport function buildCustomerTicketPath(\n tenantSlug: string,\n ticketCode: string,\n): string {\n return `/tickets/${encodeURIComponent(tenantSlug)}/${encodeURIComponent(ticketCode)}`;\n}\n\nexport function buildTicketCheckInUrl(\n origin: string,\n ticketCode: string,\n): string {\n return new URL(buildTicketCheckInPath(ticketCode), origin).toString();\n}\n\nexport function findTicketByCode(\n tickets: TicketItem[],\n ticketCode: string,\n booking?: BookingCodeCarrier,\n): TicketItem | null {\n const normalisedTarget = normaliseTicketCode(ticketCode);\n if (!normalisedTarget) return null;\n\n const exact = tickets.find(\n (ticket) => resolveTicketCode({ ticket, booking }) === normalisedTarget,\n );\n return exact ?? null;\n}\n"],"mappings":"AAaO,SAAS,kBAAkB,OAGhB;AAChB,QAAM,aAAa,oBAAoB,MAAM,QAAQ,UAAU;AAC/D,MAAI,WAAY,QAAO;AAEvB,QAAM,cAAc,oBAAoB,MAAM,SAAS,UAAU;AACjE,MAAI,CAAC,YAAa,QAAO;AAEzB,QAAM,WAAW,MAAM,SAAS;AAChC,SAAO,YAAY,QAAQ,YAAY,IAAI,cAAc;AAC3D;AAEO,SAAS,oBACd,OACe;AACf,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,UAAU,MAAM,KAAK;AAC3B,SAAO,UAAU,UAAU;AAC7B;AAEO,SAAS,uBAAuB,YAA4B;AACjE,SAAO,eAAe,mBAAmB,UAAU,CAAC;AACtD;AAEO,SAAS,wBACd,YACA,YACQ;AACR,SAAO,YAAY,mBAAmB,UAAU,CAAC,IAAI,mBAAmB,UAAU,CAAC;AACrF;AAEO,SAAS,sBACd,QACA,YACQ;AACR,SAAO,IAAI,IAAI,uBAAuB,UAAU,GAAG,MAAM,EAAE,SAAS;AACtE;AAEO,SAAS,iBACd,SACA,YACA,SACmB;AACnB,QAAM,mBAAmB,oBAAoB,UAAU;AACvD,MAAI,CAAC,iBAAkB,QAAO;AAE9B,QAAM,QAAQ,QAAQ;AAAA,IACpB,CAAC,WAAW,kBAAkB,EAAE,QAAQ,QAAQ,CAAC,MAAM;AAAA,EACzD;AACA,SAAO,SAAS;AAClB;","names":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeline copy/messaging for the dashboard activity feed.
|
|
3
|
+
*
|
|
4
|
+
* All user-facing strings for the "What's happening" timeline live here
|
|
5
|
+
* so we can iterate on tone, A/B test, or add i18n without touching
|
|
6
|
+
* component logic.
|
|
7
|
+
*
|
|
8
|
+
* Each generator receives contextual data and returns { title, description }.
|
|
9
|
+
*/
|
|
10
|
+
export declare function productAdded(itemTitle: string, contentType: string): {
|
|
11
|
+
title: string;
|
|
12
|
+
description: string;
|
|
13
|
+
emoji: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function productUpdated(itemTitle: string, contentType: string): {
|
|
16
|
+
title: string;
|
|
17
|
+
description: string;
|
|
18
|
+
emoji: string;
|
|
19
|
+
};
|
|
20
|
+
export declare function orderPlaced(customerName: string, orderNumber: string, formattedTotal: string, industryKey?: string | null, isPaid?: boolean): {
|
|
21
|
+
title: string;
|
|
22
|
+
description: string;
|
|
23
|
+
emoji: string;
|
|
24
|
+
};
|
|
25
|
+
export declare function orderCompleted(customerName: string, orderNumber: string): {
|
|
26
|
+
title: string;
|
|
27
|
+
description: string;
|
|
28
|
+
emoji: string;
|
|
29
|
+
};
|
|
30
|
+
export declare function memberSignup(name: string, email: string, industryKey?: string | null): {
|
|
31
|
+
title: string;
|
|
32
|
+
description: string;
|
|
33
|
+
emoji: string;
|
|
34
|
+
};
|
|
35
|
+
export declare function memberConverted(name: string, email: string): {
|
|
36
|
+
title: string;
|
|
37
|
+
description: string;
|
|
38
|
+
emoji: string;
|
|
39
|
+
};
|
|
40
|
+
export declare function subscriptionCreated(name: string, planName: string, formattedAmount: string): {
|
|
41
|
+
title: string;
|
|
42
|
+
description: string;
|
|
43
|
+
emoji: string;
|
|
44
|
+
};
|
|
45
|
+
export declare function invoicePaid(customerName: string, invoiceNumber: string, formattedAmount: string): {
|
|
46
|
+
title: string;
|
|
47
|
+
description: string;
|
|
48
|
+
emoji: string;
|
|
49
|
+
};
|
|
50
|
+
export declare function invoiceSent(customerName: string, invoiceNumber: string, formattedAmount: string): {
|
|
51
|
+
title: string;
|
|
52
|
+
description: string;
|
|
53
|
+
emoji: string;
|
|
54
|
+
};
|
|
55
|
+
export declare const emptyTimeline: {
|
|
56
|
+
heading: string;
|
|
57
|
+
subtext: string;
|
|
58
|
+
};
|
|
59
|
+
export declare function getEmptyTimeline(industryKey: string | null): {
|
|
60
|
+
heading: string;
|
|
61
|
+
subtext: string;
|
|
62
|
+
};
|
|
63
|
+
export declare const feedHeader = "What\u2019s happening";
|
|
64
|
+
export declare function showMoreLabel(remaining: number): string;
|
|
65
|
+
export declare const showLessLabel = "Show less";
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
function productAdded(itemTitle, contentType) {
|
|
2
|
+
return {
|
|
3
|
+
title: `${itemTitle} is now live`,
|
|
4
|
+
description: `New ${contentType.toLowerCase()} added to your store`,
|
|
5
|
+
emoji: "\u{1F4E6}"
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
function productUpdated(itemTitle, contentType) {
|
|
9
|
+
return {
|
|
10
|
+
title: `${itemTitle} was updated`,
|
|
11
|
+
description: `You updated your ${contentType.toLowerCase()}`,
|
|
12
|
+
emoji: "\u{1F504}"
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
const ORDER_VERB = {
|
|
16
|
+
food: "ordered",
|
|
17
|
+
hospitality: "booked",
|
|
18
|
+
events: "purchased tickets for"
|
|
19
|
+
};
|
|
20
|
+
const UNPAID_ORDER_VERB = {
|
|
21
|
+
events: "started a ticket order for"
|
|
22
|
+
};
|
|
23
|
+
function orderPlaced(customerName, orderNumber, formattedTotal, industryKey, isPaid = true) {
|
|
24
|
+
const verbs = isPaid ? ORDER_VERB : { ...ORDER_VERB, ...UNPAID_ORDER_VERB };
|
|
25
|
+
const verb = industryKey && verbs[industryKey] || "placed an order";
|
|
26
|
+
return {
|
|
27
|
+
title: `${customerName} ${verb}`,
|
|
28
|
+
description: `${orderNumber} \u2022 ${formattedTotal}`,
|
|
29
|
+
emoji: "\u{1F6CD}\uFE0F"
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function orderCompleted(customerName, orderNumber) {
|
|
33
|
+
return {
|
|
34
|
+
title: `${orderNumber} is fulfilled`,
|
|
35
|
+
description: `${customerName}'s order is complete`,
|
|
36
|
+
emoji: "\u2705"
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const BOOKABLE_INDUSTRIES = /* @__PURE__ */ new Set([
|
|
40
|
+
"beauty",
|
|
41
|
+
"wellness",
|
|
42
|
+
"professional",
|
|
43
|
+
"fitness"
|
|
44
|
+
]);
|
|
45
|
+
function memberSignup(name, email, industryKey) {
|
|
46
|
+
const verb = industryKey && BOOKABLE_INDUSTRIES.has(industryKey) ? "became a client" : "joined your store";
|
|
47
|
+
return {
|
|
48
|
+
title: `${name} ${verb}`,
|
|
49
|
+
description: email,
|
|
50
|
+
emoji: "\u{1F464}"
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function memberConverted(name, email) {
|
|
54
|
+
return {
|
|
55
|
+
title: `${name} just became a customer`,
|
|
56
|
+
description: `Converted from guest \xB7 ${email}`,
|
|
57
|
+
emoji: "\u{1F389}"
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function subscriptionCreated(name, planName, formattedAmount) {
|
|
61
|
+
return {
|
|
62
|
+
title: `${name} subscribed to ${planName}`,
|
|
63
|
+
description: `Recurring revenue: ${formattedAmount}/month`,
|
|
64
|
+
emoji: "\u{1F4B3}"
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function invoicePaid(customerName, invoiceNumber, formattedAmount) {
|
|
68
|
+
return {
|
|
69
|
+
title: `${customerName} paid invoice ${invoiceNumber}`,
|
|
70
|
+
description: `Payment received: ${formattedAmount}`,
|
|
71
|
+
emoji: "\u{1F4B0}"
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function invoiceSent(customerName, invoiceNumber, formattedAmount) {
|
|
75
|
+
return {
|
|
76
|
+
title: `Invoice ${invoiceNumber} sent to ${customerName}`,
|
|
77
|
+
description: `Amount due: ${formattedAmount}`,
|
|
78
|
+
emoji: "\u{1F4E8}"
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const INDUSTRY_EMPTY_TIMELINE = {
|
|
82
|
+
retail: {
|
|
83
|
+
heading: "Nothing here yet",
|
|
84
|
+
subtext: "Orders, signups, and updates will show up here as they happen."
|
|
85
|
+
},
|
|
86
|
+
beauty: {
|
|
87
|
+
heading: "Nothing here yet",
|
|
88
|
+
subtext: "Appointments, bookings, and client activity will show up here."
|
|
89
|
+
},
|
|
90
|
+
wellness: {
|
|
91
|
+
heading: "Nothing here yet",
|
|
92
|
+
subtext: "Appointments, bookings, and client activity will show up here."
|
|
93
|
+
},
|
|
94
|
+
hospitality: {
|
|
95
|
+
heading: "Nothing here yet",
|
|
96
|
+
subtext: "Reservations, guest check-ins, and updates will show up here."
|
|
97
|
+
},
|
|
98
|
+
food: {
|
|
99
|
+
heading: "Nothing here yet",
|
|
100
|
+
subtext: "Orders and customer activity will show up here as they happen."
|
|
101
|
+
},
|
|
102
|
+
fitness: {
|
|
103
|
+
heading: "Nothing here yet",
|
|
104
|
+
subtext: "Class sign-ups, member activity, and updates will show up here."
|
|
105
|
+
},
|
|
106
|
+
professional: {
|
|
107
|
+
heading: "Nothing here yet",
|
|
108
|
+
subtext: "Appointments, bookings, and client activity will show up here."
|
|
109
|
+
},
|
|
110
|
+
creative: {
|
|
111
|
+
heading: "Nothing here yet",
|
|
112
|
+
subtext: "Bookings, orders, and client activity will show up here."
|
|
113
|
+
},
|
|
114
|
+
events: {
|
|
115
|
+
heading: "Nothing here yet",
|
|
116
|
+
subtext: "Ticket sales, attendee activity, and event updates will show up here."
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
const emptyTimeline = {
|
|
120
|
+
heading: "Nothing here yet",
|
|
121
|
+
subtext: "Orders, signups, and updates will show up here as they happen."
|
|
122
|
+
};
|
|
123
|
+
function getEmptyTimeline(industryKey) {
|
|
124
|
+
if (industryKey && INDUSTRY_EMPTY_TIMELINE[industryKey]) {
|
|
125
|
+
return INDUSTRY_EMPTY_TIMELINE[industryKey];
|
|
126
|
+
}
|
|
127
|
+
return emptyTimeline;
|
|
128
|
+
}
|
|
129
|
+
const feedHeader = "What\u2019s happening";
|
|
130
|
+
function showMoreLabel(remaining) {
|
|
131
|
+
return `Show ${remaining} more`;
|
|
132
|
+
}
|
|
133
|
+
const showLessLabel = "Show less";
|
|
134
|
+
export {
|
|
135
|
+
emptyTimeline,
|
|
136
|
+
feedHeader,
|
|
137
|
+
getEmptyTimeline,
|
|
138
|
+
invoicePaid,
|
|
139
|
+
invoiceSent,
|
|
140
|
+
memberConverted,
|
|
141
|
+
memberSignup,
|
|
142
|
+
orderCompleted,
|
|
143
|
+
orderPlaced,
|
|
144
|
+
productAdded,
|
|
145
|
+
productUpdated,
|
|
146
|
+
showLessLabel,
|
|
147
|
+
showMoreLabel,
|
|
148
|
+
subscriptionCreated
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=timeline-copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/timeline-copy.ts"],"sourcesContent":["/**\n * Timeline copy/messaging for the dashboard activity feed.\n *\n * All user-facing strings for the \"What's happening\" timeline live here\n * so we can iterate on tone, A/B test, or add i18n without touching\n * component logic.\n *\n * Each generator receives contextual data and returns { title, description }.\n */\n\n// ─── Product / Content ──────────────────────────────────────────────\n\nexport function productAdded(itemTitle: string, contentType: string) {\n return {\n title: `${itemTitle} is now live`,\n description: `New ${contentType.toLowerCase()} added to your store`,\n emoji: '📦',\n };\n}\n\nexport function productUpdated(itemTitle: string, contentType: string) {\n return {\n title: `${itemTitle} was updated`,\n description: `You updated your ${contentType.toLowerCase()}`,\n emoji: '🔄',\n };\n}\n\n// ─── Orders ─────────────────────────────────────────────────────────\n\nconst ORDER_VERB: Record<string, string> = {\n food: 'ordered',\n hospitality: 'booked',\n events: 'purchased tickets for',\n};\n\n// A ticket is only bought once it is paid. An unpaid ticket order is a checkout\n// that was started, and calling it a purchase puts money on the feed that is\n// not in the wallet.\nconst UNPAID_ORDER_VERB: Record<string, string> = {\n events: 'started a ticket order for',\n};\n\nexport function orderPlaced(\n customerName: string,\n orderNumber: string,\n formattedTotal: string,\n industryKey?: string | null,\n isPaid = true,\n) {\n const verbs = isPaid ? ORDER_VERB : { ...ORDER_VERB, ...UNPAID_ORDER_VERB };\n const verb = (industryKey && verbs[industryKey]) || 'placed an order';\n return {\n title: `${customerName} ${verb}`,\n description: `${orderNumber} • ${formattedTotal}`,\n emoji: '🛍️',\n };\n}\n\nexport function orderCompleted(customerName: string, orderNumber: string) {\n return {\n title: `${orderNumber} is fulfilled`,\n description: `${customerName}'s order is complete`,\n emoji: '✅',\n };\n}\n\n// ─── Customers / Members ────────────────────────────────────────────\n\nconst BOOKABLE_INDUSTRIES = new Set([\n 'beauty',\n 'wellness',\n 'professional',\n 'fitness',\n]);\n\nexport function memberSignup(\n name: string,\n email: string,\n industryKey?: string | null,\n) {\n const verb =\n industryKey && BOOKABLE_INDUSTRIES.has(industryKey)\n ? 'became a client'\n : 'joined your store';\n return {\n title: `${name} ${verb}`,\n description: email,\n emoji: '👤',\n };\n}\n\nexport function memberConverted(name: string, email: string) {\n return {\n title: `${name} just became a customer`,\n description: `Converted from guest · ${email}`,\n emoji: '🎉',\n };\n}\n\n// ─── Subscriptions ──────────────────────────────────────────────────\n\nexport function subscriptionCreated(\n name: string,\n planName: string,\n formattedAmount: string,\n) {\n return {\n title: `${name} subscribed to ${planName}`,\n description: `Recurring revenue: ${formattedAmount}/month`,\n emoji: '💳',\n };\n}\n\n// ─── Invoices ───────────────────────────────────────────────────────\n\nexport function invoicePaid(\n customerName: string,\n invoiceNumber: string,\n formattedAmount: string,\n) {\n return {\n title: `${customerName} paid invoice ${invoiceNumber}`,\n description: `Payment received: ${formattedAmount}`,\n emoji: '💰',\n };\n}\n\nexport function invoiceSent(\n customerName: string,\n invoiceNumber: string,\n formattedAmount: string,\n) {\n return {\n title: `Invoice ${invoiceNumber} sent to ${customerName}`,\n description: `Amount due: ${formattedAmount}`,\n emoji: '📨',\n };\n}\n\n// ─── Empty state ────────────────────────────────────────────────────\n\nconst INDUSTRY_EMPTY_TIMELINE: Record<\n string,\n { heading: string; subtext: string }\n> = {\n retail: {\n heading: 'Nothing here yet',\n subtext: 'Orders, signups, and updates will show up here as they happen.',\n },\n beauty: {\n heading: 'Nothing here yet',\n subtext: 'Appointments, bookings, and client activity will show up here.',\n },\n wellness: {\n heading: 'Nothing here yet',\n subtext: 'Appointments, bookings, and client activity will show up here.',\n },\n hospitality: {\n heading: 'Nothing here yet',\n subtext: 'Reservations, guest check-ins, and updates will show up here.',\n },\n food: {\n heading: 'Nothing here yet',\n subtext: 'Orders and customer activity will show up here as they happen.',\n },\n fitness: {\n heading: 'Nothing here yet',\n subtext: 'Class sign-ups, member activity, and updates will show up here.',\n },\n professional: {\n heading: 'Nothing here yet',\n subtext: 'Appointments, bookings, and client activity will show up here.',\n },\n creative: {\n heading: 'Nothing here yet',\n subtext: 'Bookings, orders, and client activity will show up here.',\n },\n events: {\n heading: 'Nothing here yet',\n subtext:\n 'Ticket sales, attendee activity, and event updates will show up here.',\n },\n};\n\nexport const emptyTimeline = {\n heading: 'Nothing here yet',\n subtext: 'Orders, signups, and updates will show up here as they happen.',\n};\n\nexport function getEmptyTimeline(industryKey: string | null) {\n if (industryKey && INDUSTRY_EMPTY_TIMELINE[industryKey]) {\n return INDUSTRY_EMPTY_TIMELINE[industryKey];\n }\n return emptyTimeline;\n}\n\n// ─── Feed chrome ────────────────────────────────────────────────────\n\n// Curly apostrophe, matching every other apostrophe in the product's copy.\nexport const feedHeader = 'What’s happening';\n\nexport function showMoreLabel(remaining: number) {\n return `Show ${remaining} more`;\n}\n\nexport const showLessLabel = 'Show less';\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The query-string arithmetic behind `useUrlState`, kept out of the hook so it
|
|
3
|
+
* can be tested without a renderer.
|
|
4
|
+
*
|
|
5
|
+
* The interesting part is `bufferFor`. Everything else is bookkeeping.
|
|
6
|
+
*/
|
|
7
|
+
export declare function bufferFor(pathname: string, current: string,
|
|
8
|
+
/** Injected in tests so the drain can be observed rather than waited on. */
|
|
9
|
+
schedule?: (fn: () => void) => void): URLSearchParams;
|
|
10
|
+
/** Only for tests, which share module state between cases. */
|
|
11
|
+
export declare function resetBuffers(): void;
|
|
12
|
+
/**
|
|
13
|
+
* Apply a patch, dropping anything that carries no information.
|
|
14
|
+
*
|
|
15
|
+
* A value equal to its default is removed rather than written, so clearing a
|
|
16
|
+
* filter does not leave `?status=` behind and the address stops growing a tail
|
|
17
|
+
* of empty params on every interaction.
|
|
18
|
+
*/
|
|
19
|
+
export declare function writeParams(params: URLSearchParams, patch: Record<string, string | undefined>, defaults: Record<string, string>): URLSearchParams;
|
|
20
|
+
/** Drop the given keys, leaving anything else on the URL untouched. */
|
|
21
|
+
export declare function clearParams(params: URLSearchParams, keys: string[]): URLSearchParams;
|
|
22
|
+
/** The state a query string means, with defaults filled in for absent keys. */
|
|
23
|
+
export declare function readParams<T extends Record<string, string>>(query: string, defaults: T): T;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const pending = /* @__PURE__ */ new Map();
|
|
2
|
+
function bufferFor(pathname, current, schedule = queueMicrotask) {
|
|
3
|
+
const open = pending.get(pathname);
|
|
4
|
+
if (open) return open;
|
|
5
|
+
const fresh = new URLSearchParams(current);
|
|
6
|
+
pending.set(pathname, fresh);
|
|
7
|
+
schedule(() => pending.delete(pathname));
|
|
8
|
+
return fresh;
|
|
9
|
+
}
|
|
10
|
+
function resetBuffers() {
|
|
11
|
+
pending.clear();
|
|
12
|
+
}
|
|
13
|
+
function writeParams(params, patch, defaults) {
|
|
14
|
+
for (const [key, value] of Object.entries(patch)) {
|
|
15
|
+
if (value == null || value === "" || value === defaults[key]) {
|
|
16
|
+
params.delete(key);
|
|
17
|
+
} else {
|
|
18
|
+
params.set(key, String(value));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return params;
|
|
22
|
+
}
|
|
23
|
+
function clearParams(params, keys) {
|
|
24
|
+
for (const key of keys) params.delete(key);
|
|
25
|
+
return params;
|
|
26
|
+
}
|
|
27
|
+
function readParams(query, defaults) {
|
|
28
|
+
const params = new URLSearchParams(query);
|
|
29
|
+
const next = { ...defaults };
|
|
30
|
+
for (const key of Object.keys(defaults)) {
|
|
31
|
+
const raw = params.get(String(key));
|
|
32
|
+
if (raw != null) next[key] = raw;
|
|
33
|
+
}
|
|
34
|
+
return next;
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
bufferFor,
|
|
38
|
+
clearParams,
|
|
39
|
+
readParams,
|
|
40
|
+
resetBuffers,
|
|
41
|
+
writeParams
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=url-params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/url-params.ts"],"sourcesContent":["/**\n * The query-string arithmetic behind `useUrlState`, kept out of the hook so it\n * can be tested without a renderer.\n *\n * The interesting part is `bufferFor`. Everything else is bookkeeping.\n */\n\n/**\n * Writes made in one tick, composed.\n *\n * `useSearchParams` hands every caller the query string as it was at the last\n * render, so two writes in one handler both build on the same stale snapshot\n * and the second silently drops the first.\n *\n * That is not theoretical. The money rail's Refunds press sets a date window,\n * clears the cash filter, sets the type to refund and then changes the lens,\n * one after another in a single handler. Only the lens would survive, so the\n * merchant would press Refunds and be handed the unfiltered ledger under a\n * figure it could not add up to: the exact bug that moving filters into the URL\n * was meant to end.\n *\n * So writes accumulate into one buffer per path until the tick drains. Keyed by\n * pathname because two routes are two addresses, and a buffer outliving a\n * navigation would write one page's filters onto another.\n */\nconst pending = new Map<string, URLSearchParams>();\n\nexport function bufferFor(\n pathname: string,\n current: string,\n /** Injected in tests so the drain can be observed rather than waited on. */\n schedule: (fn: () => void) => void = queueMicrotask,\n): URLSearchParams {\n const open = pending.get(pathname);\n if (open) return open;\n const fresh = new URLSearchParams(current);\n pending.set(pathname, fresh);\n // Drains after the handler that opened it, so the next interaction starts\n // from whatever the URL actually became.\n schedule(() => pending.delete(pathname));\n return fresh;\n}\n\n/** Only for tests, which share module state between cases. */\nexport function resetBuffers(): void {\n pending.clear();\n}\n\n/**\n * Apply a patch, dropping anything that carries no information.\n *\n * A value equal to its default is removed rather than written, so clearing a\n * filter does not leave `?status=` behind and the address stops growing a tail\n * of empty params on every interaction.\n */\nexport function writeParams(\n params: URLSearchParams,\n patch: Record<string, string | undefined>,\n defaults: Record<string, string>,\n): URLSearchParams {\n for (const [key, value] of Object.entries(patch)) {\n if (value == null || value === '' || value === defaults[key]) {\n params.delete(key);\n } else {\n params.set(key, String(value));\n }\n }\n return params;\n}\n\n/** Drop the given keys, leaving anything else on the URL untouched. */\nexport function clearParams(\n params: URLSearchParams,\n keys: string[],\n): URLSearchParams {\n for (const key of keys) params.delete(key);\n return params;\n}\n\n/** The state a query string means, with defaults filled in for absent keys. */\nexport function readParams<T extends Record<string, string>>(\n query: string,\n defaults: T,\n): T {\n const params = new URLSearchParams(query);\n const next = { ...defaults };\n for (const key of Object.keys(defaults) as (keyof T)[]) {\n const raw = params.get(String(key));\n if (raw != null) next[key] = raw as T[keyof T];\n }\n return next;\n}\n"],"mappings":"AAyBA,MAAM,UAAU,oBAAI,IAA6B;AAE1C,SAAS,UACd,UACA,SAEA,WAAqC,gBACpB;AACjB,QAAM,OAAO,QAAQ,IAAI,QAAQ;AACjC,MAAI,KAAM,QAAO;AACjB,QAAM,QAAQ,IAAI,gBAAgB,OAAO;AACzC,UAAQ,IAAI,UAAU,KAAK;AAG3B,WAAS,MAAM,QAAQ,OAAO,QAAQ,CAAC;AACvC,SAAO;AACT;AAGO,SAAS,eAAqB;AACnC,UAAQ,MAAM;AAChB;AASO,SAAS,YACd,QACA,OACA,UACiB;AACjB,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,SAAS,QAAQ,UAAU,MAAM,UAAU,SAAS,GAAG,GAAG;AAC5D,aAAO,OAAO,GAAG;AAAA,IACnB,OAAO;AACL,aAAO,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA,IAC/B;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,YACd,QACA,MACiB;AACjB,aAAW,OAAO,KAAM,QAAO,OAAO,GAAG;AACzC,SAAO;AACT;AAGO,SAAS,WACd,OACA,UACG;AACH,QAAM,SAAS,IAAI,gBAAgB,KAAK;AACxC,QAAM,OAAO,EAAE,GAAG,SAAS;AAC3B,aAAW,OAAO,OAAO,KAAK,QAAQ,GAAkB;AACtD,UAAM,MAAM,OAAO,IAAI,OAAO,GAAG,CAAC;AAClC,QAAI,OAAO,KAAM,MAAK,GAAG,IAAI;AAAA,EAC/B;AACA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type BehaviorDefinition } from './api';
|
|
2
|
+
interface UseBehaviorsReturn {
|
|
3
|
+
behaviors: BehaviorDefinition[];
|
|
4
|
+
isLoading: boolean;
|
|
5
|
+
error: string | null;
|
|
6
|
+
getBehavior: (id: string) => BehaviorDefinition | undefined;
|
|
7
|
+
refetch: () => Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Hook to fetch and access the behavior registry
|
|
11
|
+
*/
|
|
12
|
+
export declare function useBehaviors(): UseBehaviorsReturn;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState, useEffect, useCallback } from "react";
|
|
3
|
+
import { behaviorsApi } from "./api";
|
|
4
|
+
function useBehaviors() {
|
|
5
|
+
const [behaviors, setBehaviors] = useState([]);
|
|
6
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
7
|
+
const [error, setError] = useState(null);
|
|
8
|
+
const fetchBehaviors = useCallback(async () => {
|
|
9
|
+
try {
|
|
10
|
+
setIsLoading(true);
|
|
11
|
+
setError(null);
|
|
12
|
+
const response = await behaviorsApi.list();
|
|
13
|
+
setBehaviors(response.data);
|
|
14
|
+
} catch (err) {
|
|
15
|
+
setError(
|
|
16
|
+
err instanceof Error ? err.message : "Failed to fetch behaviors"
|
|
17
|
+
);
|
|
18
|
+
console.error("[useBehaviors] Error fetching behaviors:", err);
|
|
19
|
+
} finally {
|
|
20
|
+
setIsLoading(false);
|
|
21
|
+
}
|
|
22
|
+
}, []);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
fetchBehaviors();
|
|
25
|
+
}, [fetchBehaviors]);
|
|
26
|
+
const getBehavior = useCallback(
|
|
27
|
+
(id) => behaviors.find((b) => b.id === id),
|
|
28
|
+
[behaviors]
|
|
29
|
+
);
|
|
30
|
+
return {
|
|
31
|
+
behaviors,
|
|
32
|
+
isLoading,
|
|
33
|
+
error,
|
|
34
|
+
getBehavior,
|
|
35
|
+
refetch: fetchBehaviors
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
useBehaviors
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=use-behaviors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/use-behaviors.ts"],"sourcesContent":["'use client';\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { behaviorsApi, type BehaviorDefinition } from './api';\n\ninterface UseBehaviorsReturn {\n behaviors: BehaviorDefinition[];\n isLoading: boolean;\n error: string | null;\n getBehavior: (id: string) => BehaviorDefinition | undefined;\n refetch: () => Promise<void>;\n}\n\n/**\n * Hook to fetch and access the behavior registry\n */\nexport function useBehaviors(): UseBehaviorsReturn {\n const [behaviors, setBehaviors] = useState<BehaviorDefinition[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const fetchBehaviors = useCallback(async () => {\n try {\n setIsLoading(true);\n setError(null);\n const response = await behaviorsApi.list();\n setBehaviors(response.data);\n } catch (err) {\n setError(\n err instanceof Error ? err.message : 'Failed to fetch behaviors',\n );\n console.error('[useBehaviors] Error fetching behaviors:', err);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n fetchBehaviors();\n }, [fetchBehaviors]);\n\n const getBehavior = useCallback(\n (id: string) => behaviors.find((b) => b.id === id),\n [behaviors],\n );\n\n return {\n behaviors,\n isLoading,\n error,\n getBehavior,\n refetch: fetchBehaviors,\n };\n}\n"],"mappings":";AAEA,SAAS,UAAU,WAAW,mBAAmB;AACjD,SAAS,oBAA6C;AAa/C,SAAS,eAAmC;AACjD,QAAM,CAAC,WAAW,YAAY,IAAI,SAA+B,CAAC,CAAC;AACnE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAC/C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AAEtD,QAAM,iBAAiB,YAAY,YAAY;AAC7C,QAAI;AACF,mBAAa,IAAI;AACjB,eAAS,IAAI;AACb,YAAM,WAAW,MAAM,aAAa,KAAK;AACzC,mBAAa,SAAS,IAAI;AAAA,IAC5B,SAAS,KAAK;AACZ;AAAA,QACE,eAAe,QAAQ,IAAI,UAAU;AAAA,MACvC;AACA,cAAQ,MAAM,4CAA4C,GAAG;AAAA,IAC/D,UAAE;AACA,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,mBAAe;AAAA,EACjB,GAAG,CAAC,cAAc,CAAC;AAEnB,QAAM,cAAc;AAAA,IAClB,CAAC,OAAe,UAAU,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE;AAAA,IACjD,CAAC,SAAS;AAAA,EACZ;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { BusinessLocation, CreateBusinessLocationData, UpdateBusinessLocationData } from '@withpotter/lib/api/types';
|
|
2
|
+
/**
|
|
3
|
+
* The business's physical locations, shared by the settings page and the
|
|
4
|
+
* invite dialog.
|
|
5
|
+
*
|
|
6
|
+
* `isMultiSite` is the important one. Almost every merchant runs a single
|
|
7
|
+
* place, and a "Works at" picker on their invite form is a field with one
|
|
8
|
+
* possible answer — pure tax on the common case. Surfaces gate on this flag
|
|
9
|
+
* rather than counting the array themselves, so they can't disagree about
|
|
10
|
+
* when the concept is worth showing.
|
|
11
|
+
*/
|
|
12
|
+
export declare function useBusinessLocations({ enabled }?: {
|
|
13
|
+
enabled?: boolean | undefined;
|
|
14
|
+
}): {
|
|
15
|
+
locations: BusinessLocation[];
|
|
16
|
+
loading: boolean;
|
|
17
|
+
error: string | null;
|
|
18
|
+
/** The backend has no locations service. Not an error; see above. */
|
|
19
|
+
unavailable: boolean;
|
|
20
|
+
/** True once a second location exists. See the note above. */
|
|
21
|
+
isMultiSite: boolean;
|
|
22
|
+
defaultLocation: BusinessLocation;
|
|
23
|
+
create: import("@tanstack/react-query").UseMutationResult<BusinessLocation, Error, CreateBusinessLocationData, unknown>;
|
|
24
|
+
update: import("@tanstack/react-query").UseMutationResult<BusinessLocation, Error, UpdateBusinessLocationData & {
|
|
25
|
+
id: string;
|
|
26
|
+
}, unknown>;
|
|
27
|
+
archive: import("@tanstack/react-query").UseMutationResult<void, Error, string, unknown>;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Render a member's scope as one line.
|
|
31
|
+
*
|
|
32
|
+
* An empty list means every location, which is the state owners and every
|
|
33
|
+
* single-site member are in — so this must never render as "none".
|
|
34
|
+
*/
|
|
35
|
+
export declare function describeScope(locationIds: string[] | undefined, locations: BusinessLocation[]): string;
|