@withpotter/pages-admin 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/admin/_fx/entity-avatar.js +63 -0
- package/dist/admin/_fx/entity-avatar.js.map +1 -0
- package/dist/admin/_fx/index.js +14 -0
- package/dist/admin/_fx/index.js.map +1 -0
- package/dist/admin/_fx/motion.js +59 -0
- package/dist/admin/_fx/motion.js.map +1 -0
- package/dist/admin/_fx/page-transition.js +23 -0
- package/dist/admin/_fx/page-transition.js.map +1 -0
- package/dist/admin/_fx/tones.js +28 -0
- package/dist/admin/_fx/tones.js.map +1 -0
- package/dist/admin/_fx.js +1 -0
- package/dist/admin/_inbox/nav-badge.js +27 -0
- package/dist/admin/_inbox/nav-badge.js.map +1 -0
- package/dist/admin/_inbox/nav-badge.module.css +15 -0
- package/dist/admin/_inbox/use-admin-inbox.js +118 -0
- package/dist/admin/_inbox/use-admin-inbox.js.map +1 -0
- package/dist/admin/_money/business-ledger.js +65 -0
- package/dist/admin/_money/business-ledger.js.map +1 -0
- package/dist/admin/_money/business-picker.js +53 -0
- package/dist/admin/_money/business-picker.js.map +1 -0
- package/dist/admin/_money/cash-errors.js +42 -0
- package/dist/admin/_money/cash-errors.js.map +1 -0
- package/dist/admin/_money/cash-postings.js +93 -0
- package/dist/admin/_money/cash-postings.js.map +1 -0
- package/dist/admin/_money/cash.module.css +128 -0
- package/dist/admin/_money/finder-format.js +42 -0
- package/dist/admin/_money/finder-format.js.map +1 -0
- package/dist/admin/_money/finder-row.js +51 -0
- package/dist/admin/_money/finder-row.js.map +1 -0
- package/dist/admin/_money/format.js +62 -0
- package/dist/admin/_money/format.js.map +1 -0
- package/dist/admin/_money/ledger-activity.js +90 -0
- package/dist/admin/_money/ledger-activity.js.map +1 -0
- package/dist/admin/_money/ledger-balances.js +32 -0
- package/dist/admin/_money/ledger-balances.js.map +1 -0
- package/dist/admin/_money/ledger-body.js +62 -0
- package/dist/admin/_money/ledger-body.js.map +1 -0
- package/dist/admin/_money/ledger-holds.js +70 -0
- package/dist/admin/_money/ledger-holds.js.map +1 -0
- package/dist/admin/_money/ledger-statement.js +120 -0
- package/dist/admin/_money/ledger-statement.js.map +1 -0
- package/dist/admin/_money/ledger.js +94 -0
- package/dist/admin/_money/ledger.js.map +1 -0
- package/dist/admin/_money/ledger.module.css +88 -0
- package/dist/admin/_money/money-section.js +19 -0
- package/dist/admin/_money/money-section.js.map +1 -0
- package/dist/admin/_money/open-as-owner.js +32 -0
- package/dist/admin/_money/open-as-owner.js.map +1 -0
- package/dist/admin/_money/page.module.css +149 -0
- package/dist/admin/_money/permissions.js +46 -0
- package/dist/admin/_money/permissions.js.map +1 -0
- package/dist/admin/_money/proposal-status.js +20 -0
- package/dist/admin/_money/proposal-status.js.map +1 -0
- package/dist/admin/_money/proposal-store.js +65 -0
- package/dist/admin/_money/proposal-store.js.map +1 -0
- package/dist/admin/_money/propose-dialog.js +124 -0
- package/dist/admin/_money/propose-dialog.js.map +1 -0
- package/dist/admin/_money/propose-draft.js +40 -0
- package/dist/admin/_money/propose-draft.js.map +1 -0
- package/dist/admin/_money/propose-fields.js +113 -0
- package/dist/admin/_money/propose-fields.js.map +1 -0
- package/dist/admin/_money/propose-steps.js +73 -0
- package/dist/admin/_money/propose-steps.js.map +1 -0
- package/dist/admin/_money/propose.module.css +105 -0
- package/dist/admin/_money/review-dialog.js +149 -0
- package/dist/admin/_money/review-dialog.js.map +1 -0
- package/dist/admin/_money/review-rules.js +31 -0
- package/dist/admin/_money/review-rules.js.map +1 -0
- package/dist/admin/_money/save-csv.js +12 -0
- package/dist/admin/_money/save-csv.js.map +1 -0
- package/dist/admin/_money/skeleton-rows.js +10 -0
- package/dist/admin/_money/skeleton-rows.js.map +1 -0
- package/dist/admin/_money/statement-export.js +57 -0
- package/dist/admin/_money/statement-export.js.map +1 -0
- package/dist/admin/_money/tenant-param.js +26 -0
- package/dist/admin/_money/tenant-param.js.map +1 -0
- package/dist/admin/_money/use-ledger.js +47 -0
- package/dist/admin/_money/use-ledger.js.map +1 -0
- package/dist/admin/_money/waiting-proposals.js +89 -0
- package/dist/admin/_money/waiting-proposals.js.map +1 -0
- package/dist/admin/_overview/activation-panel.js +55 -0
- package/dist/admin/_overview/activation-panel.js.map +1 -0
- package/dist/admin/_overview/attention-groups.js +83 -0
- package/dist/admin/_overview/attention-groups.js.map +1 -0
- package/dist/admin/_overview/attention-panel.js +58 -0
- package/dist/admin/_overview/attention-panel.js.map +1 -0
- package/dist/admin/_overview/attention.module.css +109 -0
- package/dist/admin/_overview/control-room.js +88 -0
- package/dist/admin/_overview/control-room.js.map +1 -0
- package/dist/admin/_overview/control-room.module.css +20 -0
- package/dist/admin/_overview/figures.module.css +155 -0
- package/dist/admin/_overview/kpi-row.js +77 -0
- package/dist/admin/_overview/kpi-row.js.map +1 -0
- package/dist/admin/_overview/leaders-panel.js +71 -0
- package/dist/admin/_overview/leaders-panel.js.map +1 -0
- package/dist/admin/_overview/overdue-outstanding.js +37 -0
- package/dist/admin/_overview/overdue-outstanding.js.map +1 -0
- package/dist/admin/_overview/portfolio-panel.js +69 -0
- package/dist/admin/_overview/portfolio-panel.js.map +1 -0
- package/dist/admin/_overview/position-panel.js +66 -0
- package/dist/admin/_overview/position-panel.js.map +1 -0
- package/dist/admin/_overview/position.module.css +52 -0
- package/dist/admin/_overview/use-waiting-cases.js +17 -0
- package/dist/admin/_overview/use-waiting-cases.js.map +1 -0
- package/dist/admin/_pos/action-dialog.js +66 -0
- package/dist/admin/_pos/action-dialog.js.map +1 -0
- package/dist/admin/_pos/close-shift-dialog.js +62 -0
- package/dist/admin/_pos/close-shift-dialog.js.map +1 -0
- package/dist/admin/_pos/pos-figures.js +82 -0
- package/dist/admin/_pos/pos-figures.js.map +1 -0
- package/dist/admin/_pos/pos-money.js +14 -0
- package/dist/admin/_pos/pos-money.js.map +1 -0
- package/dist/admin/_pos/pos-parts.js +68 -0
- package/dist/admin/_pos/pos-parts.js.map +1 -0
- package/dist/admin/_pos/pos-rules.js +43 -0
- package/dist/admin/_pos/pos-rules.js.map +1 -0
- package/dist/admin/_pos/pos-words.js +101 -0
- package/dist/admin/_pos/pos-words.js.map +1 -0
- package/dist/admin/_pos/pos.module.css +154 -0
- package/dist/admin/_pos/shift-row.js +107 -0
- package/dist/admin/_pos/shift-row.js.map +1 -0
- package/dist/admin/_pos/shifts-table.js +72 -0
- package/dist/admin/_pos/shifts-table.js.map +1 -0
- package/dist/admin/_pos/terminal-actions.js +104 -0
- package/dist/admin/_pos/terminal-actions.js.map +1 -0
- package/dist/admin/_pos/use-pos-access.js +20 -0
- package/dist/admin/_pos/use-pos-access.js.map +1 -0
- package/dist/admin/_pos/use-pos-period.js +39 -0
- package/dist/admin/_pos/use-pos-period.js.map +1 -0
- package/dist/admin/_pos/use-pos.js +89 -0
- package/dist/admin/_pos/use-pos.js.map +1 -0
- package/dist/admin/_pos/use-tenant-param.js +20 -0
- package/dist/admin/_pos/use-tenant-param.js.map +1 -0
- package/dist/admin/_settings/index.js +28 -0
- package/dist/admin/_settings/index.js.map +1 -0
- package/dist/admin/_settings/live-announcer.js +35 -0
- package/dist/admin/_settings/live-announcer.js.map +1 -0
- package/dist/admin/_settings/schema.js +82 -0
- package/dist/admin/_settings/schema.js.map +1 -0
- package/dist/admin/_settings/store.js +82 -0
- package/dist/admin/_settings/store.js.map +1 -0
- package/dist/admin/_settings/use-apply-preferences.js +38 -0
- package/dist/admin/_settings/use-apply-preferences.js.map +1 -0
- package/dist/admin/_settings/use-start-page.js +20 -0
- package/dist/admin/_settings/use-start-page.js.map +1 -0
- package/dist/admin/_settings.js +1 -0
- package/dist/admin/_shell/admin-brand.js +15 -0
- package/dist/admin/_shell/admin-brand.js.map +1 -0
- package/dist/admin/_shell/brand.module.css +147 -0
- package/dist/admin/_shell/command-palette.js +103 -0
- package/dist/admin/_shell/command-palette.js.map +1 -0
- package/dist/admin/_shell/command-palette.module.css +109 -0
- package/dist/admin/_shell/frame.module.css +92 -0
- package/dist/admin/_shell/inbox-bell.js +74 -0
- package/dist/admin/_shell/inbox-bell.js.map +1 -0
- package/dist/admin/_shell/inbox.module.css +107 -0
- package/dist/admin/_shell/menus.module.css +55 -0
- package/dist/admin/_shell/modules-context.js +17 -0
- package/dist/admin/_shell/modules-context.js.map +1 -0
- package/dist/admin/_shell/nav-config.js +168 -0
- package/dist/admin/_shell/nav-config.js.map +1 -0
- package/dist/admin/_shell/nav-filter.js +45 -0
- package/dist/admin/_shell/nav-filter.js.map +1 -0
- package/dist/admin/_shell/nav-fold.js +14 -0
- package/dist/admin/_shell/nav-fold.js.map +1 -0
- package/dist/admin/_shell/nav-group.js +78 -0
- package/dist/admin/_shell/nav-group.js.map +1 -0
- package/dist/admin/_shell/nav-modules.js +36 -0
- package/dist/admin/_shell/nav-modules.js.map +1 -0
- package/dist/admin/_shell/nav-row.js +62 -0
- package/dist/admin/_shell/nav-row.js.map +1 -0
- package/dist/admin/_shell/seam-toggle.js +26 -0
- package/dist/admin/_shell/seam-toggle.js.map +1 -0
- package/dist/admin/_shell/section-tabs.js +28 -0
- package/dist/admin/_shell/section-tabs.js.map +1 -0
- package/dist/admin/_shell/shell-skeleton.js +30 -0
- package/dist/admin/_shell/shell-skeleton.js.map +1 -0
- package/dist/admin/_shell/shell-skeleton.module.css +57 -0
- package/dist/admin/_shell/sidebar-footer.js +85 -0
- package/dist/admin/_shell/sidebar-footer.js.map +1 -0
- package/dist/admin/_shell/sidebar-footer.module.css +144 -0
- package/dist/admin/_shell/sidebar.js +87 -0
- package/dist/admin/_shell/sidebar.js.map +1 -0
- package/dist/admin/_shell/sidebar.module.css +259 -0
- package/dist/admin/_shell/sign-out.js +14 -0
- package/dist/admin/_shell/sign-out.js.map +1 -0
- package/dist/admin/_shell/system-status-panel.js +100 -0
- package/dist/admin/_shell/system-status-panel.js.map +1 -0
- package/dist/admin/_shell/system-status-panel.module.css +195 -0
- package/dist/admin/_shell/topbar.js +26 -0
- package/dist/admin/_shell/topbar.js.map +1 -0
- package/dist/admin/_shell/topbar.module.css +84 -0
- package/dist/admin/_shell/use-admin-query-defaults.js +18 -0
- package/dist/admin/_shell/use-admin-query-defaults.js.map +1 -0
- package/dist/admin/_shell/use-fluid-hover.js +62 -0
- package/dist/admin/_shell/use-fluid-hover.js.map +1 -0
- package/dist/admin/_shell/use-open-groups.js +64 -0
- package/dist/admin/_shell/use-open-groups.js.map +1 -0
- package/dist/admin/_shell/use-shell-prefs.js +87 -0
- package/dist/admin/_shell/use-shell-prefs.js.map +1 -0
- package/dist/admin/_shell/user-menu.js +80 -0
- package/dist/admin/_shell/user-menu.js.map +1 -0
- package/dist/admin/_ui/admin.css +801 -0
- package/dist/admin/_ui/chart-colors.js +46 -0
- package/dist/admin/_ui/chart-colors.js.map +1 -0
- package/dist/admin/_ui/column-picker.js +77 -0
- package/dist/admin/_ui/column-picker.js.map +1 -0
- package/dist/admin/_ui/country-label.js +42 -0
- package/dist/admin/_ui/country-label.js.map +1 -0
- package/dist/admin/_ui/country-label.module.css +31 -0
- package/dist/admin/_ui/country-text.js +21 -0
- package/dist/admin/_ui/country-text.js.map +1 -0
- package/dist/admin/_ui/currency-filter-model.js +53 -0
- package/dist/admin/_ui/currency-filter-model.js.map +1 -0
- package/dist/admin/_ui/currency-filter.js +64 -0
- package/dist/admin/_ui/currency-filter.js.map +1 -0
- package/dist/admin/_ui/data-table.js +107 -0
- package/dist/admin/_ui/data-table.js.map +1 -0
- package/dist/admin/_ui/donut-chart.js +193 -0
- package/dist/admin/_ui/donut-chart.js.map +1 -0
- package/dist/admin/_ui/drawer.js +82 -0
- package/dist/admin/_ui/drawer.js.map +1 -0
- package/dist/admin/_ui/drawer.module.css +157 -0
- package/dist/admin/_ui/empty-state.js +47 -0
- package/dist/admin/_ui/empty-state.js.map +1 -0
- package/dist/admin/_ui/filter-bar.js +24 -0
- package/dist/admin/_ui/filter-bar.js.map +1 -0
- package/dist/admin/_ui/filter-dates.js +67 -0
- package/dist/admin/_ui/filter-dates.js.map +1 -0
- package/dist/admin/_ui/filters.js +93 -0
- package/dist/admin/_ui/filters.js.map +1 -0
- package/dist/admin/_ui/filters.module.css +88 -0
- package/dist/admin/_ui/index.js +120 -0
- package/dist/admin/_ui/index.js.map +1 -0
- package/dist/admin/_ui/list-card.js +119 -0
- package/dist/admin/_ui/list-card.js.map +1 -0
- package/dist/admin/_ui/list-card.module.css +96 -0
- package/dist/admin/_ui/loading.js +29 -0
- package/dist/admin/_ui/loading.js.map +1 -0
- package/dist/admin/_ui/money-lines.js +19 -0
- package/dist/admin/_ui/money-lines.js.map +1 -0
- package/dist/admin/_ui/money-lines.module.css +4 -0
- package/dist/admin/_ui/money-view.js +43 -0
- package/dist/admin/_ui/money-view.js.map +1 -0
- package/dist/admin/_ui/motion.css +22 -0
- package/dist/admin/_ui/page-header.js +54 -0
- package/dist/admin/_ui/page-header.js.map +1 -0
- package/dist/admin/_ui/page-header.module.css +45 -0
- package/dist/admin/_ui/page-tabs.js +46 -0
- package/dist/admin/_ui/page-tabs.js.map +1 -0
- package/dist/admin/_ui/pagination.js +68 -0
- package/dist/admin/_ui/pagination.js.map +1 -0
- package/dist/admin/_ui/panel.js +38 -0
- package/dist/admin/_ui/panel.js.map +1 -0
- package/dist/admin/_ui/panel.module.css +87 -0
- package/dist/admin/_ui/period-selector.js +81 -0
- package/dist/admin/_ui/period-selector.js.map +1 -0
- package/dist/admin/_ui/period.js +52 -0
- package/dist/admin/_ui/period.js.map +1 -0
- package/dist/admin/_ui/period.module.css +43 -0
- package/dist/admin/_ui/preferences.css +121 -0
- package/dist/admin/_ui/prefs.js +62 -0
- package/dist/admin/_ui/prefs.js.map +1 -0
- package/dist/admin/_ui/skeleton.js +26 -0
- package/dist/admin/_ui/skeleton.js.map +1 -0
- package/dist/admin/_ui/sparkline.js +56 -0
- package/dist/admin/_ui/sparkline.js.map +1 -0
- package/dist/admin/_ui/stat-card.js +85 -0
- package/dist/admin/_ui/stat-card.js.map +1 -0
- package/dist/admin/_ui/styles.js +74 -0
- package/dist/admin/_ui/styles.js.map +1 -0
- package/dist/admin/_ui/tint.css +87 -0
- package/dist/admin/_ui/trend.js +58 -0
- package/dist/admin/_ui/trend.js.map +1 -0
- package/dist/admin/_ui/workspace-tab.js +25 -0
- package/dist/admin/_ui/workspace-tab.js.map +1 -0
- package/dist/admin/_ui.js +1 -0
- package/dist/admin/accounts/account-activity.js +64 -0
- package/dist/admin/accounts/account-activity.js.map +1 -0
- package/dist/admin/accounts/account-activity.module.css +83 -0
- package/dist/admin/accounts/account-panel.js +177 -0
- package/dist/admin/accounts/account-panel.js.map +1 -0
- package/dist/admin/accounts/account-panel.module.css +213 -0
- package/dist/admin/accounts/account-row.js +122 -0
- package/dist/admin/accounts/account-row.js.map +1 -0
- package/dist/admin/accounts/account-sessions.js +70 -0
- package/dist/admin/accounts/account-sessions.js.map +1 -0
- package/dist/admin/accounts/account-sessions.module.css +55 -0
- package/dist/admin/accounts/account-stage-filter.js +29 -0
- package/dist/admin/accounts/account-stage-filter.js.map +1 -0
- package/dist/admin/accounts/account-stage.js +81 -0
- package/dist/admin/accounts/account-stage.js.map +1 -0
- package/dist/admin/accounts/account-vitals.js +46 -0
- package/dist/admin/accounts/account-vitals.js.map +1 -0
- package/dist/admin/accounts/account-workspaces.js +56 -0
- package/dist/admin/accounts/account-workspaces.js.map +1 -0
- package/dist/admin/accounts/accounts-analytics.js +113 -0
- package/dist/admin/accounts/accounts-analytics.js.map +1 -0
- package/dist/admin/accounts/accounts-kpis.js +70 -0
- package/dist/admin/accounts/accounts-kpis.js.map +1 -0
- package/dist/admin/accounts/accounts-table.js +266 -0
- package/dist/admin/accounts/accounts-table.js.map +1 -0
- package/dist/admin/accounts/accounts-workspace.js +85 -0
- package/dist/admin/accounts/accounts-workspace.js.map +1 -0
- package/dist/admin/accounts/hint.js +12 -0
- package/dist/admin/accounts/hint.js.map +1 -0
- package/dist/admin/accounts/owner-session.js +30 -0
- package/dist/admin/accounts/owner-session.js.map +1 -0
- package/dist/admin/accounts/page.js +11 -0
- package/dist/admin/accounts/page.js.map +1 -0
- package/dist/admin/accounts/relative-time.js +28 -0
- package/dist/admin/accounts/relative-time.js.map +1 -0
- package/dist/admin/accounts/rows.module.css +84 -0
- package/dist/admin/accounts/top-accounts.js +56 -0
- package/dist/admin/accounts/top-accounts.js.map +1 -0
- package/dist/admin/accounts/use-account-actions.js +42 -0
- package/dist/admin/accounts/use-account-actions.js.map +1 -0
- package/dist/admin/accounts/use-account-activity.js +37 -0
- package/dist/admin/accounts/use-account-activity.js.map +1 -0
- package/dist/admin/admins/access-dialog.js +130 -0
- package/dist/admin/admins/access-dialog.js.map +1 -0
- package/dist/admin/admins/admin-row.js +74 -0
- package/dist/admin/admins/admin-row.js.map +1 -0
- package/dist/admin/admins/admins-activity.js +28 -0
- package/dist/admin/admins/admins-activity.js.map +1 -0
- package/dist/admin/admins/admins-analytics.js +116 -0
- package/dist/admin/admins/admins-analytics.js.map +1 -0
- package/dist/admin/admins/admins-kpis.js +77 -0
- package/dist/admin/admins/admins-kpis.js.map +1 -0
- package/dist/admin/admins/admins-table.js +75 -0
- package/dist/admin/admins/admins-table.js.map +1 -0
- package/dist/admin/admins/admins-workspace.js +109 -0
- package/dist/admin/admins/admins-workspace.js.map +1 -0
- package/dist/admin/admins/admins.module.css +191 -0
- package/dist/admin/admins/invite-dialog.js +134 -0
- package/dist/admin/admins/invite-dialog.js.map +1 -0
- package/dist/admin/admins/page.js +11 -0
- package/dist/admin/admins/page.js.map +1 -0
- package/dist/admin/admins/recent-activity.js +38 -0
- package/dist/admin/admins/recent-activity.js.map +1 -0
- package/dist/admin/admins/recent-activity.module.css +60 -0
- package/dist/admin/admins/role-choices.js +27 -0
- package/dist/admin/admins/role-choices.js.map +1 -0
- package/dist/admin/admins/secret-field.js +60 -0
- package/dist/admin/admins/secret-field.js.map +1 -0
- package/dist/admin/admins/temp-password-dialog.js +39 -0
- package/dist/admin/admins/temp-password-dialog.js.map +1 -0
- package/dist/admin/admins/use-admin-actions.js +57 -0
- package/dist/admin/admins/use-admin-actions.js.map +1 -0
- package/dist/admin/audit/action-meta.js +26 -0
- package/dist/admin/audit/action-meta.js.map +1 -0
- package/dist/admin/audit/activity-chart.js +117 -0
- package/dist/admin/audit/activity-chart.js.map +1 -0
- package/dist/admin/audit/activity-chart.module.css +44 -0
- package/dist/admin/audit/audit-analytics.js +146 -0
- package/dist/admin/audit/audit-analytics.js.map +1 -0
- package/dist/admin/audit/audit-filters.js +78 -0
- package/dist/admin/audit/audit-filters.js.map +1 -0
- package/dist/admin/audit/audit-log.js +132 -0
- package/dist/admin/audit/audit-log.js.map +1 -0
- package/dist/admin/audit/audit-workspace.js +84 -0
- package/dist/admin/audit/audit-workspace.js.map +1 -0
- package/dist/admin/audit/audit.module.css +135 -0
- package/dist/admin/audit/bar-list.js +27 -0
- package/dist/admin/audit/bar-list.js.map +1 -0
- package/dist/admin/audit/empty-block.js +13 -0
- package/dist/admin/audit/empty-block.js.map +1 -0
- package/dist/admin/audit/format.js +22 -0
- package/dist/admin/audit/format.js.map +1 -0
- package/dist/admin/audit/kpi-brand.module.css +7 -0
- package/dist/admin/audit/load-failed.js +20 -0
- package/dist/admin/audit/load-failed.js.map +1 -0
- package/dist/admin/audit/metric-card.module.css +10 -0
- package/dist/admin/audit/page.js +11 -0
- package/dist/admin/audit/page.js.map +1 -0
- package/dist/admin/audit/page.module.css +12 -0
- package/dist/admin/audit/section-header.js +13 -0
- package/dist/admin/audit/section-header.js.map +1 -0
- package/dist/admin/audit/section-header.module.css +5 -0
- package/dist/admin/audit/status-fill.js +14 -0
- package/dist/admin/audit/status-fill.js.map +1 -0
- package/dist/admin/audit/status-pill.js +52 -0
- package/dist/admin/audit/status-pill.js.map +1 -0
- package/dist/admin/audit/status-pill.module.css +58 -0
- package/dist/admin/audit/tinted.js +17 -0
- package/dist/admin/audit/tinted.js.map +1 -0
- package/dist/admin/audit/use-range.js +16 -0
- package/dist/admin/audit/use-range.js.map +1 -0
- package/dist/admin/audit/when.js +14 -0
- package/dist/admin/audit/when.js.map +1 -0
- package/dist/admin/cash/page.js +184 -0
- package/dist/admin/cash/page.js.map +1 -0
- package/dist/admin/change-password/page.js +164 -0
- package/dist/admin/change-password/page.js.map +1 -0
- package/dist/admin/commerce/commerce-console.js +106 -0
- package/dist/admin/commerce/commerce-console.js.map +1 -0
- package/dist/admin/commerce/commerce-overview.js +102 -0
- package/dist/admin/commerce/commerce-overview.js.map +1 -0
- package/dist/admin/commerce/console.module.css +63 -0
- package/dist/admin/commerce/merchant-meta.js +40 -0
- package/dist/admin/commerce/merchant-meta.js.map +1 -0
- package/dist/admin/commerce/merchant-picker.js +114 -0
- package/dist/admin/commerce/merchant-picker.js.map +1 -0
- package/dist/admin/commerce/merchant-view.js +113 -0
- package/dist/admin/commerce/merchant-view.js.map +1 -0
- package/dist/admin/commerce/overview-kpis.js +100 -0
- package/dist/admin/commerce/overview-kpis.js.map +1 -0
- package/dist/admin/commerce/overview-services.js +40 -0
- package/dist/admin/commerce/overview-services.js.map +1 -0
- package/dist/admin/commerce/overview-top-merchants.js +51 -0
- package/dist/admin/commerce/overview-top-merchants.js.map +1 -0
- package/dist/admin/commerce/overview.module.css +145 -0
- package/dist/admin/commerce/page.js +11 -0
- package/dist/admin/commerce/page.js.map +1 -0
- package/dist/admin/commerce/picker.module.css +98 -0
- package/dist/admin/feedback/answer-case-button.js +30 -0
- package/dist/admin/feedback/answer-case-button.js.map +1 -0
- package/dist/admin/feedback/answers-view.js +87 -0
- package/dist/admin/feedback/answers-view.js.map +1 -0
- package/dist/admin/feedback/category-label.js +12 -0
- package/dist/admin/feedback/category-label.js.map +1 -0
- package/dist/admin/feedback/comment-stream.js +62 -0
- package/dist/admin/feedback/comment-stream.js.map +1 -0
- package/dist/admin/feedback/feedback-access.js +21 -0
- package/dist/admin/feedback/feedback-access.js.map +1 -0
- package/dist/admin/feedback/feedback-detail-drawer.js +95 -0
- package/dist/admin/feedback/feedback-detail-drawer.js.map +1 -0
- package/dist/admin/feedback/feedback-drawer-footer.js +60 -0
- package/dist/admin/feedback/feedback-drawer-footer.js.map +1 -0
- package/dist/admin/feedback/feedback-drawer.module.css +162 -0
- package/dist/admin/feedback/feedback-facts.js +84 -0
- package/dist/admin/feedback/feedback-facts.js.map +1 -0
- package/dist/admin/feedback/feedback-kpis.js +50 -0
- package/dist/admin/feedback/feedback-kpis.js.map +1 -0
- package/dist/admin/feedback/feedback-options.js +49 -0
- package/dist/admin/feedback/feedback-options.js.map +1 -0
- package/dist/admin/feedback/feedback-sentiment.js +45 -0
- package/dist/admin/feedback/feedback-sentiment.js.map +1 -0
- package/dist/admin/feedback/feedback.module.css +136 -0
- package/dist/admin/feedback/new-prompt-button.js +13 -0
- package/dist/admin/feedback/new-prompt-button.js.map +1 -0
- package/dist/admin/feedback/page.js +57 -0
- package/dist/admin/feedback/page.js.map +1 -0
- package/dist/admin/feedback/prompt-audience-fields.js +63 -0
- package/dist/admin/feedback/prompt-audience-fields.js.map +1 -0
- package/dist/admin/feedback/prompt-builder.js +85 -0
- package/dist/admin/feedback/prompt-builder.js.map +1 -0
- package/dist/admin/feedback/prompt-builder.module.css +134 -0
- package/dist/admin/feedback/prompt-delivery-fields.js +134 -0
- package/dist/admin/feedback/prompt-delivery-fields.js.map +1 -0
- package/dist/admin/feedback/prompt-dialog.js +88 -0
- package/dist/admin/feedback/prompt-dialog.js.map +1 -0
- package/dist/admin/feedback/prompt-dialog.module.css +199 -0
- package/dist/admin/feedback/prompt-draft.js +71 -0
- package/dist/admin/feedback/prompt-draft.js.map +1 -0
- package/dist/admin/feedback/prompt-insights.js +120 -0
- package/dist/admin/feedback/prompt-insights.js.map +1 -0
- package/dist/admin/feedback/prompt-operations.js +89 -0
- package/dist/admin/feedback/prompt-operations.js.map +1 -0
- package/dist/admin/feedback/prompt-operations.module.css +128 -0
- package/dist/admin/feedback/prompt-preview.js +71 -0
- package/dist/admin/feedback/prompt-preview.js.map +1 -0
- package/dist/admin/feedback/prompt-preview.module.css +135 -0
- package/dist/admin/feedback/prompt-question-fields.js +83 -0
- package/dist/admin/feedback/prompt-question-fields.js.map +1 -0
- package/dist/admin/feedback/prompt-response-fields.js +103 -0
- package/dist/admin/feedback/prompt-response-fields.js.map +1 -0
- package/dist/admin/feedback/prompt-review.js +80 -0
- package/dist/admin/feedback/prompt-review.js.map +1 -0
- package/dist/admin/feedback/prompt-schedule-field.js +67 -0
- package/dist/admin/feedback/prompt-schedule-field.js.map +1 -0
- package/dist/admin/feedback/prompt-stepper.js +33 -0
- package/dist/admin/feedback/prompt-stepper.js.map +1 -0
- package/dist/admin/feedback/prompt-summary.module.css +39 -0
- package/dist/admin/feedback/prompt-validation.js +48 -0
- package/dist/admin/feedback/prompt-validation.js.map +1 -0
- package/dist/admin/feedback/prompt-wizard.js +147 -0
- package/dist/admin/feedback/prompt-wizard.js.map +1 -0
- package/dist/admin/feedback/prompts-table.js +85 -0
- package/dist/admin/feedback/prompts-table.js.map +1 -0
- package/dist/admin/feedback/prompts-view.js +132 -0
- package/dist/admin/feedback/prompts-view.js.map +1 -0
- package/dist/admin/feedback/response-card.js +78 -0
- package/dist/admin/feedback/response-card.js.map +1 -0
- package/dist/admin/feedback/responses-table.js +132 -0
- package/dist/admin/feedback/responses-table.js.map +1 -0
- package/dist/admin/feedback/responses-view.js +142 -0
- package/dist/admin/feedback/responses-view.js.map +1 -0
- package/dist/admin/feedback/responses.module.css +147 -0
- package/dist/admin/feedback/sentiment-overview.js +103 -0
- package/dist/admin/feedback/sentiment-overview.js.map +1 -0
- package/dist/admin/feedback/sentiment.module.css +150 -0
- package/dist/admin/feedback/use-admin-feedback.js +15 -0
- package/dist/admin/feedback/use-admin-feedback.js.map +1 -0
- package/dist/admin/feedback/use-admin-prompts.js +15 -0
- package/dist/admin/feedback/use-admin-prompts.js.map +1 -0
- package/dist/admin/feedback/use-admin-signals.js +22 -0
- package/dist/admin/feedback/use-admin-signals.js.map +1 -0
- package/dist/admin/feedback/use-open-case.js +53 -0
- package/dist/admin/feedback/use-open-case.js.map +1 -0
- package/dist/admin/feedback/use-prompt-save.js +59 -0
- package/dist/admin/feedback/use-prompt-save.js.map +1 -0
- package/dist/admin/feedback/use-steps.js +45 -0
- package/dist/admin/feedback/use-steps.js.map +1 -0
- package/dist/admin/feedback-signals/_components/comments-panel.js +72 -0
- package/dist/admin/feedback-signals/_components/comments-panel.js.map +1 -0
- package/dist/admin/feedback-signals/_components/health-panel.js +46 -0
- package/dist/admin/feedback-signals/_components/health-panel.js.map +1 -0
- package/dist/admin/feedback-signals/_components/messages-panel.js +96 -0
- package/dist/admin/feedback-signals/_components/messages-panel.js.map +1 -0
- package/dist/admin/feedback-signals/_components/movement.js +27 -0
- package/dist/admin/feedback-signals/_components/movement.js.map +1 -0
- package/dist/admin/feedback-signals/_components/pick-up.js +67 -0
- package/dist/admin/feedback-signals/_components/pick-up.js.map +1 -0
- package/dist/admin/feedback-signals/_components/scores-panel.js +68 -0
- package/dist/admin/feedback-signals/_components/scores-panel.js.map +1 -0
- package/dist/admin/feedback-signals/_components/signals-workspace.js +84 -0
- package/dist/admin/feedback-signals/_components/signals-workspace.js.map +1 -0
- package/dist/admin/feedback-signals/_components/use-feedback-signals.js +51 -0
- package/dist/admin/feedback-signals/_components/use-feedback-signals.js.map +1 -0
- package/dist/admin/feedback-signals/page.js +11 -0
- package/dist/admin/feedback-signals/page.js.map +1 -0
- package/dist/admin/growth-chart-model.js +75 -0
- package/dist/admin/growth-chart-model.js.map +1 -0
- package/dist/admin/growth-chart-parts.js +186 -0
- package/dist/admin/growth-chart-parts.js.map +1 -0
- package/dist/admin/growth-chart.js +177 -0
- package/dist/admin/growth-chart.js.map +1 -0
- package/dist/admin/hooks.js +257 -0
- package/dist/admin/hooks.js.map +1 -0
- package/dist/admin/layout.js +153 -0
- package/dist/admin/layout.js.map +1 -0
- package/dist/admin/login/page.js +215 -0
- package/dist/admin/login/page.js.map +1 -0
- package/dist/admin/newsletters/[id]/page.js +13 -0
- package/dist/admin/newsletters/[id]/page.js.map +1 -0
- package/dist/admin/newsletters/audience/[contactId]/page.js +12 -0
- package/dist/admin/newsletters/audience/[contactId]/page.js.map +1 -0
- package/dist/admin/newsletters/audience/audience-list.js +163 -0
- package/dist/admin/newsletters/audience/audience-list.js.map +1 -0
- package/dist/admin/newsletters/audience/contact-deliveries.js +90 -0
- package/dist/admin/newsletters/audience/contact-deliveries.js.map +1 -0
- package/dist/admin/newsletters/audience/contact-row.js +63 -0
- package/dist/admin/newsletters/audience/contact-row.js.map +1 -0
- package/dist/admin/newsletters/audience/contact-screen.js +59 -0
- package/dist/admin/newsletters/audience/contact-screen.js.map +1 -0
- package/dist/admin/newsletters/audience/contact-summary.js +70 -0
- package/dist/admin/newsletters/audience/contact-summary.js.map +1 -0
- package/dist/admin/newsletters/audience/contacts.js +99 -0
- package/dist/admin/newsletters/audience/contacts.js.map +1 -0
- package/dist/admin/newsletters/audience/page.js +11 -0
- package/dist/admin/newsletters/audience/page.js.map +1 -0
- package/dist/admin/newsletters/audience/status-change.js +53 -0
- package/dist/admin/newsletters/audience/status-change.js.map +1 -0
- package/dist/admin/newsletters/audience/status-dialog.js +103 -0
- package/dist/admin/newsletters/audience/status-dialog.js.map +1 -0
- package/dist/admin/newsletters/audience/use-contacts.js +84 -0
- package/dist/admin/newsletters/audience/use-contacts.js.map +1 -0
- package/dist/admin/newsletters/autosave.js +58 -0
- package/dist/admin/newsletters/autosave.js.map +1 -0
- package/dist/admin/newsletters/brand-image-field.js +38 -0
- package/dist/admin/newsletters/brand-image-field.js.map +1 -0
- package/dist/admin/newsletters/composer.js +122 -0
- package/dist/admin/newsletters/composer.js.map +1 -0
- package/dist/admin/newsletters/content.js +59 -0
- package/dist/admin/newsletters/content.js.map +1 -0
- package/dist/admin/newsletters/deliveries.js +111 -0
- package/dist/admin/newsletters/deliveries.js.map +1 -0
- package/dist/admin/newsletters/digest-items.js +91 -0
- package/dist/admin/newsletters/digest-items.js.map +1 -0
- package/dist/admin/newsletters/editor-fields.js +135 -0
- package/dist/admin/newsletters/editor-fields.js.map +1 -0
- package/dist/admin/newsletters/format-date.js +11 -0
- package/dist/admin/newsletters/format-date.js.map +1 -0
- package/dist/admin/newsletters/image-field.js +55 -0
- package/dist/admin/newsletters/image-field.js.map +1 -0
- package/dist/admin/newsletters/image-picker.js +86 -0
- package/dist/admin/newsletters/image-picker.js.map +1 -0
- package/dist/admin/newsletters/image-upload.js +37 -0
- package/dist/admin/newsletters/image-upload.js.map +1 -0
- package/dist/admin/newsletters/labels.js +32 -0
- package/dist/admin/newsletters/labels.js.map +1 -0
- package/dist/admin/newsletters/layout-picker.js +58 -0
- package/dist/admin/newsletters/layout-picker.js.map +1 -0
- package/dist/admin/newsletters/layout-schematic.js +46 -0
- package/dist/admin/newsletters/layout-schematic.js.map +1 -0
- package/dist/admin/newsletters/markdown-field.js +98 -0
- package/dist/admin/newsletters/markdown-field.js.map +1 -0
- package/dist/admin/newsletters/markdown-insert.js +45 -0
- package/dist/admin/newsletters/markdown-insert.js.map +1 -0
- package/dist/admin/newsletters/newsletter-row.js +69 -0
- package/dist/admin/newsletters/newsletter-row.js.map +1 -0
- package/dist/admin/newsletters/newsletter-screen.js +25 -0
- package/dist/admin/newsletters/newsletter-screen.js.map +1 -0
- package/dist/admin/newsletters/newsletters-list.js +140 -0
- package/dist/admin/newsletters/newsletters-list.js.map +1 -0
- package/dist/admin/newsletters/not-available.js +7 -0
- package/dist/admin/newsletters/not-available.js.map +1 -0
- package/dist/admin/newsletters/page.js +11 -0
- package/dist/admin/newsletters/page.js.map +1 -0
- package/dist/admin/newsletters/preview-pane.js +68 -0
- package/dist/admin/newsletters/preview-pane.js.map +1 -0
- package/dist/admin/newsletters/problems.js +73 -0
- package/dist/admin/newsletters/problems.js.map +1 -0
- package/dist/admin/newsletters/recipient-row.js +73 -0
- package/dist/admin/newsletters/recipient-row.js.map +1 -0
- package/dist/admin/newsletters/recipients-empty.js +21 -0
- package/dist/admin/newsletters/recipients-empty.js.map +1 -0
- package/dist/admin/newsletters/recipients-selection.js +32 -0
- package/dist/admin/newsletters/recipients-selection.js.map +1 -0
- package/dist/admin/newsletters/recipients-tab.js +172 -0
- package/dist/admin/newsletters/recipients-tab.js.map +1 -0
- package/dist/admin/newsletters/record-header.js +28 -0
- package/dist/admin/newsletters/record-header.js.map +1 -0
- package/dist/admin/newsletters/retry-selection.js +45 -0
- package/dist/admin/newsletters/retry-selection.js.map +1 -0
- package/dist/admin/newsletters/review-dialog.js +95 -0
- package/dist/admin/newsletters/review-dialog.js.map +1 -0
- package/dist/admin/newsletters/save-file.js +12 -0
- package/dist/admin/newsletters/save-file.js.map +1 -0
- package/dist/admin/newsletters/save-indicator.js +28 -0
- package/dist/admin/newsletters/save-indicator.js.map +1 -0
- package/dist/admin/newsletters/section-tabs.js +26 -0
- package/dist/admin/newsletters/section-tabs.js.map +1 -0
- package/dist/admin/newsletters/sending.js +36 -0
- package/dist/admin/newsletters/sending.js.map +1 -0
- package/dist/admin/newsletters/sent-summary.js +77 -0
- package/dist/admin/newsletters/sent-summary.js.map +1 -0
- package/dist/admin/newsletters/sent-view.js +60 -0
- package/dist/admin/newsletters/sent-view.js.map +1 -0
- package/dist/admin/newsletters/signature-editor-fields.js +75 -0
- package/dist/admin/newsletters/signature-editor-fields.js.map +1 -0
- package/dist/admin/newsletters/signature-editor.js +63 -0
- package/dist/admin/newsletters/signature-editor.js.map +1 -0
- package/dist/admin/newsletters/signature-field.js +44 -0
- package/dist/admin/newsletters/signature-field.js.map +1 -0
- package/dist/admin/newsletters/signature-preview.js +27 -0
- package/dist/admin/newsletters/signature-preview.js.map +1 -0
- package/dist/admin/newsletters/signature-row.js +54 -0
- package/dist/admin/newsletters/signature-row.js.map +1 -0
- package/dist/admin/newsletters/signature-values.js +75 -0
- package/dist/admin/newsletters/signature-values.js.map +1 -0
- package/dist/admin/newsletters/signatures-dialog.js +98 -0
- package/dist/admin/newsletters/signatures-dialog.js.map +1 -0
- package/dist/admin/newsletters/signatures.js +34 -0
- package/dist/admin/newsletters/signatures.js.map +1 -0
- package/dist/admin/newsletters/use-autosave.js +147 -0
- package/dist/admin/newsletters/use-autosave.js.map +1 -0
- package/dist/admin/newsletters/use-deliveries.js +90 -0
- package/dist/admin/newsletters/use-deliveries.js.map +1 -0
- package/dist/admin/newsletters/use-newsletter-actions.js +68 -0
- package/dist/admin/newsletters/use-newsletter-actions.js.map +1 -0
- package/dist/admin/newsletters/use-newsletters.js +83 -0
- package/dist/admin/newsletters/use-newsletters.js.map +1 -0
- package/dist/admin/newsletters/use-send-actions.js +62 -0
- package/dist/admin/newsletters/use-send-actions.js.map +1 -0
- package/dist/admin/newsletters/use-signature-preview.js +29 -0
- package/dist/admin/newsletters/use-signature-preview.js.map +1 -0
- package/dist/admin/newsletters/use-signatures.js +55 -0
- package/dist/admin/newsletters/use-signatures.js.map +1 -0
- package/dist/admin/page.js +179 -0
- package/dist/admin/page.js.map +1 -0
- package/dist/admin/payout-providers/add-flow.js +84 -0
- package/dist/admin/payout-providers/add-flow.js.map +1 -0
- package/dist/admin/payout-providers/attention-list.js +135 -0
- package/dist/admin/payout-providers/attention-list.js.map +1 -0
- package/dist/admin/payout-providers/connect-step.js +180 -0
- package/dist/admin/payout-providers/connect-step.js.map +1 -0
- package/dist/admin/payout-providers/editor/auth-section.js +166 -0
- package/dist/admin/payout-providers/editor/auth-section.js.map +1 -0
- package/dist/admin/payout-providers/editor/call-editor.js +107 -0
- package/dist/admin/payout-providers/editor/call-editor.js.map +1 -0
- package/dist/admin/payout-providers/editor/condition-editor.js +109 -0
- package/dist/admin/payout-providers/editor/condition-editor.js.map +1 -0
- package/dist/admin/payout-providers/editor/editor.module.css +123 -0
- package/dist/admin/payout-providers/editor/fields.js +144 -0
- package/dist/admin/payout-providers/editor/fields.js.map +1 -0
- package/dist/admin/payout-providers/editor/flow-editor.js +160 -0
- package/dist/admin/payout-providers/editor/flow-editor.js.map +1 -0
- package/dist/admin/payout-providers/editor/flow-parts.js +69 -0
- package/dist/admin/payout-providers/editor/flow-parts.js.map +1 -0
- package/dist/admin/payout-providers/editor/flow-sections.js +147 -0
- package/dist/admin/payout-providers/editor/flow-sections.js.map +1 -0
- package/dist/admin/payout-providers/editor/rules-editor.js +151 -0
- package/dist/admin/payout-providers/editor/rules-editor.js.map +1 -0
- package/dist/admin/payout-providers/editor/step-editor.js +157 -0
- package/dist/admin/payout-providers/editor/step-editor.js.map +1 -0
- package/dist/admin/payout-providers/editor/transfer-section.js +103 -0
- package/dist/admin/payout-providers/editor/transfer-section.js.map +1 -0
- package/dist/admin/payout-providers/page.js +94 -0
- package/dist/admin/payout-providers/page.js.map +1 -0
- package/dist/admin/payout-providers/payout-providers.module.css +179 -0
- package/dist/admin/payout-providers/pin-step.js +84 -0
- package/dist/admin/payout-providers/pin-step.js.map +1 -0
- package/dist/admin/payout-providers/provider-detail.js +148 -0
- package/dist/admin/payout-providers/provider-detail.js.map +1 -0
- package/dist/admin/payout-providers/provider-list.js +37 -0
- package/dist/admin/payout-providers/provider-list.js.map +1 -0
- package/dist/admin/payout-providers/sections.module.css +151 -0
- package/dist/admin/payout-providers/shared.js +34 -0
- package/dist/admin/payout-providers/shared.js.map +1 -0
- package/dist/admin/payout-providers/status.js +17 -0
- package/dist/admin/payout-providers/status.js.map +1 -0
- package/dist/admin/payout-providers/step.js +31 -0
- package/dist/admin/payout-providers/step.js.map +1 -0
- package/dist/admin/payout-providers/test-transfer.js +161 -0
- package/dist/admin/payout-providers/test-transfer.js.map +1 -0
- package/dist/admin/payout-providers/use-connect.js +108 -0
- package/dist/admin/payout-providers/use-connect.js.map +1 -0
- package/dist/admin/payout-providers/verify-step.js +57 -0
- package/dist/admin/payout-providers/verify-step.js.map +1 -0
- package/dist/admin/payout-tiers/_tier-dialog.js +205 -0
- package/dist/admin/payout-tiers/_tier-dialog.js.map +1 -0
- package/dist/admin/payout-tiers/page.js +11 -0
- package/dist/admin/payout-tiers/page.js.map +1 -0
- package/dist/admin/payout-tiers/tier-preview-result.js +58 -0
- package/dist/admin/payout-tiers/tier-preview-result.js.map +1 -0
- package/dist/admin/payout-tiers/tier-preview-tab.js +67 -0
- package/dist/admin/payout-tiers/tier-preview-tab.js.map +1 -0
- package/dist/admin/payout-tiers/tier-preview.js +41 -0
- package/dist/admin/payout-tiers/tier-preview.js.map +1 -0
- package/dist/admin/payout-tiers/tiers-table.js +151 -0
- package/dist/admin/payout-tiers/tiers-table.js.map +1 -0
- package/dist/admin/payout-tiers/tiers-workspace.js +56 -0
- package/dist/admin/payout-tiers/tiers-workspace.js.map +1 -0
- package/dist/admin/payout-tiers/use-tiers.js +14 -0
- package/dist/admin/payout-tiers/use-tiers.js.map +1 -0
- package/dist/admin/pos/page.js +11 -0
- package/dist/admin/pos/page.js.map +1 -0
- package/dist/admin/pos/pos-workspace.js +66 -0
- package/dist/admin/pos/pos-workspace.js.map +1 -0
- package/dist/admin/pos/shifts-tab.js +111 -0
- package/dist/admin/pos/shifts-tab.js.map +1 -0
- package/dist/admin/pos/terminal-row.js +94 -0
- package/dist/admin/pos/terminal-row.js.map +1 -0
- package/dist/admin/pos/terminals/[id]/page.js +12 -0
- package/dist/admin/pos/terminals/[id]/page.js.map +1 -0
- package/dist/admin/pos/terminals/[id]/terminal-page.js +119 -0
- package/dist/admin/pos/terminals/[id]/terminal-page.js.map +1 -0
- package/dist/admin/pos/terminals/[id]/terminal-panels.js +58 -0
- package/dist/admin/pos/terminals/[id]/terminal-panels.js.map +1 -0
- package/dist/admin/pos/terminals/[id]/terminal-people.js +63 -0
- package/dist/admin/pos/terminals/[id]/terminal-people.js.map +1 -0
- package/dist/admin/pos/terminals/[id]/terminal.module.css +103 -0
- package/dist/admin/pos/terminals-tab.js +147 -0
- package/dist/admin/pos/terminals-tab.js.map +1 -0
- package/dist/admin/pricing/approvals-tab.js +47 -0
- package/dist/admin/pricing/approvals-tab.js.map +1 -0
- package/dist/admin/pricing/cancel-plan-dialog.js +85 -0
- package/dist/admin/pricing/cancel-plan-dialog.js.map +1 -0
- package/dist/admin/pricing/change-list.js +9 -0
- package/dist/admin/pricing/change-list.js.map +1 -0
- package/dist/admin/pricing/change-plan-dialog.js +84 -0
- package/dist/admin/pricing/change-plan-dialog.js.map +1 -0
- package/dist/admin/pricing/display-preview.js +51 -0
- package/dist/admin/pricing/display-preview.js.map +1 -0
- package/dist/admin/pricing/display-tab.js +76 -0
- package/dist/admin/pricing/display-tab.js.map +1 -0
- package/dist/admin/pricing/features-tab.js +48 -0
- package/dist/admin/pricing/features-tab.js.map +1 -0
- package/dist/admin/pricing/page.js +30 -0
- package/dist/admin/pricing/page.js.map +1 -0
- package/dist/admin/pricing/plan-approval.js +97 -0
- package/dist/admin/pricing/plan-approval.js.map +1 -0
- package/dist/admin/pricing/plan-card-product.js +63 -0
- package/dist/admin/pricing/plan-card-product.js.map +1 -0
- package/dist/admin/pricing/plan-changes.js +54 -0
- package/dist/admin/pricing/plan-changes.js.map +1 -0
- package/dist/admin/pricing/plan-drawer.js +97 -0
- package/dist/admin/pricing/plan-drawer.js.map +1 -0
- package/dist/admin/pricing/plan-form-basics.js +59 -0
- package/dist/admin/pricing/plan-form-basics.js.map +1 -0
- package/dist/admin/pricing/plan-form-dialog.js +103 -0
- package/dist/admin/pricing/plan-form-dialog.js.map +1 -0
- package/dist/admin/pricing/plan-form-features.js +59 -0
- package/dist/admin/pricing/plan-form-features.js.map +1 -0
- package/dist/admin/pricing/plan-form-review.js +67 -0
- package/dist/admin/pricing/plan-form-review.js.map +1 -0
- package/dist/admin/pricing/plan-model.js +91 -0
- package/dist/admin/pricing/plan-model.js.map +1 -0
- package/dist/admin/pricing/plan-row.js +59 -0
- package/dist/admin/pricing/plan-row.js.map +1 -0
- package/dist/admin/pricing/plans-tab.js +84 -0
- package/dist/admin/pricing/plans-tab.js.map +1 -0
- package/dist/admin/pricing/price-form-dialog.js +133 -0
- package/dist/admin/pricing/price-form-dialog.js.map +1 -0
- package/dist/admin/pricing/price-history.js +25 -0
- package/dist/admin/pricing/price-history.js.map +1 -0
- package/dist/admin/pricing/price-model.js +47 -0
- package/dist/admin/pricing/price-model.js.map +1 -0
- package/dist/admin/pricing/price-review.js +104 -0
- package/dist/admin/pricing/price-review.js.map +1 -0
- package/dist/admin/pricing/price-tab.js +101 -0
- package/dist/admin/pricing/price-tab.js.map +1 -0
- package/dist/admin/pricing/pricing-tabs.js +28 -0
- package/dist/admin/pricing/pricing-tabs.js.map +1 -0
- package/dist/admin/pricing/pricing.module.css +188 -0
- package/dist/admin/pricing/subscription-events.js +33 -0
- package/dist/admin/pricing/subscription-events.js.map +1 -0
- package/dist/admin/pricing/subscription-history.js +103 -0
- package/dist/admin/pricing/subscription-history.js.map +1 -0
- package/dist/admin/pricing/subscription-plan.js +51 -0
- package/dist/admin/pricing/subscription-plan.js.map +1 -0
- package/dist/admin/pricing/subscription-row.js +70 -0
- package/dist/admin/pricing/subscription-row.js.map +1 -0
- package/dist/admin/pricing/subscriptions-tab.js +141 -0
- package/dist/admin/pricing/subscriptions-tab.js.map +1 -0
- package/dist/admin/pricing/use-plans.js +49 -0
- package/dist/admin/pricing/use-plans.js.map +1 -0
- package/dist/admin/pricing/use-pricing.js +38 -0
- package/dist/admin/pricing/use-pricing.js.map +1 -0
- package/dist/admin/pricing/use-subscriptions.js +21 -0
- package/dist/admin/pricing/use-subscriptions.js.map +1 -0
- package/dist/admin/product-insights/all-merchants-view.js +146 -0
- package/dist/admin/product-insights/all-merchants-view.js.map +1 -0
- package/dist/admin/product-insights/page.js +11 -0
- package/dist/admin/product-insights/page.js.map +1 -0
- package/dist/admin/product-insights/product-insights-workspace.js +112 -0
- package/dist/admin/product-insights/product-insights-workspace.js.map +1 -0
- package/dist/admin/product-insights/product-insights.module.css +114 -0
- package/dist/admin/product-insights/report-copy.js +69 -0
- package/dist/admin/product-insights/report-copy.js.map +1 -0
- package/dist/admin/product-insights/report-empty.js +14 -0
- package/dist/admin/product-insights/report-empty.js.map +1 -0
- package/dist/admin/product-insights/report-kpis.js +54 -0
- package/dist/admin/product-insights/report-kpis.js.map +1 -0
- package/dist/admin/product-insights/report-panel.js +129 -0
- package/dist/admin/product-insights/report-panel.js.map +1 -0
- package/dist/admin/product-insights/report-ranking.js +44 -0
- package/dist/admin/product-insights/report-ranking.js.map +1 -0
- package/dist/admin/product-insights/use-insight-report.js +59 -0
- package/dist/admin/product-insights/use-insight-report.js.map +1 -0
- package/dist/admin/revenue/channel-panel.js +49 -0
- package/dist/admin/revenue/channel-panel.js.map +1 -0
- package/dist/admin/revenue/channel-rows.js +17 -0
- package/dist/admin/revenue/channel-rows.js.map +1 -0
- package/dist/admin/revenue/cohort-panel.js +74 -0
- package/dist/admin/revenue/cohort-panel.js.map +1 -0
- package/dist/admin/revenue/download-button.js +40 -0
- package/dist/admin/revenue/download-button.js.map +1 -0
- package/dist/admin/revenue/figure-list.js +19 -0
- package/dist/admin/revenue/figure-list.js.map +1 -0
- package/dist/admin/revenue/health-panel.js +59 -0
- package/dist/admin/revenue/health-panel.js.map +1 -0
- package/dist/admin/revenue/ledger-model.js +84 -0
- package/dist/admin/revenue/ledger-model.js.map +1 -0
- package/dist/admin/revenue/ledger.module.css +101 -0
- package/dist/admin/revenue/merchant-payments-view.js +231 -0
- package/dist/admin/revenue/merchant-payments-view.js.map +1 -0
- package/dist/admin/revenue/method-cards.js +32 -0
- package/dist/admin/revenue/method-cards.js.map +1 -0
- package/dist/admin/revenue/page.js +11 -0
- package/dist/admin/revenue/page.js.map +1 -0
- package/dist/admin/revenue/plan-mix-panel.js +62 -0
- package/dist/admin/revenue/plan-mix-panel.js.map +1 -0
- package/dist/admin/revenue/platform-fees.js +9 -0
- package/dist/admin/revenue/platform-fees.js.map +1 -0
- package/dist/admin/revenue/quality-panel.js +71 -0
- package/dist/admin/revenue/quality-panel.js.map +1 -0
- package/dist/admin/revenue/revenue-kpis.js +73 -0
- package/dist/admin/revenue/revenue-kpis.js.map +1 -0
- package/dist/admin/revenue/revenue-overview.js +132 -0
- package/dist/admin/revenue/revenue-overview.js.map +1 -0
- package/dist/admin/revenue/revenue-retention.js +31 -0
- package/dist/admin/revenue/revenue-retention.js.map +1 -0
- package/dist/admin/revenue/revenue-workspace.js +171 -0
- package/dist/admin/revenue/revenue-workspace.js.map +1 -0
- package/dist/admin/revenue/revenue.module.css +196 -0
- package/dist/admin/revenue/subscriptions-panel.js +58 -0
- package/dist/admin/revenue/subscriptions-panel.js.map +1 -0
- package/dist/admin/revenue/subscriptions-view.js +188 -0
- package/dist/admin/revenue/subscriptions-view.js.map +1 -0
- package/dist/admin/revenue/top-tenants-panel.js +96 -0
- package/dist/admin/revenue/top-tenants-panel.js.map +1 -0
- package/dist/admin/reviews/merchant-filter.js +122 -0
- package/dist/admin/reviews/merchant-filter.js.map +1 -0
- package/dist/admin/reviews/merchant-filter.module.css +113 -0
- package/dist/admin/reviews/page.js +124 -0
- package/dist/admin/reviews/page.js.map +1 -0
- package/dist/admin/reviews/review-row.js +44 -0
- package/dist/admin/reviews/review-row.js.map +1 -0
- package/dist/admin/reviews/reviews-kpis.js +55 -0
- package/dist/admin/reviews/reviews-kpis.js.map +1 -0
- package/dist/admin/reviews/reviews.module.css +68 -0
- package/dist/admin/reviews/use-admin-reviews.js +22 -0
- package/dist/admin/reviews/use-admin-reviews.js.map +1 -0
- package/dist/admin/reviews/use-merchant-search.js +32 -0
- package/dist/admin/reviews/use-merchant-search.js.map +1 -0
- package/dist/admin/roles/more-chip.js +48 -0
- package/dist/admin/roles/more-chip.js.map +1 -0
- package/dist/admin/roles/more-chip.module.css +70 -0
- package/dist/admin/roles/page.js +159 -0
- package/dist/admin/roles/page.js.map +1 -0
- package/dist/admin/roles/permission-picker.js +71 -0
- package/dist/admin/roles/permission-picker.js.map +1 -0
- package/dist/admin/roles/permission-picker.module.css +81 -0
- package/dist/admin/roles/permissions.js +66 -0
- package/dist/admin/roles/permissions.js.map +1 -0
- package/dist/admin/roles/role-dialog.js +162 -0
- package/dist/admin/roles/role-dialog.js.map +1 -0
- package/dist/admin/roles/role-row.js +51 -0
- package/dist/admin/roles/role-row.js.map +1 -0
- package/dist/admin/roles/roles-kpis.js +45 -0
- package/dist/admin/roles/roles-kpis.js.map +1 -0
- package/dist/admin/roles/roles.module.css +141 -0
- package/dist/admin/sales/activity-log-tab.js +154 -0
- package/dist/admin/sales/activity-log-tab.js.map +1 -0
- package/dist/admin/sales/bucket.js +29 -0
- package/dist/admin/sales/bucket.js.map +1 -0
- package/dist/admin/sales/conversion-panel.js +59 -0
- package/dist/admin/sales/conversion-panel.js.map +1 -0
- package/dist/admin/sales/growth-analysis.js +78 -0
- package/dist/admin/sales/growth-analysis.js.map +1 -0
- package/dist/admin/sales/leads-tab.js +134 -0
- package/dist/admin/sales/leads-tab.js.map +1 -0
- package/dist/admin/sales/overview-tab.js +92 -0
- package/dist/admin/sales/overview-tab.js.map +1 -0
- package/dist/admin/sales/page.js +11 -0
- package/dist/admin/sales/page.js.map +1 -0
- package/dist/admin/sales/pipeline/add-lead-dialog.js +143 -0
- package/dist/admin/sales/pipeline/add-lead-dialog.js.map +1 -0
- package/dist/admin/sales/pipeline/lead-card.js +44 -0
- package/dist/admin/sales/pipeline/lead-card.js.map +1 -0
- package/dist/admin/sales/pipeline/lead-drawer.js +139 -0
- package/dist/admin/sales/pipeline/lead-drawer.js.map +1 -0
- package/dist/admin/sales/pipeline/lead-timeline.js +34 -0
- package/dist/admin/sales/pipeline/lead-timeline.js.map +1 -0
- package/dist/admin/sales/pipeline/log-contact-dialog.js +126 -0
- package/dist/admin/sales/pipeline/log-contact-dialog.js.map +1 -0
- package/dist/admin/sales/pipeline/move-stage-dialog.js +119 -0
- package/dist/admin/sales/pipeline/move-stage-dialog.js.map +1 -0
- package/dist/admin/sales/pipeline/pipeline-board.js +77 -0
- package/dist/admin/sales/pipeline/pipeline-board.js.map +1 -0
- package/dist/admin/sales/pipeline/pipeline-filters.js +46 -0
- package/dist/admin/sales/pipeline/pipeline-filters.js.map +1 -0
- package/dist/admin/sales/pipeline/pipeline.module.css +141 -0
- package/dist/admin/sales/report-math.js +17 -0
- package/dist/admin/sales/report-math.js.map +1 -0
- package/dist/admin/sales/reports-tab.js +147 -0
- package/dist/admin/sales/reports-tab.js.map +1 -0
- package/dist/admin/sales/sales-kpis.js +69 -0
- package/dist/admin/sales/sales-kpis.js.map +1 -0
- package/dist/admin/sales/sales-workspace.js +55 -0
- package/dist/admin/sales/sales-workspace.js.map +1 -0
- package/dist/admin/sales/sales.module.css +52 -0
- package/dist/admin/sales/sources-panel.js +19 -0
- package/dist/admin/sales/sources-panel.js.map +1 -0
- package/dist/admin/sales/stage-meta.js +73 -0
- package/dist/admin/sales/stage-meta.js.map +1 -0
- package/dist/admin/sales/use-debounced.js +14 -0
- package/dist/admin/sales/use-debounced.js.map +1 -0
- package/dist/admin/sales/use-sales.js +51 -0
- package/dist/admin/sales/use-sales.js.map +1 -0
- package/dist/admin/scores/page.js +8 -0
- package/dist/admin/scores/page.js.map +1 -0
- package/dist/admin/settings/accessibility-tab.js +135 -0
- package/dist/admin/settings/accessibility-tab.js.map +1 -0
- package/dist/admin/settings/account-tab.js +59 -0
- package/dist/admin/settings/account-tab.js.map +1 -0
- package/dist/admin/settings/change-password-dialog.js +112 -0
- package/dist/admin/settings/change-password-dialog.js.map +1 -0
- package/dist/admin/settings/general-tab.js +143 -0
- package/dist/admin/settings/general-tab.js.map +1 -0
- package/dist/admin/settings/notifications-tab.js +155 -0
- package/dist/admin/settings/notifications-tab.js.map +1 -0
- package/dist/admin/settings/page.js +11 -0
- package/dist/admin/settings/page.js.map +1 -0
- package/dist/admin/settings/profile-card.js +35 -0
- package/dist/admin/settings/profile-card.js.map +1 -0
- package/dist/admin/settings/setting-row.js +85 -0
- package/dist/admin/settings/setting-row.js.map +1 -0
- package/dist/admin/settings/settings-workspace.js +47 -0
- package/dist/admin/settings/settings-workspace.js.map +1 -0
- package/dist/admin/settings/settings.module.css +162 -0
- package/dist/admin/settings/shortcut-list.js +42 -0
- package/dist/admin/settings/shortcut-list.js.map +1 -0
- package/dist/admin/settings/shortcuts-tab.js +42 -0
- package/dist/admin/settings/shortcuts-tab.js.map +1 -0
- package/dist/admin/settings/use-inbox-on.js +11 -0
- package/dist/admin/settings/use-inbox-on.js.map +1 -0
- package/dist/admin/settings/use-save.js +35 -0
- package/dist/admin/settings/use-save.js.map +1 -0
- package/dist/admin/support/case-field-selects.js +125 -0
- package/dist/admin/support/case-field-selects.js.map +1 -0
- package/dist/admin/support/case-header-controls.js +98 -0
- package/dist/admin/support/case-header-controls.js.map +1 -0
- package/dist/admin/support/case-origin.js +26 -0
- package/dist/admin/support/case-origin.js.map +1 -0
- package/dist/admin/support/case-pills.js +41 -0
- package/dist/admin/support/case-pills.js.map +1 -0
- package/dist/admin/support/case-pills.module.css +36 -0
- package/dist/admin/support/case-row-menu.js +77 -0
- package/dist/admin/support/case-row-menu.js.map +1 -0
- package/dist/admin/support/case-row.js +70 -0
- package/dist/admin/support/case-row.js.map +1 -0
- package/dist/admin/support/case-timeline.js +82 -0
- package/dist/admin/support/case-timeline.js.map +1 -0
- package/dist/admin/support/cases-tab.js +55 -0
- package/dist/admin/support/cases-tab.js.map +1 -0
- package/dist/admin/support/composer-aids.js +29 -0
- package/dist/admin/support/composer-aids.js.map +1 -0
- package/dist/admin/support/composer-assist.js +32 -0
- package/dist/admin/support/composer-assist.js.map +1 -0
- package/dist/admin/support/composer-assist.module.css +23 -0
- package/dist/admin/support/composer-footer.js +56 -0
- package/dist/admin/support/composer-footer.js.map +1 -0
- package/dist/admin/support/composer-header.js +44 -0
- package/dist/admin/support/composer-header.js.map +1 -0
- package/dist/admin/support/composer-keys.js +25 -0
- package/dist/admin/support/composer-keys.js.map +1 -0
- package/dist/admin/support/composer-toolbar.js +69 -0
- package/dist/admin/support/composer-toolbar.js.map +1 -0
- package/dist/admin/support/inbox-address.js +36 -0
- package/dist/admin/support/inbox-address.js.map +1 -0
- package/dist/admin/support/inbox-header.js +19 -0
- package/dist/admin/support/inbox-header.js.map +1 -0
- package/dist/admin/support/inbox-header.module.css +28 -0
- package/dist/admin/support/kbd.js +9 -0
- package/dist/admin/support/kbd.js.map +1 -0
- package/dist/admin/support/kbd.module.css +19 -0
- package/dist/admin/support/page.js +95 -0
- package/dist/admin/support/page.js.map +1 -0
- package/dist/admin/support/queue-card.js +46 -0
- package/dist/admin/support/queue-card.js.map +1 -0
- package/dist/admin/support/queue-card.module.css +88 -0
- package/dist/admin/support/queue-filters.js +119 -0
- package/dist/admin/support/queue-filters.js.map +1 -0
- package/dist/admin/support/reply-picker-body.js +122 -0
- package/dist/admin/support/reply-picker-body.js.map +1 -0
- package/dist/admin/support/reply-picker.js +55 -0
- package/dist/admin/support/reply-picker.js.map +1 -0
- package/dist/admin/support/reply-picker.module.css +152 -0
- package/dist/admin/support/saved-replies/library-categories.js +48 -0
- package/dist/admin/support/saved-replies/library-categories.js.map +1 -0
- package/dist/admin/support/saved-replies/library.js +121 -0
- package/dist/admin/support/saved-replies/library.js.map +1 -0
- package/dist/admin/support/saved-replies/library.module.css +157 -0
- package/dist/admin/support/saved-replies/page.js +16 -0
- package/dist/admin/support/saved-replies/page.js.map +1 -0
- package/dist/admin/support/saved-replies/placeholders.js +51 -0
- package/dist/admin/support/saved-replies/placeholders.js.map +1 -0
- package/dist/admin/support/saved-replies/reply-fields.js +102 -0
- package/dist/admin/support/saved-replies/reply-fields.js.map +1 -0
- package/dist/admin/support/saved-replies/reply-list.js +60 -0
- package/dist/admin/support/saved-replies/reply-list.js.map +1 -0
- package/dist/admin/support/saved-replies/reply-list.module.css +74 -0
- package/dist/admin/support/saved-replies/reply-meta.js +78 -0
- package/dist/admin/support/saved-replies/reply-meta.js.map +1 -0
- package/dist/admin/support/saved-replies/reply-preview.js +48 -0
- package/dist/admin/support/saved-replies/reply-preview.js.map +1 -0
- package/dist/admin/support/saved-replies/save-reply-dialog.js +66 -0
- package/dist/admin/support/saved-replies/save-reply-dialog.js.map +1 -0
- package/dist/admin/support/saved-replies/saved-replies-kpis.js +55 -0
- package/dist/admin/support/saved-replies/saved-replies-kpis.js.map +1 -0
- package/dist/admin/support/saved-replies/saved-replies-tab.js +22 -0
- package/dist/admin/support/saved-replies/saved-replies-tab.js.map +1 -0
- package/dist/admin/support/saved-replies/saved-replies.module.css +95 -0
- package/dist/admin/support/saved-replies/saved-reply-editor.js +55 -0
- package/dist/admin/support/saved-replies/saved-reply-editor.js.map +1 -0
- package/dist/admin/support/saved-replies/use-saved-replies.js +40 -0
- package/dist/admin/support/saved-replies/use-saved-replies.js.map +1 -0
- package/dist/admin/support/suggestion-card.js +70 -0
- package/dist/admin/support/suggestion-card.js.map +1 -0
- package/dist/admin/support/suggestion-card.module.css +72 -0
- package/dist/admin/support/support-case-detail.js +16 -0
- package/dist/admin/support/support-case-detail.js.map +1 -0
- package/dist/admin/support/support-case-identity.js +80 -0
- package/dist/admin/support/support-case-identity.js.map +1 -0
- package/dist/admin/support/support-case-table.js +89 -0
- package/dist/admin/support/support-case-table.js.map +1 -0
- package/dist/admin/support/support-case-thread.js +64 -0
- package/dist/admin/support/support-case-thread.js.map +1 -0
- package/dist/admin/support/support-case.module.css +178 -0
- package/dist/admin/support/support-composer.js +171 -0
- package/dist/admin/support/support-composer.js.map +1 -0
- package/dist/admin/support/support-kpis.js +106 -0
- package/dist/admin/support/support-kpis.js.map +1 -0
- package/dist/admin/support/support-options.js +87 -0
- package/dist/admin/support/support-options.js.map +1 -0
- package/dist/admin/support/support-queue.module.css +82 -0
- package/dist/admin/support/support-thread.module.css +174 -0
- package/dist/admin/support/support-trend.js +59 -0
- package/dist/admin/support/support-trend.js.map +1 -0
- package/dist/admin/support/support-views.js +79 -0
- package/dist/admin/support/support-views.js.map +1 -0
- package/dist/admin/support/support-views.module.css +80 -0
- package/dist/admin/support/support.module.css +98 -0
- package/dist/admin/support/thread-attachment.js +54 -0
- package/dist/admin/support/thread-attachment.js.map +1 -0
- package/dist/admin/support/thread-bubble.js +46 -0
- package/dist/admin/support/thread-bubble.js.map +1 -0
- package/dist/admin/support/thread-event.module.css +35 -0
- package/dist/admin/support/use-admin-support.js +90 -0
- package/dist/admin/support/use-admin-support.js.map +1 -0
- package/dist/admin/support/use-case-activity.js +68 -0
- package/dist/admin/support/use-case-activity.js.map +1 -0
- package/dist/admin/support/use-close-case.js +26 -0
- package/dist/admin/support/use-close-case.js.map +1 -0
- package/dist/admin/support/use-composer-assist.js +114 -0
- package/dist/admin/support/use-composer-assist.js.map +1 -0
- package/dist/admin/support/use-queue-cases.js +17 -0
- package/dist/admin/support/use-queue-cases.js.map +1 -0
- package/dist/admin/support/use-send-reply.js +73 -0
- package/dist/admin/support/use-send-reply.js.map +1 -0
- package/dist/admin/support/use-support-insights.js +53 -0
- package/dist/admin/support/use-support-insights.js.map +1 -0
- package/dist/admin/support/use-view-counts.js +36 -0
- package/dist/admin/support/use-view-counts.js.map +1 -0
- package/dist/admin/support/workspace/action-bar.js +69 -0
- package/dist/admin/support/workspace/action-bar.js.map +1 -0
- package/dist/admin/support/workspace/action-bar.module.css +85 -0
- package/dist/admin/support/workspace/case-card.js +58 -0
- package/dist/admin/support/workspace/case-card.js.map +1 -0
- package/dist/admin/support/workspace/case-facts.js +41 -0
- package/dist/admin/support/workspace/case-facts.js.map +1 -0
- package/dist/admin/support/workspace/case-list-pane.js +126 -0
- package/dist/admin/support/workspace/case-list-pane.js.map +1 -0
- package/dist/admin/support/workspace/case-properties.js +91 -0
- package/dist/admin/support/workspace/case-properties.js.map +1 -0
- package/dist/admin/support/workspace/conversation-header.js +128 -0
- package/dist/admin/support/workspace/conversation-header.js.map +1 -0
- package/dist/admin/support/workspace/conversation-pane.js +90 -0
- package/dist/admin/support/workspace/conversation-pane.js.map +1 -0
- package/dist/admin/support/workspace/conversation.module.css +191 -0
- package/dist/admin/support/workspace/details-pane.js +99 -0
- package/dist/admin/support/workspace/details-pane.js.map +1 -0
- package/dist/admin/support/workspace/details.module.css +137 -0
- package/dist/admin/support/workspace/list.module.css +193 -0
- package/dist/admin/support/workspace/merchant-card.js +58 -0
- package/dist/admin/support/workspace/merchant-card.js.map +1 -0
- package/dist/admin/support/workspace/merchant.module.css +97 -0
- package/dist/admin/support/workspace/related-cases.js +51 -0
- package/dist/admin/support/workspace/related-cases.js.map +1 -0
- package/dist/admin/support/workspace/sort-cases.js +16 -0
- package/dist/admin/support/workspace/sort-cases.js.map +1 -0
- package/dist/admin/support/workspace/status-banner.js +101 -0
- package/dist/admin/support/workspace/status-banner.js.map +1 -0
- package/dist/admin/support/workspace/step-case.js +9 -0
- package/dist/admin/support/workspace/step-case.js.map +1 -0
- package/dist/admin/support/workspace/support-workspace.js +127 -0
- package/dist/admin/support/workspace/support-workspace.js.map +1 -0
- package/dist/admin/support/workspace/use-media.js +17 -0
- package/dist/admin/support/workspace/use-media.js.map +1 -0
- package/dist/admin/support/workspace/use-workspace-keys.js +46 -0
- package/dist/admin/support/workspace/use-workspace-keys.js.map +1 -0
- package/dist/admin/support/workspace/workspace.module.css +89 -0
- package/dist/admin/tenants/[id]/account-officer-dialog.js +58 -0
- package/dist/admin/tenants/[id]/account-officer-dialog.js.map +1 -0
- package/dist/admin/tenants/[id]/account-officer.js +59 -0
- package/dist/admin/tenants/[id]/account-officer.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/best-sellers.js +56 -0
- package/dist/admin/tenants/[id]/commerce/best-sellers.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/commerce-flow.js +84 -0
- package/dist/admin/tenants/[id]/commerce/commerce-flow.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/drawer.module.css +89 -0
- package/dist/admin/tenants/[id]/commerce/flow.module.css +110 -0
- package/dist/admin/tenants/[id]/commerce/format.js +74 -0
- package/dist/admin/tenants/[id]/commerce/format.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/health.module.css +144 -0
- package/dist/admin/tenants/[id]/commerce/index.js +5 -0
- package/dist/admin/tenants/[id]/commerce/index.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/inventory-health.js +82 -0
- package/dist/admin/tenants/[id]/commerce/inventory-health.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/item-card.js +37 -0
- package/dist/admin/tenants/[id]/commerce/item-card.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/items-gallery.js +155 -0
- package/dist/admin/tenants/[id]/commerce/items-gallery.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/items-table.js +49 -0
- package/dist/admin/tenants/[id]/commerce/items-table.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/items.module.css +125 -0
- package/dist/admin/tenants/[id]/commerce/layout.module.css +27 -0
- package/dist/admin/tenants/[id]/commerce/merchant-commerce.js +103 -0
- package/dist/admin/tenants/[id]/commerce/merchant-commerce.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/money-panel.js +52 -0
- package/dist/admin/tenants/[id]/commerce/money-panel.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/money.module.css +122 -0
- package/dist/admin/tenants/[id]/commerce/order-drawer.js +65 -0
- package/dist/admin/tenants/[id]/commerce/order-drawer.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/order-pipeline.js +50 -0
- package/dist/admin/tenants/[id]/commerce/order-pipeline.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/orders.module.css +154 -0
- package/dist/admin/tenants/[id]/commerce/owner-card.js +55 -0
- package/dist/admin/tenants/[id]/commerce/owner-card.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/pill.module.css +47 -0
- package/dist/admin/tenants/[id]/commerce/recent-orders.js +98 -0
- package/dist/admin/tenants/[id]/commerce/recent-orders.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce/shell.module.css +64 -0
- package/dist/admin/tenants/[id]/commerce/status-pill.js +19 -0
- package/dist/admin/tenants/[id]/commerce/status-pill.js.map +1 -0
- package/dist/admin/tenants/[id]/commerce.js +1 -0
- package/dist/admin/tenants/[id]/copy-text.js +30 -0
- package/dist/admin/tenants/[id]/copy-text.js.map +1 -0
- package/dist/admin/tenants/[id]/merchant-ledger.js +47 -0
- package/dist/admin/tenants/[id]/merchant-ledger.js.map +1 -0
- package/dist/admin/tenants/[id]/message-merchant-button.js +38 -0
- package/dist/admin/tenants/[id]/message-merchant-button.js.map +1 -0
- package/dist/admin/tenants/[id]/message-merchant-dialog.js +96 -0
- package/dist/admin/tenants/[id]/message-merchant-dialog.js.map +1 -0
- package/dist/admin/tenants/[id]/page.js +2308 -0
- package/dist/admin/tenants/[id]/page.js.map +1 -0
- package/dist/admin/tenants/[id]/subaccounts-panel.js +40 -0
- package/dist/admin/tenants/[id]/subaccounts-panel.js.map +1 -0
- package/dist/admin/tenants/[id]/tenant-activity-feed.js +92 -0
- package/dist/admin/tenants/[id]/tenant-activity-feed.js.map +1 -0
- package/dist/admin/tenants/[id]/tenant-activity.module.css +94 -0
- package/dist/admin/tenants/[id]/tenant-attention.js +93 -0
- package/dist/admin/tenants/[id]/tenant-attention.js.map +1 -0
- package/dist/admin/tenants/[id]/tenant-header.js +125 -0
- package/dist/admin/tenants/[id]/tenant-header.js.map +1 -0
- package/dist/admin/tenants/[id]/tenant-invites.js +49 -0
- package/dist/admin/tenants/[id]/tenant-invites.js.map +1 -0
- package/dist/admin/tenants/[id]/tenant-layout.module.css +106 -0
- package/dist/admin/tenants/[id]/tenant-overview.js +182 -0
- package/dist/admin/tenants/[id]/tenant-overview.js.map +1 -0
- package/dist/admin/tenants/[id]/tenant-overview.module.css +151 -0
- package/dist/admin/tenants/[id]/tenant-people-panel.js +109 -0
- package/dist/admin/tenants/[id]/tenant-people-panel.js.map +1 -0
- package/dist/admin/tenants/[id]/tenant-people.module.css +121 -0
- package/dist/admin/tenants/[id]/tenant-pos.js +101 -0
- package/dist/admin/tenants/[id]/tenant-pos.js.map +1 -0
- package/dist/admin/tenants/[id]/tenant-sidebar.js +115 -0
- package/dist/admin/tenants/[id]/tenant-sidebar.js.map +1 -0
- package/dist/admin/tenants/[id]/tenant-sidebar.module.css +53 -0
- package/dist/admin/tenants/[id]/tenant-support.js +37 -0
- package/dist/admin/tenants/[id]/tenant-support.js.map +1 -0
- package/dist/admin/tenants/[id]/tenant-tabs.js +22 -0
- package/dist/admin/tenants/[id]/tenant-tabs.js.map +1 -0
- package/dist/admin/tenants/[id]/tenant-wallet-card.js +53 -0
- package/dist/admin/tenants/[id]/tenant-wallet-card.js.map +1 -0
- package/dist/admin/tenants/[id]/use-set-account-officer.js +31 -0
- package/dist/admin/tenants/[id]/use-set-account-officer.js.map +1 -0
- package/dist/admin/tenants/[id]/use-tenant-wallet.js +23 -0
- package/dist/admin/tenants/[id]/use-tenant-wallet.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/business-records.js +70 -0
- package/dist/admin/tenants/[id]/verification/business-records.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/case-checks.js +81 -0
- package/dist/admin/tenants/[id]/verification/case-checks.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/case-events.js +44 -0
- package/dist/admin/tenants/[id]/verification/case-events.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/case-form-dialog.js +58 -0
- package/dist/admin/tenants/[id]/verification/case-form-dialog.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/case-history.js +27 -0
- package/dist/admin/tenants/[id]/verification/case-history.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/case-rules.js +72 -0
- package/dist/admin/tenants/[id]/verification/case-rules.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/case-status.js +47 -0
- package/dist/admin/tenants/[id]/verification/case-status.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/case-words.js +104 -0
- package/dist/admin/tenants/[id]/verification/case-words.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/decision-bar.js +59 -0
- package/dist/admin/tenants/[id]/verification/decision-bar.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/decision-dialogs.js +152 -0
- package/dist/admin/tenants/[id]/verification/decision-dialogs.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/document-file.js +78 -0
- package/dist/admin/tenants/[id]/verification/document-file.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/document-view.js +28 -0
- package/dist/admin/tenants/[id]/verification/document-view.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/document-viewer.js +46 -0
- package/dist/admin/tenants/[id]/verification/document-viewer.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/document-viewer.module.css +98 -0
- package/dist/admin/tenants/[id]/verification/person-card.js +111 -0
- package/dist/admin/tenants/[id]/verification/person-card.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/reveal-number.js +48 -0
- package/dist/admin/tenants/[id]/verification/reveal-number.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/reverse-dialog.js +52 -0
- package/dist/admin/tenants/[id]/verification/reverse-dialog.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/sent-files.js +33 -0
- package/dist/admin/tenants/[id]/verification/sent-files.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/tenant-verification.js +103 -0
- package/dist/admin/tenants/[id]/verification/tenant-verification.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/use-case.js +57 -0
- package/dist/admin/tenants/[id]/verification/use-case.js.map +1 -0
- package/dist/admin/tenants/[id]/verification/verification.module.css +168 -0
- package/dist/admin/tenants/account-officer-action.js +8 -0
- package/dist/admin/tenants/account-officer-action.js.map +1 -0
- package/dist/admin/tenants/account-officer-filter.js +43 -0
- package/dist/admin/tenants/account-officer-filter.js.map +1 -0
- package/dist/admin/tenants/account-officer-options.js +15 -0
- package/dist/admin/tenants/account-officer-options.js.map +1 -0
- package/dist/admin/tenants/country-filter.js +53 -0
- package/dist/admin/tenants/country-filter.js.map +1 -0
- package/dist/admin/tenants/country-options.js +22 -0
- package/dist/admin/tenants/country-options.js.map +1 -0
- package/dist/admin/tenants/message-merchant.js +61 -0
- package/dist/admin/tenants/message-merchant.js.map +1 -0
- package/dist/admin/tenants/page.js +11 -0
- package/dist/admin/tenants/page.js.map +1 -0
- package/dist/admin/tenants/tenant-list-row.js +169 -0
- package/dist/admin/tenants/tenant-list-row.js.map +1 -0
- package/dist/admin/tenants/tenants-analytics.js +119 -0
- package/dist/admin/tenants/tenants-analytics.js.map +1 -0
- package/dist/admin/tenants/tenants-kpis.js +98 -0
- package/dist/admin/tenants/tenants-kpis.js.map +1 -0
- package/dist/admin/tenants/tenants-logo.js +8 -0
- package/dist/admin/tenants/tenants-logo.js.map +1 -0
- package/dist/admin/tenants/tenants-table.js +135 -0
- package/dist/admin/tenants/tenants-table.js.map +1 -0
- package/dist/admin/tenants/tenants-workspace.js +98 -0
- package/dist/admin/tenants/tenants-workspace.js.map +1 -0
- package/dist/admin/till-requests/decision-dialog.js +59 -0
- package/dist/admin/till-requests/decision-dialog.js.map +1 -0
- package/dist/admin/till-requests/page.js +124 -0
- package/dist/admin/till-requests/page.js.map +1 -0
- package/dist/admin/till-requests/till-request-row.js +72 -0
- package/dist/admin/till-requests/till-request-row.js.map +1 -0
- package/dist/admin/verification/page.js +11 -0
- package/dist/admin/verification/page.js.map +1 -0
- package/dist/admin/verification/preview-dialog.js +111 -0
- package/dist/admin/verification/preview-dialog.js.map +1 -0
- package/dist/admin/verification/reject-dialog.js +94 -0
- package/dist/admin/verification/reject-dialog.js.map +1 -0
- package/dist/admin/verification/review-queue.js +124 -0
- package/dist/admin/verification/review-queue.js.map +1 -0
- package/dist/admin/verification/review-row.js +55 -0
- package/dist/admin/verification/review-row.js.map +1 -0
- package/dist/admin/verification/review.js +69 -0
- package/dist/admin/verification/review.js.map +1 -0
- package/dist/admin/verification/use-review.js +26 -0
- package/dist/admin/verification/use-review.js.map +1 -0
- package/dist/admin/verification/verification-page.js +35 -0
- package/dist/admin/verification/verification-page.js.map +1 -0
- package/dist/admin/verification/verification.module.css +30 -0
- package/dist/admin/verification/waiting-cases.js +94 -0
- package/dist/admin/verification/waiting-cases.js.map +1 -0
- package/dist/admin/wallets/page.js +11 -0
- package/dist/admin/wallets/page.js.map +1 -0
- package/dist/admin/wallets/wallets-workspace.js +37 -0
- package/dist/admin/wallets/wallets-workspace.js.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { hueFor } from "./tones";
|
|
5
|
+
const initials = (name) => name.split(/[\s@._-]+/).filter(Boolean).slice(0, 2).map((p) => p[0]?.toUpperCase()).join("") || "?";
|
|
6
|
+
function EntityAvatar({
|
|
7
|
+
name,
|
|
8
|
+
src,
|
|
9
|
+
size = 40,
|
|
10
|
+
round = false
|
|
11
|
+
}) {
|
|
12
|
+
const [broken, setBroken] = useState(false);
|
|
13
|
+
const radius = round ? 999 : Math.round(size * 0.28);
|
|
14
|
+
const hue = hueFor(name);
|
|
15
|
+
if (src && !broken) {
|
|
16
|
+
return (
|
|
17
|
+
// eslint-disable-next-line @next/next/no-img-element -- remote merchant logos, any host
|
|
18
|
+
/* @__PURE__ */ jsx(
|
|
19
|
+
"img",
|
|
20
|
+
{
|
|
21
|
+
src,
|
|
22
|
+
alt: "",
|
|
23
|
+
width: size,
|
|
24
|
+
height: size,
|
|
25
|
+
onError: () => setBroken(true),
|
|
26
|
+
style: {
|
|
27
|
+
width: size,
|
|
28
|
+
height: size,
|
|
29
|
+
borderRadius: radius,
|
|
30
|
+
objectFit: "cover",
|
|
31
|
+
flexShrink: 0,
|
|
32
|
+
boxShadow: "0 0 0 1px var(--adm-line)"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
return /* @__PURE__ */ jsx(
|
|
39
|
+
"span",
|
|
40
|
+
{
|
|
41
|
+
"aria-hidden": true,
|
|
42
|
+
style: {
|
|
43
|
+
display: "inline-grid",
|
|
44
|
+
placeItems: "center",
|
|
45
|
+
width: size,
|
|
46
|
+
height: size,
|
|
47
|
+
flexShrink: 0,
|
|
48
|
+
borderRadius: radius,
|
|
49
|
+
// Flat: a brand tint with the initials in the same hue, no gradient.
|
|
50
|
+
background: `color-mix(in srgb, ${hue} 14%, var(--bg-base))`,
|
|
51
|
+
color: `color-mix(in srgb, ${hue} 75%, var(--text-primary))`,
|
|
52
|
+
fontSize: Math.round(size * 0.36),
|
|
53
|
+
fontWeight: 600,
|
|
54
|
+
letterSpacing: "0.02em"
|
|
55
|
+
},
|
|
56
|
+
children: initials(name)
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
export {
|
|
61
|
+
EntityAvatar
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=entity-avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/_fx/entity-avatar.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport { hueFor } from './tones';\n\nconst initials = (name: string) =>\n name\n .split(/[\\s@._-]+/)\n .filter(Boolean)\n .slice(0, 2)\n .map((p) => p[0]?.toUpperCase())\n .join('') || '?';\n\n/**\n * A merchant or person: their logo when they have one, otherwise initials on\n * a flat brand tint that is always the same for that name.\n */\nexport function EntityAvatar({\n name,\n src,\n size = 40,\n round = false,\n}: {\n name: string;\n src?: string | null;\n size?: number;\n round?: boolean;\n}) {\n const [broken, setBroken] = useState(false);\n const radius = round ? 999 : Math.round(size * 0.28);\n const hue = hueFor(name);\n\n if (src && !broken) {\n return (\n // eslint-disable-next-line @next/next/no-img-element -- remote merchant logos, any host\n <img\n src={src}\n alt=\"\"\n width={size}\n height={size}\n onError={() => setBroken(true)}\n style={{\n width: size,\n height: size,\n borderRadius: radius,\n objectFit: 'cover',\n flexShrink: 0,\n boxShadow: '0 0 0 1px var(--adm-line)',\n }}\n />\n );\n }\n\n return (\n <span\n aria-hidden\n style={{\n display: 'inline-grid',\n placeItems: 'center',\n width: size,\n height: size,\n flexShrink: 0,\n borderRadius: radius,\n // Flat: a brand tint with the initials in the same hue, no gradient.\n background: `color-mix(in srgb, ${hue} 14%, var(--bg-base))`,\n color: `color-mix(in srgb, ${hue} 75%, var(--text-primary))`,\n fontSize: Math.round(size * 0.36),\n fontWeight: 600,\n letterSpacing: '0.02em',\n }}\n >\n {initials(name)}\n </span>\n );\n}\n"],"mappings":";AAmCM;AAjCN,SAAS,gBAAgB;AACzB,SAAS,cAAc;AAEvB,MAAM,WAAW,CAAC,SAChB,KACG,MAAM,WAAW,EACjB,OAAO,OAAO,EACd,MAAM,GAAG,CAAC,EACV,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,EAC9B,KAAK,EAAE,KAAK;AAMV,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AACV,GAKG;AACD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,SAAS,QAAQ,MAAM,KAAK,MAAM,OAAO,IAAI;AACnD,QAAM,MAAM,OAAO,IAAI;AAEvB,MAAI,OAAO,CAAC,QAAQ;AAClB;AAAA;AAAA,MAEE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,KAAI;AAAA,UACJ,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,SAAS,MAAM,UAAU,IAAI;AAAA,UAC7B,OAAO;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,cAAc;AAAA,YACd,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,WAAW;AAAA,UACb;AAAA;AAAA,MACF;AAAA;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,MACX,OAAO;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,cAAc;AAAA;AAAA,QAEd,YAAY,sBAAsB,GAAG;AAAA,QACrC,OAAO,sBAAsB,GAAG;AAAA,QAChC,UAAU,KAAK,MAAM,OAAO,IAAI;AAAA,QAChC,YAAY;AAAA,QACZ,eAAe;AAAA,MACjB;AAAA,MAEC,mBAAS,IAAI;AAAA;AAAA,EAChB;AAEJ;","names":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Reveal, CountUp, SPRING } from "./motion";
|
|
2
|
+
import { PageTransition } from "./page-transition";
|
|
3
|
+
import { EntityAvatar } from "./entity-avatar";
|
|
4
|
+
import { TONE, hueFor } from "./tones";
|
|
5
|
+
export {
|
|
6
|
+
CountUp,
|
|
7
|
+
EntityAvatar,
|
|
8
|
+
PageTransition,
|
|
9
|
+
Reveal,
|
|
10
|
+
SPRING,
|
|
11
|
+
TONE,
|
|
12
|
+
hueFor
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/_fx/index.ts"],"sourcesContent":["export { Reveal, CountUp, SPRING } from './motion';\nexport { PageTransition } from './page-transition';\nexport { EntityAvatar } from './entity-avatar';\nexport { TONE, hueFor } from './tones';\nexport type { Tone } from './tones';\n"],"mappings":"AAAA,SAAS,QAAQ,SAAS,cAAc;AACxC,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,MAAM,cAAc;","names":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import {
|
|
4
|
+
animate,
|
|
5
|
+
motion,
|
|
6
|
+
useInView,
|
|
7
|
+
useReducedMotionConfig
|
|
8
|
+
} from "motion/react";
|
|
9
|
+
import { useEffect, useRef, useState } from "react";
|
|
10
|
+
const SPRING = {
|
|
11
|
+
fast: { type: "spring", duration: 0.18, bounce: 0 },
|
|
12
|
+
moderate: { type: "spring", duration: 0.32, bounce: 0.08 },
|
|
13
|
+
slow: { type: "spring", duration: 0.48, bounce: 0.14 }
|
|
14
|
+
};
|
|
15
|
+
function Reveal({
|
|
16
|
+
children,
|
|
17
|
+
className,
|
|
18
|
+
as = "div"
|
|
19
|
+
}) {
|
|
20
|
+
const reduce = useReducedMotionConfig();
|
|
21
|
+
const Tag = motion[as];
|
|
22
|
+
return /* @__PURE__ */ jsx(
|
|
23
|
+
Tag,
|
|
24
|
+
{
|
|
25
|
+
className,
|
|
26
|
+
initial: { opacity: reduce ? 1 : 0 },
|
|
27
|
+
animate: { opacity: 1 },
|
|
28
|
+
transition: { duration: 0.16, ease: "easeOut" },
|
|
29
|
+
children
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
function CountUp({
|
|
34
|
+
value,
|
|
35
|
+
format = (n) => Math.round(n).toLocaleString()
|
|
36
|
+
}) {
|
|
37
|
+
const ref = useRef(null);
|
|
38
|
+
const inView = useInView(ref, { once: true });
|
|
39
|
+
const reduce = useReducedMotionConfig();
|
|
40
|
+
const [shown, setShown] = useState(reduce ? value : 0);
|
|
41
|
+
const [done, setDone] = useState(Boolean(reduce));
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
if (!inView || done) return;
|
|
44
|
+
const controls = animate(0, value, {
|
|
45
|
+
duration: 0.6,
|
|
46
|
+
ease: [0.2, 0, 0, 1],
|
|
47
|
+
onUpdate: setShown,
|
|
48
|
+
onComplete: () => setDone(true)
|
|
49
|
+
});
|
|
50
|
+
return () => controls.stop();
|
|
51
|
+
}, [inView, done, value]);
|
|
52
|
+
return /* @__PURE__ */ jsx("span", { ref, children: format(done ? value : shown) });
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
CountUp,
|
|
56
|
+
Reveal,
|
|
57
|
+
SPRING
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=motion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/_fx/motion.tsx"],"sourcesContent":["'use client';\n\nimport {\n animate,\n motion,\n useInView,\n useReducedMotionConfig,\n} from 'motion/react';\nimport { useEffect, useRef, useState, type ReactNode } from 'react';\n\n/** Spring tiers (Fluid Functionalism): small things fast, big things slower. */\nexport const SPRING = {\n fast: { type: 'spring', duration: 0.18, bounce: 0 },\n moderate: { type: 'spring', duration: 0.32, bounce: 0.08 },\n slow: { type: 'spring', duration: 0.48, bounce: 0.14 },\n} as const;\n\n/**\n * Fades in once when mounted: one short fade, no rise and no stagger, so a\n * grid of cards simply appears. `index` is accepted for older callers and\n * ignored. Reduced motion: no fade.\n */\nexport function Reveal({\n children,\n className,\n as = 'div',\n}: {\n children: ReactNode;\n index?: number;\n className?: string;\n as?: 'div' | 'section' | 'li';\n}) {\n // Follows Settings → Motion (the shell's MotionConfig), then the OS.\n const reduce = useReducedMotionConfig();\n const Tag = motion[as];\n\n return (\n <Tag\n className={className}\n initial={{ opacity: reduce ? 1 : 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.16, ease: 'easeOut' }}\n >\n {children}\n </Tag>\n );\n}\n\n/**\n * A headline number that counts up once, on the page's first load, when it\n * scrolls into view. After that (refetch, period change) it shows the new\n * figure straight away.\n */\nexport function CountUp({\n value,\n format = (n) => Math.round(n).toLocaleString(),\n}: {\n value: number;\n format?: (n: number) => string;\n}) {\n const ref = useRef<HTMLSpanElement>(null);\n const inView = useInView(ref, { once: true });\n // Follows Settings → Motion (the shell's MotionConfig), then the OS.\n const reduce = useReducedMotionConfig();\n const [shown, setShown] = useState(reduce ? value : 0);\n const [done, setDone] = useState(Boolean(reduce));\n\n useEffect(() => {\n if (!inView || done) return;\n\n const controls = animate(0, value, {\n duration: 0.6,\n ease: [0.2, 0, 0, 1],\n onUpdate: setShown,\n onComplete: () => setDone(true),\n });\n\n return () => controls.stop();\n }, [inView, done, value]);\n\n return <span ref={ref}>{format(done ? value : shown)}</span>;\n}\n"],"mappings":";AAqCI;AAnCJ;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,WAAW,QAAQ,gBAAgC;AAGrD,MAAM,SAAS;AAAA,EACpB,MAAM,EAAE,MAAM,UAAU,UAAU,MAAM,QAAQ,EAAE;AAAA,EAClD,UAAU,EAAE,MAAM,UAAU,UAAU,MAAM,QAAQ,KAAK;AAAA,EACzD,MAAM,EAAE,MAAM,UAAU,UAAU,MAAM,QAAQ,KAAK;AACvD;AAOO,SAAS,OAAO;AAAA,EACrB;AAAA,EACA;AAAA,EACA,KAAK;AACP,GAKG;AAED,QAAM,SAAS,uBAAuB;AACtC,QAAM,MAAM,OAAO,EAAE;AAErB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,SAAS,EAAE,SAAS,SAAS,IAAI,EAAE;AAAA,MACnC,SAAS,EAAE,SAAS,EAAE;AAAA,MACtB,YAAY,EAAE,UAAU,MAAM,MAAM,UAAU;AAAA,MAE7C;AAAA;AAAA,EACH;AAEJ;AAOO,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,eAAe;AAC/C,GAGG;AACD,QAAM,MAAM,OAAwB,IAAI;AACxC,QAAM,SAAS,UAAU,KAAK,EAAE,MAAM,KAAK,CAAC;AAE5C,QAAM,SAAS,uBAAuB;AACtC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,SAAS,QAAQ,CAAC;AACrD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,QAAQ,MAAM,CAAC;AAEhD,YAAU,MAAM;AACd,QAAI,CAAC,UAAU,KAAM;AAErB,UAAM,WAAW,QAAQ,GAAG,OAAO;AAAA,MACjC,UAAU;AAAA,MACV,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;AAAA,MACnB,UAAU;AAAA,MACV,YAAY,MAAM,QAAQ,IAAI;AAAA,IAChC,CAAC;AAED,WAAO,MAAM,SAAS,KAAK;AAAA,EAC7B,GAAG,CAAC,QAAQ,MAAM,KAAK,CAAC;AAExB,SAAO,oBAAC,UAAK,KAAW,iBAAO,OAAO,QAAQ,KAAK,GAAE;AACvD;","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { motion, useReducedMotionConfig } from "motion/react";
|
|
4
|
+
function PageTransition({
|
|
5
|
+
routeKey,
|
|
6
|
+
children
|
|
7
|
+
}) {
|
|
8
|
+
const reduce = useReducedMotionConfig();
|
|
9
|
+
return /* @__PURE__ */ jsx(
|
|
10
|
+
motion.div,
|
|
11
|
+
{
|
|
12
|
+
initial: { opacity: reduce ? 1 : 0 },
|
|
13
|
+
animate: { opacity: 1 },
|
|
14
|
+
transition: { duration: 0.16, ease: "easeOut" },
|
|
15
|
+
children
|
|
16
|
+
},
|
|
17
|
+
routeKey
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
PageTransition
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=page-transition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/_fx/page-transition.tsx"],"sourcesContent":["'use client';\n\nimport { motion, useReducedMotionConfig } from 'motion/react';\nimport type { ReactNode } from 'react';\n\n/** Each route fades in briefly under the shell (no slide). */\nexport function PageTransition({\n routeKey,\n children,\n}: {\n routeKey: string;\n children: ReactNode;\n}) {\n // Follows Settings → Motion (the shell's MotionConfig), then the OS.\n const reduce = useReducedMotionConfig();\n\n return (\n <motion.div\n key={routeKey}\n initial={{ opacity: reduce ? 1 : 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.16, ease: 'easeOut' }}\n >\n {children}\n </motion.div>\n );\n}\n"],"mappings":";AAiBI;AAfJ,SAAS,QAAQ,8BAA8B;AAIxC,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AACF,GAGG;AAED,QAAM,SAAS,uBAAuB;AAEtC,SACE;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MAEC,SAAS,EAAE,SAAS,SAAS,IAAI,EAAE;AAAA,MACnC,SAAS,EAAE,SAAS,EAAE;AAAA,MACtB,YAAY,EAAE,UAAU,MAAM,MAAM,UAAU;AAAA,MAE7C;AAAA;AAAA,IALI;AAAA,EAMP;AAEJ;","names":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const tint = (token, pct = 10) => `color-mix(in srgb, ${token} ${pct}%, transparent)`;
|
|
2
|
+
const TONE = {
|
|
3
|
+
brand: { fg: "var(--brand-500)", bg: tint("var(--brand-500)") },
|
|
4
|
+
money: { fg: "var(--brand-700)", bg: tint("var(--brand-700)") },
|
|
5
|
+
ops: { fg: "var(--brand-400)", bg: tint("var(--brand-400)", 12) },
|
|
6
|
+
inbox: { fg: "var(--brand-600)", bg: tint("var(--brand-600)") },
|
|
7
|
+
platform: { fg: "var(--brand-800)", bg: tint("var(--brand-800)") },
|
|
8
|
+
risk: { fg: "var(--error)", bg: tint("var(--error)") }
|
|
9
|
+
};
|
|
10
|
+
const HUES = [
|
|
11
|
+
"var(--brand-400)",
|
|
12
|
+
"var(--brand-500)",
|
|
13
|
+
"var(--brand-600)",
|
|
14
|
+
"var(--brand-700)",
|
|
15
|
+
"var(--brand-800)",
|
|
16
|
+
"var(--brand-300)"
|
|
17
|
+
];
|
|
18
|
+
function hueFor(name) {
|
|
19
|
+
let hash = 0;
|
|
20
|
+
for (let i = 0; i < name.length; i++)
|
|
21
|
+
hash = hash * 31 + name.charCodeAt(i) | 0;
|
|
22
|
+
return HUES[Math.abs(hash) % HUES.length];
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
TONE,
|
|
26
|
+
hueFor
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=tones.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/_fx/tones.ts"],"sourcesContent":["/**\n * Section tones, drawn ONLY from the Box brand: the blue scale and ink.\n * Colour says which part of the console you are in, quietly; it never\n * shouts (no greens, violets or ambers as decoration). Red is kept for\n * risk because it carries meaning, not decoration.\n */\nexport type Tone = 'brand' | 'money' | 'ops' | 'inbox' | 'platform' | 'risk';\n\nconst tint = (token: string, pct = 10) =>\n `color-mix(in srgb, ${token} ${pct}%, transparent)`;\n\nexport const TONE: Record<Tone, { fg: string; bg: string }> = {\n brand: { fg: 'var(--brand-500)', bg: tint('var(--brand-500)') },\n money: { fg: 'var(--brand-700)', bg: tint('var(--brand-700)') },\n ops: { fg: 'var(--brand-400)', bg: tint('var(--brand-400)', 12) },\n inbox: { fg: 'var(--brand-600)', bg: tint('var(--brand-600)') },\n platform: { fg: 'var(--brand-800)', bg: tint('var(--brand-800)') },\n risk: { fg: 'var(--error)', bg: tint('var(--error)') },\n};\n\n/** Brand-family hues for avatars: a stable shade per name. */\nconst HUES = [\n 'var(--brand-400)',\n 'var(--brand-500)',\n 'var(--brand-600)',\n 'var(--brand-700)',\n 'var(--brand-800)',\n 'var(--brand-300)',\n];\n\nexport function hueFor(name: string): string {\n let hash = 0;\n\n for (let i = 0; i < name.length; i++)\n hash = (hash * 31 + name.charCodeAt(i)) | 0;\n\n return HUES[Math.abs(hash) % HUES.length];\n}\n"],"mappings":"AAQA,MAAM,OAAO,CAAC,OAAe,MAAM,OACjC,sBAAsB,KAAK,IAAI,GAAG;AAE7B,MAAM,OAAiD;AAAA,EAC5D,OAAO,EAAE,IAAI,oBAAoB,IAAI,KAAK,kBAAkB,EAAE;AAAA,EAC9D,OAAO,EAAE,IAAI,oBAAoB,IAAI,KAAK,kBAAkB,EAAE;AAAA,EAC9D,KAAK,EAAE,IAAI,oBAAoB,IAAI,KAAK,oBAAoB,EAAE,EAAE;AAAA,EAChE,OAAO,EAAE,IAAI,oBAAoB,IAAI,KAAK,kBAAkB,EAAE;AAAA,EAC9D,UAAU,EAAE,IAAI,oBAAoB,IAAI,KAAK,kBAAkB,EAAE;AAAA,EACjE,MAAM,EAAE,IAAI,gBAAgB,IAAI,KAAK,cAAc,EAAE;AACvD;AAGA,MAAM,OAAO;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,OAAO,MAAsB;AAC3C,MAAI,OAAO;AAEX,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ;AAC/B,WAAQ,OAAO,KAAK,KAAK,WAAW,CAAC,IAAK;AAE5C,SAAO,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM;AAC1C;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './_fx/index.js';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import {
|
|
4
|
+
useAdminInbox,
|
|
5
|
+
useInboxAlerts
|
|
6
|
+
} from "./use-admin-inbox";
|
|
7
|
+
import styles from "./nav-badge.module.css";
|
|
8
|
+
function NavBadge({
|
|
9
|
+
kind,
|
|
10
|
+
canSupport
|
|
11
|
+
}) {
|
|
12
|
+
const count = useAdminInbox(canSupport)[kind];
|
|
13
|
+
if (!count) return null;
|
|
14
|
+
return /* @__PURE__ */ jsx("span", { className: styles.badge, "aria-label": `${count} new`, children: count > 99 ? "99+" : count });
|
|
15
|
+
}
|
|
16
|
+
function InboxAlerts({
|
|
17
|
+
canSupport,
|
|
18
|
+
pathname
|
|
19
|
+
}) {
|
|
20
|
+
useInboxAlerts(canSupport, pathname);
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
InboxAlerts,
|
|
25
|
+
NavBadge
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=nav-badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/_inbox/nav-badge.tsx"],"sourcesContent":["'use client';\n\nimport {\n useAdminInbox,\n useInboxAlerts,\n type AdminInbox,\n} from './use-admin-inbox';\nimport styles from './nav-badge.module.css';\n\n/** A small count beside a nav label; hidden at zero. */\nexport function NavBadge({\n kind,\n canSupport,\n}: {\n kind: keyof AdminInbox;\n canSupport: boolean;\n}) {\n const count = useAdminInbox(canSupport)[kind];\n\n if (!count) return null;\n\n return (\n <span className={styles.badge} aria-label={`${count} new`}>\n {count > 99 ? '99+' : count}\n </span>\n );\n}\n\n/** Renders nothing; runs the new-item toast and tab-title count once. */\nexport function InboxAlerts({\n canSupport,\n pathname,\n}: {\n canSupport: boolean;\n pathname: string;\n}) {\n useInboxAlerts(canSupport, pathname);\n\n return null;\n}\n"],"mappings":";AAsBI;AApBJ;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,OAAO,YAAY;AAGZ,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AACF,GAGG;AACD,QAAM,QAAQ,cAAc,UAAU,EAAE,IAAI;AAE5C,MAAI,CAAC,MAAO,QAAO;AAEnB,SACE,oBAAC,UAAK,WAAW,OAAO,OAAO,cAAY,GAAG,KAAK,QAChD,kBAAQ,KAAK,QAAQ,OACxB;AAEJ;AAGO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AACF,GAGG;AACD,iBAAe,YAAY,QAAQ;AAEnC,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
.badge {
|
|
2
|
+
display: inline-grid;
|
|
3
|
+
min-width: 18px;
|
|
4
|
+
height: 18px;
|
|
5
|
+
margin-left: 4px;
|
|
6
|
+
padding: 0 4px;
|
|
7
|
+
place-items: center;
|
|
8
|
+
border-radius: 999px;
|
|
9
|
+
background: var(--error);
|
|
10
|
+
color: var(--adm-on-accent);
|
|
11
|
+
font-size: 11px;
|
|
12
|
+
font-weight: 600;
|
|
13
|
+
font-variant-numeric: tabular-nums;
|
|
14
|
+
line-height: 1;
|
|
15
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useEffect, useRef, useSyncExternalStore } from "react";
|
|
3
|
+
import { useQuery } from "@tanstack/react-query";
|
|
4
|
+
import { useToast } from "@withpotter/ui-kit";
|
|
5
|
+
import { adminFeedbackApi } from "@withpotter/lib/admin-feedback-api";
|
|
6
|
+
import {
|
|
7
|
+
countUnseen,
|
|
8
|
+
inboxSeenStore,
|
|
9
|
+
newest
|
|
10
|
+
} from "@withpotter/lib/admin-inbox-seen";
|
|
11
|
+
import { adminServiceOperationsApi } from "@withpotter/lib/admin-service-operations-api";
|
|
12
|
+
import { playSound } from "@withpotter/lib/sound";
|
|
13
|
+
import { announce, pollMs, useSettings } from "../_settings";
|
|
14
|
+
const PAGE = 50;
|
|
15
|
+
const INBOX_ROUTES = {
|
|
16
|
+
support: "/admin/support",
|
|
17
|
+
feedback: "/admin/feedback"
|
|
18
|
+
};
|
|
19
|
+
async function loadStamps(canSupport) {
|
|
20
|
+
const cases = (status) => canSupport ? adminServiceOperationsApi.listCases({ status, pageSize: PAGE }).catch(() => null) : null;
|
|
21
|
+
const [open, waiting, feedback] = await Promise.all([
|
|
22
|
+
cases("open"),
|
|
23
|
+
cases("waiting_on_potter"),
|
|
24
|
+
adminFeedbackApi.list({ status: "open", pageSize: PAGE }).catch(() => null)
|
|
25
|
+
]);
|
|
26
|
+
return {
|
|
27
|
+
support: [...open?.rows ?? [], ...waiting?.rows ?? []].map(
|
|
28
|
+
(c) => c.updatedAt
|
|
29
|
+
),
|
|
30
|
+
feedback: (feedback?.items ?? []).map((f) => f.createdAt)
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const EMPTY = { support: [], feedback: [] };
|
|
34
|
+
function useStamps(canSupport) {
|
|
35
|
+
const settings = useSettings();
|
|
36
|
+
const query = useQuery({
|
|
37
|
+
queryKey: ["platform-admin", "inbox", canSupport],
|
|
38
|
+
queryFn: () => loadStamps(canSupport),
|
|
39
|
+
refetchInterval: pollMs(settings),
|
|
40
|
+
refetchOnWindowFocus: true
|
|
41
|
+
});
|
|
42
|
+
return query.data;
|
|
43
|
+
}
|
|
44
|
+
function useAdminInbox(canSupport) {
|
|
45
|
+
const stamps = useStamps(canSupport) ?? EMPTY;
|
|
46
|
+
const { notifySupport, notifyFeedback } = useSettings();
|
|
47
|
+
const seen = useSyncExternalStore(
|
|
48
|
+
inboxSeenStore.subscribe,
|
|
49
|
+
inboxSeenStore.snapshot,
|
|
50
|
+
inboxSeenStore.serverSnapshot
|
|
51
|
+
);
|
|
52
|
+
return {
|
|
53
|
+
support: notifySupport === "off" ? 0 : countUnseen(stamps.support, seen.support),
|
|
54
|
+
feedback: notifyFeedback === "off" ? 0 : countUnseen(stamps.feedback, seen.feedback)
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function useMarkInboxSeen(canSupport) {
|
|
58
|
+
const stamps = useStamps(canSupport);
|
|
59
|
+
return useCallback(() => {
|
|
60
|
+
if (!stamps) return;
|
|
61
|
+
Object.keys(INBOX_ROUTES).forEach((kind) => {
|
|
62
|
+
const latest = newest(stamps[kind]);
|
|
63
|
+
if (latest) inboxSeenStore.markSeen(kind, latest);
|
|
64
|
+
});
|
|
65
|
+
}, [stamps]);
|
|
66
|
+
}
|
|
67
|
+
function useInboxAlerts(canSupport, pathname) {
|
|
68
|
+
const { toast } = useToast();
|
|
69
|
+
const stamps = useStamps(canSupport);
|
|
70
|
+
const inbox = useAdminInbox(canSupport);
|
|
71
|
+
const settings = useSettings();
|
|
72
|
+
const previous = useRef(null);
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
if (!stamps || settings.markSeen === "manual") return;
|
|
75
|
+
Object.keys(INBOX_ROUTES).forEach((kind) => {
|
|
76
|
+
const latest = newest(stamps[kind]);
|
|
77
|
+
if (latest && pathname.startsWith(INBOX_ROUTES[kind])) {
|
|
78
|
+
inboxSeenStore.markSeen(kind, latest);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}, [stamps, pathname, settings.markSeen]);
|
|
82
|
+
useEffect(() => {
|
|
83
|
+
if (!stamps) return;
|
|
84
|
+
const before = previous.current;
|
|
85
|
+
previous.current = inbox;
|
|
86
|
+
if (!before) return;
|
|
87
|
+
const newSupport = inbox.support - before.support;
|
|
88
|
+
const newFeedback = inbox.feedback - before.feedback;
|
|
89
|
+
if (newSupport > 0) {
|
|
90
|
+
if (settings.sound === "soft") playSound("potter");
|
|
91
|
+
announce(`${newSupport} new support case${newSupport === 1 ? "" : "s"}`);
|
|
92
|
+
}
|
|
93
|
+
if (newFeedback > 0) announce(`${newFeedback} new product feedback`);
|
|
94
|
+
if (newSupport > 0 && settings.notifySupport === "toast") {
|
|
95
|
+
toast({
|
|
96
|
+
title: `${newSupport} new support case${newSupport === 1 ? "" : "s"}`,
|
|
97
|
+
description: "A merchant is waiting on a reply. Open Support."
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
if (newFeedback > 0 && settings.notifyFeedback === "toast") {
|
|
101
|
+
toast({
|
|
102
|
+
title: `${newFeedback} new product feedback`,
|
|
103
|
+
description: "Open Product feedback to read it."
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}, [stamps, inbox, toast, settings]);
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
const total = settings.titleCount ? inbox.support + inbox.feedback : 0;
|
|
109
|
+
const base = document.title.replace(/^\(\d+\)\s*/, "");
|
|
110
|
+
document.title = total ? `(${total}) ${base}` : base;
|
|
111
|
+
}, [inbox, settings.titleCount]);
|
|
112
|
+
}
|
|
113
|
+
export {
|
|
114
|
+
useAdminInbox,
|
|
115
|
+
useInboxAlerts,
|
|
116
|
+
useMarkInboxSeen
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=use-admin-inbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/_inbox/use-admin-inbox.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useRef, useSyncExternalStore } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { useToast } from '@withpotter/ui-kit';\nimport { adminFeedbackApi } from '@withpotter/lib/admin-feedback-api';\nimport {\n countUnseen,\n inboxSeenStore,\n newest,\n type InboxKind,\n} from '@withpotter/lib/admin-inbox-seen';\nimport { adminServiceOperationsApi } from '@withpotter/lib/admin-service-operations-api';\nimport { playSound } from '@withpotter/lib/sound';\nimport { announce, pollMs, useSettings } from '../_settings';\n\n/** Waiting items read per inbox; more than this is a backlog, not news. */\nconst PAGE = 50;\n\n/** Opening one of these pages means the admin has seen that inbox. */\nconst INBOX_ROUTES: Record<InboxKind, string> = {\n support: '/admin/support',\n feedback: '/admin/feedback',\n};\n\nexport type AdminInbox = Record<InboxKind, number>;\n\n/** When each waiting item last changed (a merchant reply bumps a case). */\ntype Stamps = Record<InboxKind, string[]>;\n\nasync function loadStamps(canSupport: boolean): Promise<Stamps> {\n const cases = (status: 'open' | 'waiting_on_potter') =>\n canSupport\n ? adminServiceOperationsApi\n .listCases({ status, pageSize: PAGE })\n .catch(() => null)\n : null;\n const [open, waiting, feedback] = await Promise.all([\n cases('open'),\n cases('waiting_on_potter'),\n adminFeedbackApi.list({ status: 'open', pageSize: PAGE }).catch(() => null),\n ]);\n\n return {\n support: [...(open?.rows ?? []), ...(waiting?.rows ?? [])].map(\n (c) => c.updatedAt,\n ),\n feedback: (feedback?.items ?? []).map((f) => f.createdAt),\n };\n}\n\nconst EMPTY: Stamps = { support: [], feedback: [] };\n\n/** Polled as often as the admin chose in Settings → Notifications. */\nfunction useStamps(canSupport: boolean) {\n const settings = useSettings();\n const query = useQuery({\n queryKey: ['platform-admin', 'inbox', canSupport],\n queryFn: () => loadStamps(canSupport),\n refetchInterval: pollMs(settings),\n refetchOnWindowFocus: true,\n });\n\n return query.data;\n}\n\n/** New since this admin last opened each inbox; an inbox set to Off counts 0. */\nexport function useAdminInbox(canSupport: boolean): AdminInbox {\n const stamps = useStamps(canSupport) ?? EMPTY;\n const { notifySupport, notifyFeedback } = useSettings();\n const seen = useSyncExternalStore(\n inboxSeenStore.subscribe,\n inboxSeenStore.snapshot,\n inboxSeenStore.serverSnapshot,\n );\n\n return {\n support:\n notifySupport === 'off' ? 0 : countUnseen(stamps.support, seen.support),\n feedback:\n notifyFeedback === 'off'\n ? 0\n : countUnseen(stamps.feedback, seen.feedback),\n };\n}\n\n/** Marks both inboxes seen now: the manual half of \"Mark inbox seen\". */\nexport function useMarkInboxSeen(canSupport: boolean) {\n const stamps = useStamps(canSupport);\n return useCallback(() => {\n if (!stamps) return;\n (Object.keys(INBOX_ROUTES) as InboxKind[]).forEach((kind) => {\n const latest = newest(stamps[kind]);\n if (latest) inboxSeenStore.markSeen(kind, latest);\n });\n }, [stamps]);\n}\n\n/**\n * Mounted once in the admin shell. Being on Support or Product feedback marks\n * that inbox seen (and keeps it seen as items arrive); otherwise a rise in\n * unseen items toasts, and the total rides in the browser tab title.\n */\nexport function useInboxAlerts(canSupport: boolean, pathname: string) {\n const { toast } = useToast();\n const stamps = useStamps(canSupport);\n const inbox = useAdminInbox(canSupport);\n const settings = useSettings();\n const previous = useRef<AdminInbox | null>(null);\n\n useEffect(() => {\n if (!stamps || settings.markSeen === 'manual') return;\n\n (Object.keys(INBOX_ROUTES) as InboxKind[]).forEach((kind) => {\n const latest = newest(stamps[kind]);\n\n if (latest && pathname.startsWith(INBOX_ROUTES[kind])) {\n inboxSeenStore.markSeen(kind, latest);\n }\n });\n }, [stamps, pathname, settings.markSeen]);\n\n useEffect(() => {\n if (!stamps) return;\n\n const before = previous.current;\n\n previous.current = inbox;\n\n if (!before) return;\n\n const newSupport = inbox.support - before.support;\n const newFeedback = inbox.feedback - before.feedback;\n\n if (newSupport > 0) {\n if (settings.sound === 'soft') playSound('potter');\n announce(`${newSupport} new support case${newSupport === 1 ? '' : 's'}`);\n }\n\n if (newFeedback > 0) announce(`${newFeedback} new product feedback`);\n\n if (newSupport > 0 && settings.notifySupport === 'toast') {\n toast({\n title: `${newSupport} new support case${newSupport === 1 ? '' : 's'}`,\n description: 'A merchant is waiting on a reply. Open Support.',\n });\n }\n\n if (newFeedback > 0 && settings.notifyFeedback === 'toast') {\n toast({\n title: `${newFeedback} new product feedback`,\n description: 'Open Product feedback to read it.',\n });\n }\n }, [stamps, inbox, toast, settings]);\n\n useEffect(() => {\n const total = settings.titleCount ? inbox.support + inbox.feedback : 0;\n const base = document.title.replace(/^\\(\\d+\\)\\s*/, '');\n\n document.title = total ? `(${total}) ${base}` : base;\n }, [inbox, settings.titleCount]);\n}\n"],"mappings":";AAEA,SAAS,aAAa,WAAW,QAAQ,4BAA4B;AACrE,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AACzB,SAAS,wBAAwB;AACjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,iCAAiC;AAC1C,SAAS,iBAAiB;AAC1B,SAAS,UAAU,QAAQ,mBAAmB;AAG9C,MAAM,OAAO;AAGb,MAAM,eAA0C;AAAA,EAC9C,SAAS;AAAA,EACT,UAAU;AACZ;AAOA,eAAe,WAAW,YAAsC;AAC9D,QAAM,QAAQ,CAAC,WACb,aACI,0BACG,UAAU,EAAE,QAAQ,UAAU,KAAK,CAAC,EACpC,MAAM,MAAM,IAAI,IACnB;AACN,QAAM,CAAC,MAAM,SAAS,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,IAClD,MAAM,MAAM;AAAA,IACZ,MAAM,mBAAmB;AAAA,IACzB,iBAAiB,KAAK,EAAE,QAAQ,QAAQ,UAAU,KAAK,CAAC,EAAE,MAAM,MAAM,IAAI;AAAA,EAC5E,CAAC;AAED,SAAO;AAAA,IACL,SAAS,CAAC,GAAI,MAAM,QAAQ,CAAC,GAAI,GAAI,SAAS,QAAQ,CAAC,CAAE,EAAE;AAAA,MACzD,CAAC,MAAM,EAAE;AAAA,IACX;AAAA,IACA,WAAW,UAAU,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS;AAAA,EAC1D;AACF;AAEA,MAAM,QAAgB,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,EAAE;AAGlD,SAAS,UAAU,YAAqB;AACtC,QAAM,WAAW,YAAY;AAC7B,QAAM,QAAQ,SAAS;AAAA,IACrB,UAAU,CAAC,kBAAkB,SAAS,UAAU;AAAA,IAChD,SAAS,MAAM,WAAW,UAAU;AAAA,IACpC,iBAAiB,OAAO,QAAQ;AAAA,IAChC,sBAAsB;AAAA,EACxB,CAAC;AAED,SAAO,MAAM;AACf;AAGO,SAAS,cAAc,YAAiC;AAC7D,QAAM,SAAS,UAAU,UAAU,KAAK;AACxC,QAAM,EAAE,eAAe,eAAe,IAAI,YAAY;AACtD,QAAM,OAAO;AAAA,IACX,eAAe;AAAA,IACf,eAAe;AAAA,IACf,eAAe;AAAA,EACjB;AAEA,SAAO;AAAA,IACL,SACE,kBAAkB,QAAQ,IAAI,YAAY,OAAO,SAAS,KAAK,OAAO;AAAA,IACxE,UACE,mBAAmB,QACf,IACA,YAAY,OAAO,UAAU,KAAK,QAAQ;AAAA,EAClD;AACF;AAGO,SAAS,iBAAiB,YAAqB;AACpD,QAAM,SAAS,UAAU,UAAU;AACnC,SAAO,YAAY,MAAM;AACvB,QAAI,CAAC,OAAQ;AACb,IAAC,OAAO,KAAK,YAAY,EAAkB,QAAQ,CAAC,SAAS;AAC3D,YAAM,SAAS,OAAO,OAAO,IAAI,CAAC;AAClC,UAAI,OAAQ,gBAAe,SAAS,MAAM,MAAM;AAAA,IAClD,CAAC;AAAA,EACH,GAAG,CAAC,MAAM,CAAC;AACb;AAOO,SAAS,eAAe,YAAqB,UAAkB;AACpE,QAAM,EAAE,MAAM,IAAI,SAAS;AAC3B,QAAM,SAAS,UAAU,UAAU;AACnC,QAAM,QAAQ,cAAc,UAAU;AACtC,QAAM,WAAW,YAAY;AAC7B,QAAM,WAAW,OAA0B,IAAI;AAE/C,YAAU,MAAM;AACd,QAAI,CAAC,UAAU,SAAS,aAAa,SAAU;AAE/C,IAAC,OAAO,KAAK,YAAY,EAAkB,QAAQ,CAAC,SAAS;AAC3D,YAAM,SAAS,OAAO,OAAO,IAAI,CAAC;AAElC,UAAI,UAAU,SAAS,WAAW,aAAa,IAAI,CAAC,GAAG;AACrD,uBAAe,SAAS,MAAM,MAAM;AAAA,MACtC;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,UAAU,SAAS,QAAQ,CAAC;AAExC,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AAEb,UAAM,SAAS,SAAS;AAExB,aAAS,UAAU;AAEnB,QAAI,CAAC,OAAQ;AAEb,UAAM,aAAa,MAAM,UAAU,OAAO;AAC1C,UAAM,cAAc,MAAM,WAAW,OAAO;AAE5C,QAAI,aAAa,GAAG;AAClB,UAAI,SAAS,UAAU,OAAQ,WAAU,QAAQ;AACjD,eAAS,GAAG,UAAU,oBAAoB,eAAe,IAAI,KAAK,GAAG,EAAE;AAAA,IACzE;AAEA,QAAI,cAAc,EAAG,UAAS,GAAG,WAAW,uBAAuB;AAEnE,QAAI,aAAa,KAAK,SAAS,kBAAkB,SAAS;AACxD,YAAM;AAAA,QACJ,OAAO,GAAG,UAAU,oBAAoB,eAAe,IAAI,KAAK,GAAG;AAAA,QACnE,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAEA,QAAI,cAAc,KAAK,SAAS,mBAAmB,SAAS;AAC1D,YAAM;AAAA,QACJ,OAAO,GAAG,WAAW;AAAA,QACrB,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ,CAAC;AAEnC,YAAU,MAAM;AACd,UAAM,QAAQ,SAAS,aAAa,MAAM,UAAU,MAAM,WAAW;AACrE,UAAM,OAAO,SAAS,MAAM,QAAQ,eAAe,EAAE;AAErD,aAAS,QAAQ,QAAQ,IAAI,KAAK,KAAK,IAAI,KAAK;AAAA,EAClD,GAAG,CAAC,OAAO,SAAS,UAAU,CAAC;AACjC;","names":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import Link from "next/link";
|
|
4
|
+
import { Button, Card } from "@withpotter/ui-kit";
|
|
5
|
+
import { usePlatformTenant } from "../hooks";
|
|
6
|
+
import { CurrencyFilter, currenciesIn, useCurrencyParam } from "../_ui";
|
|
7
|
+
import { BusinessPicker } from "./business-picker";
|
|
8
|
+
import { LedgerBody } from "./ledger-body";
|
|
9
|
+
import { useMoneyPermissions } from "./permissions";
|
|
10
|
+
import { useTenantParam } from "./tenant-param";
|
|
11
|
+
import { useLedgerWallet } from "./use-ledger";
|
|
12
|
+
import styles from "./ledger.module.css";
|
|
13
|
+
function BusinessLedger() {
|
|
14
|
+
const [tenantId, setTenantId] = useTenantParam();
|
|
15
|
+
const { readWalletHint } = useMoneyPermissions();
|
|
16
|
+
const tenant = usePlatformTenant(tenantId);
|
|
17
|
+
const name = tenant.data?.businessName ?? "";
|
|
18
|
+
const [currency, setCurrency] = useCurrencyParam();
|
|
19
|
+
const wallet = useLedgerWallet(tenantId);
|
|
20
|
+
const currencies = currenciesIn(wallet.data?.balances.map((b) => b.currency));
|
|
21
|
+
if (!tenantId)
|
|
22
|
+
return /* @__PURE__ */ jsxs(Card, { children: [
|
|
23
|
+
/* @__PURE__ */ jsx(BusinessPicker, { picked: null, onPick: (t) => setTenantId(t.id) }),
|
|
24
|
+
readWalletHint && /* @__PURE__ */ jsx("span", { className: "adm-caption", children: readWalletHint })
|
|
25
|
+
] });
|
|
26
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
27
|
+
/* @__PURE__ */ jsxs("div", { className: styles.chosen, children: [
|
|
28
|
+
/* @__PURE__ */ jsx("h3", { className: styles.chosenName, children: name || (tenant.isLoading ? "Loading business\u2026" : "Business") }),
|
|
29
|
+
/* @__PURE__ */ jsxs("div", { className: styles.chosenActions, children: [
|
|
30
|
+
/* @__PURE__ */ jsx(
|
|
31
|
+
CurrencyFilter,
|
|
32
|
+
{
|
|
33
|
+
value: currency,
|
|
34
|
+
onChange: setCurrency,
|
|
35
|
+
currencies
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
/* @__PURE__ */ jsx(
|
|
39
|
+
Link,
|
|
40
|
+
{
|
|
41
|
+
href: `/admin/tenants/${tenantId}`,
|
|
42
|
+
className: "text-brand-500 hover:underline",
|
|
43
|
+
children: "Open profile"
|
|
44
|
+
}
|
|
45
|
+
),
|
|
46
|
+
/* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: () => setTenantId(null), children: "Change business" })
|
|
47
|
+
] })
|
|
48
|
+
] }),
|
|
49
|
+
readWalletHint && /* @__PURE__ */ jsx("p", { className: "adm-caption", children: readWalletHint }),
|
|
50
|
+
/* @__PURE__ */ jsx(
|
|
51
|
+
LedgerBody,
|
|
52
|
+
{
|
|
53
|
+
tenantId,
|
|
54
|
+
business: name,
|
|
55
|
+
currency,
|
|
56
|
+
onCurrency: setCurrency
|
|
57
|
+
},
|
|
58
|
+
tenantId
|
|
59
|
+
)
|
|
60
|
+
] });
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
BusinessLedger
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=business-ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/_money/business-ledger.tsx"],"sourcesContent":["'use client';\n\nimport Link from 'next/link';\nimport { Button, Card } from '@withpotter/ui-kit';\nimport { usePlatformTenant } from '../hooks';\nimport { CurrencyFilter, currenciesIn, useCurrencyParam } from '../_ui';\nimport { BusinessPicker } from './business-picker';\nimport { LedgerBody } from './ledger-body';\nimport { useMoneyPermissions } from './permissions';\nimport { useTenantParam } from './tenant-param';\nimport { useLedgerWallet } from './use-ledger';\nimport styles from './ledger.module.css';\n\n/**\n * One business's ledger: pick it, then read its balances, recent entries,\n * a statement for any window, and the holds on it. The ledger itself is the\n * merchant page's (`LedgerBody`), shared, not copied.\n */\nexport function BusinessLedger() {\n const [tenantId, setTenantId] = useTenantParam();\n const { readWalletHint } = useMoneyPermissions();\n // The name, for the heading and the CSV, survives a refresh this way.\n const tenant = usePlatformTenant(tenantId);\n const name = tenant.data?.businessName ?? '';\n const [currency, setCurrency] = useCurrencyParam();\n // The body's own wallet read (one shared query): its currencies are the\n // filter's choices.\n const wallet = useLedgerWallet(tenantId);\n const currencies = currenciesIn(wallet.data?.balances.map((b) => b.currency));\n\n if (!tenantId)\n return (\n <Card>\n <BusinessPicker picked={null} onPick={(t) => setTenantId(t.id)} />\n {readWalletHint && (\n <span className=\"adm-caption\">{readWalletHint}</span>\n )}\n </Card>\n );\n\n return (\n <div>\n <div className={styles.chosen}>\n <h3 className={styles.chosenName}>\n {name || (tenant.isLoading ? 'Loading business…' : 'Business')}\n </h3>\n <div className={styles.chosenActions}>\n <CurrencyFilter\n value={currency}\n onChange={setCurrency}\n currencies={currencies}\n />\n <Link\n href={`/admin/tenants/${tenantId}`}\n className=\"text-brand-500 hover:underline\"\n >\n Open profile\n </Link>\n <Button variant=\"secondary\" onClick={() => setTenantId(null)}>\n Change business\n </Button>\n </div>\n </div>\n {readWalletHint && <p className=\"adm-caption\">{readWalletHint}</p>}\n <LedgerBody\n key={tenantId}\n tenantId={tenantId}\n business={name}\n currency={currency}\n onCurrency={setCurrency}\n />\n </div>\n );\n}\n"],"mappings":";AAgCM,SACE,KADF;AA9BN,OAAO,UAAU;AACjB,SAAS,QAAQ,YAAY;AAC7B,SAAS,yBAAyB;AAClC,SAAS,gBAAgB,cAAc,wBAAwB;AAC/D,SAAS,sBAAsB;AAC/B,SAAS,kBAAkB;AAC3B,SAAS,2BAA2B;AACpC,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAChC,OAAO,YAAY;AAOZ,SAAS,iBAAiB;AAC/B,QAAM,CAAC,UAAU,WAAW,IAAI,eAAe;AAC/C,QAAM,EAAE,eAAe,IAAI,oBAAoB;AAE/C,QAAM,SAAS,kBAAkB,QAAQ;AACzC,QAAM,OAAO,OAAO,MAAM,gBAAgB;AAC1C,QAAM,CAAC,UAAU,WAAW,IAAI,iBAAiB;AAGjD,QAAM,SAAS,gBAAgB,QAAQ;AACvC,QAAM,aAAa,aAAa,OAAO,MAAM,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;AAE5E,MAAI,CAAC;AACH,WACE,qBAAC,QACC;AAAA,0BAAC,kBAAe,QAAQ,MAAM,QAAQ,CAAC,MAAM,YAAY,EAAE,EAAE,GAAG;AAAA,MAC/D,kBACC,oBAAC,UAAK,WAAU,eAAe,0BAAe;AAAA,OAElD;AAGJ,SACE,qBAAC,SACC;AAAA,yBAAC,SAAI,WAAW,OAAO,QACrB;AAAA,0BAAC,QAAG,WAAW,OAAO,YACnB,mBAAS,OAAO,YAAY,2BAAsB,aACrD;AAAA,MACA,qBAAC,SAAI,WAAW,OAAO,eACrB;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,YACP,UAAU;AAAA,YACV;AAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,kBAAkB,QAAQ;AAAA,YAChC,WAAU;AAAA,YACX;AAAA;AAAA,QAED;AAAA,QACA,oBAAC,UAAO,SAAQ,aAAY,SAAS,MAAM,YAAY,IAAI,GAAG,6BAE9D;AAAA,SACF;AAAA,OACF;AAAA,IACC,kBAAkB,oBAAC,OAAE,WAAU,eAAe,0BAAe;AAAA,IAC9D;AAAA,MAAC;AAAA;AAAA,QAEC;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA,YAAY;AAAA;AAAA,MAJP;AAAA,IAKP;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useDeferredValue, useState } from "react";
|
|
4
|
+
import { Button, SearchField } from "@withpotter/ui-kit";
|
|
5
|
+
import { Skeleton } from "../_ui";
|
|
6
|
+
import { usePlatformTenants } from "../hooks";
|
|
7
|
+
import { FinderRow } from "./finder-row";
|
|
8
|
+
import styles from "./page.module.css";
|
|
9
|
+
function BusinessPicker({
|
|
10
|
+
picked,
|
|
11
|
+
onPick
|
|
12
|
+
}) {
|
|
13
|
+
const [search, setSearch] = useState("");
|
|
14
|
+
const term = useDeferredValue(search.trim());
|
|
15
|
+
const { data, isLoading, isError, refetch } = usePlatformTenants({
|
|
16
|
+
page: 1,
|
|
17
|
+
pageSize: 5,
|
|
18
|
+
search: term || void 0
|
|
19
|
+
});
|
|
20
|
+
const rows = data?.rows ?? [];
|
|
21
|
+
return /* @__PURE__ */ jsxs("div", { style: { display: "grid", gap: 8 }, children: [
|
|
22
|
+
/* @__PURE__ */ jsx(
|
|
23
|
+
SearchField,
|
|
24
|
+
{
|
|
25
|
+
value: search,
|
|
26
|
+
onChange: setSearch,
|
|
27
|
+
"aria-label": "Search businesses by name",
|
|
28
|
+
placeholder: "Search businesses by name"
|
|
29
|
+
}
|
|
30
|
+
),
|
|
31
|
+
/* @__PURE__ */ jsxs("ul", { className: styles.results, "aria-busy": isLoading || void 0, children: [
|
|
32
|
+
isLoading && Array.from({ length: 3 }, (_, i) => /* @__PURE__ */ jsx("li", { "aria-hidden": true, style: { padding: "8px 12px" }, children: /* @__PURE__ */ jsx(Skeleton, { height: 20, width: `${60 - i * 8}%` }) }, i)),
|
|
33
|
+
isError && /* @__PURE__ */ jsxs("li", { className: styles.failed, role: "alert", children: [
|
|
34
|
+
/* @__PURE__ */ jsx("span", { children: "Businesses did not load." }),
|
|
35
|
+
/* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: () => refetch(), children: "Try again" })
|
|
36
|
+
] }),
|
|
37
|
+
!isLoading && !isError && rows.length === 0 && /* @__PURE__ */ jsx("li", { className: styles.meta, children: term ? `No business matches \u201C${term}\u201D.` : "No businesses yet." }),
|
|
38
|
+
rows.map((t) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
39
|
+
FinderRow,
|
|
40
|
+
{
|
|
41
|
+
t,
|
|
42
|
+
selected: picked?.id === t.id,
|
|
43
|
+
failedPayout: false,
|
|
44
|
+
onSelect: () => onPick(t)
|
|
45
|
+
}
|
|
46
|
+
) }, t.id))
|
|
47
|
+
] })
|
|
48
|
+
] });
|
|
49
|
+
}
|
|
50
|
+
export {
|
|
51
|
+
BusinessPicker
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=business-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/_money/business-picker.tsx"],"sourcesContent":["'use client';\n\nimport { useDeferredValue, useState } from 'react';\nimport { Button, SearchField } from '@withpotter/ui-kit';\nimport type { TenantRow } from '@withpotter/lib/admin-api';\nimport { Skeleton } from '../_ui';\nimport { usePlatformTenants } from '../hooks';\nimport { FinderRow } from './finder-row';\nimport styles from './page.module.css';\n\n/**\n * The merchant finder's search and rows, for use inside a dialog: pressing a\n * row picks the business instead of opening the quick view, so no second\n * dialog opens over the first.\n */\nexport function BusinessPicker({\n picked,\n onPick,\n}: {\n picked: TenantRow | null;\n onPick: (t: TenantRow) => void;\n}) {\n const [search, setSearch] = useState('');\n const term = useDeferredValue(search.trim());\n const { data, isLoading, isError, refetch } = usePlatformTenants({\n page: 1,\n pageSize: 5,\n search: term || undefined,\n });\n const rows = data?.rows ?? [];\n\n return (\n <div style={{ display: 'grid', gap: 8 }}>\n <SearchField\n value={search}\n onChange={setSearch}\n aria-label=\"Search businesses by name\"\n placeholder=\"Search businesses by name\"\n />\n <ul className={styles.results} aria-busy={isLoading || undefined}>\n {isLoading &&\n Array.from({ length: 3 }, (_, i) => (\n <li key={i} aria-hidden style={{ padding: '8px 12px' }}>\n <Skeleton height={20} width={`${60 - i * 8}%`} />\n </li>\n ))}\n {isError && (\n <li className={styles.failed} role=\"alert\">\n <span>Businesses did not load.</span>\n <Button variant=\"secondary\" onClick={() => refetch()}>\n Try again\n </Button>\n </li>\n )}\n {!isLoading && !isError && rows.length === 0 && (\n <li className={styles.meta}>\n {term ? `No business matches “${term}”.` : 'No businesses yet.'}\n </li>\n )}\n {rows.map((t) => (\n <li key={t.id}>\n <FinderRow\n t={t}\n selected={picked?.id === t.id}\n failedPayout={false}\n onSelect={() => onPick(t)}\n />\n </li>\n ))}\n </ul>\n </div>\n );\n}\n"],"mappings":";AAiCM,cAcI,YAdJ;AA/BN,SAAS,kBAAkB,gBAAgB;AAC3C,SAAS,QAAQ,mBAAmB;AAEpC,SAAS,gBAAgB;AACzB,SAAS,0BAA0B;AACnC,SAAS,iBAAiB;AAC1B,OAAO,YAAY;AAOZ,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AACF,GAGG;AACD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,EAAE;AACvC,QAAM,OAAO,iBAAiB,OAAO,KAAK,CAAC;AAC3C,QAAM,EAAE,MAAM,WAAW,SAAS,QAAQ,IAAI,mBAAmB;AAAA,IAC/D,MAAM;AAAA,IACN,UAAU;AAAA,IACV,QAAQ,QAAQ;AAAA,EAClB,CAAC;AACD,QAAM,OAAO,MAAM,QAAQ,CAAC;AAE5B,SACE,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,EAAE,GACpC;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU;AAAA,QACV,cAAW;AAAA,QACX,aAAY;AAAA;AAAA,IACd;AAAA,IACA,qBAAC,QAAG,WAAW,OAAO,SAAS,aAAW,aAAa,QACpD;AAAA,mBACC,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MAC5B,oBAAC,QAAW,eAAW,MAAC,OAAO,EAAE,SAAS,WAAW,GACnD,8BAAC,YAAS,QAAQ,IAAI,OAAO,GAAG,KAAK,IAAI,CAAC,KAAK,KADxC,CAET,CACD;AAAA,MACF,WACC,qBAAC,QAAG,WAAW,OAAO,QAAQ,MAAK,SACjC;AAAA,4BAAC,UAAK,sCAAwB;AAAA,QAC9B,oBAAC,UAAO,SAAQ,aAAY,SAAS,MAAM,QAAQ,GAAG,uBAEtD;AAAA,SACF;AAAA,MAED,CAAC,aAAa,CAAC,WAAW,KAAK,WAAW,KACzC,oBAAC,QAAG,WAAW,OAAO,MACnB,iBAAO,6BAAwB,IAAI,YAAO,sBAC7C;AAAA,MAED,KAAK,IAAI,CAAC,MACT,oBAAC,QACC;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,UAAU,QAAQ,OAAO,EAAE;AAAA,UAC3B,cAAc;AAAA,UACd,UAAU,MAAM,OAAO,CAAC;AAAA;AAAA,MAC1B,KANO,EAAE,EAOX,CACD;AAAA,OACH;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ApiRequestError } from "@withpotter/lib/api/core";
|
|
2
|
+
import { forbiddenText, isForbidden } from "./permissions";
|
|
3
|
+
const ACTION = {
|
|
4
|
+
propose: "propose cash postings",
|
|
5
|
+
approve: "approve cash postings",
|
|
6
|
+
reject: "reject cash postings"
|
|
7
|
+
};
|
|
8
|
+
const MAKER_CHECKER = "A different admin has to approve your proposal. You cannot decide one you proposed.";
|
|
9
|
+
const UNKNOWN_OR_DECIDED = "That proposal was not found, or it has already been approved or rejected.";
|
|
10
|
+
const BAD_WALLET = "The merchant wallet was not found or is not active. Check the wallet ID.";
|
|
11
|
+
const NO_CURRENCY = "That currency is not set up for cash postings yet. Ask engineering to enable it.";
|
|
12
|
+
const BY_TEXT = [
|
|
13
|
+
[/maker-checker|human maker/i, MAKER_CHECKER],
|
|
14
|
+
[/wallet/i, BAD_WALLET],
|
|
15
|
+
[/currency/i, NO_CURRENCY],
|
|
16
|
+
[
|
|
17
|
+
/not found|not approvable|not rejectable|outside the platform/i,
|
|
18
|
+
UNKNOWN_OR_DECIDED
|
|
19
|
+
]
|
|
20
|
+
];
|
|
21
|
+
const LIKELY = {
|
|
22
|
+
propose: `The proposal was not saved. Usually the wallet ID is wrong or the currency is not set up for cash postings.`,
|
|
23
|
+
approve: `The posting was not approved. Usually: you proposed it yourself (a different admin has to approve), the ID is unknown or already decided, the wallet is no longer valid, or the currency is not set up.`,
|
|
24
|
+
reject: `The rejection was not saved. Usually: the ID is unknown or already decided, or you proposed it yourself.`
|
|
25
|
+
};
|
|
26
|
+
function cashErrorText(error, step) {
|
|
27
|
+
if (isForbidden(error)) return forbiddenText(ACTION[step]);
|
|
28
|
+
const message = error instanceof Error ? error.message : "";
|
|
29
|
+
const known = BY_TEXT.find(([re]) => re.test(message));
|
|
30
|
+
if (known) return known[1];
|
|
31
|
+
if (error instanceof ApiRequestError) {
|
|
32
|
+
if (error.status === 404) return UNKNOWN_OR_DECIDED;
|
|
33
|
+
if (error.status === 409 || error.status === 422)
|
|
34
|
+
return message || LIKELY[step];
|
|
35
|
+
if (error.status >= 500) return LIKELY[step];
|
|
36
|
+
}
|
|
37
|
+
return message || LIKELY[step];
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
cashErrorText
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=cash-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/_money/cash-errors.ts"],"sourcesContent":["import { ApiRequestError } from '@withpotter/lib/api/core';\nimport { forbiddenText, isForbidden } from './permissions';\n\nexport type CashStep = 'propose' | 'approve' | 'reject';\n\nconst ACTION: Record<CashStep, string> = {\n propose: 'propose cash postings',\n approve: 'approve cash postings',\n reject: 'reject cash postings',\n};\n\nconst MAKER_CHECKER =\n 'A different admin has to approve your proposal. You cannot decide one you proposed.';\nconst UNKNOWN_OR_DECIDED =\n 'That proposal was not found, or it has already been approved or rejected.';\nconst BAD_WALLET =\n 'The merchant wallet was not found or is not active. Check the wallet ID.';\nconst NO_CURRENCY =\n 'That currency is not set up for cash postings yet. Ask engineering to enable it.';\n\n/** Known API wording → friendly copy, for when the message survives. */\nconst BY_TEXT: Array<[RegExp, string]> = [\n [/maker-checker|human maker/i, MAKER_CHECKER],\n [/wallet/i, BAD_WALLET],\n [/currency/i, NO_CURRENCY],\n [\n /not found|not approvable|not rejectable|outside the platform/i,\n UNKNOWN_OR_DECIDED,\n ],\n];\n\n/** What can go wrong at each step, for an opaque 500. */\nconst LIKELY: Record<CashStep, string> = {\n propose: `The proposal was not saved. Usually the wallet ID is wrong or the currency is not set up for cash postings.`,\n approve: `The posting was not approved. Usually: you proposed it yourself (a different admin has to approve), the ID is unknown or already decided, the wallet is no longer valid, or the currency is not set up.`,\n reject: `The rejection was not saved. Usually: the ID is unknown or already decided, or you proposed it yourself.`,\n};\n\n/**\n * Cash-posting failures in plain words. The API turns its plain Errors into\n * a 500 \"Internal server error\", so the step decides the likely causes.\n */\nexport function cashErrorText(error: unknown, step: CashStep): string {\n if (isForbidden(error)) return forbiddenText(ACTION[step]);\n\n const message = error instanceof Error ? error.message : '';\n const known = BY_TEXT.find(([re]) => re.test(message));\n\n if (known) return known[1];\n\n if (error instanceof ApiRequestError) {\n if (error.status === 404) return UNKNOWN_OR_DECIDED;\n\n if (error.status === 409 || error.status === 422)\n return message || LIKELY[step];\n\n if (error.status >= 500) return LIKELY[step];\n }\n\n return message || LIKELY[step];\n}\n"],"mappings":"AAAA,SAAS,uBAAuB;AAChC,SAAS,eAAe,mBAAmB;AAI3C,MAAM,SAAmC;AAAA,EACvC,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAEA,MAAM,gBACJ;AACF,MAAM,qBACJ;AACF,MAAM,aACJ;AACF,MAAM,cACJ;AAGF,MAAM,UAAmC;AAAA,EACvC,CAAC,8BAA8B,aAAa;AAAA,EAC5C,CAAC,WAAW,UAAU;AAAA,EACtB,CAAC,aAAa,WAAW;AAAA,EACzB;AAAA,IACE;AAAA,IACA;AAAA,EACF;AACF;AAGA,MAAM,SAAmC;AAAA,EACvC,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAMO,SAAS,cAAc,OAAgB,MAAwB;AACpE,MAAI,YAAY,KAAK,EAAG,QAAO,cAAc,OAAO,IAAI,CAAC;AAEzD,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,QAAM,QAAQ,QAAQ,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,OAAO,CAAC;AAErD,MAAI,MAAO,QAAO,MAAM,CAAC;AAEzB,MAAI,iBAAiB,iBAAiB;AACpC,QAAI,MAAM,WAAW,IAAK,QAAO;AAEjC,QAAI,MAAM,WAAW,OAAO,MAAM,WAAW;AAC3C,aAAO,WAAW,OAAO,IAAI;AAE/B,QAAI,MAAM,UAAU,IAAK,QAAO,OAAO,IAAI;AAAA,EAC7C;AAEA,SAAO,WAAW,OAAO,IAAI;AAC/B;","names":[]}
|