@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 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/login/page.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport { useRouter } from 'next/navigation';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { TrendingUp } from 'lucide-react';\nimport { Button, Input } from '@withpotter/ui-kit';\nimport {\n platformAdminApi,\n type AdminLoginCodeRequired,\n} from '@withpotter/lib/admin-api';\nimport { adminReturnPath } from '@withpotter/lib/api/session-scope';\nimport { ADMIN_NAME, useAdminBrand } from '../_shell/admin-brand';\n\nexport default function AdminLoginPage() {\n const router = useRouter();\n const brand = useAdminBrand();\n const queryClient = useQueryClient();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n // Set once the password was right and a code was emailed.\n const [challenge, setChallenge] = useState<AdminLoginCodeRequired | null>(\n null,\n );\n const [code, setCode] = useState('');\n const [note, setNote] = useState('');\n\n const finish = async (mustChangePassword: boolean) => {\n await queryClient.invalidateQueries({\n queryKey: ['platform-admin', 'session'],\n });\n const back = adminReturnPath(\n new URLSearchParams(window.location.search).get('redirect'),\n );\n router.replace(\n mustChangePassword\n ? `/admin/change-password?redirect=${encodeURIComponent(back)}`\n : back,\n );\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setError('');\n setNote('');\n setLoading(true);\n try {\n if (challenge) {\n const done = await platformAdminApi.verifyLoginCode(\n challenge.challengeId,\n code.trim(),\n );\n await finish(done.mustChangePassword);\n return;\n }\n const answer = await platformAdminApi.login(email, password);\n if (answer.codeRequired) {\n setChallenge(answer);\n setLoading(false);\n return;\n }\n await finish(answer.mustChangePassword);\n } catch (err: unknown) {\n setError(err instanceof Error ? err.message : 'Login failed');\n setLoading(false);\n }\n };\n\n const resend = async () => {\n if (!challenge) return;\n setError('');\n setNote('');\n try {\n const next = await platformAdminApi.resendLoginCode(\n challenge.challengeId,\n );\n setChallenge(next);\n setNote(`A new code is on its way to ${next.sentTo}.`);\n } catch (err: unknown) {\n setError(err instanceof Error ? err.message : 'Could not send a code');\n }\n };\n\n return (\n <div\n style={{\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'var(--bg-base)',\n color: 'var(--text-primary)',\n padding: 24,\n }}\n >\n <form\n onSubmit={handleSubmit}\n style={{\n width: '100%',\n maxWidth: 380,\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n fontFamily: 'var(--font-display)',\n fontWeight: 600,\n fontSize: 20,\n marginBottom: 8,\n }}\n >\n {brand ? (\n <>\n {brand.logo}\n <span style={{ color: 'var(--text-secondary)' }}>Admin</span>\n </>\n ) : (\n <>\n <TrendingUp size={20} color=\"var(--accent-primary)\" />\n {ADMIN_NAME} Admin\n </>\n )}\n </div>\n <p\n style={{\n fontSize: 14,\n color: 'var(--text-secondary)',\n marginTop: -8,\n }}\n >\n Platform administrators only.\n </p>\n {challenge ? (\n <>\n <p style={{ fontSize: 14, color: 'var(--text-secondary)' }}>\n We emailed a 6-digit code to {challenge.sentTo}. It works for 10\n minutes.\n </p>\n <Input\n inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n aria-label=\"Sign-in code\"\n placeholder=\"6-digit code\"\n maxLength={6}\n value={code}\n onChange={(e) => setCode(e.target.value.replace(/\\D/g, ''))}\n required\n autoFocus\n />\n </>\n ) : (\n <>\n <Input\n type=\"email\"\n aria-label=\"Email\"\n placeholder=\"Email\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n required\n autoFocus\n />\n <Input\n type=\"password\"\n aria-label=\"Password\"\n placeholder=\"Password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n required\n />\n </>\n )}\n {error && (\n <div style={{ color: 'var(--error)', fontSize: 13 }}>{error}</div>\n )}\n {note && (\n <div style={{ color: 'var(--text-secondary)', fontSize: 13 }}>\n {note}\n </div>\n )}\n <Button\n type=\"submit\"\n disabled={loading || (!!challenge && code.length !== 6)}\n >\n {loading\n ? 'Signing in…'\n : challenge\n ? 'Verify and sign in'\n : 'Sign in'}\n </Button>\n {challenge && (\n <>\n <Button type=\"button\" variant=\"ghost\" onClick={resend}>\n Email me a new code\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={() => {\n setChallenge(null);\n setCode('');\n setError('');\n setNote('');\n }}\n >\n Back\n </Button>\n </>\n )}\n </form>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Suspense } from "react";
|
|
4
|
+
import { useParams } from "next/navigation";
|
|
5
|
+
import { NewsletterScreen } from "../newsletter-screen";
|
|
6
|
+
function Page() {
|
|
7
|
+
const { id } = useParams();
|
|
8
|
+
return /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(NewsletterScreen, { id }, id) });
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
Page as default
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/admin/newsletters/%5Bid%5D/page.tsx"],"sourcesContent":["'use client';\n\nimport { Suspense } from 'react';\nimport { useParams } from 'next/navigation';\nimport { NewsletterScreen } from '../newsletter-screen';\n\n/** `/admin/newsletters/[id]`: a draft to write, or a sent newsletter to read. */\nexport default function Page() {\n const { id } = useParams<{ id: string }>();\n\n // The sent view reads `?tab=` and `?status=`, so it waits on the params.\n return (\n <Suspense>\n <NewsletterScreen key={id} id={id} />\n </Suspense>\n );\n}\n"],"mappings":";AAaM;AAXN,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AAGlB,SAAR,OAAwB;AAC7B,QAAM,EAAE,GAAG,IAAI,UAA0B;AAGzC,SACE,oBAAC,YACC,8BAAC,oBAA0B,MAAJ,EAAY,GACrC;AAEJ;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useParams } from "next/navigation";
|
|
4
|
+
import { ContactScreen } from "../contact-screen";
|
|
5
|
+
function Page() {
|
|
6
|
+
const { contactId } = useParams();
|
|
7
|
+
return /* @__PURE__ */ jsx(ContactScreen, { id: contactId }, contactId);
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
Page as default
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/admin/newsletters/audience/%5BcontactId%5D/page.tsx"],"sourcesContent":["'use client';\n\nimport { useParams } from 'next/navigation';\nimport { ContactScreen } from '../contact-screen';\n\n/** `/admin/newsletters/audience/[contactId]`: one person in the audience. */\nexport default function Page() {\n const { contactId } = useParams<{ contactId: string }>();\n\n return <ContactScreen key={contactId} id={contactId} />;\n}\n"],"mappings":";AASS;AAPT,SAAS,iBAAiB;AAC1B,SAAS,qBAAqB;AAGf,SAAR,OAAwB;AAC7B,QAAM,EAAE,UAAU,IAAI,UAAiC;AAEvD,SAAO,oBAAC,iBAA8B,IAAI,aAAf,SAA0B;AACvD;","names":[]}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { usePathname, useRouter, useSearchParams } from "next/navigation";
|
|
5
|
+
import {
|
|
6
|
+
Button,
|
|
7
|
+
OverflowItem,
|
|
8
|
+
OverflowMenu,
|
|
9
|
+
TabNav,
|
|
10
|
+
Th
|
|
11
|
+
} from "@withpotter/ui-kit";
|
|
12
|
+
import {
|
|
13
|
+
EmptyState,
|
|
14
|
+
FilterSearch,
|
|
15
|
+
FilterSelect,
|
|
16
|
+
Filters,
|
|
17
|
+
PageHeader
|
|
18
|
+
} from "../../_ui";
|
|
19
|
+
import { ListCard, ListPager } from "../../_ui/list-card";
|
|
20
|
+
import { isNotAvailable } from "../not-available";
|
|
21
|
+
import { NewsletterTabs } from "../section-tabs";
|
|
22
|
+
import { PAGE_SIZE } from "../use-newsletters";
|
|
23
|
+
import { ContactRow } from "./contact-row";
|
|
24
|
+
import {
|
|
25
|
+
SOURCE_OPTIONS,
|
|
26
|
+
groupFromParam,
|
|
27
|
+
groupOfTab,
|
|
28
|
+
groupTabs,
|
|
29
|
+
sourceFromValue
|
|
30
|
+
} from "./contacts";
|
|
31
|
+
import { useContacts, useContactsExport } from "./use-contacts";
|
|
32
|
+
function AudienceList() {
|
|
33
|
+
const router = useRouter();
|
|
34
|
+
const pathname = usePathname();
|
|
35
|
+
const params = useSearchParams();
|
|
36
|
+
const group = groupFromParam(params.get("status"));
|
|
37
|
+
const [search, setSearch] = useState("");
|
|
38
|
+
const [source, setSource] = useState("");
|
|
39
|
+
const scope = `${group.id}|${source}|${search}`;
|
|
40
|
+
const [paging, setPaging] = useState({ scope, page: 1 });
|
|
41
|
+
const page = paging.scope === scope ? paging.page : 1;
|
|
42
|
+
const filter = {
|
|
43
|
+
status: group.id || void 0,
|
|
44
|
+
source: sourceFromValue(source),
|
|
45
|
+
search
|
|
46
|
+
};
|
|
47
|
+
const { data, error, isLoading, isError, refetch } = useContacts(
|
|
48
|
+
filter,
|
|
49
|
+
page
|
|
50
|
+
);
|
|
51
|
+
const exporter = useContactsExport();
|
|
52
|
+
const missing = isNotAvailable(error);
|
|
53
|
+
const items = data?.items ?? [];
|
|
54
|
+
const total = data?.total ?? 0;
|
|
55
|
+
const totalPages = Math.max(1, Math.ceil(total / PAGE_SIZE));
|
|
56
|
+
const leaving = group.id === "unsubscribed";
|
|
57
|
+
const columns = leaving ? 9 : 6;
|
|
58
|
+
const narrowed = Boolean(group.id || source || search.trim());
|
|
59
|
+
const setGroup = (id) => router.replace(id ? `${pathname}?status=${id}` : pathname, {
|
|
60
|
+
scroll: false
|
|
61
|
+
});
|
|
62
|
+
const clear = () => {
|
|
63
|
+
setSearch("");
|
|
64
|
+
setSource("");
|
|
65
|
+
setGroup("");
|
|
66
|
+
};
|
|
67
|
+
const state = /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: columns, className: "!p-0", children: missing ? /* @__PURE__ */ jsx(EmptyState, { title: "Contacts could not be loaded" }) : narrowed ? /* @__PURE__ */ jsx(
|
|
68
|
+
EmptyState,
|
|
69
|
+
{
|
|
70
|
+
title: "No contacts match",
|
|
71
|
+
action: /* @__PURE__ */ jsx(Button, { size: "sm", variant: "secondary", onClick: clear, children: "Clear filters" })
|
|
72
|
+
}
|
|
73
|
+
) : /* @__PURE__ */ jsx(EmptyState, { title: "No contacts yet" }) }) });
|
|
74
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
75
|
+
/* @__PURE__ */ jsx(PageHeader, { title: "Newsletters" }),
|
|
76
|
+
/* @__PURE__ */ jsx(NewsletterTabs, { active: "audience" }),
|
|
77
|
+
/* @__PURE__ */ jsx("div", { className: "mb-4", children: /* @__PURE__ */ jsx(
|
|
78
|
+
TabNav,
|
|
79
|
+
{
|
|
80
|
+
tabs: groupTabs(data?.counts),
|
|
81
|
+
activeTab: group.id || "all",
|
|
82
|
+
onTabChange: (tab) => setGroup(groupOfTab(tab))
|
|
83
|
+
}
|
|
84
|
+
) }),
|
|
85
|
+
/* @__PURE__ */ jsx(
|
|
86
|
+
ListCard,
|
|
87
|
+
{
|
|
88
|
+
title: group.title,
|
|
89
|
+
count: data ? total : void 0,
|
|
90
|
+
columns,
|
|
91
|
+
minWidth: leaving ? 1180 : 860,
|
|
92
|
+
isLoading,
|
|
93
|
+
isError: isError && !missing,
|
|
94
|
+
onRetry: () => void refetch(),
|
|
95
|
+
errorTitle: "Failed to load the audience.",
|
|
96
|
+
emptyTitle: "No contacts yet",
|
|
97
|
+
controls: /* @__PURE__ */ jsxs(Filters, { label: "Filter contacts", children: [
|
|
98
|
+
/* @__PURE__ */ jsx(
|
|
99
|
+
FilterSearch,
|
|
100
|
+
{
|
|
101
|
+
value: search,
|
|
102
|
+
onChange: setSearch,
|
|
103
|
+
placeholder: "Search by email or name\u2026",
|
|
104
|
+
label: "Search contacts by email or name"
|
|
105
|
+
}
|
|
106
|
+
),
|
|
107
|
+
/* @__PURE__ */ jsx(
|
|
108
|
+
FilterSelect,
|
|
109
|
+
{
|
|
110
|
+
label: "Source",
|
|
111
|
+
value: source,
|
|
112
|
+
onChange: setSource,
|
|
113
|
+
options: SOURCE_OPTIONS
|
|
114
|
+
}
|
|
115
|
+
),
|
|
116
|
+
/* @__PURE__ */ jsx(OverflowMenu, { label: "Export", children: /* @__PURE__ */ jsx(
|
|
117
|
+
OverflowItem,
|
|
118
|
+
{
|
|
119
|
+
onClick: () => void exporter.exportCsv(filter),
|
|
120
|
+
disabled: exporter.exporting || missing || !total,
|
|
121
|
+
children: exporter.exporting ? "Exporting\u2026" : "Export CSV"
|
|
122
|
+
}
|
|
123
|
+
) })
|
|
124
|
+
] }),
|
|
125
|
+
footer: totalPages > 1 && /* @__PURE__ */ jsx(
|
|
126
|
+
ListPager,
|
|
127
|
+
{
|
|
128
|
+
page,
|
|
129
|
+
totalPages,
|
|
130
|
+
total,
|
|
131
|
+
noun: "contacts",
|
|
132
|
+
onPage: (next) => setPaging({ scope, page: next })
|
|
133
|
+
}
|
|
134
|
+
),
|
|
135
|
+
head: /* @__PURE__ */ jsxs("tr", { children: [
|
|
136
|
+
/* @__PURE__ */ jsx(Th, { children: "Email" }),
|
|
137
|
+
/* @__PURE__ */ jsx(Th, { children: "Name" }),
|
|
138
|
+
/* @__PURE__ */ jsx(Th, { children: "Status" }),
|
|
139
|
+
/* @__PURE__ */ jsx(Th, { children: "Source" }),
|
|
140
|
+
/* @__PURE__ */ jsx(Th, { children: "Added" }),
|
|
141
|
+
/* @__PURE__ */ jsx(Th, { children: "Last sent" }),
|
|
142
|
+
leaving && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
143
|
+
/* @__PURE__ */ jsx(Th, { children: "Unsubscribed" }),
|
|
144
|
+
/* @__PURE__ */ jsx(Th, { children: "How" }),
|
|
145
|
+
/* @__PURE__ */ jsx(Th, { children: "From newsletter" })
|
|
146
|
+
] })
|
|
147
|
+
] }),
|
|
148
|
+
children: missing || items.length === 0 ? state : items.map((contact) => /* @__PURE__ */ jsx(
|
|
149
|
+
ContactRow,
|
|
150
|
+
{
|
|
151
|
+
contact,
|
|
152
|
+
leaving
|
|
153
|
+
},
|
|
154
|
+
contact.id
|
|
155
|
+
))
|
|
156
|
+
}
|
|
157
|
+
)
|
|
158
|
+
] });
|
|
159
|
+
}
|
|
160
|
+
export {
|
|
161
|
+
AudienceList
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=audience-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/admin/newsletters/audience/audience-list.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\nimport {\n Button,\n OverflowItem,\n OverflowMenu,\n TabNav,\n Th,\n} from '@withpotter/ui-kit';\nimport {\n EmptyState,\n FilterSearch,\n FilterSelect,\n Filters,\n PageHeader,\n} from '../../_ui';\nimport { ListCard, ListPager } from '../../_ui/list-card';\nimport { isNotAvailable } from '../not-available';\nimport { NewsletterTabs } from '../section-tabs';\nimport { PAGE_SIZE } from '../use-newsletters';\nimport { ContactRow } from './contact-row';\nimport {\n SOURCE_OPTIONS,\n groupFromParam,\n groupOfTab,\n groupTabs,\n sourceFromValue,\n} from './contacts';\nimport { useContacts, useContactsExport } from './use-contacts';\n\n/**\n * Everyone the newsletter knows about, one row per address. The group lives\n * in `?status=`: it narrows this one list, so it is kept where a link can\n * carry it.\n */\nexport function AudienceList() {\n const router = useRouter();\n const pathname = usePathname();\n const params = useSearchParams();\n const group = groupFromParam(params.get('status'));\n const [search, setSearch] = useState('');\n const [source, setSource] = useState('');\n // The page belongs to one filter: a new group, source or search starts at 1.\n const scope = `${group.id}|${source}|${search}`;\n const [paging, setPaging] = useState({ scope, page: 1 });\n const page = paging.scope === scope ? paging.page : 1;\n const filter = {\n status: group.id || undefined,\n source: sourceFromValue(source),\n search,\n };\n const { data, error, isLoading, isError, refetch } = useContacts(\n filter,\n page,\n );\n const exporter = useContactsExport();\n const missing = isNotAvailable(error);\n const items = data?.items ?? [];\n const total = data?.total ?? 0;\n const totalPages = Math.max(1, Math.ceil(total / PAGE_SIZE));\n const leaving = group.id === 'unsubscribed';\n const columns = leaving ? 9 : 6;\n const narrowed = Boolean(group.id || source || search.trim());\n const setGroup = (id: string) =>\n router.replace(id ? `${pathname}?status=${id}` : pathname, {\n scroll: false,\n });\n const clear = () => {\n setSearch('');\n setSource('');\n setGroup('');\n };\n const state = (\n <tr>\n <td colSpan={columns} className=\"!p-0\">\n {missing ? (\n <EmptyState title=\"Contacts could not be loaded\" />\n ) : narrowed ? (\n <EmptyState\n title=\"No contacts match\"\n action={\n <Button size=\"sm\" variant=\"secondary\" onClick={clear}>\n Clear filters\n </Button>\n }\n />\n ) : (\n <EmptyState title=\"No contacts yet\" />\n )}\n </td>\n </tr>\n );\n\n return (\n <div>\n <PageHeader title=\"Newsletters\" />\n <NewsletterTabs active=\"audience\" />\n <div className=\"mb-4\">\n <TabNav\n tabs={groupTabs(data?.counts)}\n activeTab={group.id || 'all'}\n onTabChange={(tab) => setGroup(groupOfTab(tab))}\n />\n </div>\n <ListCard\n title={group.title}\n count={data ? total : undefined}\n columns={columns}\n minWidth={leaving ? 1180 : 860}\n isLoading={isLoading}\n isError={isError && !missing}\n onRetry={() => void refetch()}\n errorTitle=\"Failed to load the audience.\"\n emptyTitle=\"No contacts yet\"\n controls={\n <Filters label=\"Filter contacts\">\n <FilterSearch\n value={search}\n onChange={setSearch}\n placeholder=\"Search by email or name…\"\n label=\"Search contacts by email or name\"\n />\n <FilterSelect\n label=\"Source\"\n value={source}\n onChange={setSource}\n options={SOURCE_OPTIONS}\n />\n <OverflowMenu label=\"Export\">\n <OverflowItem\n onClick={() => void exporter.exportCsv(filter)}\n disabled={exporter.exporting || missing || !total}\n >\n {exporter.exporting ? 'Exporting…' : 'Export CSV'}\n </OverflowItem>\n </OverflowMenu>\n </Filters>\n }\n footer={\n totalPages > 1 && (\n <ListPager\n page={page}\n totalPages={totalPages}\n total={total}\n noun=\"contacts\"\n onPage={(next) => setPaging({ scope, page: next })}\n />\n )\n }\n head={\n <tr>\n <Th>Email</Th>\n <Th>Name</Th>\n <Th>Status</Th>\n <Th>Source</Th>\n <Th>Added</Th>\n <Th>Last sent</Th>\n {leaving && (\n <>\n <Th>Unsubscribed</Th>\n <Th>How</Th>\n <Th>From newsletter</Th>\n </>\n )}\n </tr>\n }\n >\n {missing || items.length === 0\n ? state\n : items.map((contact) => (\n <ContactRow\n key={contact.id}\n contact={contact}\n leaving={leaving}\n />\n ))}\n </ListCard>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import Link from "next/link";
|
|
5
|
+
import { Th } from "@withpotter/ui-kit";
|
|
6
|
+
import { StatusBadge } from "@withpotter/components/shared/status-badge";
|
|
7
|
+
import { EmptyState } from "../../_ui";
|
|
8
|
+
import list from "../../_ui/list-card.module.css";
|
|
9
|
+
import { EMPTY, ListCard, ListPager } from "../../_ui/list-card";
|
|
10
|
+
import rows from "../../accounts/rows.module.css";
|
|
11
|
+
import { When } from "../../audit/when";
|
|
12
|
+
import { DELIVERY_STATUS, reasonOf, timeOf } from "../deliveries";
|
|
13
|
+
import { hrefOf } from "../labels";
|
|
14
|
+
import { isNotAvailable } from "../not-available";
|
|
15
|
+
import { PAGE_SIZE } from "../use-newsletters";
|
|
16
|
+
import { useContactDeliveries } from "./use-contacts";
|
|
17
|
+
const COLUMNS = 5;
|
|
18
|
+
function ContactDeliveries({ id }) {
|
|
19
|
+
const [page, setPage] = useState(1);
|
|
20
|
+
const { data, error, isLoading, isError, refetch } = useContactDeliveries(
|
|
21
|
+
id,
|
|
22
|
+
page
|
|
23
|
+
);
|
|
24
|
+
const missing = isNotAvailable(error);
|
|
25
|
+
const items = data?.items ?? [];
|
|
26
|
+
const total = data?.total ?? 0;
|
|
27
|
+
const totalPages = Math.max(1, Math.ceil(total / PAGE_SIZE));
|
|
28
|
+
return /* @__PURE__ */ jsx(
|
|
29
|
+
ListCard,
|
|
30
|
+
{
|
|
31
|
+
title: "Newsletters sent",
|
|
32
|
+
count: data ? total : void 0,
|
|
33
|
+
columns: COLUMNS,
|
|
34
|
+
minWidth: 640,
|
|
35
|
+
isLoading,
|
|
36
|
+
isError: isError && !missing,
|
|
37
|
+
onRetry: () => void refetch(),
|
|
38
|
+
errorTitle: "Failed to load what they were sent.",
|
|
39
|
+
isEmpty: !missing && items.length === 0,
|
|
40
|
+
emptyTitle: "Nothing sent yet",
|
|
41
|
+
emptyDescription: "No newsletter has been sent to this address.",
|
|
42
|
+
footer: totalPages > 1 && /* @__PURE__ */ jsx(
|
|
43
|
+
ListPager,
|
|
44
|
+
{
|
|
45
|
+
page,
|
|
46
|
+
totalPages,
|
|
47
|
+
total,
|
|
48
|
+
noun: "newsletters",
|
|
49
|
+
onPage: setPage
|
|
50
|
+
}
|
|
51
|
+
),
|
|
52
|
+
head: /* @__PURE__ */ jsxs("tr", { children: [
|
|
53
|
+
/* @__PURE__ */ jsx(Th, { children: "Newsletter" }),
|
|
54
|
+
/* @__PURE__ */ jsx(Th, { children: "Status" }),
|
|
55
|
+
/* @__PURE__ */ jsx(Th, { children: "Reason" }),
|
|
56
|
+
/* @__PURE__ */ jsx(Th, { align: "right", children: "Tries" }),
|
|
57
|
+
/* @__PURE__ */ jsx(Th, { children: "Time" })
|
|
58
|
+
] }),
|
|
59
|
+
children: missing ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: COLUMNS, className: "!p-0", children: /* @__PURE__ */ jsx(EmptyState, { title: "Sending history could not be loaded" }) }) }) : items.map((delivery) => {
|
|
60
|
+
const status = DELIVERY_STATUS[delivery.status];
|
|
61
|
+
const reason = reasonOf(delivery);
|
|
62
|
+
return /* @__PURE__ */ jsxs("tr", { children: [
|
|
63
|
+
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("span", { className: rows.identityText, children: /* @__PURE__ */ jsx(
|
|
64
|
+
Link,
|
|
65
|
+
{
|
|
66
|
+
href: hrefOf(delivery.newsletterId),
|
|
67
|
+
className: rows.primary,
|
|
68
|
+
children: delivery.subject?.trim() || "Untitled newsletter"
|
|
69
|
+
}
|
|
70
|
+
) }) }),
|
|
71
|
+
/* @__PURE__ */ jsx("td", { className: list.nowrap, children: /* @__PURE__ */ jsx(
|
|
72
|
+
StatusBadge,
|
|
73
|
+
{
|
|
74
|
+
status: status.key,
|
|
75
|
+
label: status.label,
|
|
76
|
+
neutral: status.quiet
|
|
77
|
+
}
|
|
78
|
+
) }),
|
|
79
|
+
/* @__PURE__ */ jsx("td", { className: reason ? void 0 : list.dash, children: reason ?? EMPTY }),
|
|
80
|
+
/* @__PURE__ */ jsx("td", { className: list.num, children: delivery.attempts }),
|
|
81
|
+
/* @__PURE__ */ jsx("td", { className: `${list.nowrap} ${list.muted}`, children: /* @__PURE__ */ jsx(When, { iso: timeOf(delivery) }) })
|
|
82
|
+
] }, delivery.id);
|
|
83
|
+
})
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
export {
|
|
88
|
+
ContactDeliveries
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=contact-deliveries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/admin/newsletters/audience/contact-deliveries.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport Link from 'next/link';\nimport { Th } from '@withpotter/ui-kit';\nimport { StatusBadge } from '@withpotter/components/shared/status-badge';\nimport { EmptyState } from '../../_ui';\nimport list from '../../_ui/list-card.module.css';\nimport { EMPTY, ListCard, ListPager } from '../../_ui/list-card';\nimport rows from '../../accounts/rows.module.css';\nimport { When } from '../../audit/when';\nimport { DELIVERY_STATUS, reasonOf, timeOf } from '../deliveries';\nimport { hrefOf } from '../labels';\nimport { isNotAvailable } from '../not-available';\nimport { PAGE_SIZE } from '../use-newsletters';\nimport { useContactDeliveries } from './use-contacts';\n\nconst COLUMNS = 5;\n\n/** Every newsletter one contact was sent, newest first, and how each went. */\nexport function ContactDeliveries({ id }: { id: string }) {\n const [page, setPage] = useState(1);\n const { data, error, isLoading, isError, refetch } = useContactDeliveries(\n id,\n page,\n );\n const missing = isNotAvailable(error);\n const items = data?.items ?? [];\n const total = data?.total ?? 0;\n const totalPages = Math.max(1, Math.ceil(total / PAGE_SIZE));\n\n return (\n <ListCard\n title=\"Newsletters sent\"\n count={data ? total : undefined}\n columns={COLUMNS}\n minWidth={640}\n isLoading={isLoading}\n isError={isError && !missing}\n onRetry={() => void refetch()}\n errorTitle=\"Failed to load what they were sent.\"\n isEmpty={!missing && items.length === 0}\n emptyTitle=\"Nothing sent yet\"\n emptyDescription=\"No newsletter has been sent to this address.\"\n footer={\n totalPages > 1 && (\n <ListPager\n page={page}\n totalPages={totalPages}\n total={total}\n noun=\"newsletters\"\n onPage={setPage}\n />\n )\n }\n head={\n <tr>\n <Th>Newsletter</Th>\n <Th>Status</Th>\n <Th>Reason</Th>\n <Th align=\"right\">Tries</Th>\n <Th>Time</Th>\n </tr>\n }\n >\n {missing ? (\n <tr>\n <td colSpan={COLUMNS} className=\"!p-0\">\n <EmptyState title=\"Sending history could not be loaded\" />\n </td>\n </tr>\n ) : (\n items.map((delivery) => {\n const status = DELIVERY_STATUS[delivery.status];\n const reason = reasonOf(delivery);\n\n return (\n <tr key={delivery.id}>\n <td>\n <span className={rows.identityText}>\n <Link\n href={hrefOf(delivery.newsletterId)}\n className={rows.primary}\n >\n {delivery.subject?.trim() || 'Untitled newsletter'}\n </Link>\n </span>\n </td>\n <td className={list.nowrap}>\n <StatusBadge\n status={status.key}\n label={status.label}\n neutral={status.quiet}\n />\n </td>\n <td className={reason ? undefined : list.dash}>\n {reason ?? EMPTY}\n </td>\n <td className={list.num}>{delivery.attempts}</td>\n <td className={`${list.nowrap} ${list.muted}`}>\n <When iso={timeOf(delivery)} />\n </td>\n </tr>\n );\n })\n )}\n </ListCard>\n );\n}\n"],"mappings":";AA8CU,cAUF,YAVE;AA5CV,SAAS,gBAAgB;AACzB,OAAO,UAAU;AACjB,SAAS,UAAU;AACnB,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,OAAO,UAAU;AACjB,SAAS,OAAO,UAAU,iBAAiB;AAC3C,OAAO,UAAU;AACjB,SAAS,YAAY;AACrB,SAAS,iBAAiB,UAAU,cAAc;AAClD,SAAS,cAAc;AACvB,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,SAAS,4BAA4B;AAErC,MAAM,UAAU;AAGT,SAAS,kBAAkB,EAAE,GAAG,GAAmB;AACxD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,CAAC;AAClC,QAAM,EAAE,MAAM,OAAO,WAAW,SAAS,QAAQ,IAAI;AAAA,IACnD;AAAA,IACA;AAAA,EACF;AACA,QAAM,UAAU,eAAe,KAAK;AACpC,QAAM,QAAQ,MAAM,SAAS,CAAC;AAC9B,QAAM,QAAQ,MAAM,SAAS;AAC7B,QAAM,aAAa,KAAK,IAAI,GAAG,KAAK,KAAK,QAAQ,SAAS,CAAC;AAE3D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAO,OAAO,QAAQ;AAAA,MACtB,SAAS;AAAA,MACT,UAAU;AAAA,MACV;AAAA,MACA,SAAS,WAAW,CAAC;AAAA,MACrB,SAAS,MAAM,KAAK,QAAQ;AAAA,MAC5B,YAAW;AAAA,MACX,SAAS,CAAC,WAAW,MAAM,WAAW;AAAA,MACtC,YAAW;AAAA,MACX,kBAAiB;AAAA,MACjB,QACE,aAAa,KACX;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAK;AAAA,UACL,QAAQ;AAAA;AAAA,MACV;AAAA,MAGJ,MACE,qBAAC,QACC;AAAA,4BAAC,MAAG,wBAAU;AAAA,QACd,oBAAC,MAAG,oBAAM;AAAA,QACV,oBAAC,MAAG,oBAAM;AAAA,QACV,oBAAC,MAAG,OAAM,SAAQ,mBAAK;AAAA,QACvB,oBAAC,MAAG,kBAAI;AAAA,SACV;AAAA,MAGD,oBACC,oBAAC,QACC,8BAAC,QAAG,SAAS,SAAS,WAAU,QAC9B,8BAAC,cAAW,OAAM,uCAAsC,GAC1D,GACF,IAEA,MAAM,IAAI,CAAC,aAAa;AACtB,cAAM,SAAS,gBAAgB,SAAS,MAAM;AAC9C,cAAM,SAAS,SAAS,QAAQ;AAEhC,eACE,qBAAC,QACC;AAAA,8BAAC,QACC,8BAAC,UAAK,WAAW,KAAK,cACpB;AAAA,YAAC;AAAA;AAAA,cACC,MAAM,OAAO,SAAS,YAAY;AAAA,cAClC,WAAW,KAAK;AAAA,cAEf,mBAAS,SAAS,KAAK,KAAK;AAAA;AAAA,UAC/B,GACF,GACF;AAAA,UACA,oBAAC,QAAG,WAAW,KAAK,QAClB;AAAA,YAAC;AAAA;AAAA,cACC,QAAQ,OAAO;AAAA,cACf,OAAO,OAAO;AAAA,cACd,SAAS,OAAO;AAAA;AAAA,UAClB,GACF;AAAA,UACA,oBAAC,QAAG,WAAW,SAAS,SAAY,KAAK,MACtC,oBAAU,OACb;AAAA,UACA,oBAAC,QAAG,WAAW,KAAK,KAAM,mBAAS,UAAS;AAAA,UAC5C,oBAAC,QAAG,WAAW,GAAG,KAAK,MAAM,IAAI,KAAK,KAAK,IACzC,8BAAC,QAAK,KAAK,OAAO,QAAQ,GAAG,GAC/B;AAAA,aAxBO,SAAS,EAyBlB;AAAA,MAEJ,CAAC;AAAA;AAAA,EAEL;AAEJ;","names":[]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import Link from "next/link";
|
|
4
|
+
import { useRouter } from "next/navigation";
|
|
5
|
+
import { TableRow } from "@withpotter/ui-kit";
|
|
6
|
+
import { StatusBadge } from "@withpotter/components/shared/status-badge";
|
|
7
|
+
import list from "../../_ui/list-card.module.css";
|
|
8
|
+
import { EMPTY } from "../../_ui/list-card";
|
|
9
|
+
import rows from "../../accounts/rows.module.css";
|
|
10
|
+
import { When } from "../../audit/when";
|
|
11
|
+
import { hrefOf } from "../labels";
|
|
12
|
+
import {
|
|
13
|
+
CONTACT_STATUS,
|
|
14
|
+
SOURCE_LABEL,
|
|
15
|
+
VIA_LABEL,
|
|
16
|
+
contactHref
|
|
17
|
+
} from "./contacts";
|
|
18
|
+
const dash = (value) => value ? void 0 : list.dash;
|
|
19
|
+
function ContactRow({
|
|
20
|
+
contact,
|
|
21
|
+
leaving
|
|
22
|
+
}) {
|
|
23
|
+
const router = useRouter();
|
|
24
|
+
const href = contactHref(contact.id);
|
|
25
|
+
const status = CONTACT_STATUS[contact.status];
|
|
26
|
+
const { lastSent, unsubscribedNewsletter: from } = contact;
|
|
27
|
+
const stop = (e) => e.stopPropagation();
|
|
28
|
+
return /* @__PURE__ */ jsxs(TableRow, { onClick: () => router.push(href), children: [
|
|
29
|
+
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("span", { className: rows.identityText, children: /* @__PURE__ */ jsx(Link, { href, className: rows.primary, onClick: stop, children: contact.email }) }) }),
|
|
30
|
+
/* @__PURE__ */ jsx("td", { className: dash(contact.name), children: contact.name || EMPTY }),
|
|
31
|
+
/* @__PURE__ */ jsx("td", { className: list.nowrap, children: /* @__PURE__ */ jsx(
|
|
32
|
+
StatusBadge,
|
|
33
|
+
{
|
|
34
|
+
status: status.key,
|
|
35
|
+
label: status.label,
|
|
36
|
+
neutral: status.quiet
|
|
37
|
+
}
|
|
38
|
+
) }),
|
|
39
|
+
/* @__PURE__ */ jsx("td", { className: `${list.nowrap} ${list.muted}`, children: SOURCE_LABEL[contact.source] }),
|
|
40
|
+
/* @__PURE__ */ jsx("td", { className: `${list.nowrap} ${list.muted}`, children: /* @__PURE__ */ jsx(When, { iso: contact.createdAt }) }),
|
|
41
|
+
/* @__PURE__ */ jsx("td", { className: lastSent ? list.muted : list.dash, children: lastSent ? /* @__PURE__ */ jsxs("span", { className: rows.identityText, children: [
|
|
42
|
+
/* @__PURE__ */ jsx("span", { className: list.clip, children: lastSent.subject }),
|
|
43
|
+
/* @__PURE__ */ jsx(When, { iso: lastSent.sentAt, className: rows.secondary })
|
|
44
|
+
] }) : EMPTY }),
|
|
45
|
+
leaving && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
46
|
+
/* @__PURE__ */ jsx("td", { className: `${list.nowrap} ${dash(contact.unsubscribedAt)}`, children: contact.unsubscribedAt ? /* @__PURE__ */ jsx(When, { iso: contact.unsubscribedAt }) : EMPTY }),
|
|
47
|
+
/* @__PURE__ */ jsx("td", { className: dash(contact.unsubscribedVia), children: contact.unsubscribedVia ? VIA_LABEL[contact.unsubscribedVia] : EMPTY }),
|
|
48
|
+
/* @__PURE__ */ jsx("td", { className: dash(from), children: from ? /* @__PURE__ */ jsx(
|
|
49
|
+
Link,
|
|
50
|
+
{
|
|
51
|
+
href: hrefOf(from.id),
|
|
52
|
+
className: `${list.clip} block underline underline-offset-2`,
|
|
53
|
+
onClick: stop,
|
|
54
|
+
children: from.subject || "Untitled newsletter"
|
|
55
|
+
}
|
|
56
|
+
) : EMPTY })
|
|
57
|
+
] })
|
|
58
|
+
] });
|
|
59
|
+
}
|
|
60
|
+
export {
|
|
61
|
+
ContactRow
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=contact-row.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/admin/newsletters/audience/contact-row.tsx"],"sourcesContent":["'use client';\n\nimport type { MouseEvent } from 'react';\nimport Link from 'next/link';\nimport { useRouter } from 'next/navigation';\nimport { TableRow } from '@withpotter/ui-kit';\nimport { StatusBadge } from '@withpotter/components/shared/status-badge';\nimport type { Contact } from '@withpotter/lib/admin-newsletter-contacts-api';\nimport list from '../../_ui/list-card.module.css';\nimport { EMPTY } from '../../_ui/list-card';\nimport rows from '../../accounts/rows.module.css';\nimport { When } from '../../audit/when';\nimport { hrefOf } from '../labels';\nimport {\n CONTACT_STATUS,\n SOURCE_LABEL,\n VIA_LABEL,\n contactHref,\n} from './contacts';\n\nconst dash = (value: unknown) => (value ? undefined : list.dash);\n\n/** One contact in the audience. The row opens the contact's own page. */\nexport function ContactRow({\n contact,\n leaving,\n}: {\n contact: Contact;\n /** Also show when and how they unsubscribed. */\n leaving: boolean;\n}) {\n const router = useRouter();\n const href = contactHref(contact.id);\n const status = CONTACT_STATUS[contact.status];\n const { lastSent, unsubscribedNewsletter: from } = contact;\n const stop = (e: MouseEvent) => e.stopPropagation();\n\n return (\n <TableRow onClick={() => router.push(href)}>\n <td>\n <span className={rows.identityText}>\n <Link href={href} className={rows.primary} onClick={stop}>\n {contact.email}\n </Link>\n </span>\n </td>\n <td className={dash(contact.name)}>{contact.name || EMPTY}</td>\n <td className={list.nowrap}>\n <StatusBadge\n status={status.key}\n label={status.label}\n neutral={status.quiet}\n />\n </td>\n <td className={`${list.nowrap} ${list.muted}`}>\n {SOURCE_LABEL[contact.source]}\n </td>\n <td className={`${list.nowrap} ${list.muted}`}>\n <When iso={contact.createdAt} />\n </td>\n <td className={lastSent ? list.muted : list.dash}>\n {lastSent ? (\n <span className={rows.identityText}>\n <span className={list.clip}>{lastSent.subject}</span>\n <When iso={lastSent.sentAt} className={rows.secondary} />\n </span>\n ) : (\n EMPTY\n )}\n </td>\n {leaving && (\n <>\n <td className={`${list.nowrap} ${dash(contact.unsubscribedAt)}`}>\n {contact.unsubscribedAt ? (\n <When iso={contact.unsubscribedAt} />\n ) : (\n EMPTY\n )}\n </td>\n <td className={dash(contact.unsubscribedVia)}>\n {contact.unsubscribedVia\n ? VIA_LABEL[contact.unsubscribedVia]\n : EMPTY}\n </td>\n <td className={dash(from)}>\n {from ? (\n <Link\n href={hrefOf(from.id)}\n className={`${list.clip} block underline underline-offset-2`}\n onClick={stop}\n >\n {from.subject || 'Untitled newsletter'}\n </Link>\n ) : (\n EMPTY\n )}\n </td>\n </>\n )}\n </TableRow>\n );\n}\n"],"mappings":";AAyCU,SA8BF,UA9BE,KAqBA,YArBA;AAtCV,OAAO,UAAU;AACjB,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AACzB,SAAS,mBAAmB;AAE5B,OAAO,UAAU;AACjB,SAAS,aAAa;AACtB,OAAO,UAAU;AACjB,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,MAAM,OAAO,CAAC,UAAoB,QAAQ,SAAY,KAAK;AAGpD,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AACF,GAIG;AACD,QAAM,SAAS,UAAU;AACzB,QAAM,OAAO,YAAY,QAAQ,EAAE;AACnC,QAAM,SAAS,eAAe,QAAQ,MAAM;AAC5C,QAAM,EAAE,UAAU,wBAAwB,KAAK,IAAI;AACnD,QAAM,OAAO,CAAC,MAAkB,EAAE,gBAAgB;AAElD,SACE,qBAAC,YAAS,SAAS,MAAM,OAAO,KAAK,IAAI,GACvC;AAAA,wBAAC,QACC,8BAAC,UAAK,WAAW,KAAK,cACpB,8BAAC,QAAK,MAAY,WAAW,KAAK,SAAS,SAAS,MACjD,kBAAQ,OACX,GACF,GACF;AAAA,IACA,oBAAC,QAAG,WAAW,KAAK,QAAQ,IAAI,GAAI,kBAAQ,QAAQ,OAAM;AAAA,IAC1D,oBAAC,QAAG,WAAW,KAAK,QAClB;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ,OAAO;AAAA,QACf,OAAO,OAAO;AAAA,QACd,SAAS,OAAO;AAAA;AAAA,IAClB,GACF;AAAA,IACA,oBAAC,QAAG,WAAW,GAAG,KAAK,MAAM,IAAI,KAAK,KAAK,IACxC,uBAAa,QAAQ,MAAM,GAC9B;AAAA,IACA,oBAAC,QAAG,WAAW,GAAG,KAAK,MAAM,IAAI,KAAK,KAAK,IACzC,8BAAC,QAAK,KAAK,QAAQ,WAAW,GAChC;AAAA,IACA,oBAAC,QAAG,WAAW,WAAW,KAAK,QAAQ,KAAK,MACzC,qBACC,qBAAC,UAAK,WAAW,KAAK,cACpB;AAAA,0BAAC,UAAK,WAAW,KAAK,MAAO,mBAAS,SAAQ;AAAA,MAC9C,oBAAC,QAAK,KAAK,SAAS,QAAQ,WAAW,KAAK,WAAW;AAAA,OACzD,IAEA,OAEJ;AAAA,IACC,WACC,iCACE;AAAA,0BAAC,QAAG,WAAW,GAAG,KAAK,MAAM,IAAI,KAAK,QAAQ,cAAc,CAAC,IAC1D,kBAAQ,iBACP,oBAAC,QAAK,KAAK,QAAQ,gBAAgB,IAEnC,OAEJ;AAAA,MACA,oBAAC,QAAG,WAAW,KAAK,QAAQ,eAAe,GACxC,kBAAQ,kBACL,UAAU,QAAQ,eAAe,IACjC,OACN;AAAA,MACA,oBAAC,QAAG,WAAW,KAAK,IAAI,GACrB,iBACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,OAAO,KAAK,EAAE;AAAA,UACpB,WAAW,GAAG,KAAK,IAAI;AAAA,UACvB,SAAS;AAAA,UAER,eAAK,WAAW;AAAA;AAAA,MACnB,IAEA,OAEJ;AAAA,OACF;AAAA,KAEJ;AAEJ;","names":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { Banner, Button, DetailColumns } from "@withpotter/ui-kit";
|
|
5
|
+
import { AdmLoading } from "../../_ui";
|
|
6
|
+
import { LoadFailed } from "../../audit/load-failed";
|
|
7
|
+
import { isNotAvailable } from "../not-available";
|
|
8
|
+
import { RecordHeader } from "../record-header";
|
|
9
|
+
import { useNewsletterAccess } from "../use-newsletters";
|
|
10
|
+
import { ContactDeliveries } from "./contact-deliveries";
|
|
11
|
+
import { ContactSummary } from "./contact-summary";
|
|
12
|
+
import { AUDIENCE_HREF } from "./contacts";
|
|
13
|
+
import { CHANGE_COPY, changeFor } from "./status-change";
|
|
14
|
+
import { StatusDialog } from "./status-dialog";
|
|
15
|
+
import { useContact } from "./use-contacts";
|
|
16
|
+
const PARENT = { label: "Audience", href: AUDIENCE_HREF };
|
|
17
|
+
function ContactScreen({ id }) {
|
|
18
|
+
const { canManage } = useNewsletterAccess();
|
|
19
|
+
const { data, error, isLoading, isError, refetch } = useContact(id);
|
|
20
|
+
const [changing, setChanging] = useState(false);
|
|
21
|
+
if (isError && !data) {
|
|
22
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
23
|
+
/* @__PURE__ */ jsx(RecordHeader, { title: "Contact", parent: PARENT }),
|
|
24
|
+
isNotAvailable(error) ? /* @__PURE__ */ jsx(Banner, { tone: "info", title: "There is no contact at this address" }) : /* @__PURE__ */ jsx(
|
|
25
|
+
LoadFailed,
|
|
26
|
+
{
|
|
27
|
+
message: "This contact could not be loaded.",
|
|
28
|
+
onRetry: () => void refetch()
|
|
29
|
+
}
|
|
30
|
+
)
|
|
31
|
+
] });
|
|
32
|
+
}
|
|
33
|
+
if (isLoading || !data) return /* @__PURE__ */ jsx(AdmLoading, { label: "Loading contact\u2026" });
|
|
34
|
+
const change = changeFor(data);
|
|
35
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
36
|
+
/* @__PURE__ */ jsx(RecordHeader, { title: data.email, parent: PARENT, children: canManage && change && /* @__PURE__ */ jsx(
|
|
37
|
+
Button,
|
|
38
|
+
{
|
|
39
|
+
variant: change === "unsubscribe" ? "danger" : "secondary",
|
|
40
|
+
onClick: () => setChanging(true),
|
|
41
|
+
children: CHANGE_COPY[change].action
|
|
42
|
+
}
|
|
43
|
+
) }),
|
|
44
|
+
/* @__PURE__ */ jsx(DetailColumns, { aside: /* @__PURE__ */ jsx(ContactSummary, { contact: data }), children: /* @__PURE__ */ jsx(ContactDeliveries, { id }) }),
|
|
45
|
+
change && /* @__PURE__ */ jsx(
|
|
46
|
+
StatusDialog,
|
|
47
|
+
{
|
|
48
|
+
open: changing,
|
|
49
|
+
contact: data,
|
|
50
|
+
change,
|
|
51
|
+
onClose: () => setChanging(false)
|
|
52
|
+
}
|
|
53
|
+
)
|
|
54
|
+
] });
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
ContactScreen
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=contact-screen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/admin/newsletters/audience/contact-screen.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport { Banner, Button, DetailColumns } from '@withpotter/ui-kit';\nimport { AdmLoading } from '../../_ui';\nimport { LoadFailed } from '../../audit/load-failed';\nimport { isNotAvailable } from '../not-available';\nimport { RecordHeader } from '../record-header';\nimport { useNewsletterAccess } from '../use-newsletters';\nimport { ContactDeliveries } from './contact-deliveries';\nimport { ContactSummary } from './contact-summary';\nimport { AUDIENCE_HREF } from './contacts';\nimport { CHANGE_COPY, changeFor } from './status-change';\nimport { StatusDialog } from './status-dialog';\nimport { useContact } from './use-contacts';\n\nconst PARENT = { label: 'Audience', href: AUDIENCE_HREF };\n\n/**\n * One person in the audience: where they stand and why, what they were sent,\n * and the one change an admin may make by hand.\n */\nexport function ContactScreen({ id }: { id: string }) {\n const { canManage } = useNewsletterAccess();\n const { data, error, isLoading, isError, refetch } = useContact(id);\n const [changing, setChanging] = useState(false);\n\n if (isError && !data) {\n return (\n <div>\n <RecordHeader title=\"Contact\" parent={PARENT} />\n {isNotAvailable(error) ? (\n <Banner tone=\"info\" title=\"There is no contact at this address\" />\n ) : (\n <LoadFailed\n message=\"This contact could not be loaded.\"\n onRetry={() => void refetch()}\n />\n )}\n </div>\n );\n }\n\n if (isLoading || !data) return <AdmLoading label=\"Loading contact…\" />;\n\n const change = changeFor(data);\n\n return (\n <div>\n <RecordHeader title={data.email} parent={PARENT}>\n {canManage && change && (\n <Button\n variant={change === 'unsubscribe' ? 'danger' : 'secondary'}\n onClick={() => setChanging(true)}\n >\n {CHANGE_COPY[change].action}\n </Button>\n )}\n </RecordHeader>\n <DetailColumns aside={<ContactSummary contact={data} />}>\n <ContactDeliveries id={id} />\n </DetailColumns>\n {change && (\n <StatusDialog\n open={changing}\n contact={data}\n change={change}\n onClose={() => setChanging(false)}\n />\n )}\n </div>\n );\n}\n"],"mappings":";AA6BM,SACE,KADF;AA3BN,SAAS,gBAAgB;AACzB,SAAS,QAAQ,QAAQ,qBAAqB;AAC9C,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,2BAA2B;AACpC,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,aAAa,iBAAiB;AACvC,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAE3B,MAAM,SAAS,EAAE,OAAO,YAAY,MAAM,cAAc;AAMjD,SAAS,cAAc,EAAE,GAAG,GAAmB;AACpD,QAAM,EAAE,UAAU,IAAI,oBAAoB;AAC1C,QAAM,EAAE,MAAM,OAAO,WAAW,SAAS,QAAQ,IAAI,WAAW,EAAE;AAClE,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAE9C,MAAI,WAAW,CAAC,MAAM;AACpB,WACE,qBAAC,SACC;AAAA,0BAAC,gBAAa,OAAM,WAAU,QAAQ,QAAQ;AAAA,MAC7C,eAAe,KAAK,IACnB,oBAAC,UAAO,MAAK,QAAO,OAAM,uCAAsC,IAEhE;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,SAAS,MAAM,KAAK,QAAQ;AAAA;AAAA,MAC9B;AAAA,OAEJ;AAAA,EAEJ;AAEA,MAAI,aAAa,CAAC,KAAM,QAAO,oBAAC,cAAW,OAAM,yBAAmB;AAEpE,QAAM,SAAS,UAAU,IAAI;AAE7B,SACE,qBAAC,SACC;AAAA,wBAAC,gBAAa,OAAO,KAAK,OAAO,QAAQ,QACtC,uBAAa,UACZ;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,WAAW,gBAAgB,WAAW;AAAA,QAC/C,SAAS,MAAM,YAAY,IAAI;AAAA,QAE9B,sBAAY,MAAM,EAAE;AAAA;AAAA,IACvB,GAEJ;AAAA,IACA,oBAAC,iBAAc,OAAO,oBAAC,kBAAe,SAAS,MAAM,GACnD,8BAAC,qBAAkB,IAAQ,GAC7B;AAAA,IACC,UACC;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,QACT;AAAA,QACA,SAAS,MAAM,YAAY,KAAK;AAAA;AAAA,IAClC;AAAA,KAEJ;AAEJ;","names":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Link from "next/link";
|
|
3
|
+
import { Card, Fact, FactList } from "@withpotter/ui-kit";
|
|
4
|
+
import { StatusBadge } from "@withpotter/components/shared/status-badge";
|
|
5
|
+
import { hrefOf } from "../labels";
|
|
6
|
+
import {
|
|
7
|
+
CONTACT_STATUS,
|
|
8
|
+
SOURCE_LABEL,
|
|
9
|
+
VIA_LABEL,
|
|
10
|
+
statusReason
|
|
11
|
+
} from "./contacts";
|
|
12
|
+
import { formatMoment } from "../format-date";
|
|
13
|
+
function ContactSummary({ contact }) {
|
|
14
|
+
const status = CONTACT_STATUS[contact.status];
|
|
15
|
+
const from = contact.unsubscribedNewsletter;
|
|
16
|
+
return /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
|
|
17
|
+
/* @__PURE__ */ jsxs(FactList, { columns: 1, children: [
|
|
18
|
+
/* @__PURE__ */ jsx(Fact, { label: "Email", value: contact.email }),
|
|
19
|
+
/* @__PURE__ */ jsx(Fact, { label: "Name", value: contact.name }),
|
|
20
|
+
/* @__PURE__ */ jsx(
|
|
21
|
+
Fact,
|
|
22
|
+
{
|
|
23
|
+
label: "Status",
|
|
24
|
+
value: /* @__PURE__ */ jsx(
|
|
25
|
+
StatusBadge,
|
|
26
|
+
{
|
|
27
|
+
status: status.key,
|
|
28
|
+
label: status.label,
|
|
29
|
+
neutral: status.quiet
|
|
30
|
+
}
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
),
|
|
34
|
+
/* @__PURE__ */ jsx(Fact, { label: "Why", value: statusReason(contact) }),
|
|
35
|
+
contact.unsubscribedAt && /* @__PURE__ */ jsx(
|
|
36
|
+
Fact,
|
|
37
|
+
{
|
|
38
|
+
label: "Unsubscribed on",
|
|
39
|
+
value: formatMoment(contact.unsubscribedAt)
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
contact.unsubscribedVia && /* @__PURE__ */ jsx(Fact, { label: "How", value: VIA_LABEL[contact.unsubscribedVia] }),
|
|
43
|
+
from && /* @__PURE__ */ jsx(
|
|
44
|
+
Fact,
|
|
45
|
+
{
|
|
46
|
+
label: "From newsletter",
|
|
47
|
+
value: /* @__PURE__ */ jsx(
|
|
48
|
+
Link,
|
|
49
|
+
{
|
|
50
|
+
href: hrefOf(from.id),
|
|
51
|
+
className: "underline underline-offset-2",
|
|
52
|
+
children: from.subject || "Untitled newsletter"
|
|
53
|
+
}
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
contact.bouncedAt && /* @__PURE__ */ jsx(Fact, { label: "Bounced on", value: formatMoment(contact.bouncedAt) }),
|
|
58
|
+
contact.statusNote && /* @__PURE__ */ jsx(Fact, { label: "Admin note", value: contact.statusNote })
|
|
59
|
+
] }),
|
|
60
|
+
/* @__PURE__ */ jsxs(FactList, { columns: 1, children: [
|
|
61
|
+
/* @__PURE__ */ jsx(Fact, { label: "Source", value: SOURCE_LABEL[contact.source] }),
|
|
62
|
+
contact.sourceNote && /* @__PURE__ */ jsx(Fact, { label: "Source note", value: contact.sourceNote }),
|
|
63
|
+
/* @__PURE__ */ jsx(Fact, { label: "Added", value: formatMoment(contact.createdAt) })
|
|
64
|
+
] })
|
|
65
|
+
] }) });
|
|
66
|
+
}
|
|
67
|
+
export {
|
|
68
|
+
ContactSummary
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=contact-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/admin/newsletters/audience/contact-summary.tsx"],"sourcesContent":["import Link from 'next/link';\nimport { Card, Fact, FactList } from '@withpotter/ui-kit';\nimport { StatusBadge } from '@withpotter/components/shared/status-badge';\nimport type { Contact } from '@withpotter/lib/admin-newsletter-contacts-api';\nimport { hrefOf } from '../labels';\nimport {\n CONTACT_STATUS,\n SOURCE_LABEL,\n VIA_LABEL,\n statusReason,\n} from './contacts';\nimport { formatMoment } from '../format-date';\n\n\n/**\n * Where a contact stands and how they got there: the status and its reason,\n * when and how they left or bounced, the note an admin left, and where the\n * address came from. A fact with nothing to say is left out.\n */\nexport function ContactSummary({ contact }: { contact: Contact }) {\n const status = CONTACT_STATUS[contact.status];\n const from = contact.unsubscribedNewsletter;\n\n return (\n <Card>\n <div className=\"flex flex-col gap-4\">\n <FactList columns={1}>\n <Fact label=\"Email\" value={contact.email} />\n <Fact label=\"Name\" value={contact.name} />\n <Fact\n label=\"Status\"\n value={\n <StatusBadge\n status={status.key}\n label={status.label}\n neutral={status.quiet}\n />\n }\n />\n <Fact label=\"Why\" value={statusReason(contact)} />\n {contact.unsubscribedAt && (\n <Fact\n label=\"Unsubscribed on\"\n value={formatMoment(contact.unsubscribedAt)}\n />\n )}\n {contact.unsubscribedVia && (\n <Fact label=\"How\" value={VIA_LABEL[contact.unsubscribedVia]} />\n )}\n {from && (\n <Fact\n label=\"From newsletter\"\n value={\n <Link\n href={hrefOf(from.id)}\n className=\"underline underline-offset-2\"\n >\n {from.subject || 'Untitled newsletter'}\n </Link>\n }\n />\n )}\n {contact.bouncedAt && (\n <Fact label=\"Bounced on\" value={formatMoment(contact.bouncedAt)} />\n )}\n {contact.statusNote && (\n <Fact label=\"Admin note\" value={contact.statusNote} />\n )}\n </FactList>\n <FactList columns={1}>\n <Fact label=\"Source\" value={SOURCE_LABEL[contact.source]} />\n {contact.sourceNote && (\n <Fact label=\"Source note\" value={contact.sourceNote} />\n )}\n <Fact label=\"Added\" value={formatMoment(contact.createdAt)} />\n </FactList>\n </div>\n </Card>\n );\n}\n"],"mappings":"AA0BQ,SACE,KADF;AA1BR,OAAO,UAAU;AACjB,SAAS,MAAM,MAAM,gBAAgB;AACrC,SAAS,mBAAmB;AAE5B,SAAS,cAAc;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB;AAQtB,SAAS,eAAe,EAAE,QAAQ,GAAyB;AAChE,QAAM,SAAS,eAAe,QAAQ,MAAM;AAC5C,QAAM,OAAO,QAAQ;AAErB,SACE,oBAAC,QACC,+BAAC,SAAI,WAAU,uBACb;AAAA,yBAAC,YAAS,SAAS,GACjB;AAAA,0BAAC,QAAK,OAAM,SAAQ,OAAO,QAAQ,OAAO;AAAA,MAC1C,oBAAC,QAAK,OAAM,QAAO,OAAO,QAAQ,MAAM;AAAA,MACxC;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,OACE;AAAA,YAAC;AAAA;AAAA,cACC,QAAQ,OAAO;AAAA,cACf,OAAO,OAAO;AAAA,cACd,SAAS,OAAO;AAAA;AAAA,UAClB;AAAA;AAAA,MAEJ;AAAA,MACA,oBAAC,QAAK,OAAM,OAAM,OAAO,aAAa,OAAO,GAAG;AAAA,MAC/C,QAAQ,kBACP;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,OAAO,aAAa,QAAQ,cAAc;AAAA;AAAA,MAC5C;AAAA,MAED,QAAQ,mBACP,oBAAC,QAAK,OAAM,OAAM,OAAO,UAAU,QAAQ,eAAe,GAAG;AAAA,MAE9D,QACC;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,OACE;AAAA,YAAC;AAAA;AAAA,cACC,MAAM,OAAO,KAAK,EAAE;AAAA,cACpB,WAAU;AAAA,cAET,eAAK,WAAW;AAAA;AAAA,UACnB;AAAA;AAAA,MAEJ;AAAA,MAED,QAAQ,aACP,oBAAC,QAAK,OAAM,cAAa,OAAO,aAAa,QAAQ,SAAS,GAAG;AAAA,MAElE,QAAQ,cACP,oBAAC,QAAK,OAAM,cAAa,OAAO,QAAQ,YAAY;AAAA,OAExD;AAAA,IACA,qBAAC,YAAS,SAAS,GACjB;AAAA,0BAAC,QAAK,OAAM,UAAS,OAAO,aAAa,QAAQ,MAAM,GAAG;AAAA,MACzD,QAAQ,cACP,oBAAC,QAAK,OAAM,eAAc,OAAO,QAAQ,YAAY;AAAA,MAEvD,oBAAC,QAAK,OAAM,SAAQ,OAAO,aAAa,QAAQ,SAAS,GAAG;AAAA,OAC9D;AAAA,KACF,GACF;AAEJ;","names":[]}
|