@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,162 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { useMutation } from "@tanstack/react-query";
|
|
5
|
+
import { Button, FormDialog, Input, useToast } from "@withpotter/ui-kit";
|
|
6
|
+
import { platformAdminApi } from "@withpotter/lib/admin-api";
|
|
7
|
+
import { PermissionPicker, toggleIn } from "./permission-picker";
|
|
8
|
+
import styles from "./roles.module.css";
|
|
9
|
+
const COPY = {
|
|
10
|
+
create: { title: "Create role", action: "Create role" },
|
|
11
|
+
edit: { title: "Edit role", action: "Save changes" },
|
|
12
|
+
duplicate: { title: "Duplicate role", action: "Create copy" }
|
|
13
|
+
};
|
|
14
|
+
const FORM_ID = "role-dialog-form";
|
|
15
|
+
function RoleDialog({
|
|
16
|
+
mode,
|
|
17
|
+
catalog,
|
|
18
|
+
onClose,
|
|
19
|
+
onSaved
|
|
20
|
+
}) {
|
|
21
|
+
const [shown, setShown] = useState(mode);
|
|
22
|
+
const [opens, setOpens] = useState(0);
|
|
23
|
+
const [wasOpen, setWasOpen] = useState(false);
|
|
24
|
+
if (mode && mode !== shown) setShown(mode);
|
|
25
|
+
if (Boolean(mode) !== wasOpen) {
|
|
26
|
+
setWasOpen(Boolean(mode));
|
|
27
|
+
if (mode) setOpens((n) => n + 1);
|
|
28
|
+
}
|
|
29
|
+
const active = mode ?? shown;
|
|
30
|
+
if (!active) return null;
|
|
31
|
+
return /* @__PURE__ */ jsx(
|
|
32
|
+
RoleForm,
|
|
33
|
+
{
|
|
34
|
+
open: mode !== null,
|
|
35
|
+
mode: active,
|
|
36
|
+
catalog,
|
|
37
|
+
onClose,
|
|
38
|
+
onSaved
|
|
39
|
+
},
|
|
40
|
+
`${opens}-${active.kind}-${"role" in active ? active.role.id : ""}`
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
function RoleForm({
|
|
44
|
+
open,
|
|
45
|
+
mode,
|
|
46
|
+
catalog,
|
|
47
|
+
onClose,
|
|
48
|
+
onSaved
|
|
49
|
+
}) {
|
|
50
|
+
const { toast } = useToast();
|
|
51
|
+
const source = mode.kind === "create" ? null : mode.role;
|
|
52
|
+
const [name, setName] = useState(
|
|
53
|
+
!source ? "" : mode.kind === "duplicate" ? `${source.name} (copy)` : source.name
|
|
54
|
+
);
|
|
55
|
+
const [description, setDescription] = useState(source?.description ?? "");
|
|
56
|
+
const [perms, setPerms] = useState(source?.permissions ?? []);
|
|
57
|
+
const lockedName = mode.kind === "edit" && mode.role.isSystem;
|
|
58
|
+
const save = useMutation({
|
|
59
|
+
mutationFn: async () => mode.kind === "edit" ? platformAdminApi.updateRole(mode.role.id, {
|
|
60
|
+
...lockedName ? {} : { name: name.trim(), description: description.trim() },
|
|
61
|
+
permissions: perms
|
|
62
|
+
}) : platformAdminApi.createRole(
|
|
63
|
+
name.trim(),
|
|
64
|
+
perms,
|
|
65
|
+
description.trim() || void 0
|
|
66
|
+
),
|
|
67
|
+
onSuccess: () => {
|
|
68
|
+
toast({
|
|
69
|
+
title: mode.kind === "edit" ? `${name} updated` : `${name.trim()} created`
|
|
70
|
+
});
|
|
71
|
+
onSaved();
|
|
72
|
+
onClose();
|
|
73
|
+
},
|
|
74
|
+
onError: (error) => toast({
|
|
75
|
+
title: "The role was not saved",
|
|
76
|
+
description: error.message,
|
|
77
|
+
variant: "destructive"
|
|
78
|
+
})
|
|
79
|
+
});
|
|
80
|
+
const canSave = name.trim().length > 0 && !save.isPending;
|
|
81
|
+
return /* @__PURE__ */ jsx(
|
|
82
|
+
FormDialog,
|
|
83
|
+
{
|
|
84
|
+
open,
|
|
85
|
+
size: "lg",
|
|
86
|
+
title: COPY[mode.kind].title,
|
|
87
|
+
description: mode.kind === "edit" ? `Changes apply to every admin holding ${mode.role.name}.` : "Bundle permissions you can grant in one step.",
|
|
88
|
+
onClose,
|
|
89
|
+
footer: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
90
|
+
/* @__PURE__ */ jsxs("span", { className: styles.footNote, children: [
|
|
91
|
+
perms.length,
|
|
92
|
+
" permission",
|
|
93
|
+
perms.length === 1 ? "" : "s",
|
|
94
|
+
" selected"
|
|
95
|
+
] }),
|
|
96
|
+
/* @__PURE__ */ jsxs("div", { className: styles.footActions, children: [
|
|
97
|
+
/* @__PURE__ */ jsx(Button, { type: "button", variant: "secondary", onClick: onClose, children: "Cancel" }),
|
|
98
|
+
/* @__PURE__ */ jsx(
|
|
99
|
+
Button,
|
|
100
|
+
{
|
|
101
|
+
type: "submit",
|
|
102
|
+
form: FORM_ID,
|
|
103
|
+
disabled: !canSave,
|
|
104
|
+
loading: save.isPending,
|
|
105
|
+
children: COPY[mode.kind].action
|
|
106
|
+
}
|
|
107
|
+
)
|
|
108
|
+
] })
|
|
109
|
+
] }),
|
|
110
|
+
children: /* @__PURE__ */ jsxs(
|
|
111
|
+
"form",
|
|
112
|
+
{
|
|
113
|
+
id: FORM_ID,
|
|
114
|
+
className: styles.dialogBody,
|
|
115
|
+
onSubmit: (e) => {
|
|
116
|
+
e.preventDefault();
|
|
117
|
+
if (canSave) save.mutate();
|
|
118
|
+
},
|
|
119
|
+
children: [
|
|
120
|
+
/* @__PURE__ */ jsxs("div", { className: styles.dialogFields, children: [
|
|
121
|
+
/* @__PURE__ */ jsx(
|
|
122
|
+
Input,
|
|
123
|
+
{
|
|
124
|
+
label: "Role name",
|
|
125
|
+
placeholder: "e.g. Support",
|
|
126
|
+
value: name,
|
|
127
|
+
disabled: lockedName,
|
|
128
|
+
onChange: (e) => setName(e.target.value),
|
|
129
|
+
autoFocus: !lockedName
|
|
130
|
+
}
|
|
131
|
+
),
|
|
132
|
+
/* @__PURE__ */ jsx(
|
|
133
|
+
Input,
|
|
134
|
+
{
|
|
135
|
+
label: "Description (optional)",
|
|
136
|
+
placeholder: "What this role is for",
|
|
137
|
+
value: description,
|
|
138
|
+
disabled: lockedName,
|
|
139
|
+
onChange: (e) => setDescription(e.target.value)
|
|
140
|
+
}
|
|
141
|
+
)
|
|
142
|
+
] }),
|
|
143
|
+
lockedName && /* @__PURE__ */ jsx("p", { className: styles.note, children: "Built-in roles keep their name. You can still change what they grant." }),
|
|
144
|
+
/* @__PURE__ */ jsx(
|
|
145
|
+
PermissionPicker,
|
|
146
|
+
{
|
|
147
|
+
keys: catalog,
|
|
148
|
+
value: perms,
|
|
149
|
+
onToggle: (key) => setPerms(toggleIn(key)),
|
|
150
|
+
onSet: setPerms
|
|
151
|
+
}
|
|
152
|
+
)
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
)
|
|
156
|
+
}
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
export {
|
|
160
|
+
RoleDialog
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=role-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/roles/role-dialog.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport { Button, FormDialog, Input, useToast } from '@withpotter/ui-kit';\nimport { platformAdminApi, type RoleRow as Role } from '@withpotter/lib/admin-api';\nimport { PermissionPicker, toggleIn } from './permission-picker';\nimport styles from './roles.module.css';\n\nexport type RoleDialogMode =\n | { kind: 'create' }\n | { kind: 'edit'; role: Role }\n | { kind: 'duplicate'; role: Role };\n\nconst COPY = {\n create: { title: 'Create role', action: 'Create role' },\n edit: { title: 'Edit role', action: 'Save changes' },\n duplicate: { title: 'Duplicate role', action: 'Create copy' },\n} as const;\n\nconst FORM_ID = 'role-dialog-form';\n\n/** Create, edit or duplicate a role: name, purpose and grouped permissions. */\nexport function RoleDialog({\n mode,\n catalog,\n onClose,\n onSaved,\n}: {\n mode: RoleDialogMode | null;\n catalog: readonly string[];\n onClose: () => void;\n onSaved: () => void;\n}) {\n // Keep the last mode while the dialog animates out, and count each opening\n // so the form remounts fresh — a reopened Create must not show the last\n // role's name, nor a cancelled edit come back.\n const [shown, setShown] = useState(mode);\n const [opens, setOpens] = useState(0);\n const [wasOpen, setWasOpen] = useState(false);\n if (mode && mode !== shown) setShown(mode);\n if (Boolean(mode) !== wasOpen) {\n setWasOpen(Boolean(mode));\n if (mode) setOpens((n) => n + 1);\n }\n const active = mode ?? shown;\n\n if (!active) return null;\n return (\n <RoleForm\n key={`${opens}-${active.kind}-${'role' in active ? active.role.id : ''}`}\n open={mode !== null}\n mode={active}\n catalog={catalog}\n onClose={onClose}\n onSaved={onSaved}\n />\n );\n}\n\nfunction RoleForm({\n open,\n mode,\n catalog,\n onClose,\n onSaved,\n}: {\n open: boolean;\n mode: RoleDialogMode;\n catalog: readonly string[];\n onClose: () => void;\n onSaved: () => void;\n}) {\n const { toast } = useToast();\n const source = mode.kind === 'create' ? null : mode.role;\n const [name, setName] = useState(\n !source\n ? ''\n : mode.kind === 'duplicate'\n ? `${source.name} (copy)`\n : source.name,\n );\n const [description, setDescription] = useState(source?.description ?? '');\n const [perms, setPerms] = useState<string[]>(source?.permissions ?? []);\n const lockedName = mode.kind === 'edit' && mode.role.isSystem;\n\n const save = useMutation({\n mutationFn: async (): Promise<unknown> =>\n mode.kind === 'edit'\n ? platformAdminApi.updateRole(mode.role.id, {\n ...(lockedName\n ? {}\n : { name: name.trim(), description: description.trim() }),\n permissions: perms,\n })\n : platformAdminApi.createRole(\n name.trim(),\n perms,\n description.trim() || undefined,\n ),\n onSuccess: () => {\n toast({\n title:\n mode.kind === 'edit' ? `${name} updated` : `${name.trim()} created`,\n });\n onSaved();\n onClose();\n },\n onError: (error) =>\n toast({\n title: 'The role was not saved',\n description: error.message,\n variant: 'destructive',\n }),\n });\n const canSave = name.trim().length > 0 && !save.isPending;\n\n return (\n <FormDialog\n open={open}\n size=\"lg\"\n title={COPY[mode.kind].title}\n description={\n mode.kind === 'edit'\n ? `Changes apply to every admin holding ${mode.role.name}.`\n : 'Bundle permissions you can grant in one step.'\n }\n onClose={onClose}\n footer={\n <>\n <span className={styles.footNote}>\n {perms.length} permission{perms.length === 1 ? '' : 's'} selected\n </span>\n <div className={styles.footActions}>\n <Button type=\"button\" variant=\"secondary\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n type=\"submit\"\n form={FORM_ID}\n disabled={!canSave}\n loading={save.isPending}\n >\n {COPY[mode.kind].action}\n </Button>\n </div>\n </>\n }\n >\n <form\n id={FORM_ID}\n className={styles.dialogBody}\n onSubmit={(e) => {\n e.preventDefault();\n if (canSave) save.mutate();\n }}\n >\n <div className={styles.dialogFields}>\n <Input\n label=\"Role name\"\n placeholder=\"e.g. Support\"\n value={name}\n disabled={lockedName}\n onChange={(e) => setName(e.target.value)}\n autoFocus={!lockedName}\n />\n <Input\n label=\"Description (optional)\"\n placeholder=\"What this role is for\"\n value={description}\n disabled={lockedName}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n {lockedName && (\n <p className={styles.note}>\n Built-in roles keep their name. You can still change what they\n grant.\n </p>\n )}\n <PermissionPicker\n keys={catalog}\n value={perms}\n onToggle={(key) => setPerms(toggleIn(key))}\n onSet={setPerms}\n />\n </form>\n </FormDialog>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { OverflowItem, OverflowMenu, TableRow, Tooltip } from "@withpotter/ui-kit";
|
|
4
|
+
import { MoreChip } from "./more-chip";
|
|
5
|
+
import { permissionLabel } from "./permissions";
|
|
6
|
+
import styles from "./roles.module.css";
|
|
7
|
+
const ROLE_COLUMNS = 5;
|
|
8
|
+
const SHOWN = 3;
|
|
9
|
+
const adminCount = (n) => `${n} admin${n === 1 ? "" : "s"}`;
|
|
10
|
+
function PermissionChips({ keys }) {
|
|
11
|
+
if (keys.length === 0) return /* @__PURE__ */ jsx("span", { className: styles.muted, children: "\u2013" });
|
|
12
|
+
const shown = keys.slice(0, SHOWN).map(permissionLabel).join(", ");
|
|
13
|
+
return /* @__PURE__ */ jsxs("div", { className: styles.badges, children: [
|
|
14
|
+
/* @__PURE__ */ jsx("span", { className: styles.badge, title: shown, children: shown }),
|
|
15
|
+
/* @__PURE__ */ jsx(
|
|
16
|
+
MoreChip,
|
|
17
|
+
{
|
|
18
|
+
items: keys.slice(SHOWN).map(permissionLabel),
|
|
19
|
+
title: "More permissions"
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
] });
|
|
23
|
+
}
|
|
24
|
+
function RoleRow({
|
|
25
|
+
r,
|
|
26
|
+
onEdit,
|
|
27
|
+
onDuplicate,
|
|
28
|
+
onDelete
|
|
29
|
+
}) {
|
|
30
|
+
return /* @__PURE__ */ jsxs(TableRow, { onClick: onEdit, children: [
|
|
31
|
+
/* @__PURE__ */ jsx("td", { className: styles.roleCell, children: /* @__PURE__ */ jsx("div", { className: styles.roleIdentity, children: /* @__PURE__ */ jsxs("div", { className: styles.roleText, children: [
|
|
32
|
+
/* @__PURE__ */ jsx("div", { className: styles.roleName, title: r.name, children: r.name }),
|
|
33
|
+
r.description && /* @__PURE__ */ jsx(Tooltip, { label: r.description, children: /* @__PURE__ */ jsx("span", { className: styles.roleDesc, tabIndex: 0, children: r.description }) })
|
|
34
|
+
] }) }) }),
|
|
35
|
+
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx(PermissionChips, { keys: r.permissions ?? [] }) }),
|
|
36
|
+
/* @__PURE__ */ jsx("td", { className: `${styles.nowrap} ${r.isSystem ? styles.muted : ""}`, children: r.isSystem ? "Built-in" : "Custom" }),
|
|
37
|
+
/* @__PURE__ */ jsx("td", { className: styles.num, children: r.assignedCount > 0 ? adminCount(r.assignedCount) : /* @__PURE__ */ jsx("span", { className: styles.muted, children: "Unused" }) }),
|
|
38
|
+
/* @__PURE__ */ jsx("td", { className: styles.menuCell, onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsxs(OverflowMenu, { label: `Actions for ${r.name}`, children: [
|
|
39
|
+
/* @__PURE__ */ jsx(OverflowItem, { onClick: onEdit, children: "Edit" }),
|
|
40
|
+
/* @__PURE__ */ jsx(OverflowItem, { onClick: onDuplicate, children: "Duplicate" }),
|
|
41
|
+
r.isSystem ? /* @__PURE__ */ jsx(Tooltip, { label: "Built-in roles can\u2019t be deleted. Duplicate it to make a version you can change freely.", children: /* @__PURE__ */ jsx("span", { className: styles.lockedItem, tabIndex: 0, children: /* @__PURE__ */ jsx(OverflowItem, { onClick: () => {
|
|
42
|
+
}, disabled: true, children: "Delete" }) }) }) : /* @__PURE__ */ jsx(OverflowItem, { onClick: onDelete, destructive: true, children: "Delete" })
|
|
43
|
+
] }) })
|
|
44
|
+
] });
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
ROLE_COLUMNS,
|
|
48
|
+
RoleRow,
|
|
49
|
+
adminCount
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=role-row.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/roles/role-row.tsx"],"sourcesContent":["'use client';\n\nimport { OverflowItem, OverflowMenu, TableRow, Tooltip } from '@withpotter/ui-kit';\nimport type { RoleRow as Role } from '@withpotter/lib/admin-api';\nimport { MoreChip } from './more-chip';\nimport { permissionLabel } from './permissions';\nimport styles from './roles.module.css';\n\nexport const ROLE_COLUMNS = 5;\nconst SHOWN = 3;\n\nexport const adminCount = (n: number) => `${n} admin${n === 1 ? '' : 's'}`;\n\n/** Three permissions as plain text, then \"+N\" that opens the rest. */\nfunction PermissionChips({ keys }: { keys: string[] }) {\n if (keys.length === 0) return <span className={styles.muted}>–</span>;\n const shown = keys.slice(0, SHOWN).map(permissionLabel).join(', ');\n return (\n <div className={styles.badges}>\n <span className={styles.badge} title={shown}>\n {shown}\n </span>\n <MoreChip\n items={keys.slice(SHOWN).map(permissionLabel)}\n title=\"More permissions\"\n />\n </div>\n );\n}\n\n/** One role: name, permissions, type, holders and its ••• menu. */\nexport function RoleRow({\n r,\n onEdit,\n onDuplicate,\n onDelete,\n}: {\n r: Role;\n onEdit: () => void;\n onDuplicate: () => void;\n onDelete: () => void;\n}) {\n return (\n <TableRow onClick={onEdit}>\n <td className={styles.roleCell}>\n <div className={styles.roleIdentity}>\n <div className={styles.roleText}>\n <div className={styles.roleName} title={r.name}>\n {r.name}\n </div>\n {r.description && (\n <Tooltip label={r.description}>\n <span className={styles.roleDesc} tabIndex={0}>\n {r.description}\n </span>\n </Tooltip>\n )}\n </div>\n </div>\n </td>\n <td>\n <PermissionChips keys={r.permissions ?? []} />\n </td>\n <td className={`${styles.nowrap} ${r.isSystem ? styles.muted : ''}`}>\n {r.isSystem ? 'Built-in' : 'Custom'}\n </td>\n <td className={styles.num}>\n {r.assignedCount > 0 ? (\n adminCount(r.assignedCount)\n ) : (\n <span className={styles.muted}>Unused</span>\n )}\n </td>\n <td className={styles.menuCell} onClick={(e) => e.stopPropagation()}>\n <OverflowMenu label={`Actions for ${r.name}`}>\n <OverflowItem onClick={onEdit}>Edit</OverflowItem>\n <OverflowItem onClick={onDuplicate}>Duplicate</OverflowItem>\n {r.isSystem ? (\n <Tooltip label=\"Built-in roles can’t be deleted. Duplicate it to make a version you can change freely.\">\n <span className={styles.lockedItem} tabIndex={0}>\n <OverflowItem onClick={() => {}} disabled>\n Delete\n </OverflowItem>\n </span>\n </Tooltip>\n ) : (\n <OverflowItem onClick={onDelete} destructive>\n Delete\n </OverflowItem>\n )}\n </OverflowMenu>\n </td>\n </TableRow>\n );\n}\n"],"mappings":";AAegC,cAG5B,YAH4B;AAbhC,SAAS,cAAc,cAAc,UAAU,eAAe;AAE9D,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC,OAAO,YAAY;AAEZ,MAAM,eAAe;AAC5B,MAAM,QAAQ;AAEP,MAAM,aAAa,CAAC,MAAc,GAAG,CAAC,SAAS,MAAM,IAAI,KAAK,GAAG;AAGxE,SAAS,gBAAgB,EAAE,KAAK,GAAuB;AACrD,MAAI,KAAK,WAAW,EAAG,QAAO,oBAAC,UAAK,WAAW,OAAO,OAAO,oBAAC;AAC9D,QAAM,QAAQ,KAAK,MAAM,GAAG,KAAK,EAAE,IAAI,eAAe,EAAE,KAAK,IAAI;AACjE,SACE,qBAAC,SAAI,WAAW,OAAO,QACrB;AAAA,wBAAC,UAAK,WAAW,OAAO,OAAO,OAAO,OACnC,iBACH;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,KAAK,MAAM,KAAK,EAAE,IAAI,eAAe;AAAA,QAC5C,OAAM;AAAA;AAAA,IACR;AAAA,KACF;AAEJ;AAGO,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,SACE,qBAAC,YAAS,SAAS,QACjB;AAAA,wBAAC,QAAG,WAAW,OAAO,UACpB,8BAAC,SAAI,WAAW,OAAO,cACrB,+BAAC,SAAI,WAAW,OAAO,UACrB;AAAA,0BAAC,SAAI,WAAW,OAAO,UAAU,OAAO,EAAE,MACvC,YAAE,MACL;AAAA,MACC,EAAE,eACD,oBAAC,WAAQ,OAAO,EAAE,aAChB,8BAAC,UAAK,WAAW,OAAO,UAAU,UAAU,GACzC,YAAE,aACL,GACF;AAAA,OAEJ,GACF,GACF;AAAA,IACA,oBAAC,QACC,8BAAC,mBAAgB,MAAM,EAAE,eAAe,CAAC,GAAG,GAC9C;AAAA,IACA,oBAAC,QAAG,WAAW,GAAG,OAAO,MAAM,IAAI,EAAE,WAAW,OAAO,QAAQ,EAAE,IAC9D,YAAE,WAAW,aAAa,UAC7B;AAAA,IACA,oBAAC,QAAG,WAAW,OAAO,KACnB,YAAE,gBAAgB,IACjB,WAAW,EAAE,aAAa,IAE1B,oBAAC,UAAK,WAAW,OAAO,OAAO,oBAAM,GAEzC;AAAA,IACA,oBAAC,QAAG,WAAW,OAAO,UAAU,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAChE,+BAAC,gBAAa,OAAO,eAAe,EAAE,IAAI,IACxC;AAAA,0BAAC,gBAAa,SAAS,QAAQ,kBAAI;AAAA,MACnC,oBAAC,gBAAa,SAAS,aAAa,uBAAS;AAAA,MAC5C,EAAE,WACD,oBAAC,WAAQ,OAAM,+FACb,8BAAC,UAAK,WAAW,OAAO,YAAY,UAAU,GAC5C,8BAAC,gBAAa,SAAS,MAAM;AAAA,MAAC,GAAG,UAAQ,MAAC,oBAE1C,GACF,GACF,IAEA,oBAAC,gBAAa,SAAS,UAAU,aAAW,MAAC,oBAE7C;AAAA,OAEJ,GACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { CountUp, Reveal } from "../_fx";
|
|
3
|
+
import { StatCard } from "../_ui";
|
|
4
|
+
function RolesKpis({
|
|
5
|
+
roles,
|
|
6
|
+
permissions,
|
|
7
|
+
isLoading
|
|
8
|
+
}) {
|
|
9
|
+
const custom = roles.filter((r) => !r.isSystem).length;
|
|
10
|
+
const kpis = [
|
|
11
|
+
{
|
|
12
|
+
label: "Total roles",
|
|
13
|
+
value: roles.length,
|
|
14
|
+
sub: `${custom} custom \xB7 ${roles.length - custom} built-in`
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
label: "In use",
|
|
18
|
+
value: roles.filter((r) => r.assignedCount > 0).length,
|
|
19
|
+
sub: "assigned to an admin"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
label: "Custom roles",
|
|
23
|
+
value: custom,
|
|
24
|
+
sub: "editable and deletable"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
label: "Permissions",
|
|
28
|
+
value: permissions,
|
|
29
|
+
sub: "available to grant"
|
|
30
|
+
}
|
|
31
|
+
];
|
|
32
|
+
return /* @__PURE__ */ jsx("section", { "aria-label": "Role indicators", className: "adm-grid", children: kpis.map((k, i) => /* @__PURE__ */ jsx(Reveal, { index: i, className: "adm-span-3", children: /* @__PURE__ */ jsx(
|
|
33
|
+
StatCard,
|
|
34
|
+
{
|
|
35
|
+
label: k.label,
|
|
36
|
+
value: /* @__PURE__ */ jsx(CountUp, { value: k.value }),
|
|
37
|
+
sub: k.sub,
|
|
38
|
+
isLoading
|
|
39
|
+
}
|
|
40
|
+
) }, k.label)) });
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
RolesKpis
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=roles-kpis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/roles/roles-kpis.tsx"],"sourcesContent":["import type { RoleRow as Role } from '@withpotter/lib/admin-api';\nimport { CountUp, Reveal } from '../_fx';\nimport { StatCard } from '../_ui';\n\n/** Four counts: roles, roles in use, custom roles, permissions on offer. */\nexport function RolesKpis({\n roles,\n permissions,\n isLoading,\n}: {\n roles: Role[];\n permissions: number;\n isLoading: boolean;\n}) {\n const custom = roles.filter((r) => !r.isSystem).length;\n const kpis = [\n {\n label: 'Total roles',\n value: roles.length,\n sub: `${custom} custom · ${roles.length - custom} built-in`,\n },\n {\n label: 'In use',\n value: roles.filter((r) => r.assignedCount > 0).length,\n sub: 'assigned to an admin',\n },\n {\n label: 'Custom roles',\n value: custom,\n sub: 'editable and deletable',\n },\n {\n label: 'Permissions',\n value: permissions,\n sub: 'available to grant',\n },\n ];\n\n return (\n <section aria-label=\"Role indicators\" className=\"adm-grid\">\n {kpis.map((k, i) => (\n <Reveal key={k.label} index={i} className=\"adm-span-3\">\n <StatCard\n label={k.label}\n value={<CountUp value={k.value} />}\n sub={k.sub}\n isLoading={isLoading}\n />\n </Reveal>\n ))}\n </section>\n );\n}\n"],"mappings":"AA4CmB;AA3CnB,SAAS,SAAS,cAAc;AAChC,SAAS,gBAAgB;AAGlB,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,SAAS,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE;AAChD,QAAM,OAAO;AAAA,IACX;AAAA,MACE,OAAO;AAAA,MACP,OAAO,MAAM;AAAA,MACb,KAAK,GAAG,MAAM,gBAAa,MAAM,SAAS,MAAM;AAAA,IAClD;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO,MAAM,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE;AAAA,MAChD,KAAK;AAAA,IACP;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,MACP,KAAK;AAAA,IACP;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,MACP,KAAK;AAAA,IACP;AAAA,EACF;AAEA,SACE,oBAAC,aAAQ,cAAW,mBAAkB,WAAU,YAC7C,eAAK,IAAI,CAAC,GAAG,MACZ,oBAAC,UAAqB,OAAO,GAAG,WAAU,cACxC;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE;AAAA,MACT,OAAO,oBAAC,WAAQ,OAAO,EAAE,OAAO;AAAA,MAChC,KAAK,EAAE;AAAA,MACP;AAAA;AAAA,EACF,KANW,EAAE,KAOf,CACD,GACH;AAEJ;","names":[]}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/* Roles: the role table and the create/edit dialog's grouped picker. */
|
|
2
|
+
|
|
3
|
+
/* ---- Dialog body ---- */
|
|
4
|
+
.dialogBody {
|
|
5
|
+
display: grid;
|
|
6
|
+
gap: 24px;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.dialogFields {
|
|
10
|
+
display: grid;
|
|
11
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
|
|
12
|
+
gap: 12px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.footNote {
|
|
16
|
+
font-size: 13px;
|
|
17
|
+
line-height: 20px;
|
|
18
|
+
font-variant-numeric: tabular-nums;
|
|
19
|
+
color: var(--text-secondary);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.footActions {
|
|
23
|
+
display: flex;
|
|
24
|
+
gap: 8px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@media (max-width: 719px) {
|
|
28
|
+
.dialogFields {
|
|
29
|
+
grid-template-columns: 1fr;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.note {
|
|
34
|
+
margin: 0;
|
|
35
|
+
font-size: 13px;
|
|
36
|
+
line-height: 20px;
|
|
37
|
+
color: var(--text-tertiary);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* ---- Page: never wider than the content column ---- */
|
|
41
|
+
.page {
|
|
42
|
+
min-width: 0;
|
|
43
|
+
max-width: 100%;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* ---- Role table: fixed columns, so long chips cannot push it wide ---- */
|
|
47
|
+
.colRole {
|
|
48
|
+
width: 32%;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.colType,
|
|
52
|
+
.colHeld {
|
|
53
|
+
width: 112px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.colMenu {
|
|
57
|
+
width: 56px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.roleCell {
|
|
61
|
+
overflow: hidden;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.roleIdentity {
|
|
65
|
+
display: flex;
|
|
66
|
+
align-items: center;
|
|
67
|
+
gap: 12px;
|
|
68
|
+
min-width: 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.roleText {
|
|
72
|
+
display: grid;
|
|
73
|
+
min-width: 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.roleName {
|
|
77
|
+
overflow: hidden;
|
|
78
|
+
font-weight: 500;
|
|
79
|
+
text-overflow: ellipsis;
|
|
80
|
+
white-space: nowrap;
|
|
81
|
+
color: var(--text-primary);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.roleDesc {
|
|
85
|
+
display: block;
|
|
86
|
+
max-width: 100%;
|
|
87
|
+
overflow: hidden;
|
|
88
|
+
border-radius: 4px;
|
|
89
|
+
font-size: 13px;
|
|
90
|
+
line-height: 20px;
|
|
91
|
+
text-overflow: ellipsis;
|
|
92
|
+
white-space: nowrap;
|
|
93
|
+
color: var(--text-tertiary);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.badges {
|
|
97
|
+
display: flex;
|
|
98
|
+
flex-wrap: nowrap;
|
|
99
|
+
align-items: center;
|
|
100
|
+
gap: 4px;
|
|
101
|
+
min-width: 0;
|
|
102
|
+
overflow: hidden;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.badge {
|
|
106
|
+
flex-shrink: 1;
|
|
107
|
+
min-width: 0;
|
|
108
|
+
overflow: hidden;
|
|
109
|
+
text-overflow: ellipsis;
|
|
110
|
+
white-space: nowrap;
|
|
111
|
+
color: var(--text-secondary);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.muted {
|
|
115
|
+
color: var(--text-tertiary);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.nowrap {
|
|
119
|
+
white-space: nowrap;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.num {
|
|
123
|
+
text-align: right;
|
|
124
|
+
white-space: nowrap;
|
|
125
|
+
font-variant-numeric: tabular-nums;
|
|
126
|
+
color: var(--text-secondary);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.menuCell {
|
|
130
|
+
width: 56px;
|
|
131
|
+
text-align: right;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.menuCell > div {
|
|
135
|
+
display: inline-flex;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.lockedItem {
|
|
139
|
+
display: block;
|
|
140
|
+
cursor: not-allowed;
|
|
141
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo, useState } from "react";
|
|
4
|
+
import { OverflowItem, OverflowMenu, TableRow, Th } from "@withpotter/ui-kit";
|
|
5
|
+
import { toCsv } from "@withpotter/lib/csv";
|
|
6
|
+
import {
|
|
7
|
+
FilterSelect,
|
|
8
|
+
Filters,
|
|
9
|
+
customRange,
|
|
10
|
+
rangeFromKey
|
|
11
|
+
} from "../_ui";
|
|
12
|
+
import { ListCard, ListPager } from "../_ui/list-card";
|
|
13
|
+
import list from "../_ui/list-card.module.css";
|
|
14
|
+
import { activityLine } from "./pipeline/lead-timeline";
|
|
15
|
+
import { LeadDrawer } from "./pipeline/lead-drawer";
|
|
16
|
+
import { CONTACT_TYPES } from "./stage-meta";
|
|
17
|
+
import { useSalesActivities, useSalesOwners } from "./use-sales";
|
|
18
|
+
const PAGE = 50;
|
|
19
|
+
const when = (iso) => new Date(iso).toLocaleString("en-GB", {
|
|
20
|
+
dateStyle: "medium",
|
|
21
|
+
timeStyle: "short"
|
|
22
|
+
});
|
|
23
|
+
const TYPES = [
|
|
24
|
+
{ value: "", label: "Everything" },
|
|
25
|
+
...Object.entries(CONTACT_TYPES).map(([value, label]) => ({ value, label })),
|
|
26
|
+
{ value: "stage_change", label: "Stage change" }
|
|
27
|
+
];
|
|
28
|
+
function download(rows) {
|
|
29
|
+
const body = rows.map((r) => [
|
|
30
|
+
when(r.occurredAt),
|
|
31
|
+
r.businessName,
|
|
32
|
+
r.adminName ?? (r.adminId ? "Admin" : "Automatic"),
|
|
33
|
+
activityLine(r),
|
|
34
|
+
r.body ?? ""
|
|
35
|
+
]);
|
|
36
|
+
const url = URL.createObjectURL(
|
|
37
|
+
new Blob([toCsv([["When", "Lead", "Who", "What", "Note"], ...body])], {
|
|
38
|
+
type: "text/csv"
|
|
39
|
+
})
|
|
40
|
+
);
|
|
41
|
+
const a = document.createElement("a");
|
|
42
|
+
a.href = url;
|
|
43
|
+
a.download = "sales-activity.csv";
|
|
44
|
+
a.click();
|
|
45
|
+
URL.revokeObjectURL(url);
|
|
46
|
+
}
|
|
47
|
+
function ActivityLogTab({
|
|
48
|
+
period
|
|
49
|
+
}) {
|
|
50
|
+
const range = useMemo(
|
|
51
|
+
() => period.rangeKey === "custom" ? customRange(period.customStart, period.customEnd) : rangeFromKey(period.rangeKey),
|
|
52
|
+
[period.rangeKey, period.customStart, period.customEnd]
|
|
53
|
+
);
|
|
54
|
+
const [admin, setAdmin] = useState("");
|
|
55
|
+
const [type, setType] = useState("");
|
|
56
|
+
const filterKey = `${range.startDate}|${range.endDate}|${admin}|${type}`;
|
|
57
|
+
const [paging, setPaging] = useState({ key: filterKey, page: 1 });
|
|
58
|
+
const page = paging.key === filterKey ? paging.page : 1;
|
|
59
|
+
const setPage = (next) => setPaging({ key: filterKey, page: next });
|
|
60
|
+
const [open, setOpen] = useState(null);
|
|
61
|
+
const { data: owners = [] } = useSalesOwners();
|
|
62
|
+
const { data, isLoading, isError, refetch } = useSalesActivities({
|
|
63
|
+
from: range.startDate ?? "2020-01-01T00:00:00.000Z",
|
|
64
|
+
to: range.endDate,
|
|
65
|
+
admin: admin || void 0,
|
|
66
|
+
type: type || void 0,
|
|
67
|
+
page,
|
|
68
|
+
pageSize: PAGE
|
|
69
|
+
});
|
|
70
|
+
const pick = (set) => (v) => set(v);
|
|
71
|
+
const reps = [
|
|
72
|
+
{ value: "", label: "Everyone" },
|
|
73
|
+
{ value: "box", label: "Automatic" },
|
|
74
|
+
...owners.map((o) => ({ value: o.id, label: o.name ?? o.email }))
|
|
75
|
+
];
|
|
76
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
77
|
+
/* @__PURE__ */ jsx(
|
|
78
|
+
ListCard,
|
|
79
|
+
{
|
|
80
|
+
title: "Activity log",
|
|
81
|
+
count: data?.total,
|
|
82
|
+
columns: 5,
|
|
83
|
+
minWidth: 860,
|
|
84
|
+
isLoading,
|
|
85
|
+
isError,
|
|
86
|
+
onRetry: () => void refetch(),
|
|
87
|
+
errorTitle: "Failed to load the activity log.",
|
|
88
|
+
isEmpty: data?.rows.length === 0,
|
|
89
|
+
emptyTitle: "No sales activity in this period",
|
|
90
|
+
controls: /* @__PURE__ */ jsxs(Filters, { label: "Filter activity", children: [
|
|
91
|
+
/* @__PURE__ */ jsx(
|
|
92
|
+
FilterSelect,
|
|
93
|
+
{
|
|
94
|
+
label: "Who",
|
|
95
|
+
value: admin,
|
|
96
|
+
onChange: pick(setAdmin),
|
|
97
|
+
options: reps,
|
|
98
|
+
allValue: "",
|
|
99
|
+
placeholder: "Everyone"
|
|
100
|
+
}
|
|
101
|
+
),
|
|
102
|
+
/* @__PURE__ */ jsx(
|
|
103
|
+
FilterSelect,
|
|
104
|
+
{
|
|
105
|
+
label: "What",
|
|
106
|
+
value: type,
|
|
107
|
+
onChange: pick(setType),
|
|
108
|
+
options: TYPES,
|
|
109
|
+
allValue: "",
|
|
110
|
+
placeholder: "Everything"
|
|
111
|
+
}
|
|
112
|
+
),
|
|
113
|
+
/* @__PURE__ */ jsx(OverflowMenu, { label: "Export", children: /* @__PURE__ */ jsx(
|
|
114
|
+
OverflowItem,
|
|
115
|
+
{
|
|
116
|
+
onClick: () => download(data?.rows ?? []),
|
|
117
|
+
disabled: !data?.rows.length,
|
|
118
|
+
children: "Export this page as CSV"
|
|
119
|
+
}
|
|
120
|
+
) })
|
|
121
|
+
] }),
|
|
122
|
+
head: /* @__PURE__ */ jsxs("tr", { children: [
|
|
123
|
+
/* @__PURE__ */ jsx(Th, { children: "When" }),
|
|
124
|
+
/* @__PURE__ */ jsx(Th, { children: "Lead" }),
|
|
125
|
+
/* @__PURE__ */ jsx(Th, { children: "Who" }),
|
|
126
|
+
/* @__PURE__ */ jsx(Th, { children: "What" }),
|
|
127
|
+
/* @__PURE__ */ jsx(Th, { children: "Note" })
|
|
128
|
+
] }),
|
|
129
|
+
footer: /* @__PURE__ */ jsx(
|
|
130
|
+
ListPager,
|
|
131
|
+
{
|
|
132
|
+
page,
|
|
133
|
+
totalPages: data ? Math.max(1, Math.ceil(data.total / PAGE)) : 1,
|
|
134
|
+
total: data?.total,
|
|
135
|
+
noun: "entries",
|
|
136
|
+
onPage: setPage
|
|
137
|
+
}
|
|
138
|
+
),
|
|
139
|
+
children: data?.rows.map((r) => /* @__PURE__ */ jsxs(TableRow, { onClick: () => setOpen(r.leadId), children: [
|
|
140
|
+
/* @__PURE__ */ jsx("td", { className: `${list.nowrap} ${list.muted}`, children: when(r.occurredAt) }),
|
|
141
|
+
/* @__PURE__ */ jsx("td", { className: list.nowrap, children: r.businessName }),
|
|
142
|
+
/* @__PURE__ */ jsx("td", { className: `${list.nowrap} ${list.muted}`, children: r.adminName ?? (r.adminId ? "Admin" : "Automatic") }),
|
|
143
|
+
/* @__PURE__ */ jsx("td", { className: list.nowrap, children: activityLine(r) }),
|
|
144
|
+
/* @__PURE__ */ jsx("td", { className: `${list.clip} ${list.muted}`, children: r.body ?? "\u2013" })
|
|
145
|
+
] }, r.id))
|
|
146
|
+
}
|
|
147
|
+
),
|
|
148
|
+
/* @__PURE__ */ jsx(LeadDrawer, { leadId: open, onClose: () => setOpen(null) })
|
|
149
|
+
] });
|
|
150
|
+
}
|
|
151
|
+
export {
|
|
152
|
+
ActivityLogTab
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=activity-log-tab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/sales/activity-log-tab.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo, useState } from 'react';\nimport { OverflowItem, OverflowMenu, TableRow, Th } from '@withpotter/ui-kit';\nimport { toCsv } from '@withpotter/lib/csv';\nimport type { FeedEntry } from '@withpotter/lib/admin-sales-api';\nimport {\n FilterSelect,\n Filters,\n customRange,\n rangeFromKey,\n type usePersistedDateRange,\n} from '../_ui';\nimport { ListCard, ListPager } from '../_ui/list-card';\nimport list from '../_ui/list-card.module.css';\nimport { activityLine } from './pipeline/lead-timeline';\nimport { LeadDrawer } from './pipeline/lead-drawer';\nimport { CONTACT_TYPES } from './stage-meta';\nimport { useSalesActivities, useSalesOwners } from './use-sales';\n\nconst PAGE = 50;\nconst when = (iso: string) =>\n new Date(iso).toLocaleString('en-GB', {\n dateStyle: 'medium',\n timeStyle: 'short',\n });\nconst TYPES = [\n { value: '', label: 'Everything' },\n ...Object.entries(CONTACT_TYPES).map(([value, label]) => ({ value, label })),\n { value: 'stage_change', label: 'Stage change' },\n];\n\nfunction download(rows: FeedEntry[]) {\n const body = rows.map((r) => [\n when(r.occurredAt),\n r.businessName,\n r.adminName ?? (r.adminId ? 'Admin' : 'Automatic'),\n activityLine(r),\n r.body ?? '',\n ]);\n const url = URL.createObjectURL(\n new Blob([toCsv([['When', 'Lead', 'Who', 'What', 'Note'], ...body])], {\n type: 'text/csv',\n }),\n );\n const a = document.createElement('a');\n\n a.href = url;\n a.download = 'sales-activity.csv';\n a.click();\n URL.revokeObjectURL(url);\n}\n\n/**\n * The sales log: every call, message, meeting, note and stage change across\n * all leads, newest first, with who did it. Nothing in it can be edited.\n */\nexport function ActivityLogTab({\n period,\n}: {\n period: ReturnType<typeof usePersistedDateRange>;\n}) {\n const range = useMemo(\n () =>\n period.rangeKey === 'custom'\n ? customRange(period.customStart, period.customEnd)\n : rangeFromKey(period.rangeKey),\n [period.rangeKey, period.customStart, period.customEnd],\n );\n const [admin, setAdmin] = useState('');\n const [type, setType] = useState('');\n // The page belongs to one set of filters: a new period or filter starts\n // again at page 1 instead of landing past the end of a shorter list.\n const filterKey = `${range.startDate}|${range.endDate}|${admin}|${type}`;\n const [paging, setPaging] = useState({ key: filterKey, page: 1 });\n const page = paging.key === filterKey ? paging.page : 1;\n const setPage = (next: number) => setPaging({ key: filterKey, page: next });\n const [open, setOpen] = useState<string | null>(null);\n const { data: owners = [] } = useSalesOwners();\n const { data, isLoading, isError, refetch } = useSalesActivities({\n from: range.startDate ?? '2020-01-01T00:00:00.000Z',\n to: range.endDate,\n admin: admin || undefined,\n type: type || undefined,\n page,\n pageSize: PAGE,\n });\n const pick = (set: (v: string) => void) => (v: string) => set(v);\n const reps = [\n { value: '', label: 'Everyone' },\n { value: 'box', label: 'Automatic' },\n ...owners.map((o) => ({ value: o.id, label: o.name ?? o.email })),\n ];\n\n return (\n <>\n <ListCard\n title=\"Activity log\"\n count={data?.total}\n columns={5}\n minWidth={860}\n isLoading={isLoading}\n isError={isError}\n onRetry={() => void refetch()}\n errorTitle=\"Failed to load the activity log.\"\n isEmpty={data?.rows.length === 0}\n emptyTitle=\"No sales activity in this period\"\n controls={\n <Filters label=\"Filter activity\">\n <FilterSelect\n label=\"Who\"\n value={admin}\n onChange={pick(setAdmin)}\n options={reps}\n allValue=\"\"\n placeholder=\"Everyone\"\n />\n <FilterSelect\n label=\"What\"\n value={type}\n onChange={pick(setType)}\n options={TYPES}\n allValue=\"\"\n placeholder=\"Everything\"\n />\n <OverflowMenu label=\"Export\">\n <OverflowItem\n onClick={() => download(data?.rows ?? [])}\n disabled={!data?.rows.length}\n >\n Export this page as CSV\n </OverflowItem>\n </OverflowMenu>\n </Filters>\n }\n head={\n <tr>\n <Th>When</Th>\n <Th>Lead</Th>\n <Th>Who</Th>\n <Th>What</Th>\n <Th>Note</Th>\n </tr>\n }\n footer={\n <ListPager\n page={page}\n totalPages={data ? Math.max(1, Math.ceil(data.total / PAGE)) : 1}\n total={data?.total}\n noun=\"entries\"\n onPage={setPage}\n />\n }\n >\n {data?.rows.map((r) => (\n <TableRow key={r.id} onClick={() => setOpen(r.leadId)}>\n <td className={`${list.nowrap} ${list.muted}`}>\n {when(r.occurredAt)}\n </td>\n <td className={list.nowrap}>{r.businessName}</td>\n <td className={`${list.nowrap} ${list.muted}`}>\n {r.adminName ?? (r.adminId ? 'Admin' : 'Automatic')}\n </td>\n <td className={list.nowrap}>{activityLine(r)}</td>\n <td className={`${list.clip} ${list.muted}`}>{r.body ?? '–'}</td>\n </TableRow>\n ))}\n </ListCard>\n <LeadDrawer leadId={open} onClose={() => setOpen(null)} />\n </>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function bucketStart(date, grain) {
|
|
2
|
+
const day = /* @__PURE__ */ new Date(`${date.slice(0, 10)}T00:00:00Z`);
|
|
3
|
+
if (grain === "monthly") {
|
|
4
|
+
return Date.UTC(day.getUTCFullYear(), day.getUTCMonth(), 1);
|
|
5
|
+
}
|
|
6
|
+
if (grain === "weekly") {
|
|
7
|
+
const back = (day.getUTCDay() + 6) % 7;
|
|
8
|
+
return day.getTime() - back * 864e5;
|
|
9
|
+
}
|
|
10
|
+
return day.getTime();
|
|
11
|
+
}
|
|
12
|
+
function bucketSeries(series, grain) {
|
|
13
|
+
const keys = Object.keys(series);
|
|
14
|
+
const buckets = /* @__PURE__ */ new Map();
|
|
15
|
+
for (const key of keys) {
|
|
16
|
+
for (const point of series[key] ?? []) {
|
|
17
|
+
const t = bucketStart(point.date, grain);
|
|
18
|
+
const values = buckets.get(t) ?? Object.fromEntries(keys.map((k) => [k, 0]));
|
|
19
|
+
values[key] = (values[key] ?? 0) + point.count;
|
|
20
|
+
buckets.set(t, values);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return [...buckets.entries()].sort(([a], [b]) => a - b).map(([t, values]) => ({ t, values }));
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
bucketSeries,
|
|
27
|
+
bucketStart
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=bucket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/admin/sales/bucket.ts"],"sourcesContent":["export type Grain = 'daily' | 'weekly' | 'monthly';\n\n/** The UTC day a `YYYY-MM-DD` date falls in, moved to its bucket's start. */\nexport function bucketStart(date: string, grain: Grain): number {\n const day = new Date(`${date.slice(0, 10)}T00:00:00Z`);\n\n if (grain === 'monthly') {\n return Date.UTC(day.getUTCFullYear(), day.getUTCMonth(), 1);\n }\n if (grain === 'weekly') {\n // Weeks start on Monday: Sunday (0) steps back six days, Monday none.\n const back = (day.getUTCDay() + 6) % 7;\n\n return day.getTime() - back * 86_400_000;\n }\n\n return day.getTime();\n}\n\n/**\n * Several daily count series as one set of points, summed into the chosen\n * grain. A bucket any series reaches appears once, with a zero for each\n * series that has nothing in it, so every line spans the same axis.\n */\nexport function bucketSeries(\n series: Record<string, Array<{ date: string; count: number }> | undefined>,\n grain: Grain,\n): Array<{ t: number; values: Record<string, number> }> {\n const keys = Object.keys(series);\n const buckets = new Map<number, Record<string, number>>();\n\n for (const key of keys) {\n for (const point of series[key] ?? []) {\n const t = bucketStart(point.date, grain);\n const values =\n buckets.get(t) ?? Object.fromEntries(keys.map((k) => [k, 0]));\n\n values[key] = (values[key] ?? 0) + point.count;\n buckets.set(t, values);\n }\n }\n\n return [...buckets.entries()]\n .sort(([a], [b]) => a - b)\n .map(([t, values]) => ({ t, values }));\n}\n"],"mappings":"AAGO,SAAS,YAAY,MAAc,OAAsB;AAC9D,QAAM,MAAM,oBAAI,KAAK,GAAG,KAAK,MAAM,GAAG,EAAE,CAAC,YAAY;AAErD,MAAI,UAAU,WAAW;AACvB,WAAO,KAAK,IAAI,IAAI,eAAe,GAAG,IAAI,YAAY,GAAG,CAAC;AAAA,EAC5D;AACA,MAAI,UAAU,UAAU;AAEtB,UAAM,QAAQ,IAAI,UAAU,IAAI,KAAK;AAErC,WAAO,IAAI,QAAQ,IAAI,OAAO;AAAA,EAChC;AAEA,SAAO,IAAI,QAAQ;AACrB;AAOO,SAAS,aACd,QACA,OACsD;AACtD,QAAM,OAAO,OAAO,KAAK,MAAM;AAC/B,QAAM,UAAU,oBAAI,IAAoC;AAExD,aAAW,OAAO,MAAM;AACtB,eAAW,SAAS,OAAO,GAAG,KAAK,CAAC,GAAG;AACrC,YAAM,IAAI,YAAY,MAAM,MAAM,KAAK;AACvC,YAAM,SACJ,QAAQ,IAAI,CAAC,KAAK,OAAO,YAAY,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,aAAO,GAAG,KAAK,OAAO,GAAG,KAAK,KAAK,MAAM;AACzC,cAAQ,IAAI,GAAG,MAAM;AAAA,IACvB;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,QAAQ,QAAQ,CAAC,EACzB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EACxB,IAAI,CAAC,CAAC,GAAG,MAAM,OAAO,EAAE,GAAG,OAAO,EAAE;AACzC;","names":[]}
|