@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.
Files changed (1331) hide show
  1. package/dist/admin/_fx/entity-avatar.js +63 -0
  2. package/dist/admin/_fx/entity-avatar.js.map +1 -0
  3. package/dist/admin/_fx/index.js +14 -0
  4. package/dist/admin/_fx/index.js.map +1 -0
  5. package/dist/admin/_fx/motion.js +59 -0
  6. package/dist/admin/_fx/motion.js.map +1 -0
  7. package/dist/admin/_fx/page-transition.js +23 -0
  8. package/dist/admin/_fx/page-transition.js.map +1 -0
  9. package/dist/admin/_fx/tones.js +28 -0
  10. package/dist/admin/_fx/tones.js.map +1 -0
  11. package/dist/admin/_fx.js +1 -0
  12. package/dist/admin/_inbox/nav-badge.js +27 -0
  13. package/dist/admin/_inbox/nav-badge.js.map +1 -0
  14. package/dist/admin/_inbox/nav-badge.module.css +15 -0
  15. package/dist/admin/_inbox/use-admin-inbox.js +118 -0
  16. package/dist/admin/_inbox/use-admin-inbox.js.map +1 -0
  17. package/dist/admin/_money/business-ledger.js +65 -0
  18. package/dist/admin/_money/business-ledger.js.map +1 -0
  19. package/dist/admin/_money/business-picker.js +53 -0
  20. package/dist/admin/_money/business-picker.js.map +1 -0
  21. package/dist/admin/_money/cash-errors.js +42 -0
  22. package/dist/admin/_money/cash-errors.js.map +1 -0
  23. package/dist/admin/_money/cash-postings.js +93 -0
  24. package/dist/admin/_money/cash-postings.js.map +1 -0
  25. package/dist/admin/_money/cash.module.css +128 -0
  26. package/dist/admin/_money/finder-format.js +42 -0
  27. package/dist/admin/_money/finder-format.js.map +1 -0
  28. package/dist/admin/_money/finder-row.js +51 -0
  29. package/dist/admin/_money/finder-row.js.map +1 -0
  30. package/dist/admin/_money/format.js +62 -0
  31. package/dist/admin/_money/format.js.map +1 -0
  32. package/dist/admin/_money/ledger-activity.js +90 -0
  33. package/dist/admin/_money/ledger-activity.js.map +1 -0
  34. package/dist/admin/_money/ledger-balances.js +32 -0
  35. package/dist/admin/_money/ledger-balances.js.map +1 -0
  36. package/dist/admin/_money/ledger-body.js +62 -0
  37. package/dist/admin/_money/ledger-body.js.map +1 -0
  38. package/dist/admin/_money/ledger-holds.js +70 -0
  39. package/dist/admin/_money/ledger-holds.js.map +1 -0
  40. package/dist/admin/_money/ledger-statement.js +120 -0
  41. package/dist/admin/_money/ledger-statement.js.map +1 -0
  42. package/dist/admin/_money/ledger.js +94 -0
  43. package/dist/admin/_money/ledger.js.map +1 -0
  44. package/dist/admin/_money/ledger.module.css +88 -0
  45. package/dist/admin/_money/money-section.js +19 -0
  46. package/dist/admin/_money/money-section.js.map +1 -0
  47. package/dist/admin/_money/open-as-owner.js +32 -0
  48. package/dist/admin/_money/open-as-owner.js.map +1 -0
  49. package/dist/admin/_money/page.module.css +149 -0
  50. package/dist/admin/_money/permissions.js +46 -0
  51. package/dist/admin/_money/permissions.js.map +1 -0
  52. package/dist/admin/_money/proposal-status.js +20 -0
  53. package/dist/admin/_money/proposal-status.js.map +1 -0
  54. package/dist/admin/_money/proposal-store.js +65 -0
  55. package/dist/admin/_money/proposal-store.js.map +1 -0
  56. package/dist/admin/_money/propose-dialog.js +124 -0
  57. package/dist/admin/_money/propose-dialog.js.map +1 -0
  58. package/dist/admin/_money/propose-draft.js +40 -0
  59. package/dist/admin/_money/propose-draft.js.map +1 -0
  60. package/dist/admin/_money/propose-fields.js +113 -0
  61. package/dist/admin/_money/propose-fields.js.map +1 -0
  62. package/dist/admin/_money/propose-steps.js +73 -0
  63. package/dist/admin/_money/propose-steps.js.map +1 -0
  64. package/dist/admin/_money/propose.module.css +105 -0
  65. package/dist/admin/_money/review-dialog.js +149 -0
  66. package/dist/admin/_money/review-dialog.js.map +1 -0
  67. package/dist/admin/_money/review-rules.js +31 -0
  68. package/dist/admin/_money/review-rules.js.map +1 -0
  69. package/dist/admin/_money/save-csv.js +12 -0
  70. package/dist/admin/_money/save-csv.js.map +1 -0
  71. package/dist/admin/_money/skeleton-rows.js +10 -0
  72. package/dist/admin/_money/skeleton-rows.js.map +1 -0
  73. package/dist/admin/_money/statement-export.js +57 -0
  74. package/dist/admin/_money/statement-export.js.map +1 -0
  75. package/dist/admin/_money/tenant-param.js +26 -0
  76. package/dist/admin/_money/tenant-param.js.map +1 -0
  77. package/dist/admin/_money/use-ledger.js +47 -0
  78. package/dist/admin/_money/use-ledger.js.map +1 -0
  79. package/dist/admin/_money/waiting-proposals.js +89 -0
  80. package/dist/admin/_money/waiting-proposals.js.map +1 -0
  81. package/dist/admin/_overview/activation-panel.js +55 -0
  82. package/dist/admin/_overview/activation-panel.js.map +1 -0
  83. package/dist/admin/_overview/attention-groups.js +83 -0
  84. package/dist/admin/_overview/attention-groups.js.map +1 -0
  85. package/dist/admin/_overview/attention-panel.js +58 -0
  86. package/dist/admin/_overview/attention-panel.js.map +1 -0
  87. package/dist/admin/_overview/attention.module.css +109 -0
  88. package/dist/admin/_overview/control-room.js +88 -0
  89. package/dist/admin/_overview/control-room.js.map +1 -0
  90. package/dist/admin/_overview/control-room.module.css +20 -0
  91. package/dist/admin/_overview/figures.module.css +155 -0
  92. package/dist/admin/_overview/kpi-row.js +77 -0
  93. package/dist/admin/_overview/kpi-row.js.map +1 -0
  94. package/dist/admin/_overview/leaders-panel.js +71 -0
  95. package/dist/admin/_overview/leaders-panel.js.map +1 -0
  96. package/dist/admin/_overview/overdue-outstanding.js +37 -0
  97. package/dist/admin/_overview/overdue-outstanding.js.map +1 -0
  98. package/dist/admin/_overview/portfolio-panel.js +69 -0
  99. package/dist/admin/_overview/portfolio-panel.js.map +1 -0
  100. package/dist/admin/_overview/position-panel.js +66 -0
  101. package/dist/admin/_overview/position-panel.js.map +1 -0
  102. package/dist/admin/_overview/position.module.css +52 -0
  103. package/dist/admin/_overview/use-waiting-cases.js +17 -0
  104. package/dist/admin/_overview/use-waiting-cases.js.map +1 -0
  105. package/dist/admin/_pos/action-dialog.js +66 -0
  106. package/dist/admin/_pos/action-dialog.js.map +1 -0
  107. package/dist/admin/_pos/close-shift-dialog.js +62 -0
  108. package/dist/admin/_pos/close-shift-dialog.js.map +1 -0
  109. package/dist/admin/_pos/pos-figures.js +82 -0
  110. package/dist/admin/_pos/pos-figures.js.map +1 -0
  111. package/dist/admin/_pos/pos-money.js +14 -0
  112. package/dist/admin/_pos/pos-money.js.map +1 -0
  113. package/dist/admin/_pos/pos-parts.js +68 -0
  114. package/dist/admin/_pos/pos-parts.js.map +1 -0
  115. package/dist/admin/_pos/pos-rules.js +43 -0
  116. package/dist/admin/_pos/pos-rules.js.map +1 -0
  117. package/dist/admin/_pos/pos-words.js +101 -0
  118. package/dist/admin/_pos/pos-words.js.map +1 -0
  119. package/dist/admin/_pos/pos.module.css +154 -0
  120. package/dist/admin/_pos/shift-row.js +107 -0
  121. package/dist/admin/_pos/shift-row.js.map +1 -0
  122. package/dist/admin/_pos/shifts-table.js +72 -0
  123. package/dist/admin/_pos/shifts-table.js.map +1 -0
  124. package/dist/admin/_pos/terminal-actions.js +104 -0
  125. package/dist/admin/_pos/terminal-actions.js.map +1 -0
  126. package/dist/admin/_pos/use-pos-access.js +20 -0
  127. package/dist/admin/_pos/use-pos-access.js.map +1 -0
  128. package/dist/admin/_pos/use-pos-period.js +39 -0
  129. package/dist/admin/_pos/use-pos-period.js.map +1 -0
  130. package/dist/admin/_pos/use-pos.js +89 -0
  131. package/dist/admin/_pos/use-pos.js.map +1 -0
  132. package/dist/admin/_pos/use-tenant-param.js +20 -0
  133. package/dist/admin/_pos/use-tenant-param.js.map +1 -0
  134. package/dist/admin/_settings/index.js +28 -0
  135. package/dist/admin/_settings/index.js.map +1 -0
  136. package/dist/admin/_settings/live-announcer.js +35 -0
  137. package/dist/admin/_settings/live-announcer.js.map +1 -0
  138. package/dist/admin/_settings/schema.js +82 -0
  139. package/dist/admin/_settings/schema.js.map +1 -0
  140. package/dist/admin/_settings/store.js +82 -0
  141. package/dist/admin/_settings/store.js.map +1 -0
  142. package/dist/admin/_settings/use-apply-preferences.js +38 -0
  143. package/dist/admin/_settings/use-apply-preferences.js.map +1 -0
  144. package/dist/admin/_settings/use-start-page.js +20 -0
  145. package/dist/admin/_settings/use-start-page.js.map +1 -0
  146. package/dist/admin/_settings.js +1 -0
  147. package/dist/admin/_shell/admin-brand.js +15 -0
  148. package/dist/admin/_shell/admin-brand.js.map +1 -0
  149. package/dist/admin/_shell/brand.module.css +147 -0
  150. package/dist/admin/_shell/command-palette.js +103 -0
  151. package/dist/admin/_shell/command-palette.js.map +1 -0
  152. package/dist/admin/_shell/command-palette.module.css +109 -0
  153. package/dist/admin/_shell/frame.module.css +92 -0
  154. package/dist/admin/_shell/inbox-bell.js +74 -0
  155. package/dist/admin/_shell/inbox-bell.js.map +1 -0
  156. package/dist/admin/_shell/inbox.module.css +107 -0
  157. package/dist/admin/_shell/menus.module.css +55 -0
  158. package/dist/admin/_shell/modules-context.js +17 -0
  159. package/dist/admin/_shell/modules-context.js.map +1 -0
  160. package/dist/admin/_shell/nav-config.js +168 -0
  161. package/dist/admin/_shell/nav-config.js.map +1 -0
  162. package/dist/admin/_shell/nav-filter.js +45 -0
  163. package/dist/admin/_shell/nav-filter.js.map +1 -0
  164. package/dist/admin/_shell/nav-fold.js +14 -0
  165. package/dist/admin/_shell/nav-fold.js.map +1 -0
  166. package/dist/admin/_shell/nav-group.js +78 -0
  167. package/dist/admin/_shell/nav-group.js.map +1 -0
  168. package/dist/admin/_shell/nav-modules.js +36 -0
  169. package/dist/admin/_shell/nav-modules.js.map +1 -0
  170. package/dist/admin/_shell/nav-row.js +62 -0
  171. package/dist/admin/_shell/nav-row.js.map +1 -0
  172. package/dist/admin/_shell/seam-toggle.js +26 -0
  173. package/dist/admin/_shell/seam-toggle.js.map +1 -0
  174. package/dist/admin/_shell/section-tabs.js +28 -0
  175. package/dist/admin/_shell/section-tabs.js.map +1 -0
  176. package/dist/admin/_shell/shell-skeleton.js +30 -0
  177. package/dist/admin/_shell/shell-skeleton.js.map +1 -0
  178. package/dist/admin/_shell/shell-skeleton.module.css +57 -0
  179. package/dist/admin/_shell/sidebar-footer.js +85 -0
  180. package/dist/admin/_shell/sidebar-footer.js.map +1 -0
  181. package/dist/admin/_shell/sidebar-footer.module.css +144 -0
  182. package/dist/admin/_shell/sidebar.js +87 -0
  183. package/dist/admin/_shell/sidebar.js.map +1 -0
  184. package/dist/admin/_shell/sidebar.module.css +259 -0
  185. package/dist/admin/_shell/sign-out.js +14 -0
  186. package/dist/admin/_shell/sign-out.js.map +1 -0
  187. package/dist/admin/_shell/system-status-panel.js +100 -0
  188. package/dist/admin/_shell/system-status-panel.js.map +1 -0
  189. package/dist/admin/_shell/system-status-panel.module.css +195 -0
  190. package/dist/admin/_shell/topbar.js +26 -0
  191. package/dist/admin/_shell/topbar.js.map +1 -0
  192. package/dist/admin/_shell/topbar.module.css +84 -0
  193. package/dist/admin/_shell/use-admin-query-defaults.js +18 -0
  194. package/dist/admin/_shell/use-admin-query-defaults.js.map +1 -0
  195. package/dist/admin/_shell/use-fluid-hover.js +62 -0
  196. package/dist/admin/_shell/use-fluid-hover.js.map +1 -0
  197. package/dist/admin/_shell/use-open-groups.js +64 -0
  198. package/dist/admin/_shell/use-open-groups.js.map +1 -0
  199. package/dist/admin/_shell/use-shell-prefs.js +87 -0
  200. package/dist/admin/_shell/use-shell-prefs.js.map +1 -0
  201. package/dist/admin/_shell/user-menu.js +80 -0
  202. package/dist/admin/_shell/user-menu.js.map +1 -0
  203. package/dist/admin/_ui/admin.css +801 -0
  204. package/dist/admin/_ui/chart-colors.js +46 -0
  205. package/dist/admin/_ui/chart-colors.js.map +1 -0
  206. package/dist/admin/_ui/column-picker.js +77 -0
  207. package/dist/admin/_ui/column-picker.js.map +1 -0
  208. package/dist/admin/_ui/country-label.js +42 -0
  209. package/dist/admin/_ui/country-label.js.map +1 -0
  210. package/dist/admin/_ui/country-label.module.css +31 -0
  211. package/dist/admin/_ui/country-text.js +21 -0
  212. package/dist/admin/_ui/country-text.js.map +1 -0
  213. package/dist/admin/_ui/currency-filter-model.js +53 -0
  214. package/dist/admin/_ui/currency-filter-model.js.map +1 -0
  215. package/dist/admin/_ui/currency-filter.js +64 -0
  216. package/dist/admin/_ui/currency-filter.js.map +1 -0
  217. package/dist/admin/_ui/data-table.js +107 -0
  218. package/dist/admin/_ui/data-table.js.map +1 -0
  219. package/dist/admin/_ui/donut-chart.js +193 -0
  220. package/dist/admin/_ui/donut-chart.js.map +1 -0
  221. package/dist/admin/_ui/drawer.js +82 -0
  222. package/dist/admin/_ui/drawer.js.map +1 -0
  223. package/dist/admin/_ui/drawer.module.css +157 -0
  224. package/dist/admin/_ui/empty-state.js +47 -0
  225. package/dist/admin/_ui/empty-state.js.map +1 -0
  226. package/dist/admin/_ui/filter-bar.js +24 -0
  227. package/dist/admin/_ui/filter-bar.js.map +1 -0
  228. package/dist/admin/_ui/filter-dates.js +67 -0
  229. package/dist/admin/_ui/filter-dates.js.map +1 -0
  230. package/dist/admin/_ui/filters.js +93 -0
  231. package/dist/admin/_ui/filters.js.map +1 -0
  232. package/dist/admin/_ui/filters.module.css +88 -0
  233. package/dist/admin/_ui/index.js +120 -0
  234. package/dist/admin/_ui/index.js.map +1 -0
  235. package/dist/admin/_ui/list-card.js +119 -0
  236. package/dist/admin/_ui/list-card.js.map +1 -0
  237. package/dist/admin/_ui/list-card.module.css +96 -0
  238. package/dist/admin/_ui/loading.js +29 -0
  239. package/dist/admin/_ui/loading.js.map +1 -0
  240. package/dist/admin/_ui/money-lines.js +19 -0
  241. package/dist/admin/_ui/money-lines.js.map +1 -0
  242. package/dist/admin/_ui/money-lines.module.css +4 -0
  243. package/dist/admin/_ui/money-view.js +43 -0
  244. package/dist/admin/_ui/money-view.js.map +1 -0
  245. package/dist/admin/_ui/motion.css +22 -0
  246. package/dist/admin/_ui/page-header.js +54 -0
  247. package/dist/admin/_ui/page-header.js.map +1 -0
  248. package/dist/admin/_ui/page-header.module.css +45 -0
  249. package/dist/admin/_ui/page-tabs.js +46 -0
  250. package/dist/admin/_ui/page-tabs.js.map +1 -0
  251. package/dist/admin/_ui/pagination.js +68 -0
  252. package/dist/admin/_ui/pagination.js.map +1 -0
  253. package/dist/admin/_ui/panel.js +38 -0
  254. package/dist/admin/_ui/panel.js.map +1 -0
  255. package/dist/admin/_ui/panel.module.css +87 -0
  256. package/dist/admin/_ui/period-selector.js +81 -0
  257. package/dist/admin/_ui/period-selector.js.map +1 -0
  258. package/dist/admin/_ui/period.js +52 -0
  259. package/dist/admin/_ui/period.js.map +1 -0
  260. package/dist/admin/_ui/period.module.css +43 -0
  261. package/dist/admin/_ui/preferences.css +121 -0
  262. package/dist/admin/_ui/prefs.js +62 -0
  263. package/dist/admin/_ui/prefs.js.map +1 -0
  264. package/dist/admin/_ui/skeleton.js +26 -0
  265. package/dist/admin/_ui/skeleton.js.map +1 -0
  266. package/dist/admin/_ui/sparkline.js +56 -0
  267. package/dist/admin/_ui/sparkline.js.map +1 -0
  268. package/dist/admin/_ui/stat-card.js +85 -0
  269. package/dist/admin/_ui/stat-card.js.map +1 -0
  270. package/dist/admin/_ui/styles.js +74 -0
  271. package/dist/admin/_ui/styles.js.map +1 -0
  272. package/dist/admin/_ui/tint.css +87 -0
  273. package/dist/admin/_ui/trend.js +58 -0
  274. package/dist/admin/_ui/trend.js.map +1 -0
  275. package/dist/admin/_ui/workspace-tab.js +25 -0
  276. package/dist/admin/_ui/workspace-tab.js.map +1 -0
  277. package/dist/admin/_ui.js +1 -0
  278. package/dist/admin/accounts/account-activity.js +64 -0
  279. package/dist/admin/accounts/account-activity.js.map +1 -0
  280. package/dist/admin/accounts/account-activity.module.css +83 -0
  281. package/dist/admin/accounts/account-panel.js +177 -0
  282. package/dist/admin/accounts/account-panel.js.map +1 -0
  283. package/dist/admin/accounts/account-panel.module.css +213 -0
  284. package/dist/admin/accounts/account-row.js +122 -0
  285. package/dist/admin/accounts/account-row.js.map +1 -0
  286. package/dist/admin/accounts/account-sessions.js +70 -0
  287. package/dist/admin/accounts/account-sessions.js.map +1 -0
  288. package/dist/admin/accounts/account-sessions.module.css +55 -0
  289. package/dist/admin/accounts/account-stage-filter.js +29 -0
  290. package/dist/admin/accounts/account-stage-filter.js.map +1 -0
  291. package/dist/admin/accounts/account-stage.js +81 -0
  292. package/dist/admin/accounts/account-stage.js.map +1 -0
  293. package/dist/admin/accounts/account-vitals.js +46 -0
  294. package/dist/admin/accounts/account-vitals.js.map +1 -0
  295. package/dist/admin/accounts/account-workspaces.js +56 -0
  296. package/dist/admin/accounts/account-workspaces.js.map +1 -0
  297. package/dist/admin/accounts/accounts-analytics.js +113 -0
  298. package/dist/admin/accounts/accounts-analytics.js.map +1 -0
  299. package/dist/admin/accounts/accounts-kpis.js +70 -0
  300. package/dist/admin/accounts/accounts-kpis.js.map +1 -0
  301. package/dist/admin/accounts/accounts-table.js +266 -0
  302. package/dist/admin/accounts/accounts-table.js.map +1 -0
  303. package/dist/admin/accounts/accounts-workspace.js +85 -0
  304. package/dist/admin/accounts/accounts-workspace.js.map +1 -0
  305. package/dist/admin/accounts/hint.js +12 -0
  306. package/dist/admin/accounts/hint.js.map +1 -0
  307. package/dist/admin/accounts/owner-session.js +30 -0
  308. package/dist/admin/accounts/owner-session.js.map +1 -0
  309. package/dist/admin/accounts/page.js +11 -0
  310. package/dist/admin/accounts/page.js.map +1 -0
  311. package/dist/admin/accounts/relative-time.js +28 -0
  312. package/dist/admin/accounts/relative-time.js.map +1 -0
  313. package/dist/admin/accounts/rows.module.css +84 -0
  314. package/dist/admin/accounts/top-accounts.js +56 -0
  315. package/dist/admin/accounts/top-accounts.js.map +1 -0
  316. package/dist/admin/accounts/use-account-actions.js +42 -0
  317. package/dist/admin/accounts/use-account-actions.js.map +1 -0
  318. package/dist/admin/accounts/use-account-activity.js +37 -0
  319. package/dist/admin/accounts/use-account-activity.js.map +1 -0
  320. package/dist/admin/admins/access-dialog.js +130 -0
  321. package/dist/admin/admins/access-dialog.js.map +1 -0
  322. package/dist/admin/admins/admin-row.js +74 -0
  323. package/dist/admin/admins/admin-row.js.map +1 -0
  324. package/dist/admin/admins/admins-activity.js +28 -0
  325. package/dist/admin/admins/admins-activity.js.map +1 -0
  326. package/dist/admin/admins/admins-analytics.js +116 -0
  327. package/dist/admin/admins/admins-analytics.js.map +1 -0
  328. package/dist/admin/admins/admins-kpis.js +77 -0
  329. package/dist/admin/admins/admins-kpis.js.map +1 -0
  330. package/dist/admin/admins/admins-table.js +75 -0
  331. package/dist/admin/admins/admins-table.js.map +1 -0
  332. package/dist/admin/admins/admins-workspace.js +109 -0
  333. package/dist/admin/admins/admins-workspace.js.map +1 -0
  334. package/dist/admin/admins/admins.module.css +191 -0
  335. package/dist/admin/admins/invite-dialog.js +134 -0
  336. package/dist/admin/admins/invite-dialog.js.map +1 -0
  337. package/dist/admin/admins/page.js +11 -0
  338. package/dist/admin/admins/page.js.map +1 -0
  339. package/dist/admin/admins/recent-activity.js +38 -0
  340. package/dist/admin/admins/recent-activity.js.map +1 -0
  341. package/dist/admin/admins/recent-activity.module.css +60 -0
  342. package/dist/admin/admins/role-choices.js +27 -0
  343. package/dist/admin/admins/role-choices.js.map +1 -0
  344. package/dist/admin/admins/secret-field.js +60 -0
  345. package/dist/admin/admins/secret-field.js.map +1 -0
  346. package/dist/admin/admins/temp-password-dialog.js +39 -0
  347. package/dist/admin/admins/temp-password-dialog.js.map +1 -0
  348. package/dist/admin/admins/use-admin-actions.js +57 -0
  349. package/dist/admin/admins/use-admin-actions.js.map +1 -0
  350. package/dist/admin/audit/action-meta.js +26 -0
  351. package/dist/admin/audit/action-meta.js.map +1 -0
  352. package/dist/admin/audit/activity-chart.js +117 -0
  353. package/dist/admin/audit/activity-chart.js.map +1 -0
  354. package/dist/admin/audit/activity-chart.module.css +44 -0
  355. package/dist/admin/audit/audit-analytics.js +146 -0
  356. package/dist/admin/audit/audit-analytics.js.map +1 -0
  357. package/dist/admin/audit/audit-filters.js +78 -0
  358. package/dist/admin/audit/audit-filters.js.map +1 -0
  359. package/dist/admin/audit/audit-log.js +132 -0
  360. package/dist/admin/audit/audit-log.js.map +1 -0
  361. package/dist/admin/audit/audit-workspace.js +84 -0
  362. package/dist/admin/audit/audit-workspace.js.map +1 -0
  363. package/dist/admin/audit/audit.module.css +135 -0
  364. package/dist/admin/audit/bar-list.js +27 -0
  365. package/dist/admin/audit/bar-list.js.map +1 -0
  366. package/dist/admin/audit/empty-block.js +13 -0
  367. package/dist/admin/audit/empty-block.js.map +1 -0
  368. package/dist/admin/audit/format.js +22 -0
  369. package/dist/admin/audit/format.js.map +1 -0
  370. package/dist/admin/audit/kpi-brand.module.css +7 -0
  371. package/dist/admin/audit/load-failed.js +20 -0
  372. package/dist/admin/audit/load-failed.js.map +1 -0
  373. package/dist/admin/audit/metric-card.module.css +10 -0
  374. package/dist/admin/audit/page.js +11 -0
  375. package/dist/admin/audit/page.js.map +1 -0
  376. package/dist/admin/audit/page.module.css +12 -0
  377. package/dist/admin/audit/section-header.js +13 -0
  378. package/dist/admin/audit/section-header.js.map +1 -0
  379. package/dist/admin/audit/section-header.module.css +5 -0
  380. package/dist/admin/audit/status-fill.js +14 -0
  381. package/dist/admin/audit/status-fill.js.map +1 -0
  382. package/dist/admin/audit/status-pill.js +52 -0
  383. package/dist/admin/audit/status-pill.js.map +1 -0
  384. package/dist/admin/audit/status-pill.module.css +58 -0
  385. package/dist/admin/audit/tinted.js +17 -0
  386. package/dist/admin/audit/tinted.js.map +1 -0
  387. package/dist/admin/audit/use-range.js +16 -0
  388. package/dist/admin/audit/use-range.js.map +1 -0
  389. package/dist/admin/audit/when.js +14 -0
  390. package/dist/admin/audit/when.js.map +1 -0
  391. package/dist/admin/cash/page.js +184 -0
  392. package/dist/admin/cash/page.js.map +1 -0
  393. package/dist/admin/change-password/page.js +164 -0
  394. package/dist/admin/change-password/page.js.map +1 -0
  395. package/dist/admin/commerce/commerce-console.js +106 -0
  396. package/dist/admin/commerce/commerce-console.js.map +1 -0
  397. package/dist/admin/commerce/commerce-overview.js +102 -0
  398. package/dist/admin/commerce/commerce-overview.js.map +1 -0
  399. package/dist/admin/commerce/console.module.css +63 -0
  400. package/dist/admin/commerce/merchant-meta.js +40 -0
  401. package/dist/admin/commerce/merchant-meta.js.map +1 -0
  402. package/dist/admin/commerce/merchant-picker.js +114 -0
  403. package/dist/admin/commerce/merchant-picker.js.map +1 -0
  404. package/dist/admin/commerce/merchant-view.js +113 -0
  405. package/dist/admin/commerce/merchant-view.js.map +1 -0
  406. package/dist/admin/commerce/overview-kpis.js +100 -0
  407. package/dist/admin/commerce/overview-kpis.js.map +1 -0
  408. package/dist/admin/commerce/overview-services.js +40 -0
  409. package/dist/admin/commerce/overview-services.js.map +1 -0
  410. package/dist/admin/commerce/overview-top-merchants.js +51 -0
  411. package/dist/admin/commerce/overview-top-merchants.js.map +1 -0
  412. package/dist/admin/commerce/overview.module.css +145 -0
  413. package/dist/admin/commerce/page.js +11 -0
  414. package/dist/admin/commerce/page.js.map +1 -0
  415. package/dist/admin/commerce/picker.module.css +98 -0
  416. package/dist/admin/feedback/answer-case-button.js +30 -0
  417. package/dist/admin/feedback/answer-case-button.js.map +1 -0
  418. package/dist/admin/feedback/answers-view.js +87 -0
  419. package/dist/admin/feedback/answers-view.js.map +1 -0
  420. package/dist/admin/feedback/category-label.js +12 -0
  421. package/dist/admin/feedback/category-label.js.map +1 -0
  422. package/dist/admin/feedback/comment-stream.js +62 -0
  423. package/dist/admin/feedback/comment-stream.js.map +1 -0
  424. package/dist/admin/feedback/feedback-access.js +21 -0
  425. package/dist/admin/feedback/feedback-access.js.map +1 -0
  426. package/dist/admin/feedback/feedback-detail-drawer.js +95 -0
  427. package/dist/admin/feedback/feedback-detail-drawer.js.map +1 -0
  428. package/dist/admin/feedback/feedback-drawer-footer.js +60 -0
  429. package/dist/admin/feedback/feedback-drawer-footer.js.map +1 -0
  430. package/dist/admin/feedback/feedback-drawer.module.css +162 -0
  431. package/dist/admin/feedback/feedback-facts.js +84 -0
  432. package/dist/admin/feedback/feedback-facts.js.map +1 -0
  433. package/dist/admin/feedback/feedback-kpis.js +50 -0
  434. package/dist/admin/feedback/feedback-kpis.js.map +1 -0
  435. package/dist/admin/feedback/feedback-options.js +49 -0
  436. package/dist/admin/feedback/feedback-options.js.map +1 -0
  437. package/dist/admin/feedback/feedback-sentiment.js +45 -0
  438. package/dist/admin/feedback/feedback-sentiment.js.map +1 -0
  439. package/dist/admin/feedback/feedback.module.css +136 -0
  440. package/dist/admin/feedback/new-prompt-button.js +13 -0
  441. package/dist/admin/feedback/new-prompt-button.js.map +1 -0
  442. package/dist/admin/feedback/page.js +57 -0
  443. package/dist/admin/feedback/page.js.map +1 -0
  444. package/dist/admin/feedback/prompt-audience-fields.js +63 -0
  445. package/dist/admin/feedback/prompt-audience-fields.js.map +1 -0
  446. package/dist/admin/feedback/prompt-builder.js +85 -0
  447. package/dist/admin/feedback/prompt-builder.js.map +1 -0
  448. package/dist/admin/feedback/prompt-builder.module.css +134 -0
  449. package/dist/admin/feedback/prompt-delivery-fields.js +134 -0
  450. package/dist/admin/feedback/prompt-delivery-fields.js.map +1 -0
  451. package/dist/admin/feedback/prompt-dialog.js +88 -0
  452. package/dist/admin/feedback/prompt-dialog.js.map +1 -0
  453. package/dist/admin/feedback/prompt-dialog.module.css +199 -0
  454. package/dist/admin/feedback/prompt-draft.js +71 -0
  455. package/dist/admin/feedback/prompt-draft.js.map +1 -0
  456. package/dist/admin/feedback/prompt-insights.js +120 -0
  457. package/dist/admin/feedback/prompt-insights.js.map +1 -0
  458. package/dist/admin/feedback/prompt-operations.js +89 -0
  459. package/dist/admin/feedback/prompt-operations.js.map +1 -0
  460. package/dist/admin/feedback/prompt-operations.module.css +128 -0
  461. package/dist/admin/feedback/prompt-preview.js +71 -0
  462. package/dist/admin/feedback/prompt-preview.js.map +1 -0
  463. package/dist/admin/feedback/prompt-preview.module.css +135 -0
  464. package/dist/admin/feedback/prompt-question-fields.js +83 -0
  465. package/dist/admin/feedback/prompt-question-fields.js.map +1 -0
  466. package/dist/admin/feedback/prompt-response-fields.js +103 -0
  467. package/dist/admin/feedback/prompt-response-fields.js.map +1 -0
  468. package/dist/admin/feedback/prompt-review.js +80 -0
  469. package/dist/admin/feedback/prompt-review.js.map +1 -0
  470. package/dist/admin/feedback/prompt-schedule-field.js +67 -0
  471. package/dist/admin/feedback/prompt-schedule-field.js.map +1 -0
  472. package/dist/admin/feedback/prompt-stepper.js +33 -0
  473. package/dist/admin/feedback/prompt-stepper.js.map +1 -0
  474. package/dist/admin/feedback/prompt-summary.module.css +39 -0
  475. package/dist/admin/feedback/prompt-validation.js +48 -0
  476. package/dist/admin/feedback/prompt-validation.js.map +1 -0
  477. package/dist/admin/feedback/prompt-wizard.js +147 -0
  478. package/dist/admin/feedback/prompt-wizard.js.map +1 -0
  479. package/dist/admin/feedback/prompts-table.js +85 -0
  480. package/dist/admin/feedback/prompts-table.js.map +1 -0
  481. package/dist/admin/feedback/prompts-view.js +132 -0
  482. package/dist/admin/feedback/prompts-view.js.map +1 -0
  483. package/dist/admin/feedback/response-card.js +78 -0
  484. package/dist/admin/feedback/response-card.js.map +1 -0
  485. package/dist/admin/feedback/responses-table.js +132 -0
  486. package/dist/admin/feedback/responses-table.js.map +1 -0
  487. package/dist/admin/feedback/responses-view.js +142 -0
  488. package/dist/admin/feedback/responses-view.js.map +1 -0
  489. package/dist/admin/feedback/responses.module.css +147 -0
  490. package/dist/admin/feedback/sentiment-overview.js +103 -0
  491. package/dist/admin/feedback/sentiment-overview.js.map +1 -0
  492. package/dist/admin/feedback/sentiment.module.css +150 -0
  493. package/dist/admin/feedback/use-admin-feedback.js +15 -0
  494. package/dist/admin/feedback/use-admin-feedback.js.map +1 -0
  495. package/dist/admin/feedback/use-admin-prompts.js +15 -0
  496. package/dist/admin/feedback/use-admin-prompts.js.map +1 -0
  497. package/dist/admin/feedback/use-admin-signals.js +22 -0
  498. package/dist/admin/feedback/use-admin-signals.js.map +1 -0
  499. package/dist/admin/feedback/use-open-case.js +53 -0
  500. package/dist/admin/feedback/use-open-case.js.map +1 -0
  501. package/dist/admin/feedback/use-prompt-save.js +59 -0
  502. package/dist/admin/feedback/use-prompt-save.js.map +1 -0
  503. package/dist/admin/feedback/use-steps.js +45 -0
  504. package/dist/admin/feedback/use-steps.js.map +1 -0
  505. package/dist/admin/feedback-signals/_components/comments-panel.js +72 -0
  506. package/dist/admin/feedback-signals/_components/comments-panel.js.map +1 -0
  507. package/dist/admin/feedback-signals/_components/health-panel.js +46 -0
  508. package/dist/admin/feedback-signals/_components/health-panel.js.map +1 -0
  509. package/dist/admin/feedback-signals/_components/messages-panel.js +96 -0
  510. package/dist/admin/feedback-signals/_components/messages-panel.js.map +1 -0
  511. package/dist/admin/feedback-signals/_components/movement.js +27 -0
  512. package/dist/admin/feedback-signals/_components/movement.js.map +1 -0
  513. package/dist/admin/feedback-signals/_components/pick-up.js +67 -0
  514. package/dist/admin/feedback-signals/_components/pick-up.js.map +1 -0
  515. package/dist/admin/feedback-signals/_components/scores-panel.js +68 -0
  516. package/dist/admin/feedback-signals/_components/scores-panel.js.map +1 -0
  517. package/dist/admin/feedback-signals/_components/signals-workspace.js +84 -0
  518. package/dist/admin/feedback-signals/_components/signals-workspace.js.map +1 -0
  519. package/dist/admin/feedback-signals/_components/use-feedback-signals.js +51 -0
  520. package/dist/admin/feedback-signals/_components/use-feedback-signals.js.map +1 -0
  521. package/dist/admin/feedback-signals/page.js +11 -0
  522. package/dist/admin/feedback-signals/page.js.map +1 -0
  523. package/dist/admin/growth-chart-model.js +75 -0
  524. package/dist/admin/growth-chart-model.js.map +1 -0
  525. package/dist/admin/growth-chart-parts.js +186 -0
  526. package/dist/admin/growth-chart-parts.js.map +1 -0
  527. package/dist/admin/growth-chart.js +177 -0
  528. package/dist/admin/growth-chart.js.map +1 -0
  529. package/dist/admin/hooks.js +257 -0
  530. package/dist/admin/hooks.js.map +1 -0
  531. package/dist/admin/layout.js +153 -0
  532. package/dist/admin/layout.js.map +1 -0
  533. package/dist/admin/login/page.js +215 -0
  534. package/dist/admin/login/page.js.map +1 -0
  535. package/dist/admin/newsletters/[id]/page.js +13 -0
  536. package/dist/admin/newsletters/[id]/page.js.map +1 -0
  537. package/dist/admin/newsletters/audience/[contactId]/page.js +12 -0
  538. package/dist/admin/newsletters/audience/[contactId]/page.js.map +1 -0
  539. package/dist/admin/newsletters/audience/audience-list.js +163 -0
  540. package/dist/admin/newsletters/audience/audience-list.js.map +1 -0
  541. package/dist/admin/newsletters/audience/contact-deliveries.js +90 -0
  542. package/dist/admin/newsletters/audience/contact-deliveries.js.map +1 -0
  543. package/dist/admin/newsletters/audience/contact-row.js +63 -0
  544. package/dist/admin/newsletters/audience/contact-row.js.map +1 -0
  545. package/dist/admin/newsletters/audience/contact-screen.js +59 -0
  546. package/dist/admin/newsletters/audience/contact-screen.js.map +1 -0
  547. package/dist/admin/newsletters/audience/contact-summary.js +70 -0
  548. package/dist/admin/newsletters/audience/contact-summary.js.map +1 -0
  549. package/dist/admin/newsletters/audience/contacts.js +99 -0
  550. package/dist/admin/newsletters/audience/contacts.js.map +1 -0
  551. package/dist/admin/newsletters/audience/page.js +11 -0
  552. package/dist/admin/newsletters/audience/page.js.map +1 -0
  553. package/dist/admin/newsletters/audience/status-change.js +53 -0
  554. package/dist/admin/newsletters/audience/status-change.js.map +1 -0
  555. package/dist/admin/newsletters/audience/status-dialog.js +103 -0
  556. package/dist/admin/newsletters/audience/status-dialog.js.map +1 -0
  557. package/dist/admin/newsletters/audience/use-contacts.js +84 -0
  558. package/dist/admin/newsletters/audience/use-contacts.js.map +1 -0
  559. package/dist/admin/newsletters/autosave.js +58 -0
  560. package/dist/admin/newsletters/autosave.js.map +1 -0
  561. package/dist/admin/newsletters/brand-image-field.js +38 -0
  562. package/dist/admin/newsletters/brand-image-field.js.map +1 -0
  563. package/dist/admin/newsletters/composer.js +122 -0
  564. package/dist/admin/newsletters/composer.js.map +1 -0
  565. package/dist/admin/newsletters/content.js +59 -0
  566. package/dist/admin/newsletters/content.js.map +1 -0
  567. package/dist/admin/newsletters/deliveries.js +111 -0
  568. package/dist/admin/newsletters/deliveries.js.map +1 -0
  569. package/dist/admin/newsletters/digest-items.js +91 -0
  570. package/dist/admin/newsletters/digest-items.js.map +1 -0
  571. package/dist/admin/newsletters/editor-fields.js +135 -0
  572. package/dist/admin/newsletters/editor-fields.js.map +1 -0
  573. package/dist/admin/newsletters/format-date.js +11 -0
  574. package/dist/admin/newsletters/format-date.js.map +1 -0
  575. package/dist/admin/newsletters/image-field.js +55 -0
  576. package/dist/admin/newsletters/image-field.js.map +1 -0
  577. package/dist/admin/newsletters/image-picker.js +86 -0
  578. package/dist/admin/newsletters/image-picker.js.map +1 -0
  579. package/dist/admin/newsletters/image-upload.js +37 -0
  580. package/dist/admin/newsletters/image-upload.js.map +1 -0
  581. package/dist/admin/newsletters/labels.js +32 -0
  582. package/dist/admin/newsletters/labels.js.map +1 -0
  583. package/dist/admin/newsletters/layout-picker.js +58 -0
  584. package/dist/admin/newsletters/layout-picker.js.map +1 -0
  585. package/dist/admin/newsletters/layout-schematic.js +46 -0
  586. package/dist/admin/newsletters/layout-schematic.js.map +1 -0
  587. package/dist/admin/newsletters/markdown-field.js +98 -0
  588. package/dist/admin/newsletters/markdown-field.js.map +1 -0
  589. package/dist/admin/newsletters/markdown-insert.js +45 -0
  590. package/dist/admin/newsletters/markdown-insert.js.map +1 -0
  591. package/dist/admin/newsletters/newsletter-row.js +69 -0
  592. package/dist/admin/newsletters/newsletter-row.js.map +1 -0
  593. package/dist/admin/newsletters/newsletter-screen.js +25 -0
  594. package/dist/admin/newsletters/newsletter-screen.js.map +1 -0
  595. package/dist/admin/newsletters/newsletters-list.js +140 -0
  596. package/dist/admin/newsletters/newsletters-list.js.map +1 -0
  597. package/dist/admin/newsletters/not-available.js +7 -0
  598. package/dist/admin/newsletters/not-available.js.map +1 -0
  599. package/dist/admin/newsletters/page.js +11 -0
  600. package/dist/admin/newsletters/page.js.map +1 -0
  601. package/dist/admin/newsletters/preview-pane.js +68 -0
  602. package/dist/admin/newsletters/preview-pane.js.map +1 -0
  603. package/dist/admin/newsletters/problems.js +73 -0
  604. package/dist/admin/newsletters/problems.js.map +1 -0
  605. package/dist/admin/newsletters/recipient-row.js +73 -0
  606. package/dist/admin/newsletters/recipient-row.js.map +1 -0
  607. package/dist/admin/newsletters/recipients-empty.js +21 -0
  608. package/dist/admin/newsletters/recipients-empty.js.map +1 -0
  609. package/dist/admin/newsletters/recipients-selection.js +32 -0
  610. package/dist/admin/newsletters/recipients-selection.js.map +1 -0
  611. package/dist/admin/newsletters/recipients-tab.js +172 -0
  612. package/dist/admin/newsletters/recipients-tab.js.map +1 -0
  613. package/dist/admin/newsletters/record-header.js +28 -0
  614. package/dist/admin/newsletters/record-header.js.map +1 -0
  615. package/dist/admin/newsletters/retry-selection.js +45 -0
  616. package/dist/admin/newsletters/retry-selection.js.map +1 -0
  617. package/dist/admin/newsletters/review-dialog.js +95 -0
  618. package/dist/admin/newsletters/review-dialog.js.map +1 -0
  619. package/dist/admin/newsletters/save-file.js +12 -0
  620. package/dist/admin/newsletters/save-file.js.map +1 -0
  621. package/dist/admin/newsletters/save-indicator.js +28 -0
  622. package/dist/admin/newsletters/save-indicator.js.map +1 -0
  623. package/dist/admin/newsletters/section-tabs.js +26 -0
  624. package/dist/admin/newsletters/section-tabs.js.map +1 -0
  625. package/dist/admin/newsletters/sending.js +36 -0
  626. package/dist/admin/newsletters/sending.js.map +1 -0
  627. package/dist/admin/newsletters/sent-summary.js +77 -0
  628. package/dist/admin/newsletters/sent-summary.js.map +1 -0
  629. package/dist/admin/newsletters/sent-view.js +60 -0
  630. package/dist/admin/newsletters/sent-view.js.map +1 -0
  631. package/dist/admin/newsletters/signature-editor-fields.js +75 -0
  632. package/dist/admin/newsletters/signature-editor-fields.js.map +1 -0
  633. package/dist/admin/newsletters/signature-editor.js +63 -0
  634. package/dist/admin/newsletters/signature-editor.js.map +1 -0
  635. package/dist/admin/newsletters/signature-field.js +44 -0
  636. package/dist/admin/newsletters/signature-field.js.map +1 -0
  637. package/dist/admin/newsletters/signature-preview.js +27 -0
  638. package/dist/admin/newsletters/signature-preview.js.map +1 -0
  639. package/dist/admin/newsletters/signature-row.js +54 -0
  640. package/dist/admin/newsletters/signature-row.js.map +1 -0
  641. package/dist/admin/newsletters/signature-values.js +75 -0
  642. package/dist/admin/newsletters/signature-values.js.map +1 -0
  643. package/dist/admin/newsletters/signatures-dialog.js +98 -0
  644. package/dist/admin/newsletters/signatures-dialog.js.map +1 -0
  645. package/dist/admin/newsletters/signatures.js +34 -0
  646. package/dist/admin/newsletters/signatures.js.map +1 -0
  647. package/dist/admin/newsletters/use-autosave.js +147 -0
  648. package/dist/admin/newsletters/use-autosave.js.map +1 -0
  649. package/dist/admin/newsletters/use-deliveries.js +90 -0
  650. package/dist/admin/newsletters/use-deliveries.js.map +1 -0
  651. package/dist/admin/newsletters/use-newsletter-actions.js +68 -0
  652. package/dist/admin/newsletters/use-newsletter-actions.js.map +1 -0
  653. package/dist/admin/newsletters/use-newsletters.js +83 -0
  654. package/dist/admin/newsletters/use-newsletters.js.map +1 -0
  655. package/dist/admin/newsletters/use-send-actions.js +62 -0
  656. package/dist/admin/newsletters/use-send-actions.js.map +1 -0
  657. package/dist/admin/newsletters/use-signature-preview.js +29 -0
  658. package/dist/admin/newsletters/use-signature-preview.js.map +1 -0
  659. package/dist/admin/newsletters/use-signatures.js +55 -0
  660. package/dist/admin/newsletters/use-signatures.js.map +1 -0
  661. package/dist/admin/page.js +179 -0
  662. package/dist/admin/page.js.map +1 -0
  663. package/dist/admin/payout-providers/add-flow.js +84 -0
  664. package/dist/admin/payout-providers/add-flow.js.map +1 -0
  665. package/dist/admin/payout-providers/attention-list.js +135 -0
  666. package/dist/admin/payout-providers/attention-list.js.map +1 -0
  667. package/dist/admin/payout-providers/connect-step.js +180 -0
  668. package/dist/admin/payout-providers/connect-step.js.map +1 -0
  669. package/dist/admin/payout-providers/editor/auth-section.js +166 -0
  670. package/dist/admin/payout-providers/editor/auth-section.js.map +1 -0
  671. package/dist/admin/payout-providers/editor/call-editor.js +107 -0
  672. package/dist/admin/payout-providers/editor/call-editor.js.map +1 -0
  673. package/dist/admin/payout-providers/editor/condition-editor.js +109 -0
  674. package/dist/admin/payout-providers/editor/condition-editor.js.map +1 -0
  675. package/dist/admin/payout-providers/editor/editor.module.css +123 -0
  676. package/dist/admin/payout-providers/editor/fields.js +144 -0
  677. package/dist/admin/payout-providers/editor/fields.js.map +1 -0
  678. package/dist/admin/payout-providers/editor/flow-editor.js +160 -0
  679. package/dist/admin/payout-providers/editor/flow-editor.js.map +1 -0
  680. package/dist/admin/payout-providers/editor/flow-parts.js +69 -0
  681. package/dist/admin/payout-providers/editor/flow-parts.js.map +1 -0
  682. package/dist/admin/payout-providers/editor/flow-sections.js +147 -0
  683. package/dist/admin/payout-providers/editor/flow-sections.js.map +1 -0
  684. package/dist/admin/payout-providers/editor/rules-editor.js +151 -0
  685. package/dist/admin/payout-providers/editor/rules-editor.js.map +1 -0
  686. package/dist/admin/payout-providers/editor/step-editor.js +157 -0
  687. package/dist/admin/payout-providers/editor/step-editor.js.map +1 -0
  688. package/dist/admin/payout-providers/editor/transfer-section.js +103 -0
  689. package/dist/admin/payout-providers/editor/transfer-section.js.map +1 -0
  690. package/dist/admin/payout-providers/page.js +94 -0
  691. package/dist/admin/payout-providers/page.js.map +1 -0
  692. package/dist/admin/payout-providers/payout-providers.module.css +179 -0
  693. package/dist/admin/payout-providers/pin-step.js +84 -0
  694. package/dist/admin/payout-providers/pin-step.js.map +1 -0
  695. package/dist/admin/payout-providers/provider-detail.js +148 -0
  696. package/dist/admin/payout-providers/provider-detail.js.map +1 -0
  697. package/dist/admin/payout-providers/provider-list.js +37 -0
  698. package/dist/admin/payout-providers/provider-list.js.map +1 -0
  699. package/dist/admin/payout-providers/sections.module.css +151 -0
  700. package/dist/admin/payout-providers/shared.js +34 -0
  701. package/dist/admin/payout-providers/shared.js.map +1 -0
  702. package/dist/admin/payout-providers/status.js +17 -0
  703. package/dist/admin/payout-providers/status.js.map +1 -0
  704. package/dist/admin/payout-providers/step.js +31 -0
  705. package/dist/admin/payout-providers/step.js.map +1 -0
  706. package/dist/admin/payout-providers/test-transfer.js +161 -0
  707. package/dist/admin/payout-providers/test-transfer.js.map +1 -0
  708. package/dist/admin/payout-providers/use-connect.js +108 -0
  709. package/dist/admin/payout-providers/use-connect.js.map +1 -0
  710. package/dist/admin/payout-providers/verify-step.js +57 -0
  711. package/dist/admin/payout-providers/verify-step.js.map +1 -0
  712. package/dist/admin/payout-tiers/_tier-dialog.js +205 -0
  713. package/dist/admin/payout-tiers/_tier-dialog.js.map +1 -0
  714. package/dist/admin/payout-tiers/page.js +11 -0
  715. package/dist/admin/payout-tiers/page.js.map +1 -0
  716. package/dist/admin/payout-tiers/tier-preview-result.js +58 -0
  717. package/dist/admin/payout-tiers/tier-preview-result.js.map +1 -0
  718. package/dist/admin/payout-tiers/tier-preview-tab.js +67 -0
  719. package/dist/admin/payout-tiers/tier-preview-tab.js.map +1 -0
  720. package/dist/admin/payout-tiers/tier-preview.js +41 -0
  721. package/dist/admin/payout-tiers/tier-preview.js.map +1 -0
  722. package/dist/admin/payout-tiers/tiers-table.js +151 -0
  723. package/dist/admin/payout-tiers/tiers-table.js.map +1 -0
  724. package/dist/admin/payout-tiers/tiers-workspace.js +56 -0
  725. package/dist/admin/payout-tiers/tiers-workspace.js.map +1 -0
  726. package/dist/admin/payout-tiers/use-tiers.js +14 -0
  727. package/dist/admin/payout-tiers/use-tiers.js.map +1 -0
  728. package/dist/admin/pos/page.js +11 -0
  729. package/dist/admin/pos/page.js.map +1 -0
  730. package/dist/admin/pos/pos-workspace.js +66 -0
  731. package/dist/admin/pos/pos-workspace.js.map +1 -0
  732. package/dist/admin/pos/shifts-tab.js +111 -0
  733. package/dist/admin/pos/shifts-tab.js.map +1 -0
  734. package/dist/admin/pos/terminal-row.js +94 -0
  735. package/dist/admin/pos/terminal-row.js.map +1 -0
  736. package/dist/admin/pos/terminals/[id]/page.js +12 -0
  737. package/dist/admin/pos/terminals/[id]/page.js.map +1 -0
  738. package/dist/admin/pos/terminals/[id]/terminal-page.js +119 -0
  739. package/dist/admin/pos/terminals/[id]/terminal-page.js.map +1 -0
  740. package/dist/admin/pos/terminals/[id]/terminal-panels.js +58 -0
  741. package/dist/admin/pos/terminals/[id]/terminal-panels.js.map +1 -0
  742. package/dist/admin/pos/terminals/[id]/terminal-people.js +63 -0
  743. package/dist/admin/pos/terminals/[id]/terminal-people.js.map +1 -0
  744. package/dist/admin/pos/terminals/[id]/terminal.module.css +103 -0
  745. package/dist/admin/pos/terminals-tab.js +147 -0
  746. package/dist/admin/pos/terminals-tab.js.map +1 -0
  747. package/dist/admin/pricing/approvals-tab.js +47 -0
  748. package/dist/admin/pricing/approvals-tab.js.map +1 -0
  749. package/dist/admin/pricing/cancel-plan-dialog.js +85 -0
  750. package/dist/admin/pricing/cancel-plan-dialog.js.map +1 -0
  751. package/dist/admin/pricing/change-list.js +9 -0
  752. package/dist/admin/pricing/change-list.js.map +1 -0
  753. package/dist/admin/pricing/change-plan-dialog.js +84 -0
  754. package/dist/admin/pricing/change-plan-dialog.js.map +1 -0
  755. package/dist/admin/pricing/display-preview.js +51 -0
  756. package/dist/admin/pricing/display-preview.js.map +1 -0
  757. package/dist/admin/pricing/display-tab.js +76 -0
  758. package/dist/admin/pricing/display-tab.js.map +1 -0
  759. package/dist/admin/pricing/features-tab.js +48 -0
  760. package/dist/admin/pricing/features-tab.js.map +1 -0
  761. package/dist/admin/pricing/page.js +30 -0
  762. package/dist/admin/pricing/page.js.map +1 -0
  763. package/dist/admin/pricing/plan-approval.js +97 -0
  764. package/dist/admin/pricing/plan-approval.js.map +1 -0
  765. package/dist/admin/pricing/plan-card-product.js +63 -0
  766. package/dist/admin/pricing/plan-card-product.js.map +1 -0
  767. package/dist/admin/pricing/plan-changes.js +54 -0
  768. package/dist/admin/pricing/plan-changes.js.map +1 -0
  769. package/dist/admin/pricing/plan-drawer.js +97 -0
  770. package/dist/admin/pricing/plan-drawer.js.map +1 -0
  771. package/dist/admin/pricing/plan-form-basics.js +59 -0
  772. package/dist/admin/pricing/plan-form-basics.js.map +1 -0
  773. package/dist/admin/pricing/plan-form-dialog.js +103 -0
  774. package/dist/admin/pricing/plan-form-dialog.js.map +1 -0
  775. package/dist/admin/pricing/plan-form-features.js +59 -0
  776. package/dist/admin/pricing/plan-form-features.js.map +1 -0
  777. package/dist/admin/pricing/plan-form-review.js +67 -0
  778. package/dist/admin/pricing/plan-form-review.js.map +1 -0
  779. package/dist/admin/pricing/plan-model.js +91 -0
  780. package/dist/admin/pricing/plan-model.js.map +1 -0
  781. package/dist/admin/pricing/plan-row.js +59 -0
  782. package/dist/admin/pricing/plan-row.js.map +1 -0
  783. package/dist/admin/pricing/plans-tab.js +84 -0
  784. package/dist/admin/pricing/plans-tab.js.map +1 -0
  785. package/dist/admin/pricing/price-form-dialog.js +133 -0
  786. package/dist/admin/pricing/price-form-dialog.js.map +1 -0
  787. package/dist/admin/pricing/price-history.js +25 -0
  788. package/dist/admin/pricing/price-history.js.map +1 -0
  789. package/dist/admin/pricing/price-model.js +47 -0
  790. package/dist/admin/pricing/price-model.js.map +1 -0
  791. package/dist/admin/pricing/price-review.js +104 -0
  792. package/dist/admin/pricing/price-review.js.map +1 -0
  793. package/dist/admin/pricing/price-tab.js +101 -0
  794. package/dist/admin/pricing/price-tab.js.map +1 -0
  795. package/dist/admin/pricing/pricing-tabs.js +28 -0
  796. package/dist/admin/pricing/pricing-tabs.js.map +1 -0
  797. package/dist/admin/pricing/pricing.module.css +188 -0
  798. package/dist/admin/pricing/subscription-events.js +33 -0
  799. package/dist/admin/pricing/subscription-events.js.map +1 -0
  800. package/dist/admin/pricing/subscription-history.js +103 -0
  801. package/dist/admin/pricing/subscription-history.js.map +1 -0
  802. package/dist/admin/pricing/subscription-plan.js +51 -0
  803. package/dist/admin/pricing/subscription-plan.js.map +1 -0
  804. package/dist/admin/pricing/subscription-row.js +70 -0
  805. package/dist/admin/pricing/subscription-row.js.map +1 -0
  806. package/dist/admin/pricing/subscriptions-tab.js +141 -0
  807. package/dist/admin/pricing/subscriptions-tab.js.map +1 -0
  808. package/dist/admin/pricing/use-plans.js +49 -0
  809. package/dist/admin/pricing/use-plans.js.map +1 -0
  810. package/dist/admin/pricing/use-pricing.js +38 -0
  811. package/dist/admin/pricing/use-pricing.js.map +1 -0
  812. package/dist/admin/pricing/use-subscriptions.js +21 -0
  813. package/dist/admin/pricing/use-subscriptions.js.map +1 -0
  814. package/dist/admin/product-insights/all-merchants-view.js +146 -0
  815. package/dist/admin/product-insights/all-merchants-view.js.map +1 -0
  816. package/dist/admin/product-insights/page.js +11 -0
  817. package/dist/admin/product-insights/page.js.map +1 -0
  818. package/dist/admin/product-insights/product-insights-workspace.js +112 -0
  819. package/dist/admin/product-insights/product-insights-workspace.js.map +1 -0
  820. package/dist/admin/product-insights/product-insights.module.css +114 -0
  821. package/dist/admin/product-insights/report-copy.js +69 -0
  822. package/dist/admin/product-insights/report-copy.js.map +1 -0
  823. package/dist/admin/product-insights/report-empty.js +14 -0
  824. package/dist/admin/product-insights/report-empty.js.map +1 -0
  825. package/dist/admin/product-insights/report-kpis.js +54 -0
  826. package/dist/admin/product-insights/report-kpis.js.map +1 -0
  827. package/dist/admin/product-insights/report-panel.js +129 -0
  828. package/dist/admin/product-insights/report-panel.js.map +1 -0
  829. package/dist/admin/product-insights/report-ranking.js +44 -0
  830. package/dist/admin/product-insights/report-ranking.js.map +1 -0
  831. package/dist/admin/product-insights/use-insight-report.js +59 -0
  832. package/dist/admin/product-insights/use-insight-report.js.map +1 -0
  833. package/dist/admin/revenue/channel-panel.js +49 -0
  834. package/dist/admin/revenue/channel-panel.js.map +1 -0
  835. package/dist/admin/revenue/channel-rows.js +17 -0
  836. package/dist/admin/revenue/channel-rows.js.map +1 -0
  837. package/dist/admin/revenue/cohort-panel.js +74 -0
  838. package/dist/admin/revenue/cohort-panel.js.map +1 -0
  839. package/dist/admin/revenue/download-button.js +40 -0
  840. package/dist/admin/revenue/download-button.js.map +1 -0
  841. package/dist/admin/revenue/figure-list.js +19 -0
  842. package/dist/admin/revenue/figure-list.js.map +1 -0
  843. package/dist/admin/revenue/health-panel.js +59 -0
  844. package/dist/admin/revenue/health-panel.js.map +1 -0
  845. package/dist/admin/revenue/ledger-model.js +84 -0
  846. package/dist/admin/revenue/ledger-model.js.map +1 -0
  847. package/dist/admin/revenue/ledger.module.css +101 -0
  848. package/dist/admin/revenue/merchant-payments-view.js +231 -0
  849. package/dist/admin/revenue/merchant-payments-view.js.map +1 -0
  850. package/dist/admin/revenue/method-cards.js +32 -0
  851. package/dist/admin/revenue/method-cards.js.map +1 -0
  852. package/dist/admin/revenue/page.js +11 -0
  853. package/dist/admin/revenue/page.js.map +1 -0
  854. package/dist/admin/revenue/plan-mix-panel.js +62 -0
  855. package/dist/admin/revenue/plan-mix-panel.js.map +1 -0
  856. package/dist/admin/revenue/platform-fees.js +9 -0
  857. package/dist/admin/revenue/platform-fees.js.map +1 -0
  858. package/dist/admin/revenue/quality-panel.js +71 -0
  859. package/dist/admin/revenue/quality-panel.js.map +1 -0
  860. package/dist/admin/revenue/revenue-kpis.js +73 -0
  861. package/dist/admin/revenue/revenue-kpis.js.map +1 -0
  862. package/dist/admin/revenue/revenue-overview.js +132 -0
  863. package/dist/admin/revenue/revenue-overview.js.map +1 -0
  864. package/dist/admin/revenue/revenue-retention.js +31 -0
  865. package/dist/admin/revenue/revenue-retention.js.map +1 -0
  866. package/dist/admin/revenue/revenue-workspace.js +171 -0
  867. package/dist/admin/revenue/revenue-workspace.js.map +1 -0
  868. package/dist/admin/revenue/revenue.module.css +196 -0
  869. package/dist/admin/revenue/subscriptions-panel.js +58 -0
  870. package/dist/admin/revenue/subscriptions-panel.js.map +1 -0
  871. package/dist/admin/revenue/subscriptions-view.js +188 -0
  872. package/dist/admin/revenue/subscriptions-view.js.map +1 -0
  873. package/dist/admin/revenue/top-tenants-panel.js +96 -0
  874. package/dist/admin/revenue/top-tenants-panel.js.map +1 -0
  875. package/dist/admin/reviews/merchant-filter.js +122 -0
  876. package/dist/admin/reviews/merchant-filter.js.map +1 -0
  877. package/dist/admin/reviews/merchant-filter.module.css +113 -0
  878. package/dist/admin/reviews/page.js +124 -0
  879. package/dist/admin/reviews/page.js.map +1 -0
  880. package/dist/admin/reviews/review-row.js +44 -0
  881. package/dist/admin/reviews/review-row.js.map +1 -0
  882. package/dist/admin/reviews/reviews-kpis.js +55 -0
  883. package/dist/admin/reviews/reviews-kpis.js.map +1 -0
  884. package/dist/admin/reviews/reviews.module.css +68 -0
  885. package/dist/admin/reviews/use-admin-reviews.js +22 -0
  886. package/dist/admin/reviews/use-admin-reviews.js.map +1 -0
  887. package/dist/admin/reviews/use-merchant-search.js +32 -0
  888. package/dist/admin/reviews/use-merchant-search.js.map +1 -0
  889. package/dist/admin/roles/more-chip.js +48 -0
  890. package/dist/admin/roles/more-chip.js.map +1 -0
  891. package/dist/admin/roles/more-chip.module.css +70 -0
  892. package/dist/admin/roles/page.js +159 -0
  893. package/dist/admin/roles/page.js.map +1 -0
  894. package/dist/admin/roles/permission-picker.js +71 -0
  895. package/dist/admin/roles/permission-picker.js.map +1 -0
  896. package/dist/admin/roles/permission-picker.module.css +81 -0
  897. package/dist/admin/roles/permissions.js +66 -0
  898. package/dist/admin/roles/permissions.js.map +1 -0
  899. package/dist/admin/roles/role-dialog.js +162 -0
  900. package/dist/admin/roles/role-dialog.js.map +1 -0
  901. package/dist/admin/roles/role-row.js +51 -0
  902. package/dist/admin/roles/role-row.js.map +1 -0
  903. package/dist/admin/roles/roles-kpis.js +45 -0
  904. package/dist/admin/roles/roles-kpis.js.map +1 -0
  905. package/dist/admin/roles/roles.module.css +141 -0
  906. package/dist/admin/sales/activity-log-tab.js +154 -0
  907. package/dist/admin/sales/activity-log-tab.js.map +1 -0
  908. package/dist/admin/sales/bucket.js +29 -0
  909. package/dist/admin/sales/bucket.js.map +1 -0
  910. package/dist/admin/sales/conversion-panel.js +59 -0
  911. package/dist/admin/sales/conversion-panel.js.map +1 -0
  912. package/dist/admin/sales/growth-analysis.js +78 -0
  913. package/dist/admin/sales/growth-analysis.js.map +1 -0
  914. package/dist/admin/sales/leads-tab.js +134 -0
  915. package/dist/admin/sales/leads-tab.js.map +1 -0
  916. package/dist/admin/sales/overview-tab.js +92 -0
  917. package/dist/admin/sales/overview-tab.js.map +1 -0
  918. package/dist/admin/sales/page.js +11 -0
  919. package/dist/admin/sales/page.js.map +1 -0
  920. package/dist/admin/sales/pipeline/add-lead-dialog.js +143 -0
  921. package/dist/admin/sales/pipeline/add-lead-dialog.js.map +1 -0
  922. package/dist/admin/sales/pipeline/lead-card.js +44 -0
  923. package/dist/admin/sales/pipeline/lead-card.js.map +1 -0
  924. package/dist/admin/sales/pipeline/lead-drawer.js +139 -0
  925. package/dist/admin/sales/pipeline/lead-drawer.js.map +1 -0
  926. package/dist/admin/sales/pipeline/lead-timeline.js +34 -0
  927. package/dist/admin/sales/pipeline/lead-timeline.js.map +1 -0
  928. package/dist/admin/sales/pipeline/log-contact-dialog.js +126 -0
  929. package/dist/admin/sales/pipeline/log-contact-dialog.js.map +1 -0
  930. package/dist/admin/sales/pipeline/move-stage-dialog.js +119 -0
  931. package/dist/admin/sales/pipeline/move-stage-dialog.js.map +1 -0
  932. package/dist/admin/sales/pipeline/pipeline-board.js +77 -0
  933. package/dist/admin/sales/pipeline/pipeline-board.js.map +1 -0
  934. package/dist/admin/sales/pipeline/pipeline-filters.js +46 -0
  935. package/dist/admin/sales/pipeline/pipeline-filters.js.map +1 -0
  936. package/dist/admin/sales/pipeline/pipeline.module.css +141 -0
  937. package/dist/admin/sales/report-math.js +17 -0
  938. package/dist/admin/sales/report-math.js.map +1 -0
  939. package/dist/admin/sales/reports-tab.js +147 -0
  940. package/dist/admin/sales/reports-tab.js.map +1 -0
  941. package/dist/admin/sales/sales-kpis.js +69 -0
  942. package/dist/admin/sales/sales-kpis.js.map +1 -0
  943. package/dist/admin/sales/sales-workspace.js +55 -0
  944. package/dist/admin/sales/sales-workspace.js.map +1 -0
  945. package/dist/admin/sales/sales.module.css +52 -0
  946. package/dist/admin/sales/sources-panel.js +19 -0
  947. package/dist/admin/sales/sources-panel.js.map +1 -0
  948. package/dist/admin/sales/stage-meta.js +73 -0
  949. package/dist/admin/sales/stage-meta.js.map +1 -0
  950. package/dist/admin/sales/use-debounced.js +14 -0
  951. package/dist/admin/sales/use-debounced.js.map +1 -0
  952. package/dist/admin/sales/use-sales.js +51 -0
  953. package/dist/admin/sales/use-sales.js.map +1 -0
  954. package/dist/admin/scores/page.js +8 -0
  955. package/dist/admin/scores/page.js.map +1 -0
  956. package/dist/admin/settings/accessibility-tab.js +135 -0
  957. package/dist/admin/settings/accessibility-tab.js.map +1 -0
  958. package/dist/admin/settings/account-tab.js +59 -0
  959. package/dist/admin/settings/account-tab.js.map +1 -0
  960. package/dist/admin/settings/change-password-dialog.js +112 -0
  961. package/dist/admin/settings/change-password-dialog.js.map +1 -0
  962. package/dist/admin/settings/general-tab.js +143 -0
  963. package/dist/admin/settings/general-tab.js.map +1 -0
  964. package/dist/admin/settings/notifications-tab.js +155 -0
  965. package/dist/admin/settings/notifications-tab.js.map +1 -0
  966. package/dist/admin/settings/page.js +11 -0
  967. package/dist/admin/settings/page.js.map +1 -0
  968. package/dist/admin/settings/profile-card.js +35 -0
  969. package/dist/admin/settings/profile-card.js.map +1 -0
  970. package/dist/admin/settings/setting-row.js +85 -0
  971. package/dist/admin/settings/setting-row.js.map +1 -0
  972. package/dist/admin/settings/settings-workspace.js +47 -0
  973. package/dist/admin/settings/settings-workspace.js.map +1 -0
  974. package/dist/admin/settings/settings.module.css +162 -0
  975. package/dist/admin/settings/shortcut-list.js +42 -0
  976. package/dist/admin/settings/shortcut-list.js.map +1 -0
  977. package/dist/admin/settings/shortcuts-tab.js +42 -0
  978. package/dist/admin/settings/shortcuts-tab.js.map +1 -0
  979. package/dist/admin/settings/use-inbox-on.js +11 -0
  980. package/dist/admin/settings/use-inbox-on.js.map +1 -0
  981. package/dist/admin/settings/use-save.js +35 -0
  982. package/dist/admin/settings/use-save.js.map +1 -0
  983. package/dist/admin/support/case-field-selects.js +125 -0
  984. package/dist/admin/support/case-field-selects.js.map +1 -0
  985. package/dist/admin/support/case-header-controls.js +98 -0
  986. package/dist/admin/support/case-header-controls.js.map +1 -0
  987. package/dist/admin/support/case-origin.js +26 -0
  988. package/dist/admin/support/case-origin.js.map +1 -0
  989. package/dist/admin/support/case-pills.js +41 -0
  990. package/dist/admin/support/case-pills.js.map +1 -0
  991. package/dist/admin/support/case-pills.module.css +36 -0
  992. package/dist/admin/support/case-row-menu.js +77 -0
  993. package/dist/admin/support/case-row-menu.js.map +1 -0
  994. package/dist/admin/support/case-row.js +70 -0
  995. package/dist/admin/support/case-row.js.map +1 -0
  996. package/dist/admin/support/case-timeline.js +82 -0
  997. package/dist/admin/support/case-timeline.js.map +1 -0
  998. package/dist/admin/support/cases-tab.js +55 -0
  999. package/dist/admin/support/cases-tab.js.map +1 -0
  1000. package/dist/admin/support/composer-aids.js +29 -0
  1001. package/dist/admin/support/composer-aids.js.map +1 -0
  1002. package/dist/admin/support/composer-assist.js +32 -0
  1003. package/dist/admin/support/composer-assist.js.map +1 -0
  1004. package/dist/admin/support/composer-assist.module.css +23 -0
  1005. package/dist/admin/support/composer-footer.js +56 -0
  1006. package/dist/admin/support/composer-footer.js.map +1 -0
  1007. package/dist/admin/support/composer-header.js +44 -0
  1008. package/dist/admin/support/composer-header.js.map +1 -0
  1009. package/dist/admin/support/composer-keys.js +25 -0
  1010. package/dist/admin/support/composer-keys.js.map +1 -0
  1011. package/dist/admin/support/composer-toolbar.js +69 -0
  1012. package/dist/admin/support/composer-toolbar.js.map +1 -0
  1013. package/dist/admin/support/inbox-address.js +36 -0
  1014. package/dist/admin/support/inbox-address.js.map +1 -0
  1015. package/dist/admin/support/inbox-header.js +19 -0
  1016. package/dist/admin/support/inbox-header.js.map +1 -0
  1017. package/dist/admin/support/inbox-header.module.css +28 -0
  1018. package/dist/admin/support/kbd.js +9 -0
  1019. package/dist/admin/support/kbd.js.map +1 -0
  1020. package/dist/admin/support/kbd.module.css +19 -0
  1021. package/dist/admin/support/page.js +95 -0
  1022. package/dist/admin/support/page.js.map +1 -0
  1023. package/dist/admin/support/queue-card.js +46 -0
  1024. package/dist/admin/support/queue-card.js.map +1 -0
  1025. package/dist/admin/support/queue-card.module.css +88 -0
  1026. package/dist/admin/support/queue-filters.js +119 -0
  1027. package/dist/admin/support/queue-filters.js.map +1 -0
  1028. package/dist/admin/support/reply-picker-body.js +122 -0
  1029. package/dist/admin/support/reply-picker-body.js.map +1 -0
  1030. package/dist/admin/support/reply-picker.js +55 -0
  1031. package/dist/admin/support/reply-picker.js.map +1 -0
  1032. package/dist/admin/support/reply-picker.module.css +152 -0
  1033. package/dist/admin/support/saved-replies/library-categories.js +48 -0
  1034. package/dist/admin/support/saved-replies/library-categories.js.map +1 -0
  1035. package/dist/admin/support/saved-replies/library.js +121 -0
  1036. package/dist/admin/support/saved-replies/library.js.map +1 -0
  1037. package/dist/admin/support/saved-replies/library.module.css +157 -0
  1038. package/dist/admin/support/saved-replies/page.js +16 -0
  1039. package/dist/admin/support/saved-replies/page.js.map +1 -0
  1040. package/dist/admin/support/saved-replies/placeholders.js +51 -0
  1041. package/dist/admin/support/saved-replies/placeholders.js.map +1 -0
  1042. package/dist/admin/support/saved-replies/reply-fields.js +102 -0
  1043. package/dist/admin/support/saved-replies/reply-fields.js.map +1 -0
  1044. package/dist/admin/support/saved-replies/reply-list.js +60 -0
  1045. package/dist/admin/support/saved-replies/reply-list.js.map +1 -0
  1046. package/dist/admin/support/saved-replies/reply-list.module.css +74 -0
  1047. package/dist/admin/support/saved-replies/reply-meta.js +78 -0
  1048. package/dist/admin/support/saved-replies/reply-meta.js.map +1 -0
  1049. package/dist/admin/support/saved-replies/reply-preview.js +48 -0
  1050. package/dist/admin/support/saved-replies/reply-preview.js.map +1 -0
  1051. package/dist/admin/support/saved-replies/save-reply-dialog.js +66 -0
  1052. package/dist/admin/support/saved-replies/save-reply-dialog.js.map +1 -0
  1053. package/dist/admin/support/saved-replies/saved-replies-kpis.js +55 -0
  1054. package/dist/admin/support/saved-replies/saved-replies-kpis.js.map +1 -0
  1055. package/dist/admin/support/saved-replies/saved-replies-tab.js +22 -0
  1056. package/dist/admin/support/saved-replies/saved-replies-tab.js.map +1 -0
  1057. package/dist/admin/support/saved-replies/saved-replies.module.css +95 -0
  1058. package/dist/admin/support/saved-replies/saved-reply-editor.js +55 -0
  1059. package/dist/admin/support/saved-replies/saved-reply-editor.js.map +1 -0
  1060. package/dist/admin/support/saved-replies/use-saved-replies.js +40 -0
  1061. package/dist/admin/support/saved-replies/use-saved-replies.js.map +1 -0
  1062. package/dist/admin/support/suggestion-card.js +70 -0
  1063. package/dist/admin/support/suggestion-card.js.map +1 -0
  1064. package/dist/admin/support/suggestion-card.module.css +72 -0
  1065. package/dist/admin/support/support-case-detail.js +16 -0
  1066. package/dist/admin/support/support-case-detail.js.map +1 -0
  1067. package/dist/admin/support/support-case-identity.js +80 -0
  1068. package/dist/admin/support/support-case-identity.js.map +1 -0
  1069. package/dist/admin/support/support-case-table.js +89 -0
  1070. package/dist/admin/support/support-case-table.js.map +1 -0
  1071. package/dist/admin/support/support-case-thread.js +64 -0
  1072. package/dist/admin/support/support-case-thread.js.map +1 -0
  1073. package/dist/admin/support/support-case.module.css +178 -0
  1074. package/dist/admin/support/support-composer.js +171 -0
  1075. package/dist/admin/support/support-composer.js.map +1 -0
  1076. package/dist/admin/support/support-kpis.js +106 -0
  1077. package/dist/admin/support/support-kpis.js.map +1 -0
  1078. package/dist/admin/support/support-options.js +87 -0
  1079. package/dist/admin/support/support-options.js.map +1 -0
  1080. package/dist/admin/support/support-queue.module.css +82 -0
  1081. package/dist/admin/support/support-thread.module.css +174 -0
  1082. package/dist/admin/support/support-trend.js +59 -0
  1083. package/dist/admin/support/support-trend.js.map +1 -0
  1084. package/dist/admin/support/support-views.js +79 -0
  1085. package/dist/admin/support/support-views.js.map +1 -0
  1086. package/dist/admin/support/support-views.module.css +80 -0
  1087. package/dist/admin/support/support.module.css +98 -0
  1088. package/dist/admin/support/thread-attachment.js +54 -0
  1089. package/dist/admin/support/thread-attachment.js.map +1 -0
  1090. package/dist/admin/support/thread-bubble.js +46 -0
  1091. package/dist/admin/support/thread-bubble.js.map +1 -0
  1092. package/dist/admin/support/thread-event.module.css +35 -0
  1093. package/dist/admin/support/use-admin-support.js +90 -0
  1094. package/dist/admin/support/use-admin-support.js.map +1 -0
  1095. package/dist/admin/support/use-case-activity.js +68 -0
  1096. package/dist/admin/support/use-case-activity.js.map +1 -0
  1097. package/dist/admin/support/use-close-case.js +26 -0
  1098. package/dist/admin/support/use-close-case.js.map +1 -0
  1099. package/dist/admin/support/use-composer-assist.js +114 -0
  1100. package/dist/admin/support/use-composer-assist.js.map +1 -0
  1101. package/dist/admin/support/use-queue-cases.js +17 -0
  1102. package/dist/admin/support/use-queue-cases.js.map +1 -0
  1103. package/dist/admin/support/use-send-reply.js +73 -0
  1104. package/dist/admin/support/use-send-reply.js.map +1 -0
  1105. package/dist/admin/support/use-support-insights.js +53 -0
  1106. package/dist/admin/support/use-support-insights.js.map +1 -0
  1107. package/dist/admin/support/use-view-counts.js +36 -0
  1108. package/dist/admin/support/use-view-counts.js.map +1 -0
  1109. package/dist/admin/support/workspace/action-bar.js +69 -0
  1110. package/dist/admin/support/workspace/action-bar.js.map +1 -0
  1111. package/dist/admin/support/workspace/action-bar.module.css +85 -0
  1112. package/dist/admin/support/workspace/case-card.js +58 -0
  1113. package/dist/admin/support/workspace/case-card.js.map +1 -0
  1114. package/dist/admin/support/workspace/case-facts.js +41 -0
  1115. package/dist/admin/support/workspace/case-facts.js.map +1 -0
  1116. package/dist/admin/support/workspace/case-list-pane.js +126 -0
  1117. package/dist/admin/support/workspace/case-list-pane.js.map +1 -0
  1118. package/dist/admin/support/workspace/case-properties.js +91 -0
  1119. package/dist/admin/support/workspace/case-properties.js.map +1 -0
  1120. package/dist/admin/support/workspace/conversation-header.js +128 -0
  1121. package/dist/admin/support/workspace/conversation-header.js.map +1 -0
  1122. package/dist/admin/support/workspace/conversation-pane.js +90 -0
  1123. package/dist/admin/support/workspace/conversation-pane.js.map +1 -0
  1124. package/dist/admin/support/workspace/conversation.module.css +191 -0
  1125. package/dist/admin/support/workspace/details-pane.js +99 -0
  1126. package/dist/admin/support/workspace/details-pane.js.map +1 -0
  1127. package/dist/admin/support/workspace/details.module.css +137 -0
  1128. package/dist/admin/support/workspace/list.module.css +193 -0
  1129. package/dist/admin/support/workspace/merchant-card.js +58 -0
  1130. package/dist/admin/support/workspace/merchant-card.js.map +1 -0
  1131. package/dist/admin/support/workspace/merchant.module.css +97 -0
  1132. package/dist/admin/support/workspace/related-cases.js +51 -0
  1133. package/dist/admin/support/workspace/related-cases.js.map +1 -0
  1134. package/dist/admin/support/workspace/sort-cases.js +16 -0
  1135. package/dist/admin/support/workspace/sort-cases.js.map +1 -0
  1136. package/dist/admin/support/workspace/status-banner.js +101 -0
  1137. package/dist/admin/support/workspace/status-banner.js.map +1 -0
  1138. package/dist/admin/support/workspace/step-case.js +9 -0
  1139. package/dist/admin/support/workspace/step-case.js.map +1 -0
  1140. package/dist/admin/support/workspace/support-workspace.js +127 -0
  1141. package/dist/admin/support/workspace/support-workspace.js.map +1 -0
  1142. package/dist/admin/support/workspace/use-media.js +17 -0
  1143. package/dist/admin/support/workspace/use-media.js.map +1 -0
  1144. package/dist/admin/support/workspace/use-workspace-keys.js +46 -0
  1145. package/dist/admin/support/workspace/use-workspace-keys.js.map +1 -0
  1146. package/dist/admin/support/workspace/workspace.module.css +89 -0
  1147. package/dist/admin/tenants/[id]/account-officer-dialog.js +58 -0
  1148. package/dist/admin/tenants/[id]/account-officer-dialog.js.map +1 -0
  1149. package/dist/admin/tenants/[id]/account-officer.js +59 -0
  1150. package/dist/admin/tenants/[id]/account-officer.js.map +1 -0
  1151. package/dist/admin/tenants/[id]/commerce/best-sellers.js +56 -0
  1152. package/dist/admin/tenants/[id]/commerce/best-sellers.js.map +1 -0
  1153. package/dist/admin/tenants/[id]/commerce/commerce-flow.js +84 -0
  1154. package/dist/admin/tenants/[id]/commerce/commerce-flow.js.map +1 -0
  1155. package/dist/admin/tenants/[id]/commerce/drawer.module.css +89 -0
  1156. package/dist/admin/tenants/[id]/commerce/flow.module.css +110 -0
  1157. package/dist/admin/tenants/[id]/commerce/format.js +74 -0
  1158. package/dist/admin/tenants/[id]/commerce/format.js.map +1 -0
  1159. package/dist/admin/tenants/[id]/commerce/health.module.css +144 -0
  1160. package/dist/admin/tenants/[id]/commerce/index.js +5 -0
  1161. package/dist/admin/tenants/[id]/commerce/index.js.map +1 -0
  1162. package/dist/admin/tenants/[id]/commerce/inventory-health.js +82 -0
  1163. package/dist/admin/tenants/[id]/commerce/inventory-health.js.map +1 -0
  1164. package/dist/admin/tenants/[id]/commerce/item-card.js +37 -0
  1165. package/dist/admin/tenants/[id]/commerce/item-card.js.map +1 -0
  1166. package/dist/admin/tenants/[id]/commerce/items-gallery.js +155 -0
  1167. package/dist/admin/tenants/[id]/commerce/items-gallery.js.map +1 -0
  1168. package/dist/admin/tenants/[id]/commerce/items-table.js +49 -0
  1169. package/dist/admin/tenants/[id]/commerce/items-table.js.map +1 -0
  1170. package/dist/admin/tenants/[id]/commerce/items.module.css +125 -0
  1171. package/dist/admin/tenants/[id]/commerce/layout.module.css +27 -0
  1172. package/dist/admin/tenants/[id]/commerce/merchant-commerce.js +103 -0
  1173. package/dist/admin/tenants/[id]/commerce/merchant-commerce.js.map +1 -0
  1174. package/dist/admin/tenants/[id]/commerce/money-panel.js +52 -0
  1175. package/dist/admin/tenants/[id]/commerce/money-panel.js.map +1 -0
  1176. package/dist/admin/tenants/[id]/commerce/money.module.css +122 -0
  1177. package/dist/admin/tenants/[id]/commerce/order-drawer.js +65 -0
  1178. package/dist/admin/tenants/[id]/commerce/order-drawer.js.map +1 -0
  1179. package/dist/admin/tenants/[id]/commerce/order-pipeline.js +50 -0
  1180. package/dist/admin/tenants/[id]/commerce/order-pipeline.js.map +1 -0
  1181. package/dist/admin/tenants/[id]/commerce/orders.module.css +154 -0
  1182. package/dist/admin/tenants/[id]/commerce/owner-card.js +55 -0
  1183. package/dist/admin/tenants/[id]/commerce/owner-card.js.map +1 -0
  1184. package/dist/admin/tenants/[id]/commerce/pill.module.css +47 -0
  1185. package/dist/admin/tenants/[id]/commerce/recent-orders.js +98 -0
  1186. package/dist/admin/tenants/[id]/commerce/recent-orders.js.map +1 -0
  1187. package/dist/admin/tenants/[id]/commerce/shell.module.css +64 -0
  1188. package/dist/admin/tenants/[id]/commerce/status-pill.js +19 -0
  1189. package/dist/admin/tenants/[id]/commerce/status-pill.js.map +1 -0
  1190. package/dist/admin/tenants/[id]/commerce.js +1 -0
  1191. package/dist/admin/tenants/[id]/copy-text.js +30 -0
  1192. package/dist/admin/tenants/[id]/copy-text.js.map +1 -0
  1193. package/dist/admin/tenants/[id]/merchant-ledger.js +47 -0
  1194. package/dist/admin/tenants/[id]/merchant-ledger.js.map +1 -0
  1195. package/dist/admin/tenants/[id]/message-merchant-button.js +38 -0
  1196. package/dist/admin/tenants/[id]/message-merchant-button.js.map +1 -0
  1197. package/dist/admin/tenants/[id]/message-merchant-dialog.js +96 -0
  1198. package/dist/admin/tenants/[id]/message-merchant-dialog.js.map +1 -0
  1199. package/dist/admin/tenants/[id]/page.js +2308 -0
  1200. package/dist/admin/tenants/[id]/page.js.map +1 -0
  1201. package/dist/admin/tenants/[id]/subaccounts-panel.js +40 -0
  1202. package/dist/admin/tenants/[id]/subaccounts-panel.js.map +1 -0
  1203. package/dist/admin/tenants/[id]/tenant-activity-feed.js +92 -0
  1204. package/dist/admin/tenants/[id]/tenant-activity-feed.js.map +1 -0
  1205. package/dist/admin/tenants/[id]/tenant-activity.module.css +94 -0
  1206. package/dist/admin/tenants/[id]/tenant-attention.js +93 -0
  1207. package/dist/admin/tenants/[id]/tenant-attention.js.map +1 -0
  1208. package/dist/admin/tenants/[id]/tenant-header.js +125 -0
  1209. package/dist/admin/tenants/[id]/tenant-header.js.map +1 -0
  1210. package/dist/admin/tenants/[id]/tenant-invites.js +49 -0
  1211. package/dist/admin/tenants/[id]/tenant-invites.js.map +1 -0
  1212. package/dist/admin/tenants/[id]/tenant-layout.module.css +106 -0
  1213. package/dist/admin/tenants/[id]/tenant-overview.js +182 -0
  1214. package/dist/admin/tenants/[id]/tenant-overview.js.map +1 -0
  1215. package/dist/admin/tenants/[id]/tenant-overview.module.css +151 -0
  1216. package/dist/admin/tenants/[id]/tenant-people-panel.js +109 -0
  1217. package/dist/admin/tenants/[id]/tenant-people-panel.js.map +1 -0
  1218. package/dist/admin/tenants/[id]/tenant-people.module.css +121 -0
  1219. package/dist/admin/tenants/[id]/tenant-pos.js +101 -0
  1220. package/dist/admin/tenants/[id]/tenant-pos.js.map +1 -0
  1221. package/dist/admin/tenants/[id]/tenant-sidebar.js +115 -0
  1222. package/dist/admin/tenants/[id]/tenant-sidebar.js.map +1 -0
  1223. package/dist/admin/tenants/[id]/tenant-sidebar.module.css +53 -0
  1224. package/dist/admin/tenants/[id]/tenant-support.js +37 -0
  1225. package/dist/admin/tenants/[id]/tenant-support.js.map +1 -0
  1226. package/dist/admin/tenants/[id]/tenant-tabs.js +22 -0
  1227. package/dist/admin/tenants/[id]/tenant-tabs.js.map +1 -0
  1228. package/dist/admin/tenants/[id]/tenant-wallet-card.js +53 -0
  1229. package/dist/admin/tenants/[id]/tenant-wallet-card.js.map +1 -0
  1230. package/dist/admin/tenants/[id]/use-set-account-officer.js +31 -0
  1231. package/dist/admin/tenants/[id]/use-set-account-officer.js.map +1 -0
  1232. package/dist/admin/tenants/[id]/use-tenant-wallet.js +23 -0
  1233. package/dist/admin/tenants/[id]/use-tenant-wallet.js.map +1 -0
  1234. package/dist/admin/tenants/[id]/verification/business-records.js +70 -0
  1235. package/dist/admin/tenants/[id]/verification/business-records.js.map +1 -0
  1236. package/dist/admin/tenants/[id]/verification/case-checks.js +81 -0
  1237. package/dist/admin/tenants/[id]/verification/case-checks.js.map +1 -0
  1238. package/dist/admin/tenants/[id]/verification/case-events.js +44 -0
  1239. package/dist/admin/tenants/[id]/verification/case-events.js.map +1 -0
  1240. package/dist/admin/tenants/[id]/verification/case-form-dialog.js +58 -0
  1241. package/dist/admin/tenants/[id]/verification/case-form-dialog.js.map +1 -0
  1242. package/dist/admin/tenants/[id]/verification/case-history.js +27 -0
  1243. package/dist/admin/tenants/[id]/verification/case-history.js.map +1 -0
  1244. package/dist/admin/tenants/[id]/verification/case-rules.js +72 -0
  1245. package/dist/admin/tenants/[id]/verification/case-rules.js.map +1 -0
  1246. package/dist/admin/tenants/[id]/verification/case-status.js +47 -0
  1247. package/dist/admin/tenants/[id]/verification/case-status.js.map +1 -0
  1248. package/dist/admin/tenants/[id]/verification/case-words.js +104 -0
  1249. package/dist/admin/tenants/[id]/verification/case-words.js.map +1 -0
  1250. package/dist/admin/tenants/[id]/verification/decision-bar.js +59 -0
  1251. package/dist/admin/tenants/[id]/verification/decision-bar.js.map +1 -0
  1252. package/dist/admin/tenants/[id]/verification/decision-dialogs.js +152 -0
  1253. package/dist/admin/tenants/[id]/verification/decision-dialogs.js.map +1 -0
  1254. package/dist/admin/tenants/[id]/verification/document-file.js +78 -0
  1255. package/dist/admin/tenants/[id]/verification/document-file.js.map +1 -0
  1256. package/dist/admin/tenants/[id]/verification/document-view.js +28 -0
  1257. package/dist/admin/tenants/[id]/verification/document-view.js.map +1 -0
  1258. package/dist/admin/tenants/[id]/verification/document-viewer.js +46 -0
  1259. package/dist/admin/tenants/[id]/verification/document-viewer.js.map +1 -0
  1260. package/dist/admin/tenants/[id]/verification/document-viewer.module.css +98 -0
  1261. package/dist/admin/tenants/[id]/verification/person-card.js +111 -0
  1262. package/dist/admin/tenants/[id]/verification/person-card.js.map +1 -0
  1263. package/dist/admin/tenants/[id]/verification/reveal-number.js +48 -0
  1264. package/dist/admin/tenants/[id]/verification/reveal-number.js.map +1 -0
  1265. package/dist/admin/tenants/[id]/verification/reverse-dialog.js +52 -0
  1266. package/dist/admin/tenants/[id]/verification/reverse-dialog.js.map +1 -0
  1267. package/dist/admin/tenants/[id]/verification/sent-files.js +33 -0
  1268. package/dist/admin/tenants/[id]/verification/sent-files.js.map +1 -0
  1269. package/dist/admin/tenants/[id]/verification/tenant-verification.js +103 -0
  1270. package/dist/admin/tenants/[id]/verification/tenant-verification.js.map +1 -0
  1271. package/dist/admin/tenants/[id]/verification/use-case.js +57 -0
  1272. package/dist/admin/tenants/[id]/verification/use-case.js.map +1 -0
  1273. package/dist/admin/tenants/[id]/verification/verification.module.css +168 -0
  1274. package/dist/admin/tenants/account-officer-action.js +8 -0
  1275. package/dist/admin/tenants/account-officer-action.js.map +1 -0
  1276. package/dist/admin/tenants/account-officer-filter.js +43 -0
  1277. package/dist/admin/tenants/account-officer-filter.js.map +1 -0
  1278. package/dist/admin/tenants/account-officer-options.js +15 -0
  1279. package/dist/admin/tenants/account-officer-options.js.map +1 -0
  1280. package/dist/admin/tenants/country-filter.js +53 -0
  1281. package/dist/admin/tenants/country-filter.js.map +1 -0
  1282. package/dist/admin/tenants/country-options.js +22 -0
  1283. package/dist/admin/tenants/country-options.js.map +1 -0
  1284. package/dist/admin/tenants/message-merchant.js +61 -0
  1285. package/dist/admin/tenants/message-merchant.js.map +1 -0
  1286. package/dist/admin/tenants/page.js +11 -0
  1287. package/dist/admin/tenants/page.js.map +1 -0
  1288. package/dist/admin/tenants/tenant-list-row.js +169 -0
  1289. package/dist/admin/tenants/tenant-list-row.js.map +1 -0
  1290. package/dist/admin/tenants/tenants-analytics.js +119 -0
  1291. package/dist/admin/tenants/tenants-analytics.js.map +1 -0
  1292. package/dist/admin/tenants/tenants-kpis.js +98 -0
  1293. package/dist/admin/tenants/tenants-kpis.js.map +1 -0
  1294. package/dist/admin/tenants/tenants-logo.js +8 -0
  1295. package/dist/admin/tenants/tenants-logo.js.map +1 -0
  1296. package/dist/admin/tenants/tenants-table.js +135 -0
  1297. package/dist/admin/tenants/tenants-table.js.map +1 -0
  1298. package/dist/admin/tenants/tenants-workspace.js +98 -0
  1299. package/dist/admin/tenants/tenants-workspace.js.map +1 -0
  1300. package/dist/admin/till-requests/decision-dialog.js +59 -0
  1301. package/dist/admin/till-requests/decision-dialog.js.map +1 -0
  1302. package/dist/admin/till-requests/page.js +124 -0
  1303. package/dist/admin/till-requests/page.js.map +1 -0
  1304. package/dist/admin/till-requests/till-request-row.js +72 -0
  1305. package/dist/admin/till-requests/till-request-row.js.map +1 -0
  1306. package/dist/admin/verification/page.js +11 -0
  1307. package/dist/admin/verification/page.js.map +1 -0
  1308. package/dist/admin/verification/preview-dialog.js +111 -0
  1309. package/dist/admin/verification/preview-dialog.js.map +1 -0
  1310. package/dist/admin/verification/reject-dialog.js +94 -0
  1311. package/dist/admin/verification/reject-dialog.js.map +1 -0
  1312. package/dist/admin/verification/review-queue.js +124 -0
  1313. package/dist/admin/verification/review-queue.js.map +1 -0
  1314. package/dist/admin/verification/review-row.js +55 -0
  1315. package/dist/admin/verification/review-row.js.map +1 -0
  1316. package/dist/admin/verification/review.js +69 -0
  1317. package/dist/admin/verification/review.js.map +1 -0
  1318. package/dist/admin/verification/use-review.js +26 -0
  1319. package/dist/admin/verification/use-review.js.map +1 -0
  1320. package/dist/admin/verification/verification-page.js +35 -0
  1321. package/dist/admin/verification/verification-page.js.map +1 -0
  1322. package/dist/admin/verification/verification.module.css +30 -0
  1323. package/dist/admin/verification/waiting-cases.js +94 -0
  1324. package/dist/admin/verification/waiting-cases.js.map +1 -0
  1325. package/dist/admin/wallets/page.js +11 -0
  1326. package/dist/admin/wallets/page.js.map +1 -0
  1327. package/dist/admin/wallets/wallets-workspace.js +37 -0
  1328. package/dist/admin/wallets/wallets-workspace.js.map +1 -0
  1329. package/dist/index.js +1 -0
  1330. package/dist/index.js.map +1 -0
  1331. package/package.json +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/admin/tenants/%5Bid%5D/page.tsx"],"sourcesContent":["'use client';\n\nimport { use, useState, useMemo, type ReactNode } from 'react';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { Badge } from '@withpotter/ui-kit';\nimport {\n platformAdminApi,\n type TenantActivityOrder,\n type DashboardStats,\n type AdminFinanceAnalytics,\n type Transaction,\n type TenantCustomer,\n type TenantProduct,\n type TenantInvoice,\n type TenantDiscount,\n type TenantSettlement,\n type TenantBankAccount,\n type TenantSubscription,\n type ProductInsights,\n type CustomerInsights,\n type SellerRow,\n type SpenderRow,\n} from '@withpotter/lib/admin-api';\nimport { SubaccountsPanel } from './subaccounts-panel';\nimport { ActivityColumns } from './tenant-activity-feed';\nimport { TenantHeader, tenantTabs, type TenantTab } from './tenant-header';\nimport { useAdminModules } from '../../_shell/modules-context';\nimport { moduleOn } from '../../_shell/nav-modules';\nimport { TenantOverview } from './tenant-overview';\nimport { TenantPeoplePanel } from './tenant-people-panel';\nimport { TenantWalletCard } from './tenant-wallet-card';\nimport { useTenantWallet } from './use-tenant-wallet';\nimport { LedgerCurrencyFilter, MerchantLedger } from './merchant-ledger';\nimport { TenantSupport } from './tenant-support';\nimport { TenantVerification } from './verification/tenant-verification';\nimport { TenantPos } from './tenant-pos';\nimport { MerchantCommerce } from './commerce';\nimport {\n usePlatformTenant,\n useTenantAnalytics,\n useTenantFinance,\n useTenantTransactions,\n useTenantCustomers,\n useTenantProducts,\n useTenantProductInsights,\n useTenantCustomerInsights,\n useTenantInvoices,\n useTenantLoyalty,\n useTenantDiscounts,\n useTenantSettlements,\n useTenantSubscriptions,\n} from '../../hooks';\nimport {\n tableStyles,\n AdmLoading,\n Filters,\n FilterSearch,\n FilterSelect as AdmFilterSelect,\n PeriodSelector,\n customRange,\n periodPhrase,\n rangeFromKey,\n usePersistedDateRange,\n type DateRange,\n useTabParam,\n CurrencyFilter,\n byCurrency,\n currenciesIn,\n useCurrencyParam,\n MoneyLines,\n PICK_CURRENCY,\n focusCurrency,\n rowFor,\n shownRows,\n} from '../../_ui';\nimport { GrowthChart } from '../../growth-chart';\n\n// ---------------------------------------------------------------------------\n// formatting\n// ---------------------------------------------------------------------------\n\nfunction moneyCur(n: number, currency: string): string {\n try {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currencyDisplay: 'narrowSymbol',\n currency,\n maximumFractionDigits: 0,\n }).format(n);\n } catch {\n return `${currency} ${n.toFixed(0)}`;\n }\n}\n\n/**\n * The one currency the listed invoices share, or null when they are mixed or\n * there are none. The totals carry no currency of their own, so the rows name\n * it, and the caller falls back to naira.\n */\nfunction sharedCurrency(rows: Array<{ currency: string }>): string | null {\n const codes = new Set(rows.map((r: { currency: string }) => r.currency));\n return codes.size === 1 ? [...codes][0] || null : null;\n}\n\nfunction num(n: number): string {\n return new Intl.NumberFormat('en-US').format(n ?? 0);\n}\n\nfunction pct(n: number): string {\n return `${(n ?? 0).toFixed(1)}%`;\n}\n\nfunction duration(seconds: number): string {\n if (!seconds || seconds < 1) return '0s';\n const m = Math.floor(seconds / 60);\n const s = Math.round(seconds % 60);\n return m > 0 ? `${m}m ${s}s` : `${s}s`;\n}\n\nfunction compactDate(s: string | null): string {\n if (!s) return '—';\n const d = new Date(s);\n if (Number.isNaN(d.getTime())) return '—';\n return d.toLocaleDateString(undefined, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n });\n}\n\n// ---------------------------------------------------------------------------\n// date range\n// ---------------------------------------------------------------------------\n\nfunction SegToggle<T extends string>({\n value,\n options,\n onChange,\n}: {\n value: T;\n options: Array<{ key: T; label: string }>;\n onChange: (k: T) => void;\n}) {\n // The console's segmented strip: the chosen part tinted, never solid.\n return (\n <div role=\"group\" className=\"adm-segments\">\n {options.map((opt) => (\n <button\n key={opt.key}\n type=\"button\"\n className=\"adm-segment\"\n onClick={() => onChange(opt.key)}\n aria-pressed={opt.key === value}\n >\n {opt.label}\n </button>\n ))}\n </div>\n );\n}\n\n/** Sub-sections inside the grouped tabs. */\nconst SUBTABS = {\n wallet: [\n { key: 'money', label: 'Money health' },\n { key: 'finance', label: 'Balances & finance' },\n ],\n payments: [\n { key: 'invoices', label: 'Invoices' },\n { key: 'subscriptions', label: 'Subscriptions' },\n ],\n withdrawals: [{ key: 'settlements', label: 'Payouts & bank accounts' }],\n commerce: [\n { key: 'commerce', label: 'Commerce' },\n { key: 'analytics', label: 'Sales' },\n { key: 'customers', label: 'Customers' },\n { key: 'products', label: 'Products' },\n { key: 'discounts', label: 'Discounts' },\n { key: 'loyalty', label: 'Loyalty' },\n ],\n} as const;\n\ntype GroupTab = keyof typeof SUBTABS;\ntype SubTab = (typeof SUBTABS)[GroupTab][number]['key'];\n\n// ---------------------------------------------------------------------------\n// page\n// ---------------------------------------------------------------------------\n\nexport default function TenantDetailPage({\n params,\n}: {\n params: Promise<{ id: string }>;\n}) {\n const { id } = use(params);\n // The tab lives in `?tab=`, so a deep link opens it (payout problems,\n // merchant finder) and Back from a case in Support returns to the tab it\n // was opened from. Clicks replace the entry rather than adding one.\n const modules = useAdminModules();\n // Every tab this Box serves; the first is the one a bare URL opens.\n const tabKeys = useMemo(\n () => tenantTabs(modules).map((t) => t.key as TenantTab),\n [modules],\n );\n const [tab, setTab] = useTabParam<TenantTab>(tabKeys);\n // Money health reads the merchant's wallet ledger, served with Wallets.\n const walletLedger = moduleOn(modules, 'wallets');\n const [sub, setSub] = useState<Record<GroupTab, SubTab>>({\n wallet: walletLedger ? 'money' : 'finance',\n payments: 'invoices',\n withdrawals: 'settlements',\n commerce: 'commerce',\n });\n const { rangeKey, setRangeKey, customStart, customEnd, onCustomChange } =\n usePersistedDateRange();\n const range = useMemo(\n () =>\n rangeKey === 'custom'\n ? customRange(customStart, customEnd)\n : rangeFromKey(rangeKey),\n [rangeKey, customStart, customEnd],\n );\n const [shown, setShown] = useCurrencyParam();\n const { data, isLoading, isError } = usePlatformTenant(id, {\n startDate: range.startDate,\n endDate: range.endDate,\n });\n // The tenant detail has no wallet of its own; the ledger is the source.\n const { wallet, walletNote } = useTenantWallet(\n id,\n walletLedger,\n data?.wallet,\n );\n const queryClient = useQueryClient();\n const statusMutation = useMutation({\n mutationFn: (status: string) =>\n platformAdminApi.setTenantStatus(id, status as never),\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: ['platform-admin', 'tenant', id],\n });\n queryClient.invalidateQueries({\n queryKey: ['platform-admin', 'tenants'],\n });\n },\n });\n\n if (isError) {\n return <p style={{ color: 'var(--error)' }}>Failed to load tenant.</p>;\n }\n\n if (isLoading || !data) return <AdmLoading label=\"Loading tenant…\" />;\n\n // Same wallet Money shows, under the shape every card here already reads.\n const view: typeof data = { ...data, wallet };\n\n const currency = data.currency ?? 'NGN';\n // Every figure on this record comes back once per currency: sales, the\n // wallet, recent orders and finance. One control narrows them all.\n const currencyControl = (\n <CurrencyFilter\n value={shown}\n onChange={setShown}\n currencies={currenciesIn(\n data.currencies,\n view.wallet?.balances.map((b) => b.currency),\n data.recentOrders.map((o) => o.currency),\n )}\n />\n );\n const group = tab in SUBTABS ? (tab as GroupTab) : null;\n const current = group ? sub[group] : null;\n const periodControl = (\n <PeriodSelector\n value={rangeKey}\n onChange={setRangeKey}\n customStart={customStart}\n customEnd={customEnd}\n onCustomChange={onCustomChange}\n />\n );\n\n return (\n <div>\n <TenantHeader\n data={data}\n tab={tab}\n onTab={setTab}\n onStatus={(status) => statusMutation.mutate(status)}\n statusPending={statusMutation.isPending}\n />\n\n {tab === 'overview' && (\n <TenantOverview\n data={view}\n walletNote={walletNote}\n periodLabel={periodPhrase(range)}\n periodControl={periodControl}\n recentOrders={\n <ActivityTable\n orders={byCurrency(data.recentOrders, shown, (o) => o.currency)}\n isLoading={false}\n empty={shown ? `No recent ${shown} orders.` : undefined}\n />\n }\n onTab={setTab}\n currency={shown}\n currencyControl={currencyControl}\n />\n )}\n {tab === 'overview' && (\n <div id=\"tenant-team\" style={{ marginTop: 'var(--adm-gap)' }}>\n <TenantPeoplePanel data={data} />\n </div>\n )}\n {tab === 'verification' && <TenantVerification tenantId={id} />}\n {tab === 'support' && <TenantSupport tenantId={id} />}\n {tab === 'pos' && <TenantPos tenantId={id} />}\n {tab === 'audit' && <ActivityColumns entries={data.activity ?? []} />}\n\n {group && current && (\n <>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n gap: 12,\n marginBottom: 16,\n }}\n >\n {SUBTABS[group].filter((o) => walletLedger || o.key !== 'money')\n .length > 1 ? (\n <SegToggle<SubTab>\n value={current}\n options={SUBTABS[group].filter(\n (o) => walletLedger || o.key !== 'money',\n )}\n onChange={(key) => setSub((s) => ({ ...s, [group]: key }))}\n />\n ) : (\n <span />\n )}\n <div className=\"adm-toolbar\">\n {group === 'wallet' && current !== 'money' && currencyControl}\n {current === 'money' ? (\n <LedgerCurrencyFilter\n tenantId={id}\n value={shown}\n onChange={setShown}\n />\n ) : (\n periodControl\n )}\n </div>\n </div>\n {group === 'wallet' && current !== 'money' && (\n <TenantWalletCard\n data={view}\n currency={shown}\n walletNote={walletNote}\n />\n )}\n {current === 'money' && (\n <MerchantLedger\n tenantId={id}\n business={data.businessName}\n currency={shown}\n onCurrency={setShown}\n />\n )}\n {current === 'settlements' && (\n <SettlementsTab id={id} range={range} />\n )}\n {current === 'finance' && (\n <FinanceTab id={id} range={range} currency={shown} />\n )}\n {current === 'commerce' && (\n <MerchantCommerce tenantId={id} currency={currency} range={range} />\n )}\n {current === 'analytics' && <AnalyticsTab id={id} range={range} />}\n {current === 'customers' && (\n <CustomersTab id={id} currency={currency} range={range} />\n )}\n {current === 'products' && (\n <ProductsTab id={id} currency={currency} range={range} />\n )}\n {current === 'discounts' && <DiscountsTab id={id} />}\n {current === 'loyalty' && <LoyaltyTab id={id} />}\n {current === 'invoices' && <InvoicesTab id={id} />}\n {current === 'subscriptions' && <SubscriptionsTab id={id} />}\n </>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Analytics tab\n// ---------------------------------------------------------------------------\n\ntype StatItem = {\n label: string;\n value: ReactNode;\n /** Plain-language explanation of what this metric means, shown on hover. */\n hint?: string;\n};\n\n/**\n * Wraps a label so that hovering (or focusing) the label itself reveals a\n * plain-language explanation of the adjacent data point. No separate icon —\n * the element is its own trigger. Used to annotate every metric, breakdown\n * row and key/value stat.\n */\nfunction HintLabel({ label, hint }: { label: ReactNode; hint?: string }) {\n if (!hint) return <>{label}</>;\n return (\n <span className=\"adm-hint\" tabIndex={0} role=\"note\" aria-label={hint}>\n {label}\n <span className=\"adm-hint-bubble\" role=\"tooltip\">\n {hint}\n </span>\n </span>\n );\n}\n\n/**\n * Shared left-column summary list used by every sub-data tab. Vertical\n * label / value rows inside a single panel — this is the standard\n * \"summary\" surface that pairs with a wide detail column on the right.\n */\nfunction StatsListPanel({ items }: { items: StatItem[] }) {\n return (\n <div className=\"adm-panel\" style={{ padding: '4px 0' }}>\n {items.map((s, i) => (\n <div\n key={s.label}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 12,\n padding: '12px 16px',\n borderBottom:\n i < items.length - 1 ? '1px solid var(--border-subtle)' : 'none',\n }}\n >\n <span\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 10,\n fontSize: 13,\n color: 'var(--text-secondary)',\n }}\n >\n <HintLabel label={s.label} hint={s.hint} />\n </span>\n <span\n style={{\n fontSize: 18,\n fontWeight: 600,\n color: 'var(--text-primary)',\n }}\n >\n {s.value}\n </span>\n </div>\n ))}\n </div>\n );\n}\n\n/** Standard two-column scaffold: narrow summary column + wide detail column. */\nfunction SubDataLayout({\n summary,\n detail,\n}: {\n summary: ReactNode;\n detail: ReactNode;\n}) {\n return (\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 300px) minmax(0, 1fr)',\n gap: 16,\n alignItems: 'start',\n }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n {summary}\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n {detail}\n </div>\n </div>\n );\n}\n\nfunction AnalyticsTab({ id, range }: { id: string; range: DateRange }) {\n const { data, isLoading, isError } = useTenantAnalytics(id, {\n startDate: range.startDate,\n endDate: range.endDate,\n });\n const [srcTab, setSrcTab] = useState<'traffic' | 'devices'>('traffic');\n const [crTab, setCrTab] = useState<'customers' | 'reviews'>('customers');\n\n if (isError) {\n return <EmptyPanel>Failed to load analytics for this tenant.</EmptyPanel>;\n }\n if (isLoading || !data) {\n return <AdmLoading label=\"Loading analytics…\" />;\n }\n\n const a: DashboardStats = data;\n const series = a.visitorsTimeSeries?.length\n ? a.visitorsTimeSeries\n : a.sessionsTimeSeries;\n\n const statItems: StatItem[] = [\n {\n label: 'Page views',\n value: num(a.overview.totalPageViews),\n hint: 'Total number of pages loaded across the storefront in the selected period. One visitor can generate many page views.',\n },\n {\n label: 'Unique visitors',\n value: num(a.overview.uniqueVisitors),\n hint: 'Distinct people who visited the storefront, de-duplicated by device. Reloads and repeat visits in the period count once.',\n },\n {\n label: 'Sessions',\n value: num(a.overview.totalSessions),\n hint: 'Number of browsing sessions. A session is a continuous visit that ends after ~30 minutes of inactivity.',\n },\n {\n label: 'Avg session',\n value: duration(a.overview.averageSessionDuration),\n hint: 'Average time a visitor spends per session. Longer sessions usually indicate more engaged shoppers.',\n },\n {\n label: 'Bounce rate',\n value: pct(a.overview.bounceRate),\n hint: 'Share of sessions that left after viewing a single page without interacting. Lower is better.',\n },\n {\n label: 'Conversion',\n value: pct(a.sales.conversionRate),\n hint: 'Percentage of sessions that resulted in a completed purchase. The core measure of storefront effectiveness.',\n },\n ];\n\n return (\n <>\n {/* Stats list (left) + trend & funnel (right) */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 300px) minmax(0, 1fr)',\n gap: 16,\n alignItems: 'start',\n }}\n >\n {/* left column: stats list + channels tabbed card */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n <StatsListPanel items={statItems} />\n\n <div className=\"adm-panel\">\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: 12,\n }}\n >\n <div className=\"adm-panel-title\" style={{ marginBottom: 0 }}>\n Channels\n </div>\n <SegToggle\n value={srcTab}\n onChange={setSrcTab}\n options={[\n { key: 'traffic', label: 'Traffic' },\n { key: 'devices', label: 'Devices' },\n ]}\n />\n </div>\n {srcTab === 'traffic' ? (\n a.trafficSources?.length ? (\n a.trafficSources.map((s) => (\n <BarRow\n key={s.source}\n label={s.source || 'direct'}\n value={`${num(s.sessions)} · ${pct(s.percentage)}`}\n fraction={s.percentage / 100}\n hint={`Sessions arriving via ${s.source || 'direct'} — ${pct(s.percentage)} of all traffic in this window.`}\n />\n ))\n ) : (\n <EmptyInline>No source data.</EmptyInline>\n )\n ) : a.devices?.length ? (\n a.devices.map((d) => (\n <BarRow\n key={d.device}\n label={d.device}\n value={`${num(d.sessions)} · ${pct(d.percentage)}`}\n fraction={d.percentage / 100}\n hint={`Sessions on ${d.device} devices — ${pct(d.percentage)} of all traffic in this window.`}\n />\n ))\n ) : (\n <EmptyInline>No device data.</EmptyInline>\n )}\n </div>\n\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Conversion funnel</div>\n <FunnelBar\n label=\"Product views\"\n value={a.funnel.productViews}\n max={a.funnel.productViews}\n hint=\"Number of times shoppers viewed a product page — the top of the purchase funnel.\"\n />\n <FunnelBar\n label=\"Add to cart\"\n value={a.funnel.addToCart}\n max={a.funnel.productViews}\n rate={a.funnel.viewToCartRate}\n hint=\"Sessions that added an item to cart. The percentage is the view-to-cart conversion rate.\"\n />\n <FunnelBar\n label=\"Checkout\"\n value={a.funnel.checkoutStart}\n max={a.funnel.productViews}\n rate={a.funnel.cartToCheckoutRate}\n hint=\"Sessions that started checkout. The percentage is the cart-to-checkout conversion rate.\"\n />\n <FunnelBar\n label=\"Purchase\"\n value={a.funnel.purchase}\n max={a.funnel.productViews}\n rate={a.funnel.checkoutToPurchaseRate}\n hint=\"Sessions that completed a purchase. The percentage is the checkout-to-purchase conversion rate.\"\n last\n />\n </div>\n </div>\n\n {/* right column: visitors trend + top pages */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Visitors trend</div>\n {series?.length ? (\n <GrowthChart\n data={series.map((p) => ({ date: p.date, count: p.value }))}\n />\n ) : (\n <EmptyInline>No traffic recorded in this window.</EmptyInline>\n )}\n </div>\n\n <div>\n {a.topPages?.length ? (\n <div className=\"adm-table-card\">\n <div\n className=\"adm-panel-title\"\n style={{ margin: 0, padding: '16px 20px 12px' }}\n >\n Top pages\n </div>\n <table style={tableStyles.table}>\n <thead>\n <tr style={tableStyles.headRow}>\n <th style={tableStyles.th}>Page</th>\n <th style={tableStyles.th}>Views</th>\n <th style={tableStyles.th}>Unique visitors</th>\n </tr>\n </thead>\n <tbody>\n {a.topPages.slice(0, 12).map((p) => (\n <tr key={p.pageUrl}>\n <td style={tableStyles.cell}>{p.pageUrl || '/'}</td>\n <td style={tableStyles.cell}>{num(p.views)}</td>\n <td style={tableStyles.cellMuted}>\n {num(p.uniqueVisitors)}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n ) : (\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Top pages</div>\n <EmptyInline>No page views recorded yet.</EmptyInline>\n </div>\n )}\n </div>\n\n {/* Orders (left) + customers/reviews tabbed (right) */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: 16,\n alignItems: 'stretch',\n }}\n >\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Orders</div>\n <KeyRow label=\"Total\" value={num(a.orderStats.total)} />\n <KeyRow label=\"Completed\" value={num(a.orderStats.completed)} />\n <KeyRow label=\"Processing\" value={num(a.orderStats.processing)} />\n <KeyRow label=\"Pending\" value={num(a.orderStats.pending)} />\n <KeyRow\n label=\"Refunded\"\n value={num(a.orderStats.refunded)}\n last\n />\n </div>\n\n <div className=\"adm-panel\">\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: 12,\n }}\n >\n <div className=\"adm-panel-title\" style={{ marginBottom: 0 }}>\n {crTab === 'customers' ? 'Customers' : 'Reviews'}\n </div>\n <SegToggle\n value={crTab}\n onChange={setCrTab}\n options={[\n { key: 'customers', label: 'Customers' },\n { key: 'reviews', label: 'Reviews' },\n ]}\n />\n </div>\n {crTab === 'customers' ? (\n <>\n <KeyRow\n label=\"Total\"\n value={num(a.customerStats.totalCustomers)}\n />\n <KeyRow\n label=\"Registered\"\n value={num(a.customerStats.registered)}\n />\n <KeyRow\n label=\"Subscribers\"\n value={num(a.customerStats.subscribers)}\n />\n <KeyRow label=\"Leads\" value={num(a.customerStats.leads)} />\n <KeyRow\n label=\"Guests\"\n value={num(a.customerStats.guests)}\n last\n />\n </>\n ) : (\n <>\n <KeyRow\n label=\"Average rating\"\n value={`${a.reviewStats.averageRating.toFixed(1)} ★`}\n />\n <KeyRow\n label=\"Approved\"\n value={num(a.reviewStats.totalApproved)}\n />\n <KeyRow\n label=\"Pending\"\n value={num(a.reviewStats.pendingCount)}\n />\n <KeyRow\n label=\"Response rate\"\n value={pct(a.reviewStats.responseRate)}\n last\n />\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n\n {/* Client errors */}\n {a.clientErrors?.length > 0 && (\n <div style={{ marginTop: 16 }}>\n <div className=\"adm-panel-title\" style={{ marginBottom: 12 }}>\n Client errors\n </div>\n <div className=\"adm-table-card\">\n <table style={tableStyles.table}>\n <thead>\n <tr style={tableStyles.headRow}>\n <th style={tableStyles.th}>Message</th>\n <th style={tableStyles.th}>Page</th>\n <th style={tableStyles.th}>Count</th>\n <th style={tableStyles.th}>Last seen</th>\n </tr>\n </thead>\n <tbody>\n {a.clientErrors.slice(0, 10).map((e, i) => (\n <tr key={`${e.pageUrl}-${i}`}>\n <td style={tableStyles.cell}>{e.message}</td>\n <td style={tableStyles.cell}>{e.pageUrl || '/'}</td>\n <td style={tableStyles.cell}>{num(e.count)}</td>\n <td style={tableStyles.cellMuted}>\n {new Date(e.lastSeen).toLocaleDateString()}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n )}\n </>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Finance tab\n// ---------------------------------------------------------------------------\n\nfunction FinanceTab({\n id,\n range,\n currency,\n}: {\n id: string;\n range: DateRange;\n /** The currency filter's choice; '' shows every currency. */\n currency: string;\n}) {\n const { data, isLoading, isError } = useTenantFinance(id, {\n startDate: range.startDate,\n endDate: range.endDate,\n });\n const [txnSearch, setTxnSearch] = useState('');\n const [txnType, setTxnType] = useState('');\n const { data: txns } = useTenantTransactions(id, {\n limit: 15,\n search: txnSearch || undefined,\n type: txnType || undefined,\n });\n\n if (isError) {\n return (\n <EmptyPanel>Failed to load finance data for this tenant.</EmptyPanel>\n );\n }\n if (isLoading || !data) {\n return <AdmLoading label=\"Loading finance…\" />;\n }\n\n const f: AdminFinanceAnalytics = data;\n // Money comes back once per currency and is never added across them; the\n // breakdown and the trend draw one currency, the filter's or the only one.\n const rows = f.summary.byCurrency;\n const focus = focusCurrency(f.summary.currencies ?? [], currency);\n const breakdown = rowFor(f.revenueByType?.byCurrency, focus)?.breakdown;\n const trend = rowFor(f.chart?.byCurrency, focus)?.data;\n const shown = shownRows(rows, currency);\n const count = (pick: (r: (typeof shown)[number]) => number, all: number) =>\n rows && currency ? shown.reduce((n, r) => n + pick(r), 0) : all;\n const lines = (amount: (r: NonNullable<typeof rows>[number]) => number) => (\n <MoneyLines rows={rows} currency={currency} amount={amount} />\n );\n\n const statItems: StatItem[] = [\n {\n label: 'Total revenue',\n value: lines((r) => r.totalRevenue),\n hint: 'Gross money collected from all successful transactions in this window, before platform and processing fees.',\n },\n {\n label: 'Fees',\n value: lines((r) => r.totalFees),\n hint: 'Total platform and payment-processing fees deducted from gross revenue over this window.',\n },\n {\n label: 'Net revenue',\n value: lines((r) => r.netRevenue),\n hint: 'What the tenant actually keeps: total revenue minus all fees. This is the amount eligible for payout.',\n },\n {\n label: 'Transactions',\n value: num(count((r) => r.transactionCount, f.summary.transactionCount)),\n hint: 'Count of all payment attempts in this window, including successful, pending, failed and refunded ones.',\n },\n {\n label: 'Avg value',\n value: lines((r) => r.averageTransactionValue),\n hint: 'Average amount per successful transaction (total revenue ÷ successful transactions).',\n },\n {\n label: 'Successful',\n value: num(count((r) => r.successfulCount, f.summary.successfulCount)),\n hint: 'Number of transactions that were fully captured and paid in this window.',\n },\n ];\n\n return (\n <SubDataLayout\n summary={\n <>\n <StatsListPanel items={statItems} />\n\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Transaction status</div>\n <KeyRow\n label=\"Successful\"\n value={num(f.summary.successfulCount)}\n hint=\"Payments captured in full — money has been received.\"\n />\n <KeyRow\n label=\"Pending\"\n value={num(f.summary.pendingCount)}\n hint=\"Payments initiated but not yet confirmed by the processor.\"\n />\n <KeyRow\n label=\"Failed\"\n value={num(f.summary.failedCount)}\n hint=\"Payment attempts that were declined or errored and collected no money.\"\n />\n <KeyRow\n label=\"Refunded\"\n value={num(f.summary.refundedCount)}\n hint=\"Previously successful payments that were later returned to the customer.\"\n last\n />\n </div>\n\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">\n Revenue by type{focus ? ` · ${focus}` : ''}\n </div>\n {!focus && f.summary.currencies?.length ? (\n <EmptyInline>{PICK_CURRENCY}</EmptyInline>\n ) : breakdown?.length ? (\n breakdown.map((b) => (\n <BarRow\n key={b.type}\n label={b.type}\n value={`${moneyCur(b.total, focus ?? '')} · ${pct(b.percentage)}`}\n fraction={b.percentage / 100}\n hint={`Revenue from ${b.type} sources — ${pct(b.percentage)} of total revenue in this window.`}\n />\n ))\n ) : (\n <EmptyInline>No revenue breakdown.</EmptyInline>\n )}\n </div>\n </>\n }\n detail={\n <>\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">\n Revenue trend{focus ? ` · ${focus}` : ''}\n </div>\n {!focus && f.summary.currencies?.length ? (\n <EmptyInline>{PICK_CURRENCY}</EmptyInline>\n ) : trend?.length ? (\n <GrowthChart\n data={trend.map((p) => ({\n date: p.date,\n count: p.total,\n }))}\n />\n ) : (\n <EmptyInline>No revenue in this window.</EmptyInline>\n )}\n </div>\n\n <div>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 12,\n marginBottom: 12,\n flexWrap: 'wrap',\n }}\n >\n <div className=\"adm-panel-title\" style={{ margin: 0 }}>\n Transactions\n </div>\n <Filters label=\"Filter transactions\">\n <SearchInput\n value={txnSearch}\n onChange={setTxnSearch}\n placeholder=\"Search reference / customer…\"\n />\n <FilterSelect\n value={txnType}\n onChange={setTxnType}\n options={[\n { value: '', label: 'All sources' },\n { value: 'order', label: 'Order' },\n { value: 'invoice', label: 'Invoice' },\n { value: 'booking', label: 'Booking' },\n { value: 'membership', label: 'Membership' },\n { value: 'subscription', label: 'Subscription' },\n { value: 'deposit', label: 'Deposit' },\n { value: 'tip', label: 'Tip' },\n { value: 'refund', label: 'Refund' },\n { value: 'payout', label: 'Payout' },\n ]}\n />\n </Filters>\n </div>\n <TransactionsTable\n rows={txns?.transactions ?? f.recentTransactions}\n />\n </div>\n </>\n }\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Customers tab\n// ---------------------------------------------------------------------------\n\n/** Compact panel listing top-spending customers. */\nfunction SpenderList({\n rows,\n currency,\n}: {\n rows: SpenderRow[];\n currency: string;\n}) {\n const max = Math.max(...rows.map((r) => r.totalSpent), 1);\n return (\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Top spenders</div>\n {rows.length === 0 ? (\n <div\n style={{\n color: 'var(--text-tertiary)',\n fontSize: 13,\n padding: '8px 0',\n }}\n >\n No paying customers yet.\n </div>\n ) : (\n rows.map((r) => (\n <div key={r.id} style={{ padding: '9px 0' }}>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n gap: 12,\n fontSize: 13,\n marginBottom: 6,\n }}\n >\n <span\n style={{\n fontWeight: 500,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {r.name ?? r.email}\n </span>\n <span\n style={{ color: 'var(--text-secondary)', whiteSpace: 'nowrap' }}\n >\n {moneyCur(r.totalSpent, currency)} · {num(r.totalOrders)} orders\n </span>\n </div>\n <div\n style={{\n height: 6,\n borderRadius: 4,\n background: 'var(--border-subtle)',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n width: `${Math.max(2, (r.totalSpent / max) * 100)}%`,\n height: '100%',\n borderRadius: 4,\n background: 'var(--accent-primary)',\n }}\n />\n </div>\n </div>\n ))\n )}\n </div>\n );\n}\n\nfunction CustomersTab({\n id,\n currency,\n range,\n}: {\n id: string;\n currency: string;\n range: DateRange;\n}) {\n const [search, setSearch] = useState('');\n const [type, setType] = useState('');\n const { data, isLoading, isError } = useTenantCustomers(id, {\n search: search || undefined,\n type: type || undefined,\n limit: 50,\n });\n const { data: insights } = useTenantCustomerInsights(id, {\n startDate: range.startDate,\n });\n if (isError) return <EmptyPanel>Failed to load customers.</EmptyPanel>;\n const rows: TenantCustomer[] = data?.members ?? [];\n const cur = insights?.currency ?? currency;\n\n const statItems: StatItem[] = insights\n ? [\n {\n label: 'Customers',\n value: num(insights.totalCustomers),\n hint: 'All-time count of customer records for this tenant, including registered, subscribers, leads and guests.',\n },\n {\n label: 'New · 30 days',\n value: num(insights.newCustomers30d),\n hint: 'Customers who first appeared in the last 30 days. This is a fixed 30-day metric and does not follow the range selector.',\n },\n {\n label: 'Paying',\n value: num(insights.payingCustomers),\n hint: 'Customers who have completed at least one paid order. The rest are leads, subscribers or guests.',\n },\n {\n label: 'Lifetime value',\n value: moneyCur(insights.lifetimeValue, cur),\n hint: 'Total amount paying customers have spent over their entire history with this tenant (all-time, not windowed).',\n },\n {\n label: 'Avg order value',\n value: moneyCur(insights.avgOrderValue, cur),\n hint: 'Average amount per paid order across all customers (lifetime spend ÷ total paid orders).',\n },\n {\n label: 'Repeat rate',\n value: pct(insights.repeatRate),\n hint: 'Share of paying customers who have placed more than one order. Higher means stronger retention.',\n },\n ]\n : [];\n\n return (\n <SubDataLayout\n summary={\n <>\n {insights && <StatsListPanel items={statItems} />}\n {insights && (\n <>\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Acquisition source</div>\n {insights.bySource.length ? (\n insights.bySource.map((s) => (\n <BarRow\n key={s.label}\n label={s.label}\n value={num(s.count)}\n fraction={\n insights.totalCustomers > 0\n ? s.count / insights.totalCustomers\n : 0\n }\n hint={`Customers first attributed to ${s.label}. Bar width is this source's share of all customers.`}\n />\n ))\n ) : (\n <EmptyInline>No source data yet.</EmptyInline>\n )}\n </div>\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Segments</div>\n {insights.byType.length ? (\n insights.byType.map((s) => (\n <BarRow\n key={s.label}\n label={s.label}\n value={num(s.count)}\n fraction={\n insights.totalCustomers > 0\n ? s.count / insights.totalCustomers\n : 0\n }\n hint={`Number of ${s.label} customers. Bar width is this segment's share of the total customer base.`}\n />\n ))\n ) : (\n <EmptyInline>No segment data yet.</EmptyInline>\n )}\n </div>\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Retention</div>\n <KeyRow\n label=\"Repeat customers\"\n value={num(insights.repeatCustomers)}\n hint=\"Customers who have placed more than one paid order.\"\n />\n <KeyRow\n label=\"Dormant · 60d+\"\n value={num(insights.dormantCustomers)}\n hint=\"Paying customers with no order in the last 60 days — candidates for win-back campaigns.\"\n />\n <KeyRow\n label=\"Avg orders / customer\"\n value={insights.avgOrdersPerCustomer.toFixed(1)}\n hint=\"Average number of paid orders per paying customer over their lifetime.\"\n />\n <KeyRow\n label=\"Marketing opt-in\"\n value={pct(insights.marketingOptInRate)}\n hint=\"Share of customers who consented to marketing communications.\"\n last\n />\n </div>\n </>\n )}\n </>\n }\n detail={\n <>\n {insights && (\n <>\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">\n New customers · {periodPhrase(range)}\n </div>\n <GrowthChart\n data={insights.signupsSeries}\n emptyLabel=\"No new customers in the selected period\"\n />\n </div>\n <SpenderList rows={insights.topSpenders} currency={cur} />\n </>\n )}\n <PanelToolbar\n search={search}\n onSearch={setSearch}\n searchPlaceholder=\"Search name / email…\"\n filter={{\n value: type,\n onChange: setType,\n options: [\n { value: '', label: 'All types' },\n { value: 'registered', label: 'Registered' },\n { value: 'subscriber', label: 'Subscriber' },\n { value: 'lead', label: 'Lead' },\n { value: 'guest', label: 'Guest' },\n ],\n }}\n />\n {isLoading ? (\n <AdmLoading label=\"Loading customers…\" />\n ) : rows.length === 0 ? (\n <EmptyPanel>No customers match this view.</EmptyPanel>\n ) : (\n <div className=\"adm-table-card\">\n <table style={tableStyles.table}>\n <thead>\n <tr style={tableStyles.headRow}>\n <th style={tableStyles.th}>Customer</th>\n <th style={tableStyles.th}>Type</th>\n <th style={tableStyles.th}>Status</th>\n <th style={tableStyles.th}>Orders</th>\n <th style={tableStyles.th}>Spent</th>\n <th style={tableStyles.th}>Last order</th>\n </tr>\n </thead>\n <tbody>\n {rows.map((c) => (\n <tr key={c.id}>\n <td style={tableStyles.cell}>\n <div style={{ fontWeight: 600 }}>{c.name ?? '—'}</div>\n <div\n style={{\n color: 'var(--text-tertiary)',\n fontSize: 12,\n }}\n >\n {c.email}\n </div>\n </td>\n <td style={tableStyles.cell}>\n <span style={{ textTransform: 'capitalize' }}>\n {c.type}\n </span>\n </td>\n <td style={tableStyles.cell}>\n <Badge\n variant={\n c.status === 'active' ? 'success' : 'secondary'\n }\n >\n {c.status}\n </Badge>\n </td>\n <td style={tableStyles.cell}>{num(c.totalOrders)}</td>\n <td style={tableStyles.cell}>\n {moneyCur(c.totalSpent, currency)}\n </td>\n <td style={tableStyles.cellMuted}>\n {c.lastOrderAt\n ? new Date(c.lastOrderAt).toLocaleDateString()\n : '—'}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </>\n }\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Products tab\n// ---------------------------------------------------------------------------\n\nconst PRODUCT_TYPE_LABELS: Record<string, string> = {\n product: 'Products',\n event: 'Events',\n booking: 'Bookings',\n subscription: 'Subscriptions',\n membership: 'Memberships',\n 'digital-file': 'Digital files',\n};\n\n/** Compact panel listing a ranked set of sellers (best / worst). */\nfunction SellerList({\n title,\n rows,\n currency,\n emptyLabel,\n}: {\n title: string;\n rows: SellerRow[];\n currency: string;\n emptyLabel: string;\n}) {\n const max = Math.max(...rows.map((r) => r.units), 1);\n return (\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">{title}</div>\n {rows.length === 0 ? (\n <div\n style={{\n color: 'var(--text-tertiary)',\n fontSize: 13,\n padding: '8px 0',\n }}\n >\n {emptyLabel}\n </div>\n ) : (\n rows.map((r) => (\n <div key={r.id} style={{ padding: '9px 0' }}>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n gap: 12,\n fontSize: 13,\n marginBottom: 6,\n }}\n >\n <span\n style={{\n fontWeight: 500,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {r.title}\n </span>\n <span\n style={{ color: 'var(--text-secondary)', whiteSpace: 'nowrap' }}\n >\n {num(r.units)} sold · {moneyCur(r.revenue, currency)}\n </span>\n </div>\n <div\n style={{\n height: 6,\n borderRadius: 4,\n background: 'var(--border-subtle)',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n width: `${Math.max(2, (r.units / max) * 100)}%`,\n height: '100%',\n borderRadius: 4,\n background: 'var(--accent-primary)',\n }}\n />\n </div>\n </div>\n ))\n )}\n </div>\n );\n}\n\nfunction ProductsTab({\n id,\n currency,\n range,\n}: {\n id: string;\n currency: string;\n range: DateRange;\n}) {\n const [search, setSearch] = useState('');\n const [type, setType] = useState('');\n const { data, isLoading, isError } = useTenantProducts(id, {\n search: search || undefined,\n type: type || undefined,\n });\n const { data: insights } = useTenantProductInsights(id, {\n startDate: range.startDate,\n });\n if (isError) return <EmptyPanel>Failed to load catalog.</EmptyPanel>;\n const items: TenantProduct[] = data?.items ?? [];\n const cur = insights?.currency ?? currency;\n\n const statItems: StatItem[] = insights\n ? [\n {\n label: 'Catalog items',\n value: num(insights.totalProducts),\n hint: 'Total number of products, events, bookings and other sellable items in the catalog.',\n },\n {\n label: 'Active',\n value: num(insights.activeProducts),\n hint: 'Items currently published and available for purchase on the storefront.',\n },\n {\n label: 'Catalog value',\n value: moneyCur(insights.catalogValue, cur),\n hint: 'Combined list price of every catalog item — the total retail value on offer, not inventory on hand.',\n },\n {\n label: 'Inventory value',\n value: moneyCur(insights.inventoryValue, cur),\n hint: 'Retail value of stock currently on hand (price × quantity in stock) for trackable items.',\n },\n {\n label: 'Units sold',\n value: num(insights.totalUnitsSold),\n hint: 'Total quantity sold across paid orders in the selected period.',\n },\n {\n label: 'Avg price',\n value: moneyCur(insights.avgPrice, cur),\n hint: 'Average list price across all catalog items.',\n },\n ]\n : [\n {\n label: 'Catalog items',\n value: num(data?.stats.total ?? 0),\n hint: 'Total number of items in the catalog.',\n },\n {\n label: 'Active',\n value: num(data?.stats.active ?? 0),\n hint: 'Items currently published and available for purchase.',\n },\n {\n label: 'Featured',\n value: num(data?.stats.featured ?? 0),\n hint: 'Items flagged as featured and given prominent placement on the storefront.',\n },\n {\n label: 'Low stock',\n value: num(data?.stats.lowStock ?? 0),\n hint: 'Items at or below their low-stock threshold and at risk of selling out.',\n },\n {\n label: 'Out of stock',\n value: num(data?.stats.outOfStock ?? 0),\n hint: 'Items with zero inventory that cannot currently be purchased.',\n },\n ];\n\n return (\n <SubDataLayout\n summary={\n <>\n <StatsListPanel items={statItems} />\n {insights && (\n <>\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Inventory health</div>\n <KeyRow\n label=\"Featured\"\n value={num(insights.featuredProducts)}\n hint=\"Items flagged as featured for prominent storefront placement.\"\n />\n <KeyRow\n label=\"Low stock\"\n value={num(insights.lowStock)}\n hint=\"Items at or below their low-stock threshold and at risk of selling out.\"\n />\n <KeyRow\n label=\"Out of stock\"\n value={num(insights.outOfStock)}\n hint=\"Items with zero inventory that cannot currently be purchased.\"\n />\n <KeyRow\n label=\"At-risk value\"\n value={moneyCur(insights.inventoryAtRiskValue, cur)}\n hint=\"Retail value of low- and out-of-stock items — potential sales at risk from stockouts.\"\n last\n />\n </div>\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Category mix</div>\n {insights.categories.length ? (\n insights.categories.map((c) => (\n <BarRow\n key={c.category}\n label={c.category}\n value={`${num(c.count)} · ${moneyCur(c.value, cur)}`}\n fraction={\n insights.catalogValue > 0\n ? c.value / insights.catalogValue\n : 0\n }\n hint={`${num(c.count)} items in ${c.category}. Bar width is this category's share of total catalog value.`}\n />\n ))\n ) : (\n <EmptyInline>No categories yet.</EmptyInline>\n )}\n </div>\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Featured performance</div>\n <KeyRow\n label=\"Featured items\"\n value={num(insights.featuredProducts)}\n hint=\"Number of items currently flagged as featured.\"\n />\n <KeyRow\n label=\"Featured units sold\"\n value={num(insights.featuredSellThrough.featuredUnits)}\n hint=\"Units sold from featured items in the selected period — measures whether featuring drives sales.\"\n />\n <KeyRow\n label=\"Non-featured units\"\n value={num(insights.featuredSellThrough.nonFeaturedUnits)}\n hint=\"Units sold from items that were not featured, for comparison.\"\n last\n />\n </div>\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Catalog snapshot</div>\n <KeyRow\n label=\"Catalog sold\"\n value={pct(insights.pctEverSold)}\n hint=\"Share of catalog items that have sold at least one unit, ever.\"\n />\n <KeyRow\n label=\"Never sold\"\n value={num(insights.deadStock)}\n hint=\"Items that have never recorded a sale — dead stock to review or retire.\"\n />\n <KeyRow\n label=\"Newest\"\n value={insights.newestProduct?.title ?? '—'}\n hint=\"The most recently created catalog item.\"\n />\n <KeyRow\n label=\"Last updated\"\n value={compactDate(\n insights.lastUpdatedProduct?.updatedAt ?? null,\n )}\n hint=\"When any catalog item was last edited — a signal of how actively the catalog is maintained.\"\n last\n />\n </div>\n </>\n )}\n </>\n }\n detail={\n <>\n {insights && (\n <>\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">\n Units sold · {periodPhrase(range)}\n </div>\n <GrowthChart\n data={insights.unitsSeries}\n emptyLabel=\"No sales in the selected period\"\n />\n </div>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(280px, 1fr))',\n gap: 16,\n }}\n >\n <SellerList\n title=\"Best sellers\"\n rows={insights.bestSellers}\n currency={cur}\n emptyLabel=\"No paid sales yet.\"\n />\n <SellerList\n title=\"Slowest movers\"\n rows={insights.worstSellers}\n currency={cur}\n emptyLabel=\"No paid sales yet.\"\n />\n </div>\n </>\n )}\n <PanelToolbar\n search={search}\n onSearch={setSearch}\n searchPlaceholder=\"Search title…\"\n filter={{\n value: type,\n onChange: setType,\n options: [\n { value: '', label: 'All types' },\n { value: 'product', label: 'Products' },\n { value: 'event', label: 'Events' },\n { value: 'booking', label: 'Bookings' },\n { value: 'subscription', label: 'Subscriptions' },\n { value: 'membership', label: 'Memberships' },\n { value: 'digital-file', label: 'Digital files' },\n ],\n }}\n />\n\n {isLoading ? (\n <AdmLoading label=\"Loading catalog…\" />\n ) : items.length === 0 ? (\n <EmptyPanel>No catalog items match this view.</EmptyPanel>\n ) : (\n <div className=\"adm-table-card\">\n <table style={tableStyles.table}>\n <thead>\n <tr style={tableStyles.headRow}>\n <th style={tableStyles.th}>Title</th>\n <th style={tableStyles.th}>Type</th>\n <th style={tableStyles.th}>Price</th>\n <th style={tableStyles.th}>Inventory</th>\n <th style={tableStyles.th}>Status</th>\n </tr>\n </thead>\n <tbody>\n {items.map((p) => (\n <tr key={p.id}>\n <td style={tableStyles.cell}>\n <div style={{ fontWeight: 600 }}>{p.title}</div>\n {p.category && (\n <div\n style={{\n color: 'var(--text-tertiary)',\n fontSize: 12,\n }}\n >\n {p.category}\n </div>\n )}\n </td>\n <td style={tableStyles.cellMuted}>\n {PRODUCT_TYPE_LABELS[p.type] ?? p.type}\n </td>\n <td style={tableStyles.cell}>\n {p.price != null\n ? moneyCur(p.price, p.currency ?? currency)\n : '—'}\n </td>\n <td style={tableStyles.cellMuted}>\n {p.trackInventory\n ? num((p.quantity ?? 0) - (p.reserved ?? 0))\n : '∞'}\n </td>\n <td style={tableStyles.cell}>\n <Badge variant={p.isActive ? 'success' : 'secondary'}>\n {p.isActive ? 'active' : 'inactive'}\n </Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </>\n }\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Invoices tab\n// ---------------------------------------------------------------------------\n\nfunction InvoicesTab({ id }: { id: string }) {\n const [search, setSearch] = useState('');\n const [status, setStatus] = useState('');\n const { data, isLoading, isError } = useTenantInvoices(id, {\n search: search || undefined,\n status: status || undefined,\n limit: 50,\n });\n if (isError) return <EmptyPanel>Failed to load invoices.</EmptyPanel>;\n const rows: TenantInvoice[] = data?.invoices ?? [];\n const s = data?.stats;\n // Naira unless the listed invoices all name another currency.\n const invoiceCurrency = sharedCurrency(rows) ?? 'NGN';\n const invoiceMoney = (n: number): string => moneyCur(n, invoiceCurrency);\n\n const statItems: StatItem[] = [\n {\n label: 'Revenue',\n value: invoiceMoney(s?.totalRevenue ?? 0),\n hint: 'Total amount collected from invoices that have been paid.',\n },\n {\n label: 'Outstanding',\n value: invoiceMoney(s?.totalOutstanding ?? 0),\n hint: 'Amount still owed across sent and overdue invoices that have not been paid.',\n },\n {\n label: 'Paid',\n value: num(s?.paid ?? 0),\n hint: 'Number of invoices settled in full.',\n },\n {\n label: 'Sent',\n value: num(s?.sent ?? 0),\n hint: 'Invoices issued to customers and awaiting payment.',\n },\n {\n label: 'Overdue',\n value: num(s?.overdue ?? 0),\n hint: 'Sent invoices past their due date and still unpaid.',\n },\n ];\n\n return (\n <SubDataLayout\n summary={<StatsListPanel items={statItems} />}\n detail={\n <>\n <PanelToolbar\n search={search}\n onSearch={setSearch}\n searchPlaceholder=\"Search invoice / customer…\"\n filter={{\n value: status,\n onChange: setStatus,\n options: [\n { value: '', label: 'All statuses' },\n { value: 'draft', label: 'Draft' },\n { value: 'sent', label: 'Sent' },\n { value: 'paid', label: 'Paid' },\n { value: 'overdue', label: 'Overdue' },\n { value: 'cancelled', label: 'Cancelled' },\n ],\n }}\n />\n\n {isLoading ? (\n <AdmLoading label=\"Loading invoices…\" />\n ) : rows.length === 0 ? (\n <EmptyPanel>No invoices match this view.</EmptyPanel>\n ) : (\n <div className=\"adm-table-card\">\n <table style={tableStyles.table}>\n <thead>\n <tr style={tableStyles.headRow}>\n <th style={tableStyles.th}>Invoice</th>\n <th style={tableStyles.th}>Customer</th>\n <th style={tableStyles.th}>Total</th>\n <th style={tableStyles.th}>Due</th>\n <th style={tableStyles.th}>Status</th>\n <th style={tableStyles.th}>Created</th>\n </tr>\n </thead>\n <tbody>\n {rows.map((inv) => (\n <tr key={inv.id}>\n <td style={tableStyles.cell}>#{inv.invoiceNumber}</td>\n <td style={tableStyles.cell}>\n {inv.customerName ?? inv.customerEmail ?? '—'}\n </td>\n <td style={tableStyles.cell}>\n {moneyCur(inv.total, inv.currency)}\n </td>\n <td style={tableStyles.cell}>\n {moneyCur(inv.amountDue, inv.currency)}\n </td>\n <td style={tableStyles.cell}>\n <Badge\n variant={\n inv.status === 'paid'\n ? 'success'\n : inv.status === 'overdue'\n ? 'secondary'\n : 'info'\n }\n >\n {inv.status}\n </Badge>\n </td>\n <td style={tableStyles.cellMuted}>\n {new Date(inv.createdAt).toLocaleDateString()}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </>\n }\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Loyalty tab\n// ---------------------------------------------------------------------------\n\nfunction LoyaltyTab({ id }: { id: string }) {\n const { data, isLoading, isError } = useTenantLoyalty(id);\n if (isError) return <EmptyPanel>Failed to load loyalty program.</EmptyPanel>;\n if (isLoading || !data) return <AdmLoading label=\"Loading loyalty…\" />;\n const { program, stats } = data;\n\n const statItems: StatItem[] = [\n {\n label: 'Members',\n value: num(stats.totalMembers),\n hint: 'Total customers enrolled in the loyalty program.',\n },\n {\n label: 'Active members',\n value: num(stats.activeMembers),\n hint: 'Members who have earned or redeemed points recently.',\n },\n {\n label: 'Points issued',\n value: num(stats.totalPointsIssued),\n hint: 'All loyalty points ever awarded to members.',\n },\n {\n label: 'Points redeemed',\n value: num(stats.totalPointsRedeemed),\n hint: 'Points members have spent on rewards. The difference from issued points is the outstanding liability.',\n },\n ];\n\n return (\n <SubDataLayout\n summary={<StatsListPanel items={statItems} />}\n detail={\n <div className=\"adm-panel\">\n <div className=\"adm-panel-title\">Program</div>\n {program ? (\n <>\n <KeyRow\n label=\"Name\"\n value={program.name}\n hint=\"The customer-facing name of the loyalty program.\"\n />\n <KeyRow\n label=\"Points unit\"\n value={program.pointsName}\n hint=\"What members' points are called (e.g. points, stars, coins).\"\n />\n <KeyRow\n label=\"Earn rate\"\n value={`${program.pointsPerCurrency} pts / unit`}\n hint=\"How many points a member earns per unit of currency spent.\"\n />\n <KeyRow\n label=\"Redeem rate\"\n value={`${program.currencyPerPoint} / pt`}\n hint=\"How much each point is worth when redeemed against a purchase.\"\n />\n <KeyRow\n label=\"Status\"\n value={program.isActive ? 'active' : 'inactive'}\n hint=\"Whether the program is currently running and accruing points.\"\n last\n />\n </>\n ) : (\n <EmptyInline>\n No loyalty program configured for this tenant.\n </EmptyInline>\n )}\n </div>\n }\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Discounts tab\n// ---------------------------------------------------------------------------\n\nfunction DiscountsTab({ id }: { id: string }) {\n const [search, setSearch] = useState('');\n const [status, setStatus] = useState('');\n const { data, isLoading, isError } = useTenantDiscounts(id, {\n search: search || undefined,\n status: status || undefined,\n limit: 50,\n });\n if (isError) return <EmptyPanel>Failed to load discounts.</EmptyPanel>;\n const rows: TenantDiscount[] = data?.discounts ?? [];\n return (\n <>\n <PanelToolbar\n search={search}\n onSearch={setSearch}\n searchPlaceholder=\"Search code / name…\"\n filter={{\n value: status,\n onChange: setStatus,\n options: [\n { value: '', label: 'All statuses' },\n { value: 'active', label: 'Active' },\n { value: 'scheduled', label: 'Scheduled' },\n { value: 'expired', label: 'Expired' },\n { value: 'disabled', label: 'Disabled' },\n ],\n }}\n />\n {isLoading ? (\n <AdmLoading label=\"Loading discounts…\" />\n ) : rows.length === 0 ? (\n <EmptyPanel>No discounts match this view.</EmptyPanel>\n ) : (\n <div className=\"adm-table-card\">\n <table style={tableStyles.table}>\n <thead>\n <tr style={tableStyles.headRow}>\n <th style={tableStyles.th}>Code</th>\n <th style={tableStyles.th}>Name</th>\n <th style={tableStyles.th}>Value</th>\n <th style={tableStyles.th}>Usage</th>\n <th style={tableStyles.th}>Status</th>\n </tr>\n </thead>\n <tbody>\n {rows.map((d) => (\n <tr key={d.id}>\n <td style={tableStyles.cell}>{d.code}</td>\n <td style={tableStyles.cell}>{d.name}</td>\n <td style={tableStyles.cell}>\n {d.discountType === 'percentage'\n ? `${d.value}%`\n : moneyCur(d.value, 'NGN')}\n </td>\n <td style={tableStyles.cellMuted}>\n {num(d.usageCount)}\n {d.usageLimit ? ` / ${num(d.usageLimit)}` : ''}\n </td>\n <td style={tableStyles.cell}>\n <Badge\n variant={\n d.isExpired\n ? 'secondary'\n : d.isValid\n ? 'success'\n : 'info'\n }\n >\n {d.status}\n </Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Settlements tab\n// ---------------------------------------------------------------------------\n\nfunction SettlementsTab({ id, range }: { id: string; range: DateRange }) {\n const { data, isLoading, isError } = useTenantSettlements(id, {\n limit: 25,\n startDate: range.startDate,\n endDate: range.endDate,\n });\n if (isError) return <EmptyPanel>Failed to load settlements.</EmptyPanel>;\n if (isLoading || !data) return <AdmLoading label=\"Loading settlements…\" />;\n const sum = data.summary;\n const cur = sum.currency || 'NGN';\n const banks: TenantBankAccount[] = data.bankAccounts ?? [];\n const rows: TenantSettlement[] = data.settlements ?? [];\n\n const statItems: StatItem[] = [\n {\n label: 'Settled',\n value: moneyCur(sum.totalSettled, cur),\n hint: 'Total amount successfully paid out to the tenant’s bank account in this window.',\n },\n {\n label: 'Pending',\n value: moneyCur(sum.totalPending, cur),\n hint: 'Payouts initiated but not yet confirmed as deposited.',\n },\n {\n label: 'Failed',\n value: moneyCur(sum.totalFailed, cur),\n hint: 'Payouts that could not be completed — usually a bank or account issue to investigate.',\n },\n {\n label: 'Platform fees',\n value: moneyCur(sum.platformFeesCollected, cur),\n hint: 'Fees Box retained from this tenant’s settlements over the window.',\n },\n {\n label: 'Payouts',\n value: num(sum.count),\n hint: 'Number of settlement payouts in this window.',\n },\n ];\n\n return (\n <SubDataLayout\n summary={\n <>\n <StatsListPanel items={statItems} />\n </>\n }\n detail={\n <div>\n <SubaccountsPanel banks={banks} />\n <div className=\"adm-panel-title\" style={{ marginBottom: 12 }}>\n Settlements\n </div>\n {rows.length === 0 ? (\n <EmptyPanel>No settlements yet for this tenant.</EmptyPanel>\n ) : (\n <div className=\"adm-table-card\">\n <table style={tableStyles.table}>\n <thead>\n <tr style={tableStyles.headRow}>\n <th style={tableStyles.th}>Gross</th>\n <th style={tableStyles.th}>Fees</th>\n <th style={tableStyles.th}>Net</th>\n <th style={tableStyles.th}>Destination</th>\n <th style={tableStyles.th}>Status</th>\n <th style={tableStyles.th}>Settled</th>\n </tr>\n </thead>\n <tbody>\n {rows.map((st) => (\n <tr key={st.id}>\n <td style={tableStyles.cell}>\n {moneyCur(st.grossAmount, st.currency)}\n </td>\n <td style={tableStyles.cellMuted}>\n {moneyCur(st.paystackFee + st.platformFee, st.currency)}\n </td>\n <td style={tableStyles.cell}>\n {moneyCur(st.netAmount, st.currency)}\n </td>\n <td style={tableStyles.cell}>\n {st.bankAccount\n ? `${st.bankAccount.bankName} ••••${st.bankAccount.accountNumber.slice(-4)}`\n : '—'}\n </td>\n <td style={tableStyles.cell}>\n <Badge\n variant={\n st.status === 'completed' || st.status === 'success'\n ? 'success'\n : st.status === 'failed'\n ? 'secondary'\n : 'info'\n }\n >\n {st.status}\n </Badge>\n </td>\n <td style={tableStyles.cellMuted}>\n {st.settledAt\n ? new Date(st.settledAt).toLocaleDateString()\n : '—'}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </div>\n }\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Subscriptions tab — recurring plans this tenant sells to its customers\n// ---------------------------------------------------------------------------\n\nfunction subStatusVariant(\n status: string,\n): 'success' | 'info' | 'warning' | 'secondary' {\n switch (status) {\n case 'active':\n return 'success';\n case 'non_renewing':\n return 'info';\n case 'attention':\n return 'warning';\n default:\n return 'secondary';\n }\n}\n\nfunction subStatusLabel(status: string): string {\n return status === 'non_renewing' ? 'non-renewing' : status;\n}\n\nfunction SubscriptionsTab({ id }: { id: string }) {\n const [status, setStatus] = useState('');\n const { data, isLoading, isError } = useTenantSubscriptions(id, {\n status: status || undefined,\n limit: 50,\n });\n if (isError) return <EmptyPanel>Failed to load subscriptions.</EmptyPanel>;\n if (isLoading || !data) return <AdmLoading label=\"Loading subscriptions…\" />;\n\n const stats = data.stats;\n const rows: TenantSubscription[] = data.subscriptions ?? [];\n const mrrCurrency = rows[0]?.currency || 'NGN';\n\n const statItems: StatItem[] = [\n {\n label: 'Active',\n value: num(stats.totalActive),\n hint: 'Subscriptions currently active and billing on schedule.',\n },\n {\n label: 'Non-renewing',\n value: num(stats.totalNonRenewing),\n hint: 'Active subscriptions set to end at the current period — they will not renew.',\n },\n {\n label: 'Cancelled',\n value: num(stats.totalCancelled),\n hint: 'Subscriptions that have been cancelled or have completed their term.',\n },\n {\n label: 'MRR',\n value: moneyCur(stats.monthlyRecurringRevenue, mrrCurrency),\n hint: 'Monthly recurring revenue — active subscription amounts normalised to a monthly value.',\n },\n ];\n\n return (\n <SubDataLayout\n summary={<StatsListPanel items={statItems} />}\n detail={\n <div>\n <PanelToolbar\n filter={{\n value: status,\n onChange: setStatus,\n options: [\n { value: '', label: 'All statuses' },\n { value: 'active', label: 'Active' },\n { value: 'non_renewing', label: 'Non-renewing' },\n { value: 'attention', label: 'Attention' },\n { value: 'cancelled', label: 'Cancelled' },\n { value: 'completed', label: 'Completed' },\n ],\n }}\n />\n {rows.length === 0 ? (\n <EmptyPanel>No subscriptions match this view.</EmptyPanel>\n ) : (\n <div className=\"adm-table-card\">\n <table style={tableStyles.table}>\n <thead>\n <tr style={tableStyles.headRow}>\n <th style={tableStyles.th}>Customer</th>\n <th style={tableStyles.th}>Plan</th>\n <th style={tableStyles.th}>Amount</th>\n <th style={tableStyles.th}>Status</th>\n <th style={tableStyles.th}>Next payment</th>\n <th style={tableStyles.th}>Payments</th>\n </tr>\n </thead>\n <tbody>\n {rows.map((s) => (\n <tr key={s.id}>\n <td style={tableStyles.cell}>\n {s.customer?.name || s.customerEmail}\n </td>\n <td style={tableStyles.cell}>{s.plan?.name ?? '—'}</td>\n <td style={tableStyles.cell}>\n {moneyCur(s.amount, s.currency)}\n {s.plan?.interval ? (\n <span\n style={{\n color: 'var(--text-tertiary)',\n fontSize: 12,\n }}\n >\n {' '}\n / {s.plan.interval}\n </span>\n ) : null}\n </td>\n <td style={tableStyles.cell}>\n <Badge variant={subStatusVariant(s.status)}>\n {subStatusLabel(s.status)}\n </Badge>\n </td>\n <td style={tableStyles.cellMuted}>\n {compactDate(s.nextPaymentDate ?? s.currentPeriodEnd)}\n </td>\n <td style={tableStyles.cellMuted}>\n {num(s.paymentsCount)}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </div>\n }\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// shared sub-components\n// ---------------------------------------------------------------------------\n\nfunction SearchInput({\n value,\n onChange,\n placeholder,\n}: {\n value: string;\n onChange: (v: string) => void;\n placeholder?: string;\n}) {\n return (\n <FilterSearch value={value} onChange={onChange} placeholder={placeholder} />\n );\n}\n\nfunction FilterSelect({\n value,\n onChange,\n options,\n}: {\n value: string;\n onChange: (v: string) => void;\n options: Array<{ value: string; label: string }>;\n}) {\n return (\n <AdmFilterSelect\n label=\"Filter\"\n value={value}\n onChange={onChange}\n options={options}\n />\n );\n}\n\nfunction PanelToolbar({\n title,\n search,\n onSearch,\n searchPlaceholder,\n filter,\n}: {\n title?: string;\n search?: string;\n onSearch?: (v: string) => void;\n searchPlaceholder?: string;\n filter?: {\n value: string;\n onChange: (v: string) => void;\n options: Array<{ value: string; label: string }>;\n };\n}) {\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 12,\n marginBottom: 12,\n flexWrap: 'wrap',\n }}\n >\n {title ? (\n <>\n <div className=\"adm-panel-title\" style={{ margin: 0 }}>\n {title}\n </div>\n <Filters label=\"Filter\">\n {onSearch && (\n <SearchInput\n value={search ?? ''}\n onChange={onSearch}\n placeholder={searchPlaceholder}\n />\n )}\n {filter && (\n <FilterSelect\n value={filter.value}\n onChange={filter.onChange}\n options={filter.options}\n />\n )}\n </Filters>\n </>\n ) : (\n <Filters label=\"Filter\">\n {onSearch && (\n <SearchInput\n value={search ?? ''}\n onChange={onSearch}\n placeholder={searchPlaceholder}\n />\n )}\n {filter && (\n <FilterSelect\n value={filter.value}\n onChange={filter.onChange}\n options={filter.options}\n />\n )}\n </Filters>\n )}\n </div>\n );\n}\n\nfunction KeyRow({\n label,\n value,\n hint,\n last,\n}: {\n label: string;\n value: string;\n hint?: string;\n last?: boolean;\n}) {\n return (\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n gap: 16,\n padding: '10px 0',\n borderBottom: last ? 'none' : '1px solid var(--border-subtle)',\n }}\n >\n <span\n style={{\n color: 'var(--text-secondary)',\n fontSize: 13.5,\n flexShrink: 0,\n }}\n >\n <HintLabel label={label} hint={hint} />\n </span>\n <span\n style={{\n fontWeight: 600,\n fontSize: 14,\n textAlign: 'right',\n minWidth: 0,\n }}\n >\n {value}\n </span>\n </div>\n );\n}\n\nfunction BarRow({\n label,\n value,\n fraction,\n hint,\n}: {\n label: string;\n value: string;\n fraction: number;\n hint?: string;\n}) {\n const w = Math.max(0, Math.min(1, fraction)) * 100;\n return (\n <div style={{ padding: '9px 0' }}>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: 13,\n marginBottom: 6,\n }}\n >\n <span style={{ textTransform: 'capitalize' }}>\n <HintLabel label={label} hint={hint} />\n </span>\n <span style={{ color: 'var(--text-secondary)' }}>{value}</span>\n </div>\n <div\n style={{\n height: 6,\n borderRadius: 4,\n background: 'var(--border-subtle)',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n width: `${w}%`,\n height: '100%',\n borderRadius: 4,\n background: 'var(--accent-primary)',\n }}\n />\n </div>\n </div>\n );\n}\n\nfunction FunnelBar({\n label,\n value,\n max,\n rate,\n hint,\n last,\n}: {\n label: string;\n value: number;\n max: number;\n rate?: number;\n hint?: string;\n last?: boolean;\n}) {\n const w = max > 0 ? Math.max(2, (value / max) * 100) : 0;\n return (\n <div style={{ padding: last ? '9px 0 0' : '9px 0' }}>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: 13,\n marginBottom: 6,\n }}\n >\n <span style={{ display: 'inline-flex', alignItems: 'center' }}>\n <HintLabel label={label} hint={hint} />\n </span>\n <span style={{ color: 'var(--text-secondary)' }}>\n {num(value)}\n {rate !== undefined ? ` · ${pct(rate)}` : ''}\n </span>\n </div>\n <div\n style={{\n height: 8,\n borderRadius: 4,\n background: 'var(--border-subtle)',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n width: `${w}%`,\n height: '100%',\n borderRadius: 4,\n background: 'var(--accent-primary)',\n }}\n />\n </div>\n </div>\n );\n}\n\nfunction EmptyPanel({ children }: { children: ReactNode }) {\n return (\n <div\n className=\"adm-panel\"\n style={{ color: 'var(--text-tertiary)', fontSize: 13 }}\n >\n {children}\n </div>\n );\n}\n\nfunction EmptyInline({ children }: { children: ReactNode }) {\n return (\n <div\n style={{\n color: 'var(--text-tertiary)',\n fontSize: 13,\n padding: '24px 0',\n textAlign: 'center',\n }}\n >\n {children}\n </div>\n );\n}\n\nfunction ActivityTable({\n orders,\n isLoading,\n empty = 'No orders yet for this tenant.',\n}: {\n orders?: TenantActivityOrder[];\n isLoading?: boolean;\n empty?: string;\n}) {\n if (isLoading) {\n return <AdmLoading label=\"Loading activity…\" />;\n }\n if (!orders || orders.length === 0) {\n return <EmptyPanel>{empty}</EmptyPanel>;\n }\n return (\n <div className=\"adm-table-card\">\n <table style={tableStyles.table}>\n <thead>\n <tr style={tableStyles.headRow}>\n <th style={tableStyles.th}>Order</th>\n <th style={tableStyles.th}>Customer</th>\n <th style={tableStyles.th}>Total</th>\n <th style={tableStyles.th}>Payment</th>\n <th style={tableStyles.th}>Paid by</th>\n <th style={tableStyles.th}>Status</th>\n <th style={tableStyles.th}>Date</th>\n </tr>\n </thead>\n <tbody>\n {orders.map((o) => (\n <tr key={o.id}>\n <td style={tableStyles.cell}>#{o.orderNumber}</td>\n <td style={tableStyles.cell}>\n {o.customerName ?? o.customerEmail}\n {o.customerName ? (\n <div style={{ fontSize: 12, color: 'var(--text-tertiary)' }}>\n {[o.customerEmail, o.customerPhone]\n .filter(Boolean)\n .join(' · ')}\n </div>\n ) : null}\n </td>\n <td style={tableStyles.cell}>{moneyCur(o.total, o.currency)}</td>\n <td style={tableStyles.cell}>\n <Badge\n variant={o.paymentStatus === 'paid' ? 'success' : 'secondary'}\n >\n {o.paymentStatus}\n </Badge>\n </td>\n <td style={tableStyles.cell}>\n {o.paymentMethod ?? (\n <span style={{ color: 'var(--text-tertiary)' }}>Not recorded</span>\n )}\n </td>\n <td style={tableStyles.cell}>\n <Badge\n variant={\n o.status === 'cancelled' || o.status === 'refunded'\n ? 'secondary'\n : 'info'\n }\n >\n {o.status}\n </Badge>\n </td>\n <td style={tableStyles.cellMuted}>\n {new Date(o.createdAt).toLocaleDateString()}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction TransactionsTable({ rows }: { rows?: Transaction[] }) {\n if (!rows || rows.length === 0) {\n return <EmptyPanel>No transactions yet for this tenant.</EmptyPanel>;\n }\n return (\n <div className=\"adm-table-card\">\n <table style={tableStyles.table}>\n <thead>\n <tr style={tableStyles.headRow}>\n <th style={tableStyles.th}>Reference</th>\n <th style={tableStyles.th}>Type</th>\n <th style={tableStyles.th}>Customer</th>\n <th style={tableStyles.th}>Amount</th>\n <th style={tableStyles.th}>Status</th>\n <th style={tableStyles.th}>Date</th>\n </tr>\n </thead>\n <tbody>\n {rows.map((t) => (\n <tr key={t.id}>\n <td style={tableStyles.cell}>{t.reference}</td>\n <td style={tableStyles.cell}>\n <span style={{ textTransform: 'capitalize' }}>{t.type}</span>\n </td>\n <td style={tableStyles.cell}>\n {t.customer?.name ?? t.customer?.email ?? '—'}\n </td>\n <td style={tableStyles.cell}>{moneyCur(t.amount, t.currency)}</td>\n <td style={tableStyles.cell}>\n <Badge\n variant={\n t.status === 'success'\n ? 'success'\n : t.status === 'failed' ||\n t.status === 'refunded' ||\n t.status === 'partially_refunded'\n ? 'secondary'\n : 'info'\n }\n >\n {t.status}\n </Badge>\n </td>\n <td style={tableStyles.cellMuted}>\n {new Date(t.createdAt).toLocaleDateString()}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Badge } from "@withpotter/ui-kit";
4
+ import { CopyText } from "./copy-text";
5
+ import styles from "./tenant-people.module.css";
6
+ const statusTone = (status) => status === "active" ? "success" : status === "failed" ? "error" : "warning";
7
+ function SubaccountsPanel({ banks }) {
8
+ return /* @__PURE__ */ jsxs("div", { className: "adm-panel", style: { marginBottom: 16 }, children: [
9
+ /* @__PURE__ */ jsx("div", { className: styles.title, children: "Subaccounts" }),
10
+ banks.length === 0 ? /* @__PURE__ */ jsx("p", { className: styles.muted, children: "No Paystack subaccount yet \u2014 this workspace hasn\u2019t added a payout bank account, so there is no ACCT code." }) : /* @__PURE__ */ jsx("div", { className: styles.tableWrap, children: /* @__PURE__ */ jsxs("table", { className: styles.table, children: [
11
+ /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
12
+ /* @__PURE__ */ jsx("th", { children: "Name" }),
13
+ /* @__PURE__ */ jsx("th", { children: "Bank details" }),
14
+ /* @__PURE__ */ jsx("th", { children: "Bank code" }),
15
+ /* @__PURE__ */ jsx("th", { children: "Split" }),
16
+ /* @__PURE__ */ jsx("th", { children: "Code" }),
17
+ /* @__PURE__ */ jsx("th", { children: "Status" })
18
+ ] }) }),
19
+ /* @__PURE__ */ jsx("tbody", { children: banks.map((b) => /* @__PURE__ */ jsxs("tr", { children: [
20
+ /* @__PURE__ */ jsxs("td", { children: [
21
+ b.accountName,
22
+ b.isDefault && /* @__PURE__ */ jsx(Badge, { variant: "info", className: styles.inlineBadge, children: "default" })
23
+ ] }),
24
+ /* @__PURE__ */ jsxs("td", { children: [
25
+ b.bankName,
26
+ " ",
27
+ /* @__PURE__ */ jsx(CopyText, { value: b.accountNumber })
28
+ ] }),
29
+ /* @__PURE__ */ jsx("td", { children: b.bankCode }),
30
+ /* @__PURE__ */ jsx("td", { children: b.splitPercentage != null ? `${b.splitPercentage}%` : "\u2014" }),
31
+ /* @__PURE__ */ jsx("td", { children: b.subaccountCode ? /* @__PURE__ */ jsx(CopyText, { value: b.subaccountCode }) : "\u2014" }),
32
+ /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("span", { title: b.failureReason ?? void 0, children: /* @__PURE__ */ jsx(Badge, { variant: statusTone(b.status), children: b.status }) }) })
33
+ ] }, b.id)) })
34
+ ] }) })
35
+ ] });
36
+ }
37
+ export {
38
+ SubaccountsPanel
39
+ };
40
+ //# sourceMappingURL=subaccounts-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/admin/tenants/%5Bid%5D/subaccounts-panel.tsx"],"sourcesContent":["'use client';\n\nimport { Badge } from '@withpotter/ui-kit';\nimport type { TenantBankAccount } from '@withpotter/lib/admin-api';\nimport { CopyText } from './copy-text';\nimport styles from './tenant-people.module.css';\n\nconst statusTone = (status: string) =>\n status === 'active' ? 'success' : status === 'failed' ? 'error' : 'warning';\n\n/** Paystack-style list of the bank subaccounts this workspace settles to. */\nexport function SubaccountsPanel({ banks }: { banks: TenantBankAccount[] }) {\n return (\n <div className=\"adm-panel\" style={{ marginBottom: 16 }}>\n <div className={styles.title}>Subaccounts</div>\n {banks.length === 0 ? (\n <p className={styles.muted}>\n No Paystack subaccount yet — this workspace hasn’t added a payout bank\n account, so there is no ACCT code.\n </p>\n ) : (\n <div className={styles.tableWrap}>\n <table className={styles.table}>\n <thead>\n <tr>\n <th>Name</th>\n <th>Bank details</th>\n <th>Bank code</th>\n <th>Split</th>\n <th>Code</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n {banks.map((b) => (\n <tr key={b.id}>\n <td>\n {b.accountName}\n {b.isDefault && (\n <Badge variant=\"info\" className={styles.inlineBadge}>\n default\n </Badge>\n )}\n </td>\n <td>\n {b.bankName} <CopyText value={b.accountNumber} />\n </td>\n <td>{b.bankCode}</td>\n <td>\n {b.splitPercentage != null ? `${b.splitPercentage}%` : '—'}\n </td>\n <td>\n {b.subaccountCode ? (\n <CopyText value={b.subaccountCode} />\n ) : (\n '—'\n )}\n </td>\n <td>\n <span title={b.failureReason ?? undefined}>\n <Badge variant={statusTone(b.status)}>{b.status}</Badge>\n </span>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";AAcM,cAUQ,YAVR;AAZN,SAAS,aAAa;AAEtB,SAAS,gBAAgB;AACzB,OAAO,YAAY;AAEnB,MAAM,aAAa,CAAC,WAClB,WAAW,WAAW,YAAY,WAAW,WAAW,UAAU;AAG7D,SAAS,iBAAiB,EAAE,MAAM,GAAmC;AAC1E,SACE,qBAAC,SAAI,WAAU,aAAY,OAAO,EAAE,cAAc,GAAG,GACnD;AAAA,wBAAC,SAAI,WAAW,OAAO,OAAO,yBAAW;AAAA,IACxC,MAAM,WAAW,IAChB,oBAAC,OAAE,WAAW,OAAO,OAAO,iIAG5B,IAEA,oBAAC,SAAI,WAAW,OAAO,WACrB,+BAAC,WAAM,WAAW,OAAO,OACvB;AAAA,0BAAC,WACC,+BAAC,QACC;AAAA,4BAAC,QAAG,kBAAI;AAAA,QACR,oBAAC,QAAG,0BAAY;AAAA,QAChB,oBAAC,QAAG,uBAAS;AAAA,QACb,oBAAC,QAAG,mBAAK;AAAA,QACT,oBAAC,QAAG,kBAAI;AAAA,QACR,oBAAC,QAAG,oBAAM;AAAA,SACZ,GACF;AAAA,MACA,oBAAC,WACE,gBAAM,IAAI,CAAC,MACV,qBAAC,QACC;AAAA,6BAAC,QACE;AAAA,YAAE;AAAA,UACF,EAAE,aACD,oBAAC,SAAM,SAAQ,QAAO,WAAW,OAAO,aAAa,qBAErD;AAAA,WAEJ;AAAA,QACA,qBAAC,QACE;AAAA,YAAE;AAAA,UAAS;AAAA,UAAC,oBAAC,YAAS,OAAO,EAAE,eAAe;AAAA,WACjD;AAAA,QACA,oBAAC,QAAI,YAAE,UAAS;AAAA,QAChB,oBAAC,QACE,YAAE,mBAAmB,OAAO,GAAG,EAAE,eAAe,MAAM,UACzD;AAAA,QACA,oBAAC,QACE,YAAE,iBACD,oBAAC,YAAS,OAAO,EAAE,gBAAgB,IAEnC,UAEJ;AAAA,QACA,oBAAC,QACC,8BAAC,UAAK,OAAO,EAAE,iBAAiB,QAC9B,8BAAC,SAAM,SAAS,WAAW,EAAE,MAAM,GAAI,YAAE,QAAO,GAClD,GACF;AAAA,WA3BO,EAAE,EA4BX,CACD,GACH;AAAA,OACF,GACF;AAAA,KAEJ;AAEJ;","names":[]}
@@ -0,0 +1,92 @@
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ import styles from "./tenant-activity.module.css";
5
+ function activitySource(entry) {
6
+ if (!entry.actor && !entry.actorAccountId) return "system";
7
+ return entry.byOwner ? "owner" : "team";
8
+ }
9
+ const SOURCE = {
10
+ owner: {
11
+ label: "Owner",
12
+ empty: "The owner hasn\u2019t done anything recorded yet."
13
+ },
14
+ team: { label: "Team", empty: "No team member activity yet." },
15
+ system: { label: "System", empty: "No automated activity yet." }
16
+ };
17
+ function Entry({ entry }) {
18
+ return /* @__PURE__ */ jsx("li", { className: styles.entry, children: /* @__PURE__ */ jsxs("span", { className: styles.body, children: [
19
+ /* @__PURE__ */ jsxs("span", { children: [
20
+ /* @__PURE__ */ jsx("strong", { children: entry.actor ?? "System" }),
21
+ " ",
22
+ entry.summary
23
+ ] }),
24
+ /* @__PURE__ */ jsx("time", { dateTime: entry.at, className: styles.when, children: new Date(entry.at).toLocaleString() })
25
+ ] }) });
26
+ }
27
+ function ActivityList({
28
+ entries,
29
+ empty,
30
+ tall = false
31
+ }) {
32
+ if (!entries.length) return /* @__PURE__ */ jsx("p", { className: styles.empty, children: empty });
33
+ return /* @__PURE__ */ jsx("ol", { className: styles.list, "data-tall": tall, children: entries.map((entry) => /* @__PURE__ */ jsx(Entry, { entry }, entry.id)) });
34
+ }
35
+ const FILTERS = ["all", "owner", "team", "system"];
36
+ function ActivityFeed({
37
+ entries,
38
+ onViewAll
39
+ }) {
40
+ const [filter, setFilter] = useState("all");
41
+ const shown = filter === "all" ? entries : entries.filter((e) => activitySource(e) === filter);
42
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
43
+ /* @__PURE__ */ jsxs("div", { className: styles.filters, role: "tablist", "aria-label": "Activity by", children: [
44
+ FILTERS.map((f) => /* @__PURE__ */ jsxs(
45
+ "button",
46
+ {
47
+ type: "button",
48
+ role: "tab",
49
+ "aria-selected": filter === f,
50
+ className: styles.filter,
51
+ onClick: () => setFilter(f),
52
+ children: [
53
+ f === "all" ? "All" : SOURCE[f].label,
54
+ " ",
55
+ /* @__PURE__ */ jsx("span", { className: styles.count, children: f === "all" ? entries.length : entries.filter((e) => activitySource(e) === f).length })
56
+ ]
57
+ },
58
+ f
59
+ )),
60
+ onViewAll && /* @__PURE__ */ jsx("button", { type: "button", className: styles.viewAll, onClick: onViewAll, children: "View all" })
61
+ ] }),
62
+ /* @__PURE__ */ jsx(
63
+ ActivityList,
64
+ {
65
+ entries: shown,
66
+ empty: filter === "all" ? "No recorded activity yet." : SOURCE[filter].empty
67
+ }
68
+ )
69
+ ] });
70
+ }
71
+ function ActivityColumns({
72
+ entries
73
+ }) {
74
+ return /* @__PURE__ */ jsx("div", { className: styles.columns, children: ["owner", "team", "system"].map((source) => {
75
+ const rows = entries.filter((e) => activitySource(e) === source);
76
+ return /* @__PURE__ */ jsxs("section", { className: "adm-panel", children: [
77
+ /* @__PURE__ */ jsxs("div", { className: styles.heading, children: [
78
+ SOURCE[source].label,
79
+ " activity \xB7 ",
80
+ rows.length
81
+ ] }),
82
+ /* @__PURE__ */ jsx(ActivityList, { entries: rows, empty: SOURCE[source].empty, tall: true })
83
+ ] }, source);
84
+ }) });
85
+ }
86
+ export {
87
+ ActivityColumns,
88
+ ActivityFeed,
89
+ ActivityList,
90
+ activitySource
91
+ };
92
+ //# sourceMappingURL=tenant-activity-feed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/admin/tenants/%5Bid%5D/tenant-activity-feed.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport type { TenantActivityEntry } from '@withpotter/lib/admin-tenant-setup-types';\nimport styles from './tenant-activity.module.css';\n\nexport type ActivitySource = 'owner' | 'team' | 'system';\n\n/** Owner, a team member, or the system (webhooks and scheduled jobs). */\nexport function activitySource(entry: TenantActivityEntry): ActivitySource {\n if (!entry.actor && !entry.actorAccountId) return 'system';\n\n return entry.byOwner ? 'owner' : 'team';\n}\n\nconst SOURCE = {\n owner: {\n label: 'Owner',\n empty: 'The owner hasn’t done anything recorded yet.',\n },\n team: { label: 'Team', empty: 'No team member activity yet.' },\n system: { label: 'System', empty: 'No automated activity yet.' },\n} as const;\n\nfunction Entry({ entry }: { entry: TenantActivityEntry }) {\n return (\n <li className={styles.entry}>\n <span className={styles.body}>\n <span>\n <strong>{entry.actor ?? 'System'}</strong> {entry.summary}\n </span>\n <time dateTime={entry.at} className={styles.when}>\n {new Date(entry.at).toLocaleString()}\n </time>\n </span>\n </li>\n );\n}\n\n/** A scrolling list: long histories stay inside their box. */\nexport function ActivityList({\n entries,\n empty,\n tall = false,\n}: {\n entries: TenantActivityEntry[];\n empty: string;\n tall?: boolean;\n}) {\n if (!entries.length) return <p className={styles.empty}>{empty}</p>;\n\n return (\n <ol className={styles.list} data-tall={tall}>\n {entries.map((entry) => (\n <Entry key={entry.id} entry={entry} />\n ))}\n </ol>\n );\n}\n\nconst FILTERS = ['all', 'owner', 'team', 'system'] as const;\n\n/** Recent activity with an Owner / Team / System filter. */\nexport function ActivityFeed({\n entries,\n onViewAll,\n}: {\n entries: TenantActivityEntry[];\n onViewAll?: () => void;\n}) {\n const [filter, setFilter] = useState<(typeof FILTERS)[number]>('all');\n const shown =\n filter === 'all'\n ? entries\n : entries.filter((e) => activitySource(e) === filter);\n\n return (\n <>\n <div className={styles.filters} role=\"tablist\" aria-label=\"Activity by\">\n {FILTERS.map((f) => (\n <button\n key={f}\n type=\"button\"\n role=\"tab\"\n aria-selected={filter === f}\n className={styles.filter}\n onClick={() => setFilter(f)}\n >\n {f === 'all' ? 'All' : SOURCE[f].label}{' '}\n <span className={styles.count}>\n {f === 'all'\n ? entries.length\n : entries.filter((e) => activitySource(e) === f).length}\n </span>\n </button>\n ))}\n {onViewAll && (\n <button type=\"button\" className={styles.viewAll} onClick={onViewAll}>\n View all\n </button>\n )}\n </div>\n <ActivityList\n entries={shown}\n empty={\n filter === 'all' ? 'No recorded activity yet.' : SOURCE[filter].empty\n }\n />\n </>\n );\n}\n\n/** The Activity tab: owner, team and system side by side. */\nexport function ActivityColumns({\n entries,\n}: {\n entries: TenantActivityEntry[];\n}) {\n return (\n <div className={styles.columns}>\n {(['owner', 'team', 'system'] as const).map((source) => {\n const rows = entries.filter((e) => activitySource(e) === source);\n\n return (\n <section key={source} className=\"adm-panel\">\n <div className={styles.heading}>\n {SOURCE[source].label} activity · {rows.length}\n </div>\n <ActivityList entries={rows} empty={SOURCE[source].empty} tall />\n </section>\n );\n })}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,94 @@
1
+ .filters {
2
+ display: flex;
3
+ flex-wrap: wrap;
4
+ align-items: center;
5
+ gap: 8px;
6
+ margin-bottom: 12px;
7
+ }
8
+ .filter {
9
+ display: inline-flex;
10
+ align-items: center;
11
+ gap: 4px;
12
+ height: var(--adm-control-h);
13
+ padding: 0 8px;
14
+ border: 1px solid var(--border-default);
15
+ border-radius: 10px;
16
+ background: var(--bg-base);
17
+ color: var(--text-secondary);
18
+ font-size: 13px;
19
+ cursor: pointer;
20
+ transition:
21
+ background var(--adm-fast),
22
+ color var(--adm-fast);
23
+ }
24
+ .filter:hover {
25
+ background: var(--adm-hover);
26
+ color: var(--text-primary);
27
+ }
28
+ .filter[aria-selected='true'] {
29
+ border-color: var(--adm-tint-line);
30
+ background: var(--adm-tint);
31
+ color: var(--adm-tint-ink);
32
+ }
33
+ .filter[aria-selected='true'] .count {
34
+ color: var(--adm-tint-ink);
35
+ }
36
+ .count {
37
+ color: var(--text-tertiary);
38
+ }
39
+ .viewAll {
40
+ margin-left: auto;
41
+ border: 0;
42
+ background: transparent;
43
+ color: var(--accent-ink, var(--accent-primary));
44
+ font-size: 12.5px;
45
+ cursor: pointer;
46
+ }
47
+ /* Fixed height: a long history scrolls here instead of pushing the page. */
48
+ .list {
49
+ display: grid;
50
+ gap: 2px;
51
+ max-height: 320px;
52
+ margin: 0;
53
+ padding: 0 4px 0 0;
54
+ overflow-y: auto;
55
+ list-style: none;
56
+ overscroll-behavior: contain;
57
+ }
58
+ .list[data-tall='true'] {
59
+ max-height: 560px;
60
+ }
61
+ .entry {
62
+ padding: 8px 0;
63
+ border-bottom: 1px solid var(--border-subtle);
64
+ font-size: 13px;
65
+ }
66
+ .body {
67
+ display: grid;
68
+ gap: 2px;
69
+ min-width: 0;
70
+ }
71
+ .when {
72
+ color: var(--text-tertiary);
73
+ font-size: 12px;
74
+ }
75
+ .empty {
76
+ margin: 0;
77
+ color: var(--text-tertiary);
78
+ font-size: 13px;
79
+ }
80
+ .heading {
81
+ display: flex;
82
+ align-items: center;
83
+ gap: 6px;
84
+ margin-bottom: 10px;
85
+ color: var(--text-secondary);
86
+ font-size: 13px;
87
+ font-weight: 600;
88
+ }
89
+ .columns {
90
+ display: grid;
91
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
92
+ gap: 16px;
93
+ align-items: start;
94
+ }