@feedmepos/mf-connect 0.1.98-beta.72 → 0.1.98-beta.74

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 (123) hide show
  1. package/dist/{App-DpYceiwG.js → App-COUNgNnC.js} +493 -474
  2. package/dist/{AuditLogs-CG98b2qE.js → AuditLogs-CY45tdqr.js} +14 -13
  3. package/dist/{Bin-vdipv2fF.js → Bin-COrX2Oq4.js} +8 -8
  4. package/dist/{Broadcast-ChwVqheE.js → Broadcast-BQxJ8Edf.js} +89 -86
  5. package/dist/{CampaignAnalytic-4PHO849x.js → CampaignAnalytic-CSYrBckT.js} +7 -7
  6. package/dist/{CampaignTypeDialog.vue_vue_type_script_setup_true_lang-DmnN4pjm.js → CampaignTypeDialog.vue_vue_type_script_setup_true_lang-DQUQxU1_.js} +7 -6
  7. package/dist/{Card-B6ol3PQw.js → Card-62iX4uef.js} +24 -23
  8. package/dist/{Collections-DodNIUr1.js → Collections-BxexBaGi.js} +8 -8
  9. package/dist/{Credit-CJQyAZYw.js → Credit-B5fLK5ot.js} +12 -12
  10. package/dist/{DateRangeChip.vue_vue_type_script_setup_true_lang--FqHJ7Ez.js → DateRangeChip.vue_vue_type_script_setup_true_lang-C738fOnK.js} +1 -1
  11. package/dist/{EditCampaignSheet.vue_vue_type_script_setup_true_lang-CA31QP-A.js → EditCampaignSheet.vue_vue_type_script_setup_true_lang-CloubCwR.js} +547 -497
  12. package/dist/{EffectSheet.vue_vue_type_style_index_0_lang-DkKhdp7G.js → EffectSheet.vue_vue_type_style_index_0_lang-tFwP9_hm.js} +6 -6
  13. package/dist/{Experience-iLAKddx_.js → Experience-BReFp_Dz.js} +87 -84
  14. package/dist/{FileSaver.min-w_ExQ0py.js → FileSaver.min-o09GwL8H.js} +1 -1
  15. package/dist/{Game-DWdUbsAg.js → Game-DTDVEBrO.js} +13 -13
  16. package/dist/{GiftCardSetup-DnQ5vwxu.js → GiftCardSetup-CP7Pdqcb.js} +10 -10
  17. package/dist/GoalPickerPanel.vue_vue_type_script_setup_true_lang-DzV35QnL.js +417 -0
  18. package/dist/Goals-BNspliQP.js +244 -0
  19. package/dist/{Grab-CFLRHs5w.js → Grab-C3xNIYzE.js} +9 -9
  20. package/dist/{ImageInput.vue_vue_type_script_setup_true_lang-uQJvjvTe.js → ImageInput.vue_vue_type_script_setup_true_lang-BidKqIgw.js} +1 -1
  21. package/dist/{Index-CUy4z2tS.js → Index-CRlr03xg.js} +10 -10
  22. package/dist/{LocationPicker.vue_vue_type_script_setup_true_lang-hKJ41Fe_.js → LocationPicker.vue_vue_type_script_setup_true_lang-_YyfSHpE.js} +1 -1
  23. package/dist/{LottieAnimation.vue_vue_type_script_setup_true_lang-BDmtqTVC.js → LottieAnimation.vue_vue_type_script_setup_true_lang-CMfRL6Ef.js} +1 -1
  24. package/dist/{LoyaltyDashboard-C5o7KriA.js → LoyaltyDashboard-BQpKd2JC.js} +1213 -1170
  25. package/dist/{MainLayout-Dt0ywph3.js → MainLayout-BIVZ2S6v.js} +3 -3
  26. package/dist/{Marketing-BHwxzBZ0.js → Marketing-8SvgFvTs.js} +4 -4
  27. package/dist/{MarketingMaterialEdit-B6k4ceGx.js → MarketingMaterialEdit-DXaM4RKu.js} +6 -6
  28. package/dist/{Member-DcPZfTj6.js → Member-DucF8ody.js} +7 -7
  29. package/dist/{MemberDetailSheet.vue_vue_type_script_setup_true_lang-CiiBrlHY.js → MemberDetailSheet.vue_vue_type_script_setup_true_lang-CMQ1b_BI.js} +26 -25
  30. package/dist/{MemberImportHistory-DmPMuu1g.js → MemberImportHistory-BB-pNBDA.js} +7 -7
  31. package/dist/{MemberList-f9JejfNW.js → MemberList-CazaLinm.js} +14 -14
  32. package/dist/{MemberTransactions-D1YSXeX-.js → MemberTransactions-0PaBQaYk.js} +1 -1
  33. package/dist/{MessageInput.vue_vue_type_script_setup_true_lang-freeE-DP.js → MessageInput.vue_vue_type_script_setup_true_lang-Dv2rIoW2.js} +10 -10
  34. package/dist/{MetricInfoTooltip.vue_vue_type_script_setup_true_lang-m7ytg0ok.js → MetricInfoTooltip.vue_vue_type_script_setup_true_lang-DWn3ajhn.js} +1 -1
  35. package/dist/{Mission-BaaEl5BV.js → Mission-DxH1u9Ps.js} +84 -81
  36. package/dist/{Overview-CviY55Gs.js → Overview-BcDJv-LJ.js} +4 -4
  37. package/dist/{Overview-fx-0E3b8.js → Overview-vepmOail.js} +22 -21
  38. package/dist/{Point-BfqtflbC.js → Point-LgZ_UrwI.js} +108 -99
  39. package/dist/{Promotion-Be2ogRYt.js → Promotion-CC6Drl2T.js} +96 -93
  40. package/dist/{Queue-CLSUL-Cx.js → Queue-CeYuqidN.js} +14 -13
  41. package/dist/{Record-CpTMQT7B.js → Record-B17ZYsb5.js} +9 -9
  42. package/dist/{Review-DzSDx7dY.js → Review-D6yhv3J7.js} +2 -2
  43. package/dist/{ReviewFacebookCallback-CvbPJADM.js → ReviewFacebookCallback-BAB4epr8.js} +5 -5
  44. package/dist/{ReviewGoogleCallback-DJlqMbh3.js → ReviewGoogleCallback-CZccpOLv.js} +5 -5
  45. package/dist/{Reward-DJOmd6Z5.js → Reward-PdgtYMnB.js} +16 -16
  46. package/dist/{RewardGroup.vue_vue_type_script_setup_true_lang-DY9fYxwc.js → RewardGroup.vue_vue_type_script_setup_true_lang-CiVHQa5M.js} +25 -24
  47. package/dist/{RuleGroup.vue_vue_type_script_setup_true_lang-BgYK4hpo.js → RuleGroup.vue_vue_type_script_setup_true_lang-_rUcf5lG.js} +16 -15
  48. package/dist/{Segment-G6xmeEaq.js → Segment-DVK6xqb9.js} +27 -26
  49. package/dist/{SendCollectionSheet.vue_vue_type_script_setup_true_lang-C3O0biLZ.js → SendCollectionSheet.vue_vue_type_script_setup_true_lang-CiR-d0s-.js} +16 -15
  50. package/dist/{SendVoucherSheet.vue_vue_type_script_setup_true_lang-CWP5sGT7.js → SendVoucherSheet.vue_vue_type_script_setup_true_lang-CkPnwcE1.js} +4 -4
  51. package/dist/{Setting-CKp441AW.js → Setting-D9x8t85J.js} +14 -14
  52. package/dist/{SettingAdvertisements-C4Uf-DgK.js → SettingAdvertisements-VUfOdSPw.js} +12 -12
  53. package/dist/{Settings-CTvMVwp6.js → Settings-B_cbux1z.js} +5 -5
  54. package/dist/{Store-Bzei6Xev.js → Store-BmMCgHeP.js} +28 -27
  55. package/dist/{StoreRewards-DMQNIpF5.js → StoreRewards-D_TSVQMf.js} +15 -15
  56. package/dist/{StoreTransactions.vue_vue_type_script_setup_true_lang-mm1jbcvo.js → StoreTransactions.vue_vue_type_script_setup_true_lang-qMRV_p8H.js} +29 -28
  57. package/dist/{TargetLocationInput.vue_vue_type_script_setup_true_lang-BspBXIO2.js → TargetLocationInput.vue_vue_type_script_setup_true_lang-DKOE5bcU.js} +2 -2
  58. package/dist/{Tier-BN32RwYr.js → Tier-BNQ_RmZV.js} +914 -922
  59. package/dist/{Title-BIhgfRUI.js → Title-DHicIYnB.js} +24 -23
  60. package/dist/{Transaction-CPjA7IN9.js → Transaction-B57Begy_.js} +2 -2
  61. package/dist/{UserRuleGroup.vue_vue_type_script_setup_true_lang-DSutMvfk.js → UserRuleGroup.vue_vue_type_script_setup_true_lang-Cw852iqb.js} +6 -6
  62. package/dist/Voucher-DIZfWgdX.js +837 -0
  63. package/dist/{VoucherEditor.vue_vue_type_script_setup_true_lang-B-IwtPvx.js → VoucherEditor.vue_vue_type_script_setup_true_lang-BhYXVG4z.js} +12 -12
  64. package/dist/{ZodTextField.vue_vue_type_script_setup_true_lang-Ce9xPwqA.js → ZodTextField.vue_vue_type_script_setup_true_lang-RnvpoPAb.js} +2 -2
  65. package/dist/{app-DAtx6aZ4.js → app-D59Y5Pmz.js} +1698 -1374
  66. package/dist/app.js +1 -1
  67. package/dist/{base.export-BtRC4aWM.js → base.export-Bp2NvmoR.js} +2 -2
  68. package/dist/{business-BZUIs8Ub.js → business-CZnoeYYk.js} +1 -1
  69. package/dist/{campaign-B6I6PuY4.js → campaign-C0od4X1k.js} +2 -2
  70. package/dist/{campaign-DKjBjV2k.js → campaign-CXR35buF.js} +103 -101
  71. package/dist/{campaign.enum-BQy3e845.js → campaign.enum-DlrjqgBa.js} +1 -1
  72. package/dist/{campaign.fn--qVJ3jeH.js → campaign.fn-bEy0au5e.js} +39 -39
  73. package/dist/{collectible.enum-vcvRFGl0.js → collectible.enum-Czi69PBO.js} +1 -1
  74. package/dist/{collection.fn-C3bMPBkC.js → collection.fn-DzPeFXPq.js} +2 -2
  75. package/dist/{currency--R6VPInw.js → currency-DktN5oXx.js} +1 -1
  76. package/dist/{duplicateCampaign-aIsX9cCi.js → duplicateCampaign-Dc_9ZYk5.js} +2 -2
  77. package/dist/{effect-CbjmtRph.js → effect-KY41iVGx.js} +1 -1
  78. package/dist/{email-addresses-DZKMnoKf.js → email-addresses-CRGGbqZn.js} +2 -2
  79. package/dist/{helper-BGqw2-RO.js → helper-BT8y_Hpb.js} +1 -1
  80. package/dist/{index-DcA0B-Y5.js → index-0awpDQm_.js} +1109 -32
  81. package/dist/{index-C22GPEM-.js → index-11j23Lx1.js} +1 -1
  82. package/dist/{index-CVvSd60O.js → index-377HHaUi.js} +1 -1
  83. package/dist/{index-CXL5WAH0.js → index-B30DDvin.js} +3 -3
  84. package/dist/{index-CVYbfRGO.js → index-BE8jnf9X.js} +1 -1
  85. package/dist/{index-FnsjvtSo.js → index-BWR1QjWQ.js} +5 -5
  86. package/dist/{index-v8Zv-2ko.js → index-BZnzbUL3.js} +10 -9
  87. package/dist/{index-Bb4TieR_.js → index-BhJpa8K-.js} +3 -3
  88. package/dist/{index-kkhrPH6s.js → index-BzKHBymK.js} +2 -2
  89. package/dist/{index-D-P90w8K.js → index-CMJp7VdE.js} +1 -1
  90. package/dist/{index-7TKoSEJ2.js → index-CTPFlKiY.js} +1124 -1124
  91. package/dist/{index-D_o9LsHU.js → index-CTe-H50U.js} +3 -3
  92. package/dist/{index-LnCoUCnx.js → index-CYgzVl3H.js} +3 -3
  93. package/dist/index-ClNPGM0y.js +166 -0
  94. package/dist/{index-LlFZ5kxi.js → index-D-V84VLW.js} +131 -119
  95. package/dist/{index-BbpqZrkB.js → index-D2FgYlbx.js} +1 -1
  96. package/dist/{index-ClP7Xy6Q.js → index-DiicsY5E.js} +1 -1
  97. package/dist/{index-BWlfW4Kr.js → index-E4B5H1FX.js} +2 -2
  98. package/dist/{index-B9DM5Vuv.js → index-G8qEVB7S.js} +2 -2
  99. package/dist/{index.esm2017-DO7bbE7J.js → index.esm2017-DKzsf5EJ.js} +1 -1
  100. package/dist/{loading-CzWOx4tE.js → loading-AuVL4WdD.js} +1 -1
  101. package/dist/{lodash-B_gr6Ayu.js → lodash-Bm8ZbAXg.js} +1 -1
  102. package/dist/{member-import-BxCrd9tq.js → member-import-Kq5CMrPF.js} +1 -1
  103. package/dist/{membership-ILB4aB4h.js → membership-8f9xLURB.js} +3 -3
  104. package/dist/{money-CpIK1N_r.js → money-JRN61MHj.js} +1 -1
  105. package/dist/{number-leVwmDCm.js → number-Dd6DRScj.js} +1 -1
  106. package/dist/{objectid-8hKuNcMN.js → objectid-_tuwJN_b.js} +2 -2
  107. package/dist/onboarding-DOPR1c3u.js +129 -0
  108. package/dist/onboardingSetup-DOR-OW92.js +17 -0
  109. package/dist/{plugins-DLIgnFIF.js → plugins-DPFr2tq7.js} +3 -3
  110. package/dist/{reward-DqT0zF01.js → reward-B-yDjlsA.js} +1 -1
  111. package/dist/{rule-DBtMGLxD.js → rule-DRN4bolS.js} +19 -18
  112. package/dist/{template-CYKGCWY4.js → template-7UtS_hVI.js} +6 -6
  113. package/dist/{timezone-Brs5nrTL.js → timezone-BmZfPTab.js} +1 -1
  114. package/dist/{transaction.fn-0ZZcVp-j.js → transaction.fn-C9WOWjoC.js} +2 -2
  115. package/dist/{trigger-LhNre1L9.js → trigger-BDKxlupM.js} +5 -5
  116. package/dist/{useMarketingMaterialActions-DbDRMmhM.js → useMarketingMaterialActions-DJ7__20D.js} +3 -3
  117. package/dist/{usePagination-DmZX0V64.js → usePagination-Czb6ZvSX.js} +1 -1
  118. package/dist/{user-CBPsvnx9.js → user-C-y46MEn.js} +1 -1
  119. package/dist/{vue-i18n-BPeSHE3c.js → vue-i18n-l6QdWh8z.js} +339 -339
  120. package/dist/{xlsx-Cm3vGmLN.js → xlsx-Dbm5Y1eY.js} +1 -1
  121. package/dist/{zod-GTEcy37q.js → zod-DciqV0cq.js} +1 -1
  122. package/package.json +1 -1
  123. package/dist/Voucher-CGJtn9bC.js +0 -444
@@ -1,33 +1,35 @@
1
- import { defineComponent as Z, resolveComponent as M, openBlock as c, createBlock as V, withCtx as U, createElementVNode as a, toDisplayString as r, unref as o, createElementBlock as d, Fragment as I, renderList as J, normalizeClass as T, createVNode as h, withKeys as Ke, withModifiers as qe, createCommentVNode as Y, createTextVNode as be, normalizeStyle as Ct, mergeModels as Ft, useModel as At, ref as S, computed as F, watch as ze, onBeforeUnmount as Dt, isRef as nt, nextTick as ht, reactive as kt, onMounted as It } from "vue";
2
- import { m as Ce } from "./index-CVYbfRGO.js";
3
- import { g as K, S as Lt, b as Ot, c as Et } from "./index-B9DM5Vuv.js";
4
- import { c as Pt } from "./index-kkhrPH6s.js";
5
- import { u as Q } from "./vue-i18n-BPeSHE3c.js";
6
- import { _ as he } from "./MetricInfoTooltip.vue_vue_type_script_setup_true_lang-m7ytg0ok.js";
7
- import { h as Tt } from "./moment-D7p2TMB-.js";
8
- import { m as Bt } from "./index-BWlfW4Kr.js";
9
- import { _ as vt } from "./FilterChip.vue_vue_type_script_setup_true_lang-3bH-tZAm.js";
10
- import { _ as lt } from "./DateRangeChip.vue_vue_type_script_setup_true_lang--FqHJ7Ez.js";
11
- import { _ as Nt } from "./MemberDetailSheet.vue_vue_type_script_setup_true_lang-CiiBrlHY.js";
12
- import { c as Ut } from "./plugins-DLIgnFIF.js";
13
- import { t as zt } from "./money-CpIK1N_r.js";
14
- import { u as Vt } from "./loading-CzWOx4tE.js";
15
- import { u as jt } from "./business-BZUIs8Ub.js";
16
- import { C as pt } from "./timezone-Brs5nrTL.js";
17
- import { useCoreStore as Kt } from "@feedmepos/mf-common";
18
- const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-en-body-md-600" }, Ht = {
1
+ import { defineComponent as Z, resolveComponent as M, openBlock as c, createBlock as N, withCtx as U, createElementVNode as a, toDisplayString as r, unref as o, createElementBlock as d, Fragment as k, renderList as W, normalizeClass as T, createVNode as f, withKeys as Ge, withModifiers as Je, createCommentVNode as z, createTextVNode as ge, normalizeStyle as Pt, mergeModels as Bt, useModel as Tt, ref as S, computed as $, watch as Ye, onBeforeUnmount as Nt, isRef as lt, nextTick as xt, reactive as Ut, onMounted as zt } from "vue";
2
+ import { m as De } from "./index-BE8jnf9X.js";
3
+ import { g as K, S as Vt, b as jt, c as Kt } from "./index-G8qEVB7S.js";
4
+ import { c as qt } from "./index-BzKHBymK.js";
5
+ import { u as Q } from "./vue-i18n-l6QdWh8z.js";
6
+ import { _ as xe } from "./MetricInfoTooltip.vue_vue_type_script_setup_true_lang-DWn3ajhn.js";
7
+ import { h as Yt } from "./moment-D7p2TMB-.js";
8
+ import { m as Ht } from "./index-E4B5H1FX.js";
9
+ import { _ as wt } from "./FilterChip.vue_vue_type_script_setup_true_lang-3bH-tZAm.js";
10
+ import { _ as it } from "./DateRangeChip.vue_vue_type_script_setup_true_lang-C738fOnK.js";
11
+ import { _ as Wt } from "./MemberDetailSheet.vue_vue_type_script_setup_true_lang-CMQ1b_BI.js";
12
+ import { c as Gt, n as ht } from "./plugins-DPFr2tq7.js";
13
+ import { t as Jt } from "./money-JRN61MHj.js";
14
+ import { u as Zt } from "./loading-AuVL4WdD.js";
15
+ import { u as Qt } from "./business-CZnoeYYk.js";
16
+ import { C as vt } from "./timezone-BmZfPTab.js";
17
+ import { useCoreStore as Xt } from "@feedmepos/mf-common";
18
+ import { _ as ea, a as ta } from "./GoalPickerPanel.vue_vue_type_script_setup_true_lang-DzV35QnL.js";
19
+ import { u as aa, a as oa } from "./onboarding-DOPR1c3u.js";
20
+ const sa = { class: "flex items-center mb-16" }, ra = { class: "flex-1 fm-typo-en-body-md-600" }, na = {
19
21
  key: 0,
20
22
  class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary py-12"
21
- }, Wt = {
23
+ }, la = {
22
24
  key: 1,
23
25
  class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary py-12"
24
- }, Gt = {
26
+ }, ia = {
25
27
  key: 2,
26
28
  class: "flex flex-col"
27
- }, Jt = { class: "flex-1 min-w-0" }, Zt = { class: "fm-typo-en-body-sm-600 whitespace-nowrap overflow-hidden text-ellipsis" }, Qt = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, Xt = { class: "text-right flex-shrink-0" }, ea = { class: "fm-typo-en-body-lg-600" }, ta = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, aa = {
29
+ }, ca = { class: "flex-1 min-w-0" }, da = { class: "fm-typo-en-body-sm-600 whitespace-nowrap overflow-hidden text-ellipsis" }, ma = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, ua = { class: "text-right flex-shrink-0" }, ya = { class: "fm-typo-en-body-lg-600" }, pa = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, ba = {
28
30
  key: 3,
29
31
  class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary py-12"
30
- }, oa = /* @__PURE__ */ Z({
32
+ }, fa = /* @__PURE__ */ Z({
31
33
  __name: "CampaignActivityList",
32
34
  props: {
33
35
  campaigns: {},
@@ -37,45 +39,45 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
37
39
  setup(e) {
38
40
  const { t: s } = Q();
39
41
  return (t, n) => {
40
- const l = M("FmCard");
41
- return c(), V(l, {
42
+ const i = M("FmCard");
43
+ return c(), N(i, {
42
44
  variant: "outlined",
43
45
  class: "p-24"
44
46
  }, {
45
47
  default: U(() => [
46
- a("div", qt, [
47
- a("div", Yt, r(o(s)("connect.loyalty.dashboard.campaigns.title")), 1)
48
+ a("div", sa, [
49
+ a("div", ra, r(o(s)("connect.loyalty.dashboard.campaigns.title")), 1)
48
50
  ]),
49
- e.loading ? (c(), d("div", Ht, r(o(s)("connect.loyalty.dashboard.campaigns.loading")), 1)) : e.error ? (c(), d("div", Wt, r(o(s)("connect.loyalty.dashboard.campaigns.error")), 1)) : e.campaigns.length ? (c(), d("div", Gt, [
50
- (c(!0), d(I, null, J(e.campaigns, (y) => (c(), d("div", {
51
+ e.loading ? (c(), d("div", na, r(o(s)("connect.loyalty.dashboard.campaigns.loading")), 1)) : e.error ? (c(), d("div", la, r(o(s)("connect.loyalty.dashboard.campaigns.error")), 1)) : e.campaigns.length ? (c(), d("div", ia, [
52
+ (c(!0), d(k, null, W(e.campaigns, (y) => (c(), d("div", {
51
53
  key: y.id,
52
54
  class: "flex items-start gap-8 py-12 border-b border-fm-color-neutral-gray-100 last:border-b-0"
53
55
  }, [
54
56
  a("div", {
55
57
  class: T(["w-[7px] h-[7px] mt-4 rounded-full bg-current flex-shrink-0", y.statusClass])
56
58
  }, null, 2),
57
- a("div", Jt, [
58
- a("div", Zt, r(y.name), 1),
59
- a("div", Qt, r(y.type), 1)
59
+ a("div", ca, [
60
+ a("div", da, r(y.name), 1),
61
+ a("div", ma, r(y.type), 1)
60
62
  ]),
61
- a("div", Xt, [
62
- a("div", ea, r(y.metric), 1),
63
- a("div", ta, r(y.metricLabel), 1)
63
+ a("div", ua, [
64
+ a("div", ya, r(y.metric), 1),
65
+ a("div", pa, r(y.metricLabel), 1)
64
66
  ])
65
67
  ]))), 128))
66
- ])) : (c(), d("div", aa, r(o(s)("connect.loyalty.dashboard.campaigns.empty")), 1))
68
+ ])) : (c(), d("div", ba, r(o(s)("connect.loyalty.dashboard.campaigns.empty")), 1))
67
69
  ]),
68
70
  _: 1
69
71
  });
70
72
  };
71
73
  }
72
- }), sa = { class: "flex items-center gap-8" }, ra = { class: "w-[30px] h-[30px] bg-fm-color-primary-oats flex items-center justify-center flex-shrink-0 fm-corner-radius-md" }, na = { class: "fm-typo-en-body-md-600" }, la = ["aria-label"], ia = {
74
+ }), ha = { class: "flex items-center gap-8" }, va = { class: "w-[30px] h-[30px] bg-fm-color-primary-oats flex items-center justify-center flex-shrink-0 fm-corner-radius-md" }, ga = { class: "fm-typo-en-body-md-600" }, _a = ["aria-label"], xa = {
73
75
  key: 1,
74
76
  class: "flex min-h-[144px] items-center justify-center text-center fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
75
- }, ca = { class: "bg-fm-color-primary-oats px-16 py-12 fm-corner-radius-md" }, da = { class: "fm-typo-en-body-md-600 mb-4" }, ma = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, ua = { class: "flex flex-col gap-8" }, ya = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-tertiary uppercase tracking-wide" }, pa = { class: "flex flex-col gap-8" }, ba = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, fa = {
77
+ }, wa = { class: "bg-fm-color-primary-oats px-16 py-12 fm-corner-radius-md" }, Ra = { class: "fm-typo-en-body-md-600 mb-4" }, Sa = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Ma = { class: "flex flex-col gap-8" }, $a = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-tertiary uppercase tracking-wide" }, Ca = { class: "flex flex-col gap-8" }, Fa = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Da = {
76
78
  key: 3,
77
79
  class: "bg-fm-color-neutral-gray-100 fm-corner-radius-md px-16 py-12 fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
78
- }, ha = /* @__PURE__ */ Z({
80
+ }, Aa = /* @__PURE__ */ Z({
79
81
  __name: "InsightPanel",
80
82
  props: {
81
83
  insight: {},
@@ -84,23 +86,23 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
84
86
  },
85
87
  setup(e) {
86
88
  const s = e, { t } = Q();
87
- return (n, l) => {
88
- const y = M("FmIcon"), p = M("FmCircularProgress"), m = M("FmCard");
89
- return c(), V(m, {
89
+ return (n, i) => {
90
+ const y = M("FmIcon"), p = M("FmCircularProgress"), u = M("FmCard");
91
+ return c(), N(u, {
90
92
  variant: "outlined",
91
93
  class: "p-24 flex flex-col gap-12"
92
94
  }, {
93
95
  default: U(() => [
94
- a("div", sa, [
95
- a("div", ra, [
96
- h(y, {
96
+ a("div", ha, [
97
+ a("div", va, [
98
+ f(y, {
97
99
  name: "info",
98
100
  outline: "",
99
101
  size: "sm",
100
102
  class: "!text-fm-color-primary"
101
103
  })
102
104
  ]),
103
- a("div", na, r(o(t)("connect.loyalty.dashboard.insight.title")), 1)
105
+ a("div", ga, r(o(t)("connect.loyalty.dashboard.insight.title")), 1)
104
106
  ]),
105
107
  s.loading ? (c(), d("div", {
106
108
  key: 0,
@@ -108,130 +110,130 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
108
110
  role: "status",
109
111
  "aria-label": o(t)("connect.loyalty.dashboard.accessibility.loading")
110
112
  }, [
111
- h(p, { size: "lg" })
112
- ], 8, la)) : s.error ? (c(), d("div", ia, r(o(t)("connect.loyalty.dashboard.states.insightUnavailable")), 1)) : s.insight ? (c(), d(I, { key: 2 }, [
113
- a("div", ca, [
114
- a("div", da, r(s.insight.title), 1),
115
- a("div", ma, r(s.insight.body), 1)
113
+ f(p, { size: "lg" })
114
+ ], 8, _a)) : s.error ? (c(), d("div", xa, r(o(t)("connect.loyalty.dashboard.states.insightUnavailable")), 1)) : s.insight ? (c(), d(k, { key: 2 }, [
115
+ a("div", wa, [
116
+ a("div", Ra, r(s.insight.title), 1),
117
+ a("div", Sa, r(s.insight.body), 1)
116
118
  ]),
117
- a("div", ua, [
118
- a("div", ya, r(o(t)("connect.loyalty.dashboard.insight.supportingSignal")), 1),
119
- a("ul", pa, [
120
- (c(!0), d(I, null, J(s.insight.signals, (_) => (c(), d("li", {
121
- key: _.text,
119
+ a("div", Ma, [
120
+ a("div", $a, r(o(t)("connect.loyalty.dashboard.insight.supportingSignal")), 1),
121
+ a("ul", Ca, [
122
+ (c(!0), d(k, null, W(s.insight.signals, (x) => (c(), d("li", {
123
+ key: x.text,
122
124
  class: "flex items-start gap-8"
123
125
  }, [
124
- l[0] || (l[0] = a("span", { class: "w-[5px] h-[5px] mt-[6px] rounded-full bg-fm-color-neutral-gray-200 flex-shrink-0" }, null, -1)),
125
- a("span", ba, r(_.text), 1)
126
+ i[0] || (i[0] = a("span", { class: "w-[5px] h-[5px] mt-[6px] rounded-full bg-fm-color-neutral-gray-200 flex-shrink-0" }, null, -1)),
127
+ a("span", Fa, r(x.text), 1)
126
128
  ]))), 128))
127
129
  ])
128
130
  ])
129
- ], 64)) : (c(), d("div", fa, r(o(t)("connect.loyalty.dashboard.insight.empty")), 1))
131
+ ], 64)) : (c(), d("div", Da, r(o(t)("connect.loyalty.dashboard.insight.empty")), 1))
130
132
  ]),
131
133
  _: 1
132
134
  });
133
135
  };
134
136
  }
135
- }), va = { class: "grid grid-cols-6 xs:grid-cols-2 sm:grid-cols-3 md:grid-cols-3 gap-12" }, ga = { class: "flex items-center gap-8" }, _a = { class: "w-[30px] h-[30px] rounded-8 bg-[#FFF6EE] flex items-center justify-center flex-shrink-0" }, xa = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary flex-1 min-w-0" }, wa = { class: "flex min-h-[72px] flex-col" }, Ra = ["aria-label"], Sa = {
137
+ }), ka = { class: "grid grid-cols-6 xs:grid-cols-2 sm:grid-cols-3 md:grid-cols-3 gap-12" }, Ia = { class: "flex items-center gap-8" }, La = { class: "w-[30px] h-[30px] rounded-8 bg-[#FFF6EE] flex items-center justify-center flex-shrink-0" }, Oa = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary flex-1 min-w-0" }, Ea = { class: "flex min-h-[72px] flex-col" }, Pa = ["aria-label"], Ba = {
136
138
  key: 1,
137
139
  class: "flex flex-1 items-center justify-center text-center fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
138
- }, Ma = { class: "fm-typo-en-title-sm-800 text-fm-color-typo-primary whitespace-nowrap overflow-hidden text-ellipsis" }, $a = {
140
+ }, Ta = { class: "fm-typo-en-title-sm-800 text-fm-color-typo-primary whitespace-nowrap overflow-hidden text-ellipsis" }, Na = {
139
141
  key: 1,
140
142
  class: "flex items-center gap-4 flex-wrap"
141
- }, Ca = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, Fa = {
143
+ }, Ua = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, za = {
142
144
  key: 2,
143
145
  class: "flex items-center justify-between gap-8 mt-auto fm-typo-en-body-sm-600"
144
- }, Aa = /* @__PURE__ */ Z({
146
+ }, Va = /* @__PURE__ */ Z({
145
147
  __name: "KpiStrip",
146
148
  props: {
147
149
  kpis: {}
148
150
  },
149
151
  emits: ["select"],
150
152
  setup(e, { emit: s }) {
151
- const t = e, n = s, { t: l } = Q();
152
- function y(m) {
153
- m.interactive && n("select", m);
153
+ const t = e, n = s, { t: i } = Q();
154
+ function y(u) {
155
+ u.interactive && n("select", u);
154
156
  }
155
- function p(m) {
156
- const _ = m.loading ? l("connect.loyalty.dashboard.accessibility.loading") : m.error ? l("connect.loyalty.dashboard.states.unavailable") : m.value;
157
- return `${m.label}: ${_}`;
157
+ function p(u) {
158
+ const x = u.loading ? i("connect.loyalty.dashboard.accessibility.loading") : u.error ? i("connect.loyalty.dashboard.states.unavailable") : u.value;
159
+ return `${u.label}: ${x}`;
158
160
  }
159
- return (m, _) => {
160
- const w = M("FmIcon"), R = M("FmCircularProgress"), f = M("FmCard");
161
- return c(), d("section", va, [
162
- (c(!0), d(I, null, J(t.kpis, (v) => (c(), V(f, {
163
- key: v.label,
161
+ return (u, x) => {
162
+ const w = M("FmIcon"), R = M("FmCircularProgress"), g = M("FmCard");
163
+ return c(), d("section", ka, [
164
+ (c(!0), d(k, null, W(t.kpis, (h) => (c(), N(g, {
165
+ key: h.label,
164
166
  variant: "outlined",
165
167
  class: T([
166
168
  "flex h-full flex-col gap-8 p-16 min-w-0 overflow-hidden",
167
- v.interactive ? "cursor-pointer hover:bg-fm-color-neutral-gray-100" : ""
169
+ h.interactive ? "cursor-pointer hover:bg-fm-color-neutral-gray-100" : ""
168
170
  ]),
169
- role: v.interactive ? "button" : void 0,
170
- tabindex: v.interactive ? 0 : void 0,
171
- "aria-label": v.interactive ? p(v) : void 0,
172
- onClick: (E) => y(v),
171
+ role: h.interactive ? "button" : void 0,
172
+ tabindex: h.interactive ? 0 : void 0,
173
+ "aria-label": h.interactive ? p(h) : void 0,
174
+ onClick: (V) => y(h),
173
175
  onKeydown: [
174
- Ke(qe((E) => y(v), ["prevent"]), ["enter"]),
175
- Ke(qe((E) => y(v), ["prevent"]), ["space"])
176
+ Ge(Je((V) => y(h), ["prevent"]), ["enter"]),
177
+ Ge(Je((V) => y(h), ["prevent"]), ["space"])
176
178
  ]
177
179
  }, {
178
180
  default: U(() => [
179
- a("div", ga, [
180
- a("div", _a, [
181
- h(w, {
182
- name: v.icon,
181
+ a("div", Ia, [
182
+ a("div", La, [
183
+ f(w, {
184
+ name: h.icon,
183
185
  outline: "",
184
186
  size: "sm",
185
187
  class: "!text-fm-color-primary"
186
188
  }, null, 8, ["name"])
187
189
  ]),
188
- a("span", xa, r(v.label), 1),
189
- h(he, {
190
- description: v.description
190
+ a("span", Oa, r(h.label), 1),
191
+ f(xe, {
192
+ description: h.description
191
193
  }, null, 8, ["description"])
192
194
  ]),
193
- a("div", wa, [
194
- v.loading ? (c(), d("div", {
195
+ a("div", Ea, [
196
+ h.loading ? (c(), d("div", {
195
197
  key: 0,
196
198
  class: "flex flex-1 items-center justify-center",
197
199
  role: "status",
198
- "aria-label": o(l)("connect.loyalty.dashboard.accessibility.loading")
200
+ "aria-label": o(i)("connect.loyalty.dashboard.accessibility.loading")
199
201
  }, [
200
- h(R, { size: "lg" })
201
- ], 8, Ra)) : v.error ? (c(), d("div", Sa, r(o(l)("connect.loyalty.dashboard.states.unavailable")), 1)) : (c(), d(I, { key: 2 }, [
202
- a("div", Ma, r(v.value), 1),
203
- v.sub && !v.actionLabel ? (c(), d("div", {
202
+ f(R, { size: "lg" })
203
+ ], 8, Pa)) : h.error ? (c(), d("div", Ba, r(o(i)("connect.loyalty.dashboard.states.unavailable")), 1)) : (c(), d(k, { key: 2 }, [
204
+ a("div", Ta, r(h.value), 1),
205
+ h.sub && !h.actionLabel ? (c(), d("div", {
204
206
  key: 0,
205
- class: T(["fm-typo-en-body-sm-600 -mt-4", v.subClass ?? "text-fm-color-typo-success"])
206
- }, r(v.sub), 3)) : Y("", !0),
207
- v.delta ? (c(), d("div", $a, [
208
- v.delta !== "0%" && v.delta !== "0pp" ? (c(), V(w, {
207
+ class: T(["fm-typo-en-body-sm-600 -mt-4", h.subClass ?? "text-fm-color-typo-success"])
208
+ }, r(h.sub), 3)) : z("", !0),
209
+ h.delta ? (c(), d("div", Na, [
210
+ h.delta !== "0%" && h.delta !== "0pp" ? (c(), N(w, {
209
211
  key: 0,
210
- name: v.trendUp ? "trending_up" : "trending_down",
212
+ name: h.trendUp ? "trending_up" : "trending_down",
211
213
  size: "xs",
212
- class: T(v.deltaClass)
213
- }, null, 8, ["name", "class"])) : Y("", !0),
214
+ class: T(h.deltaClass)
215
+ }, null, 8, ["name", "class"])) : z("", !0),
214
216
  a("span", {
215
- class: T(["fm-typo-en-body-sm-600", v.deltaClass])
216
- }, r(v.delta), 3),
217
- a("span", Ca, r(o(l)("connect.loyalty.dashboard.kpis.previous")), 1)
218
- ])) : v.actionLabel ? (c(), d("div", Fa, [
217
+ class: T(["fm-typo-en-body-sm-600", h.deltaClass])
218
+ }, r(h.delta), 3),
219
+ a("span", Ua, r(o(i)("connect.loyalty.dashboard.kpis.previous")), 1)
220
+ ])) : h.actionLabel ? (c(), d("div", za, [
219
221
  a("span", {
220
- class: T(v.subClass ?? "text-fm-color-typo-success")
221
- }, r(v.sub), 3),
222
+ class: T(h.subClass ?? "text-fm-color-typo-success")
223
+ }, r(h.sub), 3),
222
224
  a("span", {
223
225
  class: T([
224
226
  "flex items-center gap-4",
225
- v.interactive ? "text-fm-color-primary" : "text-fm-color-typo-disabled"
227
+ h.interactive ? "text-fm-color-primary" : "text-fm-color-typo-disabled"
226
228
  ])
227
229
  }, [
228
- be(r(v.actionLabel) + " ", 1),
229
- h(w, {
230
+ ge(r(h.actionLabel) + " ", 1),
231
+ f(w, {
230
232
  name: "arrow_forward",
231
233
  size: "xs"
232
234
  })
233
235
  ], 2)
234
- ])) : Y("", !0)
236
+ ])) : z("", !0)
235
237
  ], 64))
236
238
  ])
237
239
  ]),
@@ -240,16 +242,16 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
240
242
  ]);
241
243
  };
242
244
  }
243
- }), Da = { class: "flex items-center mb-16" }, ka = { class: "flex-1 fm-typo-en-body-md-600" }, Ia = ["aria-label"], La = {
245
+ }), ja = { class: "flex items-center mb-16" }, Ka = { class: "flex-1 fm-typo-en-body-md-600" }, qa = ["aria-label"], Ya = {
244
246
  key: 1,
245
247
  class: "flex min-h-[220px] items-center justify-center text-center fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
246
- }, Oa = {
248
+ }, Ha = {
247
249
  key: 2,
248
250
  class: "flex flex-col gap-4"
249
- }, Ea = ["onClick"], Pa = { class: "fm-typo-en-body-sm-600" }, Ta = { class: "fm-typo-en-body-md-600 min-w-[38px] text-right" }, Ba = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary min-w-[34px] text-right" }, Na = {
251
+ }, Wa = ["onClick"], Ga = { class: "fm-typo-en-body-sm-600" }, Ja = { class: "fm-typo-en-body-md-600 min-w-[38px] text-right" }, Za = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary min-w-[34px] text-right" }, Qa = {
250
252
  key: 3,
251
253
  class: "mt-14 pt-12 border-t border-fm-color-neutral-gray-100 fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
252
- }, Ua = /* @__PURE__ */ Z({
254
+ }, Xa = /* @__PURE__ */ Z({
253
255
  __name: "LifecycleSegments",
254
256
  props: {
255
257
  segments: {},
@@ -260,70 +262,70 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
260
262
  },
261
263
  emits: ["select"],
262
264
  setup(e, { emit: s }) {
263
- const t = e, n = s, { t: l } = Q();
265
+ const t = e, n = s, { t: i } = Q();
264
266
  return (y, p) => {
265
- const m = M("FmCircularProgress"), _ = M("FmProgressBar"), w = M("FmCard");
266
- return c(), V(w, {
267
+ const u = M("FmCircularProgress"), x = M("FmProgressBar"), w = M("FmCard");
268
+ return c(), N(w, {
267
269
  variant: "outlined",
268
270
  class: "p-24"
269
271
  }, {
270
272
  default: U(() => [
271
- a("div", Da, [
272
- a("div", ka, r(o(l)("connect.loyalty.dashboard.lifecycle.title")), 1)
273
+ a("div", ja, [
274
+ a("div", Ka, r(o(i)("connect.loyalty.dashboard.lifecycle.title")), 1)
273
275
  ]),
274
276
  t.loading ? (c(), d("div", {
275
277
  key: 0,
276
278
  class: "flex min-h-[220px] items-center justify-center",
277
279
  role: "status",
278
- "aria-label": o(l)("connect.loyalty.dashboard.accessibility.loading")
280
+ "aria-label": o(i)("connect.loyalty.dashboard.accessibility.loading")
279
281
  }, [
280
- h(m, { size: "lg" })
281
- ], 8, Ia)) : t.error ? (c(), d("div", La, r(o(l)("connect.loyalty.dashboard.states.lifecycleUnavailable")), 1)) : (c(), d("div", Oa, [
282
- (c(!0), d(I, null, J(t.segments, (R) => (c(), d("div", {
282
+ f(u, { size: "lg" })
283
+ ], 8, qa)) : t.error ? (c(), d("div", Ya, r(o(i)("connect.loyalty.dashboard.states.lifecycleUnavailable")), 1)) : (c(), d("div", Ha, [
284
+ (c(!0), d(k, null, W(t.segments, (R) => (c(), d("div", {
283
285
  key: R.id,
284
286
  class: T([
285
287
  "flex items-center gap-9 px-6 py-3 -mx-6 rounded-8",
286
288
  t.interactive ? "cursor-pointer hover:bg-fm-color-neutral-gray-100/50" : "cursor-default"
287
289
  ]),
288
- onClick: (f) => t.interactive && n("select", R.id)
290
+ onClick: (g) => t.interactive && n("select", R.id)
289
291
  }, [
290
292
  a("div", {
291
293
  class: T(["flex w-[90px] flex-shrink-0 items-center gap-3", R.labelClass])
292
294
  }, [
293
- a("span", Pa, r(R.label), 1),
294
- h(he, {
295
+ a("span", Ga, r(R.label), 1),
296
+ f(xe, {
295
297
  description: R.description
296
298
  }, null, 8, ["description"])
297
299
  ], 2),
298
- h(_, {
300
+ f(x, {
299
301
  class: "flex-1",
300
302
  value: R.barPct,
301
303
  color: R.barColor,
302
304
  size: "lg"
303
305
  }, null, 8, ["value", "color"]),
304
- a("span", Ta, r(R.countStr), 1),
305
- a("span", Ba, r(R.pctStr), 1)
306
- ], 10, Ea))), 128))
306
+ a("span", Ja, r(R.countStr), 1),
307
+ a("span", Za, r(R.pctStr), 1)
308
+ ], 10, Wa))), 128))
307
309
  ])),
308
- !t.loading && !t.error ? (c(), d("div", Na, r(t.summary), 1)) : Y("", !0)
310
+ !t.loading && !t.error ? (c(), d("div", Qa, r(t.summary), 1)) : z("", !0)
309
311
  ]),
310
312
  _: 1
311
313
  });
312
314
  };
313
315
  }
314
- }), za = { class: "flex items-start gap-8 mb-12" }, Va = { class: "flex-1" }, ja = { class: "fm-typo-en-body-md-600" }, Ka = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, qa = ["aria-label"], Ya = {
316
+ }), eo = { class: "flex items-start gap-8 mb-12" }, to = { class: "flex-1" }, ao = { class: "fm-typo-en-body-md-600" }, oo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, so = ["aria-label"], ro = {
315
317
  key: 1,
316
318
  class: "flex min-h-[280px] items-center justify-center text-center fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
317
- }, Ha = { key: 2 }, Wa = {
319
+ }, no = { key: 2 }, lo = {
318
320
  key: 0,
319
321
  class: "flex items-start pl-[152px] xs:pl-0 xs:justify-center"
320
- }, Ga = { class: "flex flex-col items-start" }, Ja = { class: "flex items-center gap-8" }, Za = {
322
+ }, io = { class: "flex flex-col items-start" }, co = { class: "flex items-center gap-8" }, mo = {
321
323
  key: 0,
322
324
  class: "fm-typo-en-body-sm-600 text-fm-color-typo-warning bg-fm-color-system-warning-100 px-8 py-[2px] rounded-xxxl whitespace-nowrap"
323
- }, Qa = ["onClick"], Xa = { class: "min-w-0" }, eo = { class: "flex items-center gap-3 fm-typo-en-body-sm-600" }, to = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mt-4" }, ao = { class: "min-w-0 text-right" }, oo = { class: "fm-typo-en-body-lg-600" }, so = {
325
+ }, uo = ["onClick"], yo = { class: "min-w-0" }, po = { class: "flex items-center gap-3 fm-typo-en-body-sm-600" }, bo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mt-4" }, fo = { class: "min-w-0 text-right" }, ho = { class: "fm-typo-en-body-lg-600" }, vo = {
324
326
  key: 0,
325
327
  class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary"
326
- }, ro = { class: "mt-12 pt-12 border-t border-fm-color-neutral-gray-100" }, no = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary text-right" }, lo = /* @__PURE__ */ Z({
328
+ }, go = { class: "mt-12 pt-12 border-t border-fm-color-neutral-gray-100" }, _o = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary text-right" }, xo = /* @__PURE__ */ Z({
327
329
  __name: "MemberFunnel",
328
330
  props: {
329
331
  stages: {},
@@ -334,21 +336,21 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
334
336
  },
335
337
  emits: ["select"],
336
338
  setup(e, { emit: s }) {
337
- const t = e, n = s, { t: l } = Q();
339
+ const t = e, n = s, { t: i } = Q();
338
340
  function y(p) {
339
341
  t.interactive && n("select", p);
340
342
  }
341
- return (p, m) => {
342
- const _ = M("FmCircularProgress"), w = M("FmProgressBar"), R = M("FmCard");
343
- return c(), V(R, {
343
+ return (p, u) => {
344
+ const x = M("FmCircularProgress"), w = M("FmProgressBar"), R = M("FmCard");
345
+ return c(), N(R, {
344
346
  variant: "outlined",
345
347
  class: "p-24"
346
348
  }, {
347
349
  default: U(() => [
348
- a("div", za, [
349
- a("div", Va, [
350
- a("div", ja, r(o(l)("connect.loyalty.dashboard.funnel.title")), 1),
351
- a("div", Ka, r(o(l)(
350
+ a("div", eo, [
351
+ a("div", to, [
352
+ a("div", ao, r(o(i)("connect.loyalty.dashboard.funnel.title")), 1),
353
+ a("div", oo, r(o(i)(
352
354
  t.interactive ? "connect.loyalty.dashboard.funnel.interactiveHint" : "connect.loyalty.dashboard.funnel.staticHint"
353
355
  )), 1)
354
356
  ])
@@ -357,55 +359,55 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
357
359
  key: 0,
358
360
  class: "flex min-h-[280px] items-center justify-center",
359
361
  role: "status",
360
- "aria-label": o(l)("connect.loyalty.dashboard.accessibility.loading")
362
+ "aria-label": o(i)("connect.loyalty.dashboard.accessibility.loading")
361
363
  }, [
362
- h(_, { size: "lg" })
363
- ], 8, qa)) : t.error ? (c(), d("div", Ya, r(o(l)("connect.loyalty.dashboard.states.funnelUnavailable")), 1)) : (c(), d("div", Ha, [
364
- (c(!0), d(I, null, J(t.stages, (f, v) => (c(), d("div", {
365
- key: f.id
364
+ f(x, { size: "lg" })
365
+ ], 8, so)) : t.error ? (c(), d("div", ro, r(o(i)("connect.loyalty.dashboard.states.funnelUnavailable")), 1)) : (c(), d("div", no, [
366
+ (c(!0), d(k, null, W(t.stages, (g, h) => (c(), d("div", {
367
+ key: g.id
366
368
  }, [
367
- f.hasDropLine ? (c(), d("div", Wa, [
368
- a("div", Ga, [
369
- m[0] || (m[0] = a("div", { class: "w-[1px] h-[4px] bg-fm-color-neutral-gray-100 ml-[9px]" }, null, -1)),
370
- a("div", Ja, [
369
+ g.hasDropLine ? (c(), d("div", lo, [
370
+ a("div", io, [
371
+ u[0] || (u[0] = a("div", { class: "w-[1px] h-[4px] bg-fm-color-neutral-gray-100 ml-[9px]" }, null, -1)),
372
+ a("div", co, [
371
373
  a("span", {
372
- class: T(["fm-typo-en-body-sm-600 px-8 py-[2px] rounded-xxxl whitespace-nowrap", f.dropClass])
373
- }, r(f.conversionStr), 3),
374
- f.isBiggestDrop ? (c(), d("span", Za, r(o(l)("connect.loyalty.dashboard.funnel.biggestDrop")), 1)) : Y("", !0)
374
+ class: T(["fm-typo-en-body-sm-600 px-8 py-[2px] rounded-xxxl whitespace-nowrap", g.dropClass])
375
+ }, r(g.conversionStr), 3),
376
+ g.isBiggestDrop ? (c(), d("span", mo, r(o(i)("connect.loyalty.dashboard.funnel.biggestDrop")), 1)) : z("", !0)
375
377
  ]),
376
- m[1] || (m[1] = a("div", { class: "w-[1px] h-[4px] bg-fm-color-neutral-gray-100 ml-[9px]" }, null, -1))
378
+ u[1] || (u[1] = a("div", { class: "w-[1px] h-[4px] bg-fm-color-neutral-gray-100 ml-[9px]" }, null, -1))
377
379
  ])
378
- ])) : Y("", !0),
380
+ ])) : z("", !0),
379
381
  a("div", {
380
382
  class: T([
381
383
  "grid grid-cols-[140px_minmax(0,1fr)_72px] xs:grid-cols-[minmax(0,1fr)_auto] items-center gap-x-12 gap-y-8 py-4 px-8 -mx-8 rounded-md",
382
384
  t.interactive ? "cursor-pointer hover:bg-fm-color-neutral-gray-100/50" : ""
383
385
  ]),
384
- onClick: (E) => y(f.id)
386
+ onClick: (V) => y(g.id)
385
387
  }, [
386
- a("div", Xa, [
387
- a("div", eo, [
388
- a("span", null, r(f.label), 1),
389
- h(he, {
390
- description: f.description
388
+ a("div", yo, [
389
+ a("div", po, [
390
+ a("span", null, r(g.label), 1),
391
+ f(xe, {
392
+ description: g.description
391
393
  }, null, 8, ["description"])
392
394
  ]),
393
- a("div", to, r(f.desc), 1)
395
+ a("div", bo, r(g.desc), 1)
394
396
  ]),
395
- h(w, {
397
+ f(w, {
396
398
  class: "min-w-0 xs:col-span-2 xs:row-start-2",
397
- value: f.barWidthPct,
398
- color: f.barColor,
399
+ value: g.barWidthPct,
400
+ color: g.barColor,
399
401
  size: "lg"
400
402
  }, null, 8, ["value", "color"]),
401
- a("div", ao, [
402
- a("div", oo, r(f.countStr), 1),
403
- f.hasConvRate ? (c(), d("div", so, r(f.convRateLabel), 1)) : Y("", !0)
403
+ a("div", fo, [
404
+ a("div", ho, r(g.countStr), 1),
405
+ g.hasConvRate ? (c(), d("div", vo, r(g.convRateLabel), 1)) : z("", !0)
404
406
  ])
405
- ], 10, Qa)
407
+ ], 10, uo)
406
408
  ]))), 128)),
407
- a("div", ro, [
408
- a("div", no, r(t.footnote), 1)
409
+ a("div", go, [
410
+ a("div", _o, r(t.footnote), 1)
409
411
  ])
410
412
  ]))
411
413
  ]),
@@ -413,10 +415,10 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
413
415
  });
414
416
  };
415
417
  }
416
- }), io = { class: "flex items-center gap-3 fm-typo-en-body-md-600 mb-4" }, co = ["aria-label"], mo = {
418
+ }), wo = { class: "flex items-center gap-3 fm-typo-en-body-md-600 mb-4" }, Ro = ["aria-label"], So = {
417
419
  key: 1,
418
420
  class: "flex min-h-[220px] items-center justify-center text-center fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
419
- }, uo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mb-16" }, yo = { class: "grid grid-cols-2 xs:grid-cols-1 gap-16" }, po = { class: "flex items-center gap-8 mb-8" }, bo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, fo = { class: "fm-typo-en-title-sm-800" }, ho = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, vo = { class: "flex items-center gap-8 mb-8" }, go = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, _o = { class: "fm-typo-en-title-sm-800" }, xo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, wo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-8" }, Ro = { class: "mt-16 pt-12 border-t border-fm-color-neutral-gray-100 fm-typo-en-body-sm-400" }, So = /* @__PURE__ */ Z({
421
+ }, Mo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mb-16" }, $o = { class: "grid grid-cols-2 xs:grid-cols-1 gap-16" }, Co = { class: "flex items-center gap-8 mb-8" }, Fo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Do = { class: "fm-typo-en-title-sm-800" }, Ao = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, ko = { class: "flex items-center gap-8 mb-8" }, Io = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Lo = { class: "fm-typo-en-title-sm-800" }, Oo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, Eo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-8" }, Po = { class: "mt-16 pt-12 border-t border-fm-color-neutral-gray-100 fm-typo-en-body-sm-400" }, Bo = /* @__PURE__ */ Z({
420
422
  __name: "MemberSpendComparison",
421
423
  props: {
422
424
  spend: {},
@@ -425,16 +427,16 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
425
427
  },
426
428
  setup(e) {
427
429
  const s = e, { t } = Q();
428
- return (n, l) => {
429
- const y = M("FmCircularProgress"), p = M("FmProgressBar"), m = M("FmCard");
430
- return c(), V(m, {
430
+ return (n, i) => {
431
+ const y = M("FmCircularProgress"), p = M("FmProgressBar"), u = M("FmCard");
432
+ return c(), N(u, {
431
433
  variant: "outlined",
432
434
  class: "p-24"
433
435
  }, {
434
436
  default: U(() => [
435
- a("div", io, [
437
+ a("div", wo, [
436
438
  a("span", null, r(o(t)("connect.loyalty.dashboard.spend.title")), 1),
437
- h(he, {
439
+ f(xe, {
438
440
  description: s.spend.description
439
441
  }, null, 8, ["description"])
440
442
  ]),
@@ -444,54 +446,54 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
444
446
  role: "status",
445
447
  "aria-label": o(t)("connect.loyalty.dashboard.accessibility.loading")
446
448
  }, [
447
- h(y, { size: "lg" })
448
- ], 8, co)) : s.error ? (c(), d("div", mo, r(o(t)("connect.loyalty.dashboard.states.spendUnavailable")), 1)) : (c(), d(I, { key: 2 }, [
449
- a("div", uo, r(s.spend.description), 1),
450
- a("div", yo, [
449
+ f(y, { size: "lg" })
450
+ ], 8, Ro)) : s.error ? (c(), d("div", So, r(o(t)("connect.loyalty.dashboard.states.spendUnavailable")), 1)) : (c(), d(k, { key: 2 }, [
451
+ a("div", Mo, r(s.spend.description), 1),
452
+ a("div", $o, [
451
453
  a("div", null, [
452
- a("div", po, [
453
- l[0] || (l[0] = a("div", { class: "w-8 h-8 rounded-sm bg-fm-color-primary" }, null, -1)),
454
- a("span", bo, r(o(t)("connect.loyalty.dashboard.spend.memberSales")), 1)
454
+ a("div", Co, [
455
+ i[0] || (i[0] = a("div", { class: "w-8 h-8 rounded-sm bg-fm-color-primary" }, null, -1)),
456
+ a("span", Fo, r(o(t)("connect.loyalty.dashboard.spend.memberSales")), 1)
455
457
  ]),
456
- a("div", fo, r(s.spend.memberSalesFmt), 1),
457
- a("div", ho, r(o(t)("connect.loyalty.dashboard.spend.averageOrder", {
458
+ a("div", Do, r(s.spend.memberSalesFmt), 1),
459
+ a("div", Ao, r(o(t)("connect.loyalty.dashboard.spend.averageOrder", {
458
460
  value: s.spend.avgMemberSaleFmt
459
461
  })), 1)
460
462
  ]),
461
463
  a("div", null, [
462
- a("div", vo, [
463
- l[1] || (l[1] = a("div", { class: "w-8 h-8 rounded-sm bg-fm-color-neutral-gray-200" }, null, -1)),
464
- a("span", go, r(o(t)("connect.loyalty.dashboard.spend.nonMemberSales")), 1)
464
+ a("div", ko, [
465
+ i[1] || (i[1] = a("div", { class: "w-8 h-8 rounded-sm bg-fm-color-neutral-gray-200" }, null, -1)),
466
+ a("span", Io, r(o(t)("connect.loyalty.dashboard.spend.nonMemberSales")), 1)
465
467
  ]),
466
- a("div", _o, r(s.spend.nonMemberSalesFmt), 1),
467
- a("div", xo, r(o(t)("connect.loyalty.dashboard.spend.averageOrder", {
468
+ a("div", Lo, r(s.spend.nonMemberSalesFmt), 1),
469
+ a("div", Oo, r(o(t)("connect.loyalty.dashboard.spend.averageOrder", {
468
470
  value: s.spend.avgNonMemberSaleFmt
469
471
  })), 1)
470
472
  ])
471
473
  ]),
472
- h(p, {
474
+ f(p, {
473
475
  class: "mt-16",
474
476
  value: s.spend.memberSharePct,
475
477
  color: "primary",
476
478
  size: "md"
477
479
  }, null, 8, ["value"]),
478
- a("div", wo, r(o(t)("connect.loyalty.dashboard.spend.share", {
480
+ a("div", Eo, r(o(t)("connect.loyalty.dashboard.spend.share", {
479
481
  value: s.spend.memberSharePct
480
482
  })), 1),
481
- a("div", Ro, r(s.spend.summary), 1)
483
+ a("div", Po, r(s.spend.summary), 1)
482
484
  ], 64))
483
485
  ]),
484
486
  _: 1
485
487
  });
486
488
  };
487
489
  }
488
- }), Mo = { class: "flex items-center mb-16" }, $o = { class: "flex-1 fm-typo-en-body-md-600" }, Co = ["aria-label"], Fo = {
490
+ }), To = { class: "flex items-center mb-16" }, No = { class: "flex-1 fm-typo-en-body-md-600" }, Uo = ["aria-label"], zo = {
489
491
  key: 1,
490
492
  class: "flex min-h-[220px] items-center justify-center text-center fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
491
- }, Ao = { class: "grid grid-cols-3 gap-10 mb-16" }, Do = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mb-4 flex items-center gap-3" }, ko = { class: "fm-typo-en-title-sm-800" }, Io = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-tertiary uppercase tracking-wide mb-10" }, Lo = { class: "flex flex-col gap-9" }, Oo = { class: "flex-1 fm-typo-en-body-sm-400 whitespace-nowrap overflow-hidden text-ellipsis" }, Eo = { class: "flex flex-shrink-0 items-center gap-3 fm-typo-en-body-sm-600 text-fm-color-typo-secondary" }, Po = { class: "w-[48px] h-4 bg-fm-color-neutral-gray-100 rounded-2 overflow-hidden flex-shrink-0" }, To = {
493
+ }, Vo = { class: "grid grid-cols-3 gap-10 mb-16" }, jo = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mb-4 flex items-center gap-3" }, Ko = { class: "fm-typo-en-title-sm-800" }, qo = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-tertiary uppercase tracking-wide mb-10" }, Yo = { class: "flex flex-col gap-9" }, Ho = { class: "flex-1 fm-typo-en-body-sm-400 whitespace-nowrap overflow-hidden text-ellipsis" }, Wo = { class: "flex flex-shrink-0 items-center gap-3 fm-typo-en-body-sm-600 text-fm-color-typo-secondary" }, Go = { class: "w-[48px] h-4 bg-fm-color-neutral-gray-100 rounded-2 overflow-hidden flex-shrink-0" }, Jo = {
492
494
  key: 3,
493
495
  class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
494
- }, Bo = /* @__PURE__ */ Z({
496
+ }, Zo = /* @__PURE__ */ Z({
495
497
  __name: "RewardPerformance",
496
498
  props: {
497
499
  kpis: {},
@@ -503,14 +505,14 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
503
505
  setup(e) {
504
506
  const { t: s } = Q();
505
507
  return (t, n) => {
506
- const l = M("FmCircularProgress"), y = M("FmCard");
507
- return c(), V(y, {
508
+ const i = M("FmCircularProgress"), y = M("FmCard");
509
+ return c(), N(y, {
508
510
  variant: "outlined",
509
511
  class: "p-24"
510
512
  }, {
511
513
  default: U(() => [
512
- a("div", Mo, [
513
- a("div", $o, r(o(s)("connect.loyalty.dashboard.rewards.title")), 1)
514
+ a("div", To, [
515
+ a("div", No, r(o(s)("connect.loyalty.dashboard.rewards.title")), 1)
514
516
  ]),
515
517
  e.loading ? (c(), d("div", {
516
518
  key: 0,
@@ -518,61 +520,61 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
518
520
  role: "status",
519
521
  "aria-label": o(s)("connect.loyalty.dashboard.accessibility.loading")
520
522
  }, [
521
- h(l, { size: "lg" })
522
- ], 8, Co)) : e.error ? (c(), d("div", Fo, r(o(s)("connect.loyalty.dashboard.states.rewardUsageUnavailable")), 1)) : e.hasData ? (c(), d(I, { key: 2 }, [
523
- a("div", Ao, [
524
- (c(!0), d(I, null, J(e.kpis, (p) => (c(), d("div", {
523
+ f(i, { size: "lg" })
524
+ ], 8, Uo)) : e.error ? (c(), d("div", zo, r(o(s)("connect.loyalty.dashboard.states.rewardUsageUnavailable")), 1)) : e.hasData ? (c(), d(k, { key: 2 }, [
525
+ a("div", Vo, [
526
+ (c(!0), d(k, null, W(e.kpis, (p) => (c(), d("div", {
525
527
  key: p.label,
526
528
  class: "bg-[#FAFAFA] rounded-10 p-12"
527
529
  }, [
528
- a("div", Do, [
530
+ a("div", jo, [
529
531
  a("span", null, r(p.label), 1),
530
- h(he, {
532
+ f(xe, {
531
533
  description: p.description
532
534
  }, null, 8, ["description"])
533
535
  ]),
534
- a("div", ko, r(p.value), 1),
536
+ a("div", Ko, r(p.value), 1),
535
537
  p.delta ? (c(), d("div", {
536
538
  key: 0,
537
539
  class: T(["fm-typo-en-body-sm-600 mt-3", p.deltaClass])
538
- }, r(p.delta), 3)) : Y("", !0)
540
+ }, r(p.delta), 3)) : z("", !0)
539
541
  ]))), 128))
540
542
  ]),
541
- a("div", Io, r(o(s)("connect.loyalty.dashboard.rewards.topUsed")), 1),
542
- a("div", Lo, [
543
- (c(!0), d(I, null, J(e.topRewards, (p) => (c(), d("div", {
543
+ a("div", qo, r(o(s)("connect.loyalty.dashboard.rewards.topUsed")), 1),
544
+ a("div", Yo, [
545
+ (c(!0), d(k, null, W(e.topRewards, (p) => (c(), d("div", {
544
546
  key: p.name,
545
547
  class: "flex items-center gap-9"
546
548
  }, [
547
549
  n[0] || (n[0] = a("div", { class: "w-[7px] h-[7px] rounded-2 bg-fm-color-primary flex-shrink-0" }, null, -1)),
548
- a("span", Oo, r(p.name), 1),
549
- a("span", Eo, [
550
- be(r(p.count) + " ", 1),
551
- h(he, {
550
+ a("span", Ho, r(p.name), 1),
551
+ a("span", Wo, [
552
+ ge(r(p.count) + " ", 1),
553
+ f(xe, {
552
554
  description: p.description
553
555
  }, null, 8, ["description"])
554
556
  ]),
555
- a("div", Po, [
557
+ a("div", Go, [
556
558
  a("div", {
557
559
  class: "h-full bg-fm-color-primary rounded-2",
558
- style: Ct({ width: p.barPct + "%" })
560
+ style: Pt({ width: p.barPct + "%" })
559
561
  }, null, 4)
560
562
  ])
561
563
  ]))), 128))
562
564
  ])
563
- ], 64)) : (c(), d("div", To, r(o(s)("connect.loyalty.dashboard.rewards.noData")), 1))
565
+ ], 64)) : (c(), d("div", Jo, r(o(s)("connect.loyalty.dashboard.rewards.noData")), 1))
564
566
  ]),
565
567
  _: 1
566
568
  });
567
569
  };
568
570
  }
569
571
  }), q = () => {
570
- const e = Lt.getBusinessId();
572
+ const e = Vt.getBusinessId();
571
573
  if (!e) throw new Error("Invalid business ID");
572
- return Ot(`businesses/${e}/loyalty-dashboard`, {
574
+ return jt(`businesses/${e}/loyalty-dashboard`, {
573
575
  noIdRequired: !0
574
576
  });
575
- }, G = {
577
+ }, H = {
576
578
  async readTotalMembers(e) {
577
579
  return K(
578
580
  await q().post(
@@ -694,10 +696,10 @@ const qt = { class: "flex items-center mb-16" }, Yt = { class: "flex-1 fm-typo-e
694
696
  );
695
697
  }
696
698
  };
697
- function g(e, s, t, n) {
699
+ function v(e, s, t, n) {
698
700
  return e ? n === void 0 ? e(s) : e(s, n) : t;
699
701
  }
700
- const H = {
702
+ const Y = {
701
703
  totalMembers: "Distinct members recorded through the end of the selected period; the start date does not reduce this total.",
702
704
  activeMembers: "Distinct members with a completed member purchase or voucher redemption during the selected period.",
703
705
  memberSales: "Sum of nettTotal from member-linked bills included in the selected period.",
@@ -717,36 +719,36 @@ const H = {
717
719
  averageRewardUses: "Counted reward-use transactions divided by distinct reward redeemers.",
718
720
  flaggedForReview: "Unique members found across available anomaly signals; findings require verification.",
719
721
  memberSpendComparison: "Shows the value members bring — use it to make the case for growing membership"
720
- }, re = {
722
+ }, ne = {
721
723
  SAME_DAY_BILL_ANOMALY: "same-day-bill-anomaly",
722
724
  REWARD_EARNING_OUTLIER: "reward-earning-outlier"
723
- }, Ve = [
724
- re.SAME_DAY_BILL_ANOMALY,
725
- re.REWARD_EARNING_OUTLIER
726
- ], No = {
727
- [re.SAME_DAY_BILL_ANOMALY]: "Same-day bill anomaly",
728
- [re.REWARD_EARNING_OUTLIER]: "Reward earning outlier"
729
- }, Uo = {
730
- [re.SAME_DAY_BILL_ANOMALY]: "Members attached to at least three distinct completed, positive-value bills in one business day.",
731
- [re.REWARD_EARNING_OUTLIER]: "Daily reward earning is above the merchant-relative threshold for its reward type."
732
- }, zo = {
733
- [re.SAME_DAY_BILL_ANOMALY]: "Threshold: 3 completed bills in one business day.",
734
- [re.REWARD_EARNING_OUTLIER]: "Threshold: the greater of the prior-90-day P99 or median + 5 MAD, per reward type."
735
- }, Vo = {
725
+ }, He = [
726
+ ne.SAME_DAY_BILL_ANOMALY,
727
+ ne.REWARD_EARNING_OUTLIER
728
+ ], Qo = {
729
+ [ne.SAME_DAY_BILL_ANOMALY]: "Same-day bill anomaly",
730
+ [ne.REWARD_EARNING_OUTLIER]: "Reward earning outlier"
731
+ }, Xo = {
732
+ [ne.SAME_DAY_BILL_ANOMALY]: "Members attached to at least three distinct completed, positive-value bills in one business day.",
733
+ [ne.REWARD_EARNING_OUTLIER]: "Daily reward earning is above the merchant-relative threshold for its reward type."
734
+ }, es = {
735
+ [ne.SAME_DAY_BILL_ANOMALY]: "Threshold: 3 completed bills in one business day.",
736
+ [ne.REWARD_EARNING_OUTLIER]: "Threshold: the greater of the prior-90-day P99 or median + 5 MAD, per reward type."
737
+ }, ts = {
736
738
  VOUCHER: "Voucher",
737
739
  CREDIT: "Credit",
738
740
  COIN: "Point/spendable points",
739
741
  POINT: "Experience"
740
- }, it = {
741
- [re.SAME_DAY_BILL_ANOMALY]: "sameDayBillAnomaly",
742
- [re.REWARD_EARNING_OUTLIER]: "rewardEarningOutlier"
743
- }, jo = {
742
+ }, ct = {
743
+ [ne.SAME_DAY_BILL_ANOMALY]: "sameDayBillAnomaly",
744
+ [ne.REWARD_EARNING_OUTLIER]: "rewardEarningOutlier"
745
+ }, as = {
744
746
  VOUCHER: "voucher",
745
747
  CREDIT: "credit",
746
748
  COIN: "coin",
747
749
  POINT: "point"
748
750
  };
749
- function Ko(e) {
751
+ function os(e) {
750
752
  return {
751
753
  dateRange: e.dateRange,
752
754
  businessRestaurantIds: [...e.businessRestaurantIds],
@@ -754,61 +756,61 @@ function Ko(e) {
754
756
  timezone: e.timezone
755
757
  };
756
758
  }
757
- function qo(e, s) {
759
+ function ss(e, s) {
758
760
  return {
759
761
  ...e,
760
762
  dateRange: s
761
763
  };
762
764
  }
763
- function je(e, s) {
764
- return g(
765
+ function We(e, s) {
766
+ return v(
765
767
  s,
766
- `connect.loyalty.dashboard.review.signals.${it[e]}.label`,
767
- No[e]
768
+ `connect.loyalty.dashboard.review.signals.${ct[e]}.label`,
769
+ Qo[e]
768
770
  );
769
771
  }
770
- function bt(e, s) {
771
- return g(
772
+ function gt(e, s) {
773
+ return v(
772
774
  s,
773
- `connect.loyalty.dashboard.review.rewardTypes.${jo[e]}`,
774
- Vo[e]
775
+ `connect.loyalty.dashboard.review.rewardTypes.${as[e]}`,
776
+ ts[e]
775
777
  );
776
778
  }
777
- const Yo = 15 * 60 * 1e3;
778
- function Ho(e, s = /* @__PURE__ */ new Date(), t = Yo) {
779
- const n = Date.parse(e), l = new Date(s).getTime();
780
- return Number.isFinite(n) && Number.isFinite(l) && l - n > t;
779
+ const rs = 15 * 60 * 1e3;
780
+ function ns(e, s = /* @__PURE__ */ new Date(), t = rs) {
781
+ const n = Date.parse(e), i = new Date(s).getTime();
782
+ return Number.isFinite(n) && Number.isFinite(i) && i - n > t;
781
783
  }
782
- function Wo(e, s = {}, t) {
783
- const n = s.loading === !0, l = s.error === !0, y = e ? Ho(e.updatedAt, s.now) : !1, p = ((e == null ? void 0 : e.bySignal) ?? []).filter(
784
- (v) => Ve.includes(v.signal)
785
- ), m = p.length !== ((e == null ? void 0 : e.bySignal.length) ?? 0), _ = !e || e.status === "unavailable" || m, w = (e == null ? void 0 : e.status) === "available" && e.flaggedMembers === 0 && e.totalFindings === 0, R = n ? "loading" : _ ? "unavailable" : y ? "stale" : e.status === "partial" ? "partial" : w ? "empty" : "available", f = {
786
- loading: g(
784
+ function ls(e, s = {}, t) {
785
+ const n = s.loading === !0, i = s.error === !0, y = e ? ns(e.updatedAt, s.now) : !1, p = ((e == null ? void 0 : e.bySignal) ?? []).filter(
786
+ (h) => He.includes(h.signal)
787
+ ), u = p.length !== ((e == null ? void 0 : e.bySignal.length) ?? 0), x = !e || e.status === "unavailable" || u, w = (e == null ? void 0 : e.status) === "available" && e.flaggedMembers === 0 && e.totalFindings === 0, R = n ? "loading" : x ? "unavailable" : y ? "stale" : e.status === "partial" ? "partial" : w ? "empty" : "available", g = {
788
+ loading: v(
787
789
  t,
788
790
  "connect.loyalty.dashboard.review.statusMessages.loading",
789
791
  "Loading report data..."
790
792
  ),
791
- available: g(
793
+ available: v(
792
794
  t,
793
795
  "connect.loyalty.dashboard.review.statusMessages.available",
794
796
  "These are unusual activity findings from report data and require verification."
795
797
  ),
796
- partial: g(
798
+ partial: v(
797
799
  t,
798
800
  "connect.loyalty.dashboard.review.statusMessages.partial",
799
801
  "Some report signals are unavailable. Available findings remain reviewable."
800
802
  ),
801
- unavailable: g(
803
+ unavailable: v(
802
804
  t,
803
- l ? "connect.loyalty.dashboard.review.statusMessages.error" : "connect.loyalty.dashboard.review.statusMessages.unavailable",
804
- l ? "The report could not be loaded for this period." : "Report data is unavailable for this period."
805
+ i ? "connect.loyalty.dashboard.review.statusMessages.error" : "connect.loyalty.dashboard.review.statusMessages.unavailable",
806
+ i ? "The report could not be loaded for this period." : "Report data is unavailable for this period."
805
807
  ),
806
- empty: g(
808
+ empty: v(
807
809
  t,
808
810
  "connect.loyalty.dashboard.review.statusMessages.empty",
809
811
  "No unusual activity detected for the selected period."
810
812
  ),
811
- stale: g(
813
+ stale: v(
812
814
  t,
813
815
  "connect.loyalty.dashboard.review.statusMessages.stale",
814
816
  "The report data may be stale. Verify findings against source records."
@@ -816,81 +818,81 @@ function Wo(e, s = {}, t) {
816
818
  };
817
819
  return {
818
820
  status: R,
819
- availability: m ? "unavailable" : (e == null ? void 0 : e.status) ?? "unavailable",
820
- flaggedMembers: m ? null : (e == null ? void 0 : e.flaggedMembers) ?? null,
821
- totalFindings: m ? null : (e == null ? void 0 : e.totalFindings) ?? null,
821
+ availability: u ? "unavailable" : (e == null ? void 0 : e.status) ?? "unavailable",
822
+ flaggedMembers: u ? null : (e == null ? void 0 : e.flaggedMembers) ?? null,
823
+ totalFindings: u ? null : (e == null ? void 0 : e.totalFindings) ?? null,
822
824
  updatedAt: (e == null ? void 0 : e.updatedAt) ?? null,
823
825
  stale: y,
824
- error: l,
825
- message: f[R],
826
- bySignal: p.map((v) => ({
827
- ...v,
828
- label: je(v.signal, t),
829
- description: g(
826
+ error: i,
827
+ message: g[R],
828
+ bySignal: p.map((h) => ({
829
+ ...h,
830
+ label: We(h.signal, t),
831
+ description: v(
830
832
  t,
831
- `connect.loyalty.dashboard.review.signals.${it[v.signal]}.description`,
832
- Uo[v.signal]
833
+ `connect.loyalty.dashboard.review.signals.${ct[h.signal]}.description`,
834
+ Xo[h.signal]
833
835
  ),
834
- threshold: g(
836
+ threshold: v(
835
837
  t,
836
- `connect.loyalty.dashboard.review.signals.${it[v.signal]}.threshold`,
837
- zo[v.signal]
838
+ `connect.loyalty.dashboard.review.signals.${ct[h.signal]}.threshold`,
839
+ es[h.signal]
838
840
  )
839
841
  }))
840
842
  };
841
843
  }
842
- function Go(e, s, t = /* @__PURE__ */ new Date()) {
843
- const n = Ce.tz(t, s).endOf("day"), l = n.clone().startOf("day");
844
- return l.startOf("month"), [l.toISOString(), n.toISOString()];
844
+ function is(e, s, t = /* @__PURE__ */ new Date()) {
845
+ const n = De.tz(t, s).endOf("day"), i = n.clone().startOf("day");
846
+ return i.startOf("month"), [i.toISOString(), n.toISOString()];
845
847
  }
846
- function Jo(e, s) {
848
+ function cs(e, s) {
847
849
  return e.length ? e : s;
848
850
  }
849
- function Zo(e) {
851
+ function ds(e) {
850
852
  return {
851
853
  dateRange: e.dateRange,
852
854
  compareDateRange: e.compareDateRange,
853
- restaurantIds: Jo(
855
+ restaurantIds: cs(
854
856
  e.selectedLocationIds,
855
857
  e.locationIds
856
858
  ),
857
859
  timezone: e.timezone
858
860
  };
859
861
  }
860
- const Qo = [
862
+ const ms = [
861
863
  "same-period-last-week",
862
864
  "same-period-last-month",
863
865
  "preceding-period",
864
866
  "same-period-last-year",
865
867
  "custom"
866
- ], Xo = "same-period-last-month";
867
- function ft(e, s) {
868
+ ], us = "same-period-last-month";
869
+ function _t(e, s) {
868
870
  return {
869
- start: Ce.tz(e[0], s).startOf("day"),
870
- end: Ce.tz(e[1], s).endOf("day")
871
+ start: De.tz(e[0], s).startOf("day"),
872
+ end: De.tz(e[1], s).endOf("day")
871
873
  };
872
874
  }
873
- function st(e, s) {
875
+ function rt(e, s) {
874
876
  return [e.toISOString(), s.toISOString()];
875
877
  }
876
- function es(e, s, t, n) {
877
- const l = ft(e, t);
878
+ function ys(e, s, t, n) {
879
+ const i = _t(e, t);
878
880
  if (s === "custom" && (n != null && n[0]) && n[1]) {
879
- const w = ft(n, t);
880
- return st(w.start, w.end);
881
+ const w = _t(n, t);
882
+ return rt(w.start, w.end);
881
883
  }
882
884
  const y = s === "same-period-last-week" ? "week" : s === "same-period-last-month" ? "month" : s === "same-period-last-year" ? "year" : null;
883
885
  if (y) {
884
- const w = l.end.diff(l.start, y) + 1;
885
- return st(
886
- l.start.clone().subtract(w, y),
887
- l.end.clone().subtract(w, y)
886
+ const w = i.end.diff(i.start, y) + 1;
887
+ return rt(
888
+ i.start.clone().subtract(w, y),
889
+ i.end.clone().subtract(w, y)
888
890
  );
889
891
  }
890
- const p = l.end.clone().startOf("day").diff(l.start.clone().startOf("day"), "days") + 1, m = l.start.clone().subtract(1, "day").endOf("day"), _ = m.clone().subtract(p - 1, "days").startOf("day");
891
- return st(_, m);
892
+ const p = i.end.clone().startOf("day").diff(i.start.clone().startOf("day"), "days") + 1, u = i.start.clone().subtract(1, "day").endOf("day"), x = u.clone().subtract(p - 1, "days").startOf("day");
893
+ return rt(x, u);
892
894
  }
893
- const Ue = (e) => ({
895
+ const qe = (e) => ({
894
896
  total: 0,
895
897
  totalNew: 0,
896
898
  totalPrev: 0,
@@ -907,34 +909,34 @@ const Ue = (e) => ({
907
909
  series: Array(e).fill(0),
908
910
  prev: Array(e).fill(0)
909
911
  });
910
- Ue(20), Ue(7), Ue(30), Ue(12);
911
- const ct = (e, s) => s ? Math.round(e / s * 1e3) / 10 : 0, ts = (e, s) => s ? Math.round((e - s) / s * 1e3) / 10 : 0, Fe = (e) => e >= 1e3 ? (e / 1e3).toFixed(1).replace(/\.0$/, "") + "k" : String(e), fe = (e, s) => zt(e).set({ currency: s }).toFormat(!0), as = [
912
+ qe(20), qe(7), qe(30), qe(12);
913
+ const dt = (e, s) => s ? Math.round(e / s * 1e3) / 10 : 0, ps = (e, s) => s ? Math.round((e - s) / s * 1e3) / 10 : 0, Ae = (e) => e >= 1e3 ? (e / 1e3).toFixed(1).replace(/\.0$/, "") + "k" : String(e), _e = (e, s) => Jt(e).set({ currency: s }).toFormat(!0), bs = [
912
914
  "neutral-black",
913
915
  "primary",
914
916
  "#FF9C52",
915
917
  "#FFB577",
916
918
  "#FFD0A3"
917
- ], dt = {
919
+ ], mt = {
918
920
  text: "text-fm-color-typo-success",
919
921
  bg: "bg-fm-color-system-success-100"
920
- }, gt = {
922
+ }, Rt = {
921
923
  text: "text-fm-color-typo-error",
922
924
  bg: "bg-fm-color-system-error-100"
923
- }, mt = {
925
+ }, ut = {
924
926
  text: "text-fm-color-typo-warning",
925
927
  bg: "bg-fm-color-system-warning-100"
926
928
  };
927
- function os(e) {
928
- return e === 0 ? "text-fm-color-typo-secondary" : e > 0 ? dt.text : gt.text;
929
+ function fs(e) {
930
+ return e === 0 ? "text-fm-color-typo-secondary" : e > 0 ? mt.text : Rt.text;
929
931
  }
930
- function ss(e, s) {
932
+ function hs(e, s) {
931
933
  const t = [
932
934
  {
933
935
  id: "total",
934
936
  label: "Total members",
935
937
  count: e.totalMembers,
936
938
  desc: "All members through period end",
937
- description: H.totalMembers,
939
+ description: Y.totalMembers,
938
940
  i18nKey: "total",
939
941
  denom: null
940
942
  },
@@ -943,7 +945,7 @@ function ss(e, s) {
943
945
  label: "Active members",
944
946
  count: e.activeMembers,
945
947
  desc: "Purchase or reward activity",
946
- description: H.activeMembers,
948
+ description: Y.activeMembers,
947
949
  i18nKey: "active",
948
950
  denom: e.totalMembers
949
951
  },
@@ -952,7 +954,7 @@ function ss(e, s) {
952
954
  label: "Purchase members",
953
955
  count: e.purchasingMembers,
954
956
  desc: "At least 1 completed order",
955
- description: H.purchasingMembers,
957
+ description: Y.purchasingMembers,
956
958
  i18nKey: "purchasing",
957
959
  denom: e.activeMembers
958
960
  },
@@ -961,7 +963,7 @@ function ss(e, s) {
961
963
  label: "Repeat members",
962
964
  count: e.repeatMembers,
963
965
  desc: "At least 2 completed purchases",
964
- description: H.repeatMembers,
966
+ description: Y.repeatMembers,
965
967
  i18nKey: "repeat",
966
968
  denom: e.purchasingMembers
967
969
  },
@@ -970,68 +972,68 @@ function ss(e, s) {
970
972
  label: "Reward redeemers",
971
973
  count: e.rewardRedeemers,
972
974
  desc: "Repeat member used reward",
973
- description: H.funnelRewardRedeemers,
975
+ description: Y.funnelRewardRedeemers,
974
976
  i18nKey: "redeemers",
975
977
  denom: e.repeatMembers
976
978
  }
977
979
  ], n = t.map(
978
- (m, _) => _ === 0 || !m.denom ? null : ct(m.count, m.denom)
980
+ (u, x) => x === 0 || !u.denom ? null : dt(u.count, u.denom)
979
981
  );
980
- let l = null, y = 100;
981
- return e.totalMembers > 0 && n.forEach((m, _) => {
982
- _ > 0 && m !== null && m < y && (y = m, l = _);
982
+ let i = null, y = 100;
983
+ return e.totalMembers > 0 && n.forEach((u, x) => {
984
+ x > 0 && u !== null && u < y && (y = u, i = x);
983
985
  }), {
984
- funnelStages: t.map((m, _) => {
985
- const w = n[_], R = _ === l, f = `connect.loyalty.dashboard.funnel.stages.${m.i18nKey}`;
986
+ funnelStages: t.map((u, x) => {
987
+ const w = n[x], R = x === i, g = `connect.loyalty.dashboard.funnel.stages.${u.i18nKey}`;
986
988
  return {
987
- id: m.id,
988
- label: g(s, `${f}.label`, m.label),
989
- desc: g(s, `${f}.short`, m.desc),
990
- description: g(
989
+ id: u.id,
990
+ label: v(s, `${g}.label`, u.label),
991
+ desc: v(s, `${g}.short`, u.desc),
992
+ description: v(
991
993
  s,
992
- `${f}.description`,
993
- m.description
994
+ `${g}.description`,
995
+ u.description
994
996
  ),
995
- countStr: Fe(m.count),
996
- conversionStr: w != null ? g(
997
+ countStr: Ae(u.count),
998
+ conversionStr: w != null ? v(
997
999
  s,
998
1000
  "connect.loyalty.dashboard.funnel.conversion",
999
1001
  `${w}% convert`,
1000
1002
  { rate: w }
1001
1003
  ) : "",
1002
- convRateLabel: w != null ? g(
1004
+ convRateLabel: w != null ? v(
1003
1005
  s,
1004
1006
  "connect.loyalty.dashboard.funnel.ofPrevious",
1005
1007
  `${w}% of prev`,
1006
1008
  { rate: w }
1007
1009
  ) : "",
1008
- hasConvRate: _ > 0,
1009
- hasDropLine: _ > 0,
1010
+ hasConvRate: x > 0,
1011
+ hasDropLine: x > 0,
1010
1012
  isBiggestDrop: R,
1011
- barColor: as[_] ?? "#FFD0A3",
1012
- barWidthPct: e.totalMembers > 0 && m.count > 0 ? Math.max(ct(m.count, e.totalMembers), 1) : 0,
1013
- dropClass: R ? `${mt.text} bg-[#FFF0E2]` : "text-fm-color-typo-secondary bg-fm-color-neutral-gray-100"
1013
+ barColor: bs[x] ?? "#FFD0A3",
1014
+ barWidthPct: e.totalMembers > 0 && u.count > 0 ? Math.max(dt(u.count, e.totalMembers), 1) : 0,
1015
+ dropClass: R ? `${ut.text} bg-[#FFF0E2]` : "text-fm-color-typo-secondary bg-fm-color-neutral-gray-100"
1014
1016
  };
1015
1017
  }),
1016
- funnelFootnote: g(
1018
+ funnelFootnote: v(
1017
1019
  s,
1018
1020
  "connect.loyalty.dashboard.funnel.footnote",
1019
1021
  `${e.totalMembers.toLocaleString()} total members`,
1020
1022
  e.totalMembers
1021
1023
  ),
1022
1024
  convRates: n,
1023
- biggestDropIdx: l
1025
+ biggestDropIdx: i
1024
1026
  };
1025
1027
  }
1026
- function rs(e, s) {
1027
- const { funnelStages: t, funnelFootnote: n } = ss(
1028
+ function vs(e, s) {
1029
+ const { funnelStages: t, funnelFootnote: n } = hs(
1028
1030
  e,
1029
1031
  s
1030
1032
  );
1031
1033
  return { funnelStages: t, funnelFootnote: n };
1032
1034
  }
1033
- const ns = 10;
1034
- function ls(e, s) {
1035
+ const gs = 10;
1036
+ function _s(e, s) {
1035
1037
  const t = [
1036
1038
  {
1037
1039
  i18nKey: "reactivation",
@@ -1080,20 +1082,20 @@ function ls(e, s) {
1080
1082
  ];
1081
1083
  let n = null;
1082
1084
  for (const p of t)
1083
- p.source < ns || p.target >= p.source || (!n || p.target / p.source < n.target / n.source) && (n = p);
1085
+ p.source < gs || p.target >= p.source || (!n || p.target / p.source < n.target / n.source) && (n = p);
1084
1086
  if (!n) return null;
1085
- const l = Math.round(n.target / n.source * 1e3) / 10, y = `connect.loyalty.dashboard.insight.candidates.${n.i18nKey}`;
1087
+ const i = Math.round(n.target / n.source * 1e3) / 10, y = `connect.loyalty.dashboard.insight.candidates.${n.i18nKey}`;
1086
1088
  return {
1087
- title: g(s, `${y}.title`, n.title),
1088
- body: `${g(
1089
+ title: v(s, `${y}.title`, n.title),
1090
+ body: `${v(
1089
1091
  s,
1090
1092
  "connect.loyalty.dashboard.insight.progress",
1091
- `${l}% of this stage progressed in the selected period.`,
1092
- { rate: l }
1093
- )} ${g(s, `${y}.body`, n.body)}`,
1093
+ `${i}% of this stage progressed in the selected period.`,
1094
+ { rate: i }
1095
+ )} ${v(s, `${y}.body`, n.body)}`,
1094
1096
  action: {
1095
1097
  ...n.action,
1096
- label: g(
1098
+ label: v(
1097
1099
  s,
1098
1100
  `${y}.action`,
1099
1101
  n.action.label
@@ -1101,7 +1103,7 @@ function ls(e, s) {
1101
1103
  },
1102
1104
  signals: [
1103
1105
  {
1104
- text: g(
1106
+ text: v(
1105
1107
  s,
1106
1108
  "connect.loyalty.dashboard.insight.signal",
1107
1109
  `${n.target.toLocaleString()} of ${n.source.toLocaleString()} members progressed`,
@@ -1114,7 +1116,7 @@ function ls(e, s) {
1114
1116
  ]
1115
1117
  };
1116
1118
  }
1117
- const is = {
1119
+ const xs = {
1118
1120
  VOUCHER: "Voucher",
1119
1121
  PROMOTION: "Promotion",
1120
1122
  POINT: "Experience",
@@ -1124,24 +1126,24 @@ const is = {
1124
1126
  REWARD_POOL: "Reward pool",
1125
1127
  GAME: "Game",
1126
1128
  MISSION: "Mission"
1127
- }, cs = {
1128
- active: { label: "Active", class: dt.text },
1129
+ }, ws = {
1130
+ active: { label: "Active", class: mt.text },
1129
1131
  expired: { label: "Ended", class: "text-fm-color-typo-tertiary" },
1130
- upcoming: { label: "Upcoming", class: mt.text }
1132
+ upcoming: { label: "Upcoming", class: ut.text }
1131
1133
  };
1132
- function ds(e) {
1134
+ function Rs(e) {
1133
1135
  return e.type !== "MEMBERSHIP";
1134
1136
  }
1135
- function ms(e, s) {
1137
+ function Ss(e, s) {
1136
1138
  var t;
1137
1139
  return !s.length || !((t = e.targetLocation) != null && t.length) ? !0 : e.targetLocation.some(
1138
1140
  (n) => s.includes(n.toString())
1139
1141
  );
1140
1142
  }
1141
- function rt(e) {
1143
+ function nt(e) {
1142
1144
  var s;
1143
1145
  if (((s = e.timeframeOptions) == null ? void 0 : s.type) === "timeframe") {
1144
- const t = Ce();
1146
+ const t = De();
1145
1147
  return t.isBetween(
1146
1148
  e.timeframeOptions.start ?? t.clone().subtract(1, "d"),
1147
1149
  e.timeframeOptions.end ?? t.clone().add(1, "d")
@@ -1149,31 +1151,31 @@ function rt(e) {
1149
1151
  }
1150
1152
  return "active";
1151
1153
  }
1152
- function us(e, s, t) {
1153
- return e.filter(ds).filter(
1154
+ function Ms(e, s, t) {
1155
+ return e.filter(Rs).filter(
1154
1156
  (n) => n.type !== "BROADCAST" || !n.linkedCampaign
1155
1157
  ).filter(
1156
- (n) => ms(n, s)
1157
- ).sort((n, l) => {
1158
- const y = rt(n);
1159
- return +(rt(l) === "active") - +(y === "active");
1158
+ (n) => Ss(n, s)
1159
+ ).sort((n, i) => {
1160
+ const y = nt(n);
1161
+ return +(nt(i) === "active") - +(y === "active");
1160
1162
  }).slice(0, 4).map((n) => {
1161
- const l = rt(n), y = cs[l], p = n.type === "BROADCAST", m = g(
1163
+ const i = nt(n), y = ws[i], p = n.type === "BROADCAST", u = v(
1162
1164
  t,
1163
1165
  `connect.loyalty.dashboard.campaigns.types.${n.type}`,
1164
- is[n.type] ?? n.type
1165
- ), _ = g(
1166
+ xs[n.type] ?? n.type
1167
+ ), x = v(
1166
1168
  t,
1167
- `connect.loyalty.dashboard.campaigns.status.${l}`,
1169
+ `connect.loyalty.dashboard.campaigns.status.${i}`,
1168
1170
  y.label
1169
1171
  );
1170
1172
  return {
1171
1173
  id: n._id.toString(),
1172
1174
  name: n.name,
1173
- type: m,
1174
- status: _,
1175
- metric: p ? String(n.currentReceive ?? 0) : _,
1176
- metricLabel: g(
1175
+ type: u,
1176
+ status: x,
1177
+ metric: p ? String(n.currentReceive ?? 0) : x,
1178
+ metricLabel: v(
1177
1179
  t,
1178
1180
  p ? "connect.loyalty.dashboard.campaigns.messagesSent" : "connect.loyalty.dashboard.campaigns.statusLabel",
1179
1181
  p ? "Messages sent" : "Status"
@@ -1182,13 +1184,13 @@ function us(e, s, t) {
1182
1184
  };
1183
1185
  });
1184
1186
  }
1185
- function ys(e, s, t) {
1187
+ function $s(e, s, t) {
1186
1188
  return {
1187
1189
  categories: e.categories,
1188
1190
  prevCategories: e.prevCategories,
1189
1191
  comparisonCategories: e.categories.map(
1190
- (n, l) => [n, e.prevCategories[l]].filter(Boolean).map((y) => Ce(y).format("DD/MM/YYYY")).join(
1191
- g(
1192
+ (n, i) => [n, e.prevCategories[i]].filter(Boolean).map((y) => De(y).format("DD/MM/YYYY")).join(
1193
+ v(
1192
1194
  t,
1193
1195
  "connect.loyalty.dashboard.salesTrend.comparisonSeparator",
1194
1196
  " vs "
@@ -1197,135 +1199,135 @@ function ys(e, s, t) {
1197
1199
  ),
1198
1200
  series: e.series,
1199
1201
  prevSeries: e.prevSeries,
1200
- description: g(
1202
+ description: v(
1201
1203
  t,
1202
1204
  "connect.loyalty.dashboard.salesTrend.description",
1203
- H.memberSalesTrend
1205
+ Y.memberSalesTrend
1204
1206
  ),
1205
- totalFmt: fe(e.memberSales, s),
1207
+ totalFmt: _e(e.memberSales, s),
1206
1208
  deltaStr: `${e.deltaPct > 0 ? "+" : ""}${e.deltaPct}%`,
1207
- deltaClass: os(e.deltaPct)
1209
+ deltaClass: fs(e.deltaPct)
1208
1210
  };
1209
1211
  }
1210
- function ps(e, s, t, n, l) {
1212
+ function Cs(e, s, t, n, i) {
1211
1213
  if (!e.memberOrders && !e.nonMemberOrders)
1212
- return g(
1213
- l,
1214
+ return v(
1215
+ i,
1214
1216
  "connect.loyalty.dashboard.spend.summary.noOrders",
1215
1217
  "No completed orders were recorded in this period."
1216
1218
  );
1217
1219
  if (t === 0 && s > 0)
1218
- return g(
1219
- l,
1220
+ return v(
1221
+ i,
1220
1222
  "connect.loyalty.dashboard.spend.summary.memberAll",
1221
1223
  "Members account for all tracked spend in this period."
1222
1224
  );
1223
1225
  if (s === 0 && t > 0)
1224
- return g(
1225
- l,
1226
+ return v(
1227
+ i,
1226
1228
  "connect.loyalty.dashboard.spend.summary.nonMemberAll",
1227
1229
  "Non-members account for all tracked spend in this period."
1228
1230
  );
1229
1231
  if (n > 0)
1230
- return g(
1231
- l,
1232
+ return v(
1233
+ i,
1232
1234
  "connect.loyalty.dashboard.spend.summary.memberHigher",
1233
1235
  `Members spend ${n}% more per order than non-members. Converting more walk-ins to members is a direct lever on sales.`,
1234
1236
  { gap: n }
1235
1237
  );
1236
1238
  if (n < 0) {
1237
1239
  const y = Math.abs(n);
1238
- return g(
1239
- l,
1240
+ return v(
1241
+ i,
1240
1242
  "connect.loyalty.dashboard.spend.summary.nonMemberHigher",
1241
1243
  `Non-members spend ${y}% more per order than members. Converting more walk-ins to members can increase member-linked sales.`,
1242
1244
  { gap: y }
1243
1245
  );
1244
1246
  }
1245
- return g(
1246
- l,
1247
+ return v(
1248
+ i,
1247
1249
  "connect.loyalty.dashboard.spend.summary.equal",
1248
1250
  "Members and non-members have the same average order value in this period."
1249
1251
  );
1250
1252
  }
1251
- function bs(e, s, t) {
1252
- const n = e.memberOrders ? e.memberSales / e.memberOrders : 0, l = e.nonMemberOrders ? e.nonMemberSales / e.nonMemberOrders : 0, y = e.memberSales + e.nonMemberSales, p = ts(n, l);
1253
+ function Fs(e, s, t) {
1254
+ const n = e.memberOrders ? e.memberSales / e.memberOrders : 0, i = e.nonMemberOrders ? e.nonMemberSales / e.nonMemberOrders : 0, y = e.memberSales + e.nonMemberSales, p = ps(n, i);
1253
1255
  return {
1254
- description: g(
1256
+ description: v(
1255
1257
  t,
1256
1258
  "connect.loyalty.dashboard.spend.description",
1257
- H.memberSpendComparison
1259
+ Y.memberSpendComparison
1258
1260
  ),
1259
- memberSalesFmt: fe(e.memberSales, s),
1260
- nonMemberSalesFmt: fe(e.nonMemberSales, s),
1261
- avgMemberSaleFmt: fe(n, s),
1262
- avgNonMemberSaleFmt: fe(l, s),
1263
- memberSharePct: ct(e.memberSales, y),
1261
+ memberSalesFmt: _e(e.memberSales, s),
1262
+ nonMemberSalesFmt: _e(e.nonMemberSales, s),
1263
+ avgMemberSaleFmt: _e(n, s),
1264
+ avgNonMemberSaleFmt: _e(i, s),
1265
+ memberSharePct: dt(e.memberSales, y),
1264
1266
  avgGapPct: p,
1265
- summary: ps(
1267
+ summary: Cs(
1266
1268
  e,
1267
1269
  n,
1268
- l,
1270
+ i,
1269
1271
  p,
1270
1272
  t
1271
1273
  )
1272
1274
  };
1273
1275
  }
1274
- function fs(e, s) {
1276
+ function Ds(e, s) {
1275
1277
  const t = e.criteria, n = {
1276
- newlyJoined: g(
1278
+ newlyJoined: v(
1277
1279
  s,
1278
1280
  "connect.loyalty.dashboard.lifecycle.descriptions.newlyJoined",
1279
- H.newlyJoined
1281
+ Y.newlyJoined
1280
1282
  ),
1281
- frequent: t ? g(
1283
+ frequent: t ? v(
1282
1284
  s,
1283
1285
  "connect.loyalty.dashboard.lifecycle.descriptions.frequentWithCriteria",
1284
1286
  `Existing members with at least ${t.frequentMinBills} completed member bills in the selected period.`,
1285
1287
  { count: t.frequentMinBills }
1286
- ) : g(
1288
+ ) : v(
1287
1289
  s,
1288
1290
  "connect.loyalty.dashboard.lifecycle.descriptions.frequent",
1289
- H.frequent
1291
+ Y.frequent
1290
1292
  ),
1291
- infrequent: t ? g(
1293
+ infrequent: t ? v(
1292
1294
  s,
1293
1295
  "connect.loyalty.dashboard.lifecycle.descriptions.infrequentWithCriteria",
1294
1296
  `Existing members with 1 to ${t.frequentMinBills - 1} completed member bills in the selected period.`,
1295
1297
  { count: t.frequentMinBills - 1 }
1296
- ) : g(
1298
+ ) : v(
1297
1299
  s,
1298
1300
  "connect.loyalty.dashboard.lifecycle.descriptions.infrequent",
1299
- H.infrequent
1301
+ Y.infrequent
1300
1302
  ),
1301
- atRisk: t ? g(
1303
+ atRisk: t ? v(
1302
1304
  s,
1303
1305
  "connect.loyalty.dashboard.lifecycle.descriptions.atRiskWithCriteria",
1304
1306
  `Existing members with no selected-period purchase but a completed purchase in the prior ${t.atRiskLookbackDays} calendar days.`,
1305
1307
  { count: t.atRiskLookbackDays }
1306
- ) : g(
1308
+ ) : v(
1307
1309
  s,
1308
1310
  "connect.loyalty.dashboard.lifecycle.descriptions.atRisk",
1309
- H.atRisk
1311
+ Y.atRisk
1310
1312
  ),
1311
- dormant: t ? g(
1313
+ dormant: t ? v(
1312
1314
  s,
1313
1315
  "connect.loyalty.dashboard.lifecycle.descriptions.dormantWithCriteria",
1314
1316
  `Existing members with no selected-period purchase and no completed purchase in the prior ${t.atRiskLookbackDays} calendar days.`,
1315
1317
  { count: t.atRiskLookbackDays }
1316
- ) : g(
1318
+ ) : v(
1317
1319
  s,
1318
1320
  "connect.loyalty.dashboard.lifecycle.descriptions.dormant",
1319
- H.dormant
1321
+ Y.dormant
1320
1322
  )
1321
- }, l = [
1323
+ }, i = [
1322
1324
  {
1323
1325
  id: "new",
1324
1326
  label: "Newly joined",
1325
1327
  count: e.newlyJoined,
1326
1328
  description: n.newlyJoined,
1327
1329
  i18nKey: "new",
1328
- labelClass: dt.text,
1330
+ labelClass: mt.text,
1329
1331
  barColor: "typo-success"
1330
1332
  },
1331
1333
  {
@@ -1352,7 +1354,7 @@ function fs(e, s) {
1352
1354
  count: e.atRisk,
1353
1355
  description: n.atRisk,
1354
1356
  i18nKey: "atRisk",
1355
- labelClass: mt.text,
1357
+ labelClass: ut.text,
1356
1358
  barColor: "#FFC746"
1357
1359
  },
1358
1360
  {
@@ -1361,60 +1363,60 @@ function fs(e, s) {
1361
1363
  count: e.dormant,
1362
1364
  description: n.dormant,
1363
1365
  i18nKey: "dormant",
1364
- labelClass: gt.text,
1366
+ labelClass: Rt.text,
1365
1367
  barColor: "#FFCFCC"
1366
1368
  }
1367
- ], y = Math.max(...l.map((m) => m.count), 1);
1369
+ ], y = Math.max(...i.map((u) => u.count), 1);
1368
1370
  return {
1369
- lifecycleSegs: l.map((m) => ({
1370
- ...m,
1371
- label: g(
1371
+ lifecycleSegs: i.map((u) => ({
1372
+ ...u,
1373
+ label: v(
1372
1374
  s,
1373
- `connect.loyalty.dashboard.lifecycle.labels.${m.i18nKey}`,
1374
- m.label
1375
+ `connect.loyalty.dashboard.lifecycle.labels.${u.i18nKey}`,
1376
+ u.label
1375
1377
  ),
1376
- barPct: Math.round(m.count / y * 100),
1377
- pctStr: `${e.totalMembers ? Math.round(m.count / e.totalMembers * 100) : 0}%`,
1378
- countStr: Fe(m.count)
1378
+ barPct: Math.round(u.count / y * 100),
1379
+ pctStr: `${e.totalMembers ? Math.round(u.count / e.totalMembers * 100) : 0}%`,
1380
+ countStr: Ae(u.count)
1379
1381
  })),
1380
- lifecycleSummary: g(
1382
+ lifecycleSummary: v(
1381
1383
  s,
1382
1384
  "connect.loyalty.dashboard.lifecycle.summary",
1383
- `${Fe(e.atRisk + e.dormant)} members are at-risk or dormant`,
1385
+ `${Ae(e.atRisk + e.dormant)} members are at-risk or dormant`,
1384
1386
  e.atRisk + e.dormant
1385
1387
  )
1386
1388
  };
1387
1389
  }
1388
- function hs(e, s) {
1389
- return fs(e, s);
1390
+ function As(e, s) {
1391
+ return Ds(e, s);
1390
1392
  }
1391
- function vs(e, s, t) {
1392
- return e.displayUnit === "uses" ? g(
1393
+ function ks(e, s, t) {
1394
+ return e.displayUnit === "uses" ? v(
1393
1395
  t,
1394
1396
  "connect.loyalty.dashboard.rewards.uses",
1395
- `${Fe(e.displayValue)} ${e.displayValue === 1 ? "use" : "uses"}`,
1397
+ `${Ae(e.displayValue)} ${e.displayValue === 1 ? "use" : "uses"}`,
1396
1398
  e.displayValue
1397
- ) : e.type === "COIN" ? g(
1399
+ ) : e.type === "COIN" ? v(
1398
1400
  t,
1399
1401
  "connect.loyalty.dashboard.rewards.points",
1400
- `${Fe(e.displayValue)} pts`,
1402
+ `${Ae(e.displayValue)} pts`,
1401
1403
  e.displayValue
1402
- ) : fe(e.displayValue, s);
1404
+ ) : _e(e.displayValue, s);
1403
1405
  }
1404
- function gs(e, s) {
1406
+ function Is(e, s) {
1405
1407
  if (e.displayUnit === "uses")
1406
- return g(
1408
+ return v(
1407
1409
  s,
1408
1410
  "connect.loyalty.dashboard.rewards.topReward.voucherUsesDescription",
1409
1411
  "Counted voucher-use transactions for this reward during the selected period."
1410
1412
  );
1411
1413
  const t = e.type === "COIN" ? "point" : e.type.toLowerCase();
1412
- return g(
1414
+ return v(
1413
1415
  s,
1414
1416
  "connect.loyalty.dashboard.rewards.topReward.amountDescription",
1415
1417
  `Total ${t} amount used for this reward during the selected period.`,
1416
1418
  {
1417
- type: g(
1419
+ type: v(
1418
1420
  s,
1419
1421
  `connect.loyalty.dashboard.rewards.types.${e.type}`,
1420
1422
  t
@@ -1422,103 +1424,103 @@ function gs(e, s) {
1422
1424
  }
1423
1425
  );
1424
1426
  }
1425
- function _s(e, s, t) {
1427
+ function Ls(e, s, t) {
1426
1428
  const n = Math.max(
1427
- ...e.topRewards.map((l) => l.usageCount),
1429
+ ...e.topRewards.map((i) => i.usageCount),
1428
1430
  1
1429
1431
  );
1430
1432
  return {
1431
1433
  rewardKpis: [
1432
1434
  {
1433
- label: g(
1435
+ label: v(
1434
1436
  t,
1435
1437
  "connect.loyalty.dashboard.rewards.kpis.rewardRedeemers",
1436
1438
  "Reward redeemers"
1437
1439
  ),
1438
- value: Fe(e.rewardRedeemers),
1439
- description: g(
1440
+ value: Ae(e.rewardRedeemers),
1441
+ description: v(
1440
1442
  t,
1441
1443
  "connect.loyalty.dashboard.rewards.descriptions.rewardRedeemers",
1442
- H.rewardRedeemers
1444
+ Y.rewardRedeemers
1443
1445
  )
1444
1446
  },
1445
1447
  {
1446
- label: g(
1448
+ label: v(
1447
1449
  t,
1448
1450
  "connect.loyalty.dashboard.rewards.kpis.redemptionRate",
1449
1451
  "Redemption rate"
1450
1452
  ),
1451
1453
  value: `${e.redemptionRatePct}%`,
1452
- description: g(
1454
+ description: v(
1453
1455
  t,
1454
1456
  "connect.loyalty.dashboard.rewards.descriptions.redemptionRate",
1455
- H.redemptionRate
1457
+ Y.redemptionRate
1456
1458
  )
1457
1459
  },
1458
1460
  {
1459
- label: g(
1461
+ label: v(
1460
1462
  t,
1461
1463
  "connect.loyalty.dashboard.rewards.kpis.averageUses",
1462
1464
  "Avg reward uses"
1463
1465
  ),
1464
1466
  value: `${e.averageRewardUsesPerRedeemer}x`,
1465
- description: g(
1467
+ description: v(
1466
1468
  t,
1467
1469
  "connect.loyalty.dashboard.rewards.descriptions.averageUses",
1468
- H.averageRewardUses
1470
+ Y.averageRewardUses
1469
1471
  )
1470
1472
  }
1471
1473
  ],
1472
- topRewards: e.topRewards.map((l) => ({
1473
- name: l.name,
1474
- count: vs(l, s, t),
1475
- description: gs(l, t),
1476
- barPct: l.usageCount ? Math.round(l.usageCount / n * 100) : 0
1474
+ topRewards: e.topRewards.map((i) => ({
1475
+ name: i.name,
1476
+ count: ks(i, s, t),
1477
+ description: Is(i, t),
1478
+ barPct: i.usageCount ? Math.round(i.usageCount / n * 100) : 0
1477
1479
  }))
1478
1480
  };
1479
1481
  }
1480
- const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex flex-col gap-12 pb-16 border-b border-fm-color-neutral-gray-100" }, Rs = { class: "flex items-center justify-between gap-8" }, Ss = { class: "fm-typo-en-body-md-600 text-fm-color-typo-primary" }, Ms = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-2" }, $s = {
1482
+ const Os = { class: "flex flex-col gap-16 min-h-full" }, Es = { class: "flex flex-col gap-12 pb-16 border-b border-fm-color-neutral-gray-100" }, Ps = { class: "flex items-center justify-between gap-8" }, Bs = { class: "fm-typo-en-body-md-600 text-fm-color-typo-primary" }, Ts = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-2" }, Ns = {
1481
1483
  key: 0,
1482
1484
  class: "flex items-center justify-center min-h-[72px]"
1483
- }, Cs = { class: "grid grid-cols-2 gap-8" }, Fs = { class: "border border-fm-color-neutral-gray-100 rounded-sm p-12" }, As = { class: "fm-typo-en-title-lg-800 text-fm-color-typo-primary" }, Ds = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mt-4" }, ks = { class: "border border-fm-color-neutral-gray-100 rounded-sm p-12" }, Is = { class: "fm-typo-en-title-lg-800 text-fm-color-typo-primary" }, Ls = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mt-4" }, Os = {
1485
+ }, Us = { class: "grid grid-cols-2 gap-8" }, zs = { class: "border border-fm-color-neutral-gray-100 rounded-sm p-12" }, Vs = { class: "fm-typo-en-title-lg-800 text-fm-color-typo-primary" }, js = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mt-4" }, Ks = { class: "border border-fm-color-neutral-gray-100 rounded-sm p-12" }, qs = { class: "fm-typo-en-title-lg-800 text-fm-color-typo-primary" }, Ys = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mt-4" }, Hs = {
1484
1486
  key: 0,
1485
1487
  class: "flex flex-col gap-8"
1486
- }, Es = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Ps = { class: "flex items-center justify-between gap-8" }, Ts = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Bs = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Ns = { class: "flex items-start justify-between gap-12 fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, Us = { class: "whitespace-nowrap" }, zs = {
1488
+ }, Ws = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Gs = { class: "flex items-center justify-between gap-8" }, Js = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Zs = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Qs = { class: "flex items-start justify-between gap-12 fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, Xs = { class: "whitespace-nowrap" }, er = {
1487
1489
  key: 0,
1488
1490
  class: "mt-4 pl-12 border-l-2 border-fm-color-neutral-gray-100 flex flex-col gap-4"
1489
- }, Vs = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, js = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Ks = {
1491
+ }, tr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, ar = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, or = {
1490
1492
  key: 0,
1491
1493
  class: "fm-typo-en-body-sm-400 text-fm-color-typo-error p-12 rounded-sm border border-fm-color-system-error-200 bg-fm-color-system-error-100"
1492
- }, qs = { class: "grid grid-cols-2 md:grid-cols-4 gap-8 items-end" }, Ys = { class: "flex items-center justify-between gap-12 flex-wrap" }, Hs = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Ws = {
1494
+ }, sr = { class: "grid grid-cols-2 md:grid-cols-4 gap-8 items-end" }, rr = { class: "flex items-center justify-between gap-12 flex-wrap" }, nr = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, lr = {
1493
1495
  key: 0,
1494
1496
  class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
1495
- }, Gs = { class: "flex items-center gap-8" }, Js = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Zs = {
1497
+ }, ir = { class: "flex items-center gap-8" }, cr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, dr = {
1496
1498
  key: 1,
1497
1499
  class: "flex items-center justify-center min-h-[180px]"
1498
- }, Qs = {
1500
+ }, mr = {
1499
1501
  key: 2,
1500
1502
  class: "flex flex-col items-center justify-center gap-8 min-h-[180px] text-center"
1501
- }, Xs = { class: "fm-typo-en-body-md-600 text-fm-color-typo-primary" }, er = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, tr = {
1503
+ }, ur = { class: "fm-typo-en-body-md-600 text-fm-color-typo-primary" }, yr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, pr = {
1502
1504
  key: 3,
1503
1505
  class: "flex flex-col items-center justify-center gap-8 min-h-[180px] text-center"
1504
- }, ar = { class: "fm-typo-en-body-md-600 text-fm-color-typo-primary" }, or = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, sr = {
1506
+ }, br = { class: "fm-typo-en-body-md-600 text-fm-color-typo-primary" }, fr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, hr = {
1505
1507
  key: 4,
1506
1508
  class: "flex flex-col gap-8"
1507
- }, rr = { class: "flex items-stretch gap-8 p-12" }, nr = ["aria-expanded", "onClick", "onKeydown"], lr = { class: "flex-1 min-w-0" }, ir = { class: "fm-typo-en-body-md-600 text-fm-color-typo-primary truncate" }, cr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary truncate" }, dr = { class: "hidden md:flex flex-col justify-center min-w-[150px]" }, mr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, ur = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, yr = { class: "hidden lg:flex flex-wrap items-center gap-4 max-w-[260px]" }, pr = {
1509
+ }, vr = { class: "flex items-stretch gap-8 p-12" }, gr = ["aria-expanded", "onClick", "onKeydown"], _r = { class: "flex-1 min-w-0" }, xr = { class: "fm-typo-en-body-md-600 text-fm-color-typo-primary truncate" }, wr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary truncate" }, Rr = { class: "hidden md:flex flex-col justify-center min-w-[150px]" }, Sr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, Mr = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, $r = { class: "hidden lg:flex flex-wrap items-center gap-4 max-w-[260px]" }, Cr = {
1508
1510
  key: 0,
1509
1511
  class: "border-t border-fm-color-neutral-gray-100 bg-fm-color-neutral-gray-100 p-16"
1510
- }, br = { class: "grid grid-cols-1 md:grid-cols-2 gap-16 mb-16" }, fr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, hr = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, vr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, gr = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, _r = { class: "flex flex-col gap-8" }, xr = { class: "flex items-start justify-between gap-12" }, wr = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Rr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary whitespace-nowrap" }, Sr = { class: "grid grid-cols-1 md:grid-cols-2 gap-x-16 gap-y-8 mt-8" }, Mr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, $r = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Cr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Fr = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Ar = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Dr = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, kr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Ir = {
1512
+ }, Fr = { class: "grid grid-cols-1 md:grid-cols-2 gap-16 mb-16" }, Dr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, Ar = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, kr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, Ir = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Lr = { class: "flex flex-col gap-8" }, Or = { class: "flex items-start justify-between gap-12" }, Er = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Pr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary whitespace-nowrap" }, Br = { class: "grid grid-cols-1 md:grid-cols-2 gap-x-16 gap-y-8 mt-8" }, Tr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Nr = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Ur = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, zr = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Vr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, jr = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary" }, Kr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, qr = {
1511
1513
  key: 0,
1512
1514
  class: "mt-4 flex max-w-full flex-wrap gap-4"
1513
- }, Lr = {
1515
+ }, Yr = {
1514
1516
  key: 1,
1515
1517
  class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary"
1516
- }, Or = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary md:col-span-2" }, Er = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary break-words" }, Pr = {
1518
+ }, Hr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary md:col-span-2" }, Wr = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-primary break-words" }, Gr = {
1517
1519
  key: 5,
1518
1520
  class: "flex items-center justify-between gap-12 pt-8 border-t border-fm-color-neutral-gray-100"
1519
- }, Tr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Br = { class: "flex items-center gap-4" }, Nr = /* @__PURE__ */ Z({
1521
+ }, Jr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Zr = { class: "flex items-center gap-4" }, Qr = /* @__PURE__ */ Z({
1520
1522
  __name: "RewardAbuseFindingsSheet",
1521
- props: /* @__PURE__ */ Ft({
1523
+ props: /* @__PURE__ */ Bt({
1522
1524
  payload: {},
1523
1525
  summary: {},
1524
1526
  outlierMetric: {},
@@ -1529,17 +1531,17 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
1529
1531
  }),
1530
1532
  emits: ["update:modelValue"],
1531
1533
  setup(e) {
1532
- const s = e, { t, locale: n } = Q(), l = (u, $) => typeof $ == "number" ? t(u, $) : $ === void 0 ? t(u) : t(u, $), y = At(e, "modelValue"), p = S(Ve[0]), m = S([]), _ = S(""), w = S({
1534
+ const s = e, { t, locale: n } = Q(), i = (m, C) => typeof C == "number" ? t(m, C) : C === void 0 ? t(m) : t(m, C), y = Tt(e, "modelValue"), p = S(He[0]), u = S([]), x = S(""), w = S({
1533
1535
  startDate: void 0,
1534
1536
  endDate: void 0
1535
- }), R = S(10), f = S(0), v = S("latestOccurredOn"), E = S([]), B = S(0), D = S(0), X = S(!1), ve = S(!1), ne = S(!1), j = S({}), ae = S(null), ge = S(null);
1536
- let le = 0, ie = "", oe;
1537
- const Ae = F(
1538
- () => Ve.map((u) => ({
1539
- label: je(u, l),
1540
- value: u
1537
+ }), R = S(10), g = S(0), h = S("latestOccurredOn"), V = S([]), oe = S(0), I = S(0), X = S(!1), ke = S(!1), be = S(!1), A = S({}), ee = S(null), le = S(null);
1538
+ let G = 0, te = "", se;
1539
+ const Ue = $(
1540
+ () => He.map((m) => ({
1541
+ label: We(m, i),
1542
+ value: m
1541
1543
  }))
1542
- ), De = F(() => [
1544
+ ), ze = $(() => [
1543
1545
  {
1544
1546
  label: t("connect.loyalty.dashboard.review.sortItems.latestFlagged"),
1545
1547
  value: "latestOccurredOn"
@@ -1548,19 +1550,19 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
1548
1550
  label: t("connect.loyalty.dashboard.review.sortItems.highestObserved"),
1549
1551
  value: "observedValue"
1550
1552
  }
1551
- ]), ke = [
1553
+ ]), ie = [
1552
1554
  { label: "10", value: 10 },
1553
1555
  { label: "20", value: 20 },
1554
1556
  { label: "50", value: 50 }
1555
- ], k = F(
1556
- () => D.value ? Math.ceil(D.value / R.value) : 0
1557
- ), _e = F(() => f.value + 1), xe = F(
1557
+ ], re = $(
1558
+ () => I.value ? Math.ceil(I.value / R.value) : 0
1559
+ ), Ie = $(() => g.value + 1), Le = $(
1558
1560
  () => Object.fromEntries(
1559
- s.locations.map((u) => [u.value, u.label])
1561
+ s.locations.map((m) => [m.value, m.label])
1560
1562
  )
1561
- ), de = F(
1563
+ ), Oe = $(
1562
1564
  () => `${w.value.startDate}-${w.value.endDate}`
1563
- ), me = F(
1565
+ ), we = $(
1564
1566
  () => ({
1565
1567
  loading: t("connect.loyalty.dashboard.review.statuses.loading"),
1566
1568
  available: t("connect.loyalty.dashboard.review.statuses.available"),
@@ -1570,192 +1572,192 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
1570
1572
  stale: t("connect.loyalty.dashboard.review.statuses.stale")
1571
1573
  })
1572
1574
  );
1573
- function we(u) {
1574
- return u === "available" || u === "empty" ? "text-fm-color-typo-success bg-fm-color-system-success-100" : u === "partial" || u === "stale" ? "text-fm-color-typo-warning bg-fm-color-system-warning-100" : "text-fm-color-typo-error bg-fm-color-system-error-100";
1575
+ function Ee(m) {
1576
+ return m === "available" || m === "empty" ? "text-fm-color-typo-success bg-fm-color-system-success-100" : m === "partial" || m === "stale" ? "text-fm-color-typo-warning bg-fm-color-system-warning-100" : "text-fm-color-typo-error bg-fm-color-system-error-100";
1575
1577
  }
1576
- function Re(u) {
1577
- return t(u === "available" ? "connect.loyalty.dashboard.review.signalStatuses.available" : u === "insufficient-baseline" ? "connect.loyalty.dashboard.review.signalStatuses.insufficientBaseline" : "connect.loyalty.dashboard.review.signalStatuses.unavailable");
1578
+ function Pe(m) {
1579
+ return t(m === "available" ? "connect.loyalty.dashboard.review.signalStatuses.available" : m === "insufficient-baseline" ? "connect.loyalty.dashboard.review.signalStatuses.insufficientBaseline" : "connect.loyalty.dashboard.review.signalStatuses.unavailable");
1578
1580
  }
1579
- function Se(u) {
1580
- return u === "available" ? "text-fm-color-typo-success" : u === "insufficient-baseline" ? "text-fm-color-typo-warning" : "text-fm-color-typo-error";
1581
+ function Be(m) {
1582
+ return m === "available" ? "text-fm-color-typo-success" : m === "insufficient-baseline" ? "text-fm-color-typo-warning" : "text-fm-color-typo-error";
1581
1583
  }
1582
- function Me(u) {
1583
- return u === null ? "--" : u.toLocaleString();
1584
+ function L(m) {
1585
+ return m === null ? "--" : m.toLocaleString();
1584
1586
  }
1585
- function Pe(u) {
1586
- return u === null ? "--" : u.toLocaleString();
1587
+ function Re(m) {
1588
+ return m === null ? "--" : m.toLocaleString();
1587
1589
  }
1588
- function ue(u) {
1589
- var z;
1590
- const $ = Tt(u);
1591
- return $.isValid() ? new Intl.DateTimeFormat(n.value, {
1590
+ function ce(m) {
1591
+ var P;
1592
+ const C = Yt(m);
1593
+ return C.isValid() ? new Intl.DateTimeFormat(n.value, {
1592
1594
  day: "numeric",
1593
1595
  month: "short",
1594
1596
  year: "numeric",
1595
1597
  hour: "numeric",
1596
1598
  minute: "2-digit",
1597
- timeZone: (z = s.payload) == null ? void 0 : z.timezone
1598
- }).format($.toDate()) : "--";
1599
+ timeZone: (P = s.payload) == null ? void 0 : P.timezone
1600
+ }).format(C.toDate()) : "--";
1599
1601
  }
1600
- function Ye(u) {
1601
- return u.length ? u.join(", ") : "--";
1602
+ function fe(m) {
1603
+ return m.length ? m.join(", ") : "--";
1602
1604
  }
1603
- function He(u) {
1604
- return Ut(u, {
1605
+ function he(m) {
1606
+ return Gt(m, {
1605
1607
  successMessage: t("connect.loyalty.dashboard.review.copyBillIdSuccess")
1606
1608
  });
1607
1609
  }
1608
- function $e(u) {
1609
- return u.member.name || t("connect.loyalty.dashboard.review.memberFallback");
1610
+ function ve(m) {
1611
+ return m.member.name || t("connect.loyalty.dashboard.review.memberFallback");
1610
1612
  }
1611
- function We(u) {
1612
- return u ? t("connect.loyalty.dashboard.review.updated", {
1613
- date: ue(u)
1613
+ function Se(m) {
1614
+ return m ? t("connect.loyalty.dashboard.review.updated", {
1615
+ date: ce(m)
1614
1616
  }) : t("connect.loyalty.dashboard.review.timestampUnavailable");
1615
1617
  }
1616
- function Ge(u) {
1617
- return u.status !== "available" ? t("connect.loyalty.dashboard.review.outlier.insufficientBaseline") : t("connect.loyalty.dashboard.review.outlier.available", {
1618
- threshold: Pe(u.threshold),
1619
- members: u.baselineMembers.toLocaleString()
1618
+ function Me(m) {
1619
+ return m.status !== "available" ? t("connect.loyalty.dashboard.review.outlier.insufficientBaseline") : t("connect.loyalty.dashboard.review.outlier.available", {
1620
+ threshold: Re(m.threshold),
1621
+ members: m.baselineMembers.toLocaleString()
1620
1622
  });
1621
1623
  }
1622
- function Te(u) {
1623
- return xe.value[u] ?? u;
1624
+ function Ze(m) {
1625
+ return Le.value[m] ?? m;
1624
1626
  }
1625
- function ye(u) {
1626
- var $, z, W;
1627
- return u.member.id ?? `anonymous-${u.latestOccurredOn}-${($ = u.findings[0]) == null ? void 0 : $.billIds.join(
1627
+ function ue(m) {
1628
+ var C, P, j;
1629
+ return m.member.id ?? `anonymous-${m.latestOccurredOn}-${(C = m.findings[0]) == null ? void 0 : C.billIds.join(
1628
1630
  "-"
1629
- )}-${(z = u.findings[0]) == null ? void 0 : z.referenceIds.join("-")}-${(W = u.findings[0]) == null ? void 0 : W.observedValue}`;
1631
+ )}-${(P = m.findings[0]) == null ? void 0 : P.referenceIds.join("-")}-${(j = m.findings[0]) == null ? void 0 : j.observedValue}`;
1630
1632
  }
1631
- function Ie(u) {
1632
- const $ = ye(u);
1633
- j.value[$] = !j.value[$];
1633
+ function $e(m) {
1634
+ const C = ue(m);
1635
+ A.value[C] = !A.value[C];
1634
1636
  }
1635
- function Je(u) {
1636
- u.startDate && u.endDate && (w.value = u);
1637
+ function Qe(m) {
1638
+ m.startDate && m.endDate && (w.value = m);
1637
1639
  }
1638
- function Le() {
1639
- var $, z;
1640
- const u = s.payload;
1641
- u && (p.value = (($ = s.summary.bySignal.find(
1642
- (W) => W.status === "available" && (W.findings ?? 0) > 0
1643
- )) == null ? void 0 : $.signal) ?? ((z = s.summary.bySignal.find((W) => W.status === "available")) == null ? void 0 : z.signal) ?? Ve[0], m.value = [...u.selectedRestaurantIds], w.value = {
1644
- startDate: u.dateRange[0],
1645
- endDate: u.dateRange[1]
1646
- }, _.value = "", R.value = 10, f.value = 0, v.value = "latestOccurredOn", j.value = {}, ne.value = !1);
1640
+ function Ve() {
1641
+ var C, P;
1642
+ const m = s.payload;
1643
+ m && (p.value = ((C = s.summary.bySignal.find(
1644
+ (j) => j.status === "available" && (j.findings ?? 0) > 0
1645
+ )) == null ? void 0 : C.signal) ?? ((P = s.summary.bySignal.find((j) => j.status === "available")) == null ? void 0 : P.signal) ?? He[0], u.value = [...m.selectedRestaurantIds], w.value = {
1646
+ startDate: m.dateRange[0],
1647
+ endDate: m.dateRange[1]
1648
+ }, x.value = "", R.value = 10, g.value = 0, h.value = "latestOccurredOn", A.value = {}, be.value = !1);
1647
1649
  }
1648
- function Ze() {
1650
+ function Te() {
1649
1651
  return !w.value.startDate || !w.value.endDate ? null : [w.value.startDate, w.value.endDate];
1650
1652
  }
1651
- async function ee(u = !1) {
1653
+ async function de(m = !1) {
1652
1654
  if (!y.value || !s.payload) return;
1653
- const $ = Ze();
1654
- if (!$) return;
1655
- const W = {
1656
- ...qo(
1655
+ const C = Te();
1656
+ if (!C) return;
1657
+ const j = {
1658
+ ...ss(
1657
1659
  s.payload,
1658
- $
1660
+ C
1659
1661
  ),
1660
- selectedRestaurantIds: [...m.value],
1662
+ selectedRestaurantIds: [...u.value],
1661
1663
  signal: p.value,
1662
- search: _.value.trim(),
1663
- page: f.value + 1,
1664
+ search: x.value.trim(),
1665
+ page: g.value + 1,
1664
1666
  pageSize: R.value,
1665
- sortBy: v.value,
1667
+ sortBy: h.value,
1666
1668
  sortDirection: "desc"
1667
- }, ce = JSON.stringify(W);
1668
- if (!u && ce === ie) return;
1669
- ie = ce;
1670
- const N = ++le;
1671
- X.value = !0, ve.value = !1;
1669
+ }, ye = JSON.stringify(j);
1670
+ if (!m && ye === te) return;
1671
+ te = ye;
1672
+ const me = ++G;
1673
+ X.value = !0, ke.value = !1;
1672
1674
  try {
1673
- const P = await G.readRewardAbuseFindings(W);
1674
- if (N !== le) return;
1675
- E.value = P.members, B.value = P.totalMembers, D.value = P.totalRows, j.value = {};
1675
+ const J = await H.readRewardAbuseFindings(j);
1676
+ if (me !== G) return;
1677
+ V.value = J.members, oe.value = J.totalMembers, I.value = J.totalRows, A.value = {};
1676
1678
  } catch {
1677
- if (N !== le) return;
1678
- ve.value = !0, E.value = [], B.value = 0, D.value = 0;
1679
+ if (me !== G) return;
1680
+ ke.value = !0, V.value = [], oe.value = 0, I.value = 0;
1679
1681
  } finally {
1680
- N === le && (X.value = !1);
1682
+ me === G && (X.value = !1);
1681
1683
  }
1682
1684
  }
1683
- function Be() {
1684
- y.value && (f.value = 0, oe && clearTimeout(oe), oe = setTimeout(() => {
1685
- ee();
1685
+ function Xe() {
1686
+ y.value && (g.value = 0, se && clearTimeout(se), se = setTimeout(() => {
1687
+ de();
1686
1688
  }, 250));
1687
1689
  }
1688
- function Qe() {
1689
- f.value < k.value - 1 && (f.value += 1, ee());
1690
+ function je() {
1691
+ g.value < re.value - 1 && (g.value += 1, de());
1690
1692
  }
1691
- function Xe() {
1692
- f.value > 0 && (f.value -= 1, ee());
1693
+ function et() {
1694
+ g.value > 0 && (g.value -= 1, de());
1693
1695
  }
1694
- function Oe(u) {
1695
- R.value = u, f.value = 0, ee();
1696
+ function tt(m) {
1697
+ R.value = m, g.value = 0, de();
1696
1698
  }
1697
- async function Ne(u) {
1698
- var $;
1699
- if (u.member.id) {
1700
- ne.value = !1;
1699
+ async function at(m) {
1700
+ var C;
1701
+ if (m.member.id) {
1702
+ be.value = !1;
1701
1703
  try {
1702
- const z = await Bt.readById(u.member.id);
1703
- ae.value = z, await ht(), ($ = ge.value) == null || $.showSheet();
1704
+ const P = await Ht.readById(m.member.id);
1705
+ ee.value = P, await xt(), (C = le.value) == null || C.showSheet();
1704
1706
  } catch {
1705
- ne.value = !0;
1707
+ be.value = !0;
1706
1708
  }
1707
1709
  }
1708
1710
  }
1709
- return ze(y, (u) => {
1710
- if (!u) {
1711
- ae.value = null, ne.value = !1;
1711
+ return Ye(y, (m) => {
1712
+ if (!m) {
1713
+ ee.value = null, be.value = !1;
1712
1714
  return;
1713
1715
  }
1714
- ie = "", Le(), ee(!0);
1715
- }), ze(
1716
- [p, m, _, w, v],
1717
- Be,
1716
+ te = "", Ve(), de(!0);
1717
+ }), Ye(
1718
+ [p, u, x, w, h],
1719
+ Xe,
1718
1720
  { deep: !0 }
1719
- ), ze(
1721
+ ), Ye(
1720
1722
  () => s.payload,
1721
1723
  () => {
1722
- y.value && (ie = "", Le(), ee(!0));
1724
+ y.value && (te = "", Ve(), de(!0));
1723
1725
  },
1724
1726
  { deep: !0 }
1725
- ), Dt(() => {
1726
- oe && clearTimeout(oe);
1727
- }), (u, $) => {
1728
- const z = M("FmCircularProgress"), W = M("FmSearch"), ce = M("FmSelect"), N = M("FmIcon"), P = M("FmButton"), et = M("FmAvatar"), tt = M("FmChip"), Ee = M("FmTooltip"), at = M("FmSideSheet");
1729
- return c(), V(at, {
1727
+ ), Nt(() => {
1728
+ se && clearTimeout(se);
1729
+ }), (m, C) => {
1730
+ const P = M("FmCircularProgress"), j = M("FmSearch"), ye = M("FmSelect"), me = M("FmIcon"), J = M("FmButton"), Ke = M("FmAvatar"), ot = M("FmChip"), Ne = M("FmTooltip"), st = M("FmSideSheet");
1731
+ return c(), N(st, {
1730
1732
  modelValue: y.value,
1731
- "onUpdate:modelValue": $[5] || ($[5] = (x) => y.value = x),
1733
+ "onUpdate:modelValue": C[5] || (C[5] = (_) => y.value = _),
1732
1734
  header: o(t)("connect.loyalty.dashboard.review.sheetTitle"),
1733
1735
  "dismiss-away": "",
1734
1736
  "max-width": 1100
1735
1737
  }, {
1736
1738
  default: U(() => [
1737
- a("div", xs, [
1738
- a("section", ws, [
1739
- a("div", Rs, [
1739
+ a("div", Os, [
1740
+ a("section", Es, [
1741
+ a("div", Ps, [
1740
1742
  a("div", null, [
1741
- a("div", Ss, r(o(t)("connect.loyalty.dashboard.review.summaryTitle")), 1),
1742
- a("div", Ms, r(o(t)("connect.loyalty.dashboard.review.summaryDescription")), 1)
1743
+ a("div", Bs, r(o(t)("connect.loyalty.dashboard.review.summaryTitle")), 1),
1744
+ a("div", Ts, r(o(t)("connect.loyalty.dashboard.review.summaryDescription")), 1)
1743
1745
  ]),
1744
1746
  a("span", {
1745
- class: T(["fm-typo-en-body-sm-600 px-8 py-4 rounded-sm whitespace-nowrap", we(e.summary.status)])
1746
- }, r(o(me)[e.summary.status]), 3)
1747
+ class: T(["fm-typo-en-body-sm-600 px-8 py-4 rounded-sm whitespace-nowrap", Ee(e.summary.status)])
1748
+ }, r(o(we)[e.summary.status]), 3)
1747
1749
  ]),
1748
- e.summary.status === "loading" ? (c(), d("div", $s, [
1749
- h(z, { size: "lg" })
1750
- ])) : (c(), d(I, { key: 1 }, [
1751
- a("div", Cs, [
1752
- a("div", Fs, [
1753
- a("div", As, r(Me(e.summary.flaggedMembers)), 1),
1754
- a("div", Ds, r(o(t)("connect.loyalty.dashboard.review.uniqueMembers")), 1)
1750
+ e.summary.status === "loading" ? (c(), d("div", Ns, [
1751
+ f(P, { size: "lg" })
1752
+ ])) : (c(), d(k, { key: 1 }, [
1753
+ a("div", Us, [
1754
+ a("div", zs, [
1755
+ a("div", Vs, r(L(e.summary.flaggedMembers)), 1),
1756
+ a("div", js, r(o(t)("connect.loyalty.dashboard.review.uniqueMembers")), 1)
1755
1757
  ]),
1756
- a("div", ks, [
1757
- a("div", Is, r(Me(e.summary.totalFindings)), 1),
1758
- a("div", Ls, r(o(t)("connect.loyalty.dashboard.review.totalFindings")), 1)
1758
+ a("div", Ks, [
1759
+ a("div", qs, r(L(e.summary.totalFindings)), 1),
1760
+ a("div", Ys, r(o(t)("connect.loyalty.dashboard.review.totalFindings")), 1)
1759
1761
  ])
1760
1762
  ]),
1761
1763
  a("div", {
@@ -1764,300 +1766,300 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
1764
1766
  e.summary.status === "available" || e.summary.status === "empty" ? "text-fm-color-typo-secondary border-fm-color-neutral-gray-100 bg-fm-color-neutral-gray-100" : e.summary.status === "partial" || e.summary.status === "stale" ? "text-fm-color-typo-warning border-fm-color-system-warning-200 bg-fm-color-system-warning-100" : "text-fm-color-typo-error border-fm-color-system-error-200 bg-fm-color-system-error-100"
1765
1767
  ])
1766
1768
  }, r(e.summary.message), 3),
1767
- e.summary.bySignal.length ? (c(), d("div", Os, [
1768
- a("div", Es, r(o(t)("connect.loyalty.dashboard.review.signalSummary")), 1),
1769
- (c(!0), d(I, null, J(e.summary.bySignal, (x) => {
1770
- var A;
1769
+ e.summary.bySignal.length ? (c(), d("div", Hs, [
1770
+ a("div", Ws, r(o(t)("connect.loyalty.dashboard.review.signalSummary")), 1),
1771
+ (c(!0), d(k, null, W(e.summary.bySignal, (_) => {
1772
+ var D;
1771
1773
  return c(), d("div", {
1772
- key: x.signal,
1774
+ key: _.signal,
1773
1775
  class: "flex flex-col gap-4 py-8 border-b border-fm-color-neutral-gray-100 last:border-b-0"
1774
1776
  }, [
1775
- a("div", Ps, [
1776
- a("div", Ts, r(x.label), 1),
1777
+ a("div", Gs, [
1778
+ a("div", Js, r(_.label), 1),
1777
1779
  a("div", {
1778
- class: T(["fm-typo-en-body-sm-600", Se(x.status)])
1779
- }, r(Re(x.status)), 3)
1780
+ class: T(["fm-typo-en-body-sm-600", Be(_.status)])
1781
+ }, r(Pe(_.status)), 3)
1780
1782
  ]),
1781
- a("div", Bs, r(x.description), 1),
1782
- a("div", Ns, [
1783
- a("span", null, r(x.threshold), 1),
1784
- a("span", Us, r(o(t)("connect.loyalty.dashboard.review.signalCounts", {
1785
- members: Me(x.flaggedMembers),
1786
- findings: Me(x.findings)
1783
+ a("div", Zs, r(_.description), 1),
1784
+ a("div", Qs, [
1785
+ a("span", null, r(_.threshold), 1),
1786
+ a("span", Xs, r(o(t)("connect.loyalty.dashboard.review.signalCounts", {
1787
+ members: L(_.flaggedMembers),
1788
+ findings: L(_.findings)
1787
1789
  })), 1)
1788
1790
  ]),
1789
- x.signal === "reward-earning-outlier" && ((A = e.outlierMetric) != null && A.byType.length) ? (c(), d("div", zs, [
1790
- (c(!0), d(I, null, J(e.outlierMetric.byType, (te) => (c(), d("div", {
1791
- key: te.type,
1791
+ _.signal === "reward-earning-outlier" && ((D = e.outlierMetric) != null && D.byType.length) ? (c(), d("div", er, [
1792
+ (c(!0), d(k, null, W(e.outlierMetric.byType, (B) => (c(), d("div", {
1793
+ key: B.type,
1792
1794
  class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary"
1793
- }, r(o(bt)(te.type, l)) + ": " + r(Ge(te)), 1))), 128))
1794
- ])) : Y("", !0)
1795
+ }, r(o(gt)(B.type, i)) + ": " + r(Me(B)), 1))), 128))
1796
+ ])) : z("", !0)
1795
1797
  ]);
1796
1798
  }), 128))
1797
- ])) : Y("", !0),
1798
- a("div", Vs, r(We(e.summary.updatedAt)), 1)
1799
+ ])) : z("", !0),
1800
+ a("div", tr, r(Se(e.summary.updatedAt)), 1)
1799
1801
  ], 64))
1800
1802
  ]),
1801
- a("div", js, r(o(t)("connect.loyalty.dashboard.review.intro")), 1),
1802
- o(ne) ? (c(), d("div", Ks, r(o(t)("connect.loyalty.dashboard.review.detailError")), 1)) : Y("", !0),
1803
- a("div", qs, [
1804
- h(W, {
1805
- modelValue: o(_),
1806
- "onUpdate:modelValue": $[0] || ($[0] = (x) => nt(_) ? _.value = x : null),
1803
+ a("div", ar, r(o(t)("connect.loyalty.dashboard.review.intro")), 1),
1804
+ o(be) ? (c(), d("div", or, r(o(t)("connect.loyalty.dashboard.review.detailError")), 1)) : z("", !0),
1805
+ a("div", sr, [
1806
+ f(j, {
1807
+ modelValue: o(x),
1808
+ "onUpdate:modelValue": C[0] || (C[0] = (_) => lt(x) ? x.value = _ : null),
1807
1809
  placeholder: o(t)("connect.loyalty.dashboard.review.searchMemberId"),
1808
1810
  class: "col-span-2 md:col-span-1"
1809
1811
  }, null, 8, ["modelValue", "placeholder"]),
1810
- h(ce, {
1812
+ f(ye, {
1811
1813
  modelValue: o(p),
1812
- "onUpdate:modelValue": $[1] || ($[1] = (x) => nt(p) ? p.value = x : null),
1813
- items: o(Ae),
1814
+ "onUpdate:modelValue": C[1] || (C[1] = (_) => lt(p) ? p.value = _ : null),
1815
+ items: o(Ue),
1814
1816
  label: o(t)("connect.loyalty.dashboard.review.signal"),
1815
1817
  class: "col-span-1"
1816
1818
  }, null, 8, ["modelValue", "items", "label"]),
1817
- h(vt, {
1819
+ f(wt, {
1818
1820
  label: `${o(t)("connect.loyalty.dashboard.filters.location")}: `,
1819
1821
  "all-label": o(t)("connect.loyalty.dashboard.filters.all"),
1820
1822
  "selected-label": o(t)("connect.loyalty.dashboard.filters.selected"),
1821
1823
  "search-placeholder": o(t)("connect.loyalty.dashboard.filters.searchLocations"),
1822
1824
  icon: "storefront",
1823
1825
  "right-icon": "keyboard_arrow_down",
1824
- "model-value": o(m),
1826
+ "model-value": o(u),
1825
1827
  items: e.locations,
1826
1828
  "show-item-label": !0,
1827
1829
  class: "col-span-1",
1828
- "onUpdate:modelValue": $[2] || ($[2] = (x) => m.value = x)
1830
+ "onUpdate:modelValue": C[2] || (C[2] = (_) => u.value = _)
1829
1831
  }, null, 8, ["label", "all-label", "selected-label", "search-placeholder", "model-value", "items"]),
1830
- (c(), V(lt, {
1831
- key: o(de),
1832
+ (c(), N(it, {
1833
+ key: o(Oe),
1832
1834
  "model-value": o(w),
1833
- "onUpdate:modelValue": Je
1835
+ "onUpdate:modelValue": Qe
1834
1836
  }, null, 8, ["model-value"]))
1835
1837
  ]),
1836
- a("div", Ys, [
1837
- a("div", Hs, [
1838
- be(r(o(t)("connect.loyalty.dashboard.review.members", o(B))) + " ", 1),
1839
- o(D) !== o(B) ? (c(), d("span", Ws, r(o(t)("connect.loyalty.dashboard.review.evidenceRows", o(D))), 1)) : Y("", !0)
1838
+ a("div", rr, [
1839
+ a("div", nr, [
1840
+ ge(r(o(t)("connect.loyalty.dashboard.review.members", o(oe))) + " ", 1),
1841
+ o(I) !== o(oe) ? (c(), d("span", lr, r(o(t)("connect.loyalty.dashboard.review.evidenceRows", o(I))), 1)) : z("", !0)
1840
1842
  ]),
1841
- a("div", Gs, [
1842
- a("span", Js, r(o(t)("connect.loyalty.dashboard.review.sort")), 1),
1843
- h(ce, {
1844
- "model-value": o(v),
1845
- items: o(De),
1843
+ a("div", ir, [
1844
+ a("span", cr, r(o(t)("connect.loyalty.dashboard.review.sort")), 1),
1845
+ f(ye, {
1846
+ "model-value": o(h),
1847
+ items: o(ze),
1846
1848
  searchable: !1,
1847
- "onUpdate:modelValue": $[3] || ($[3] = (x) => v.value = x)
1849
+ "onUpdate:modelValue": C[3] || (C[3] = (_) => h.value = _)
1848
1850
  }, null, 8, ["model-value", "items"]),
1849
- h(ce, {
1851
+ f(ye, {
1850
1852
  "model-value": o(R),
1851
- items: ke,
1853
+ items: ie,
1852
1854
  searchable: !1,
1853
- "onUpdate:modelValue": Oe
1855
+ "onUpdate:modelValue": tt
1854
1856
  }, null, 8, ["model-value"])
1855
1857
  ])
1856
1858
  ]),
1857
- o(X) ? (c(), d("div", Zs, [
1858
- h(z, { size: "lg" })
1859
- ])) : o(ve) ? (c(), d("div", Qs, [
1860
- h(N, {
1859
+ o(X) ? (c(), d("div", dr, [
1860
+ f(P, { size: "lg" })
1861
+ ])) : o(ke) ? (c(), d("div", mr, [
1862
+ f(me, {
1861
1863
  name: "error_outline",
1862
1864
  outline: "",
1863
1865
  size: "lg",
1864
1866
  class: "text-fm-color-typo-error"
1865
1867
  }),
1866
- a("div", Xs, r(o(t)("connect.loyalty.dashboard.review.findingsUnavailable")), 1),
1867
- a("div", er, r(o(t)("connect.loyalty.dashboard.review.findingsUnavailableDescription")), 1),
1868
- h(P, {
1868
+ a("div", ur, r(o(t)("connect.loyalty.dashboard.review.findingsUnavailable")), 1),
1869
+ a("div", yr, r(o(t)("connect.loyalty.dashboard.review.findingsUnavailableDescription")), 1),
1870
+ f(J, {
1869
1871
  label: o(t)("connect.loyalty.dashboard.review.retry"),
1870
1872
  icon: "refresh",
1871
1873
  variant: "tertiary",
1872
- onClick: $[4] || ($[4] = (x) => ee(!0))
1874
+ onClick: C[4] || (C[4] = (_) => de(!0))
1873
1875
  }, null, 8, ["label"])
1874
- ])) : o(E).length ? (c(), d("div", sr, [
1875
- (c(!0), d(I, null, J(o(E), (x) => (c(), d("div", {
1876
- key: ye(x),
1876
+ ])) : o(V).length ? (c(), d("div", hr, [
1877
+ (c(!0), d(k, null, W(o(V), (_) => (c(), d("div", {
1878
+ key: ue(_),
1877
1879
  class: "border border-fm-color-neutral-gray-100 rounded-sm overflow-hidden"
1878
1880
  }, [
1879
- a("div", rr, [
1881
+ a("div", vr, [
1880
1882
  a("button", {
1881
1883
  type: "button",
1882
1884
  class: "flex items-center gap-12 flex-1 min-w-0 text-left",
1883
- "aria-expanded": o(j)[ye(x)] === !0,
1884
- onClick: (A) => Ie(x),
1885
+ "aria-expanded": o(A)[ue(_)] === !0,
1886
+ onClick: (D) => $e(_),
1885
1887
  onKeydown: [
1886
- Ke(qe((A) => Ie(x), ["prevent"]), ["enter"]),
1887
- Ke(qe((A) => Ie(x), ["prevent"]), ["space"])
1888
+ Ge(Je((D) => $e(_), ["prevent"]), ["enter"]),
1889
+ Ge(Je((D) => $e(_), ["prevent"]), ["space"])
1888
1890
  ]
1889
1891
  }, [
1890
- h(N, {
1891
- name: o(j)[ye(x)] ? "expand_less" : "expand_more",
1892
+ f(me, {
1893
+ name: o(A)[ue(_)] ? "expand_less" : "expand_more",
1892
1894
  outline: "",
1893
1895
  size: "md",
1894
1896
  class: "text-fm-color-typo-tertiary"
1895
1897
  }, null, 8, ["name"]),
1896
- h(et, {
1897
- name: $e(x),
1898
+ f(Ke, {
1899
+ name: ve(_),
1898
1900
  size: "md"
1899
1901
  }, null, 8, ["name"]),
1900
- a("div", lr, [
1901
- a("div", ir, r($e(x)), 1),
1902
- a("div", cr, r(x.member.phoneNumber || x.member.cardNo || x.member.id || o(t)("connect.loyalty.dashboard.review.anonymousEvidence")), 1)
1902
+ a("div", _r, [
1903
+ a("div", xr, r(ve(_)), 1),
1904
+ a("div", wr, r(_.member.phoneNumber || _.member.cardNo || _.member.id || o(t)("connect.loyalty.dashboard.review.anonymousEvidence")), 1)
1903
1905
  ])
1904
- ], 40, nr),
1905
- a("div", dr, [
1906
- a("div", mr, r(o(t)("connect.loyalty.dashboard.review.latestFlagged")), 1),
1907
- a("div", ur, r(ue(x.latestOccurredOn)), 1)
1906
+ ], 40, gr),
1907
+ a("div", Rr, [
1908
+ a("div", Sr, r(o(t)("connect.loyalty.dashboard.review.latestFlagged")), 1),
1909
+ a("div", Mr, r(ce(_.latestOccurredOn)), 1)
1908
1910
  ]),
1909
- a("div", yr, [
1910
- (c(!0), d(I, null, J(x.signals, (A) => (c(), d("span", {
1911
- key: A,
1911
+ a("div", $r, [
1912
+ (c(!0), d(k, null, W(_.signals, (D) => (c(), d("span", {
1913
+ key: D,
1912
1914
  class: "fm-typo-en-body-sm-400 px-8 py-4 rounded-sm bg-fm-color-neutral-gray-100 text-fm-color-typo-secondary"
1913
- }, r(o(je)(A, l)), 1))), 128))
1915
+ }, r(o(We)(D, i)), 1))), 128))
1914
1916
  ]),
1915
- h(P, {
1917
+ f(J, {
1916
1918
  label: o(t)("connect.loyalty.dashboard.review.viewMember"),
1917
1919
  icon: "person",
1918
1920
  variant: "tertiary",
1919
- disabled: !x.member.id,
1920
- onClick: (A) => Ne(x)
1921
+ disabled: !_.member.id,
1922
+ onClick: (D) => at(_)
1921
1923
  }, null, 8, ["label", "disabled", "onClick"])
1922
1924
  ]),
1923
- o(j)[ye(x)] ? (c(), d("div", pr, [
1924
- a("div", br, [
1925
+ o(A)[ue(_)] ? (c(), d("div", Cr, [
1926
+ a("div", Fr, [
1925
1927
  a("div", null, [
1926
- a("div", fr, r(o(t)("connect.loyalty.dashboard.review.latestFlagged")), 1),
1927
- a("div", hr, r(ue(x.latestOccurredOn)), 1)
1928
+ a("div", Dr, r(o(t)("connect.loyalty.dashboard.review.latestFlagged")), 1),
1929
+ a("div", Ar, r(ce(_.latestOccurredOn)), 1)
1928
1930
  ]),
1929
1931
  a("div", null, [
1930
- a("div", vr, r(o(t)("connect.loyalty.dashboard.review.locations")), 1),
1931
- a("div", gr, r(x.locationIds.length ? x.locationIds.map(Te).join(", ") : "--"), 1)
1932
+ a("div", kr, r(o(t)("connect.loyalty.dashboard.review.locations")), 1),
1933
+ a("div", Ir, r(_.locationIds.length ? _.locationIds.map(Ze).join(", ") : "--"), 1)
1932
1934
  ])
1933
1935
  ]),
1934
- a("div", _r, [
1935
- (c(!0), d(I, null, J(x.findings, (A) => (c(), d("div", {
1936
- key: `${A.signal}-${A.occurredOn}-${A.billIds.join("-")}-${A.referenceIds.join(
1936
+ a("div", Lr, [
1937
+ (c(!0), d(k, null, W(_.findings, (D) => (c(), d("div", {
1938
+ key: `${D.signal}-${D.occurredOn}-${D.billIds.join("-")}-${D.referenceIds.join(
1937
1939
  "-"
1938
1940
  )}`,
1939
1941
  class: "border border-fm-color-neutral-gray-200 rounded-sm bg-fm-color-neutral-white p-12"
1940
1942
  }, [
1941
- a("div", xr, [
1942
- a("div", wr, r(o(je)(A.signal, l)), 1),
1943
- a("div", Rr, r(ue(A.occurredOn)), 1)
1943
+ a("div", Or, [
1944
+ a("div", Er, r(o(We)(D.signal, i)), 1),
1945
+ a("div", Pr, r(ce(D.occurredOn)), 1)
1944
1946
  ]),
1945
- a("div", Sr, [
1946
- a("div", Mr, [
1947
- be(r(o(t)("connect.loyalty.dashboard.review.observedValue")) + ": ", 1),
1948
- a("span", $r, r(A.observedValue.toLocaleString()), 1)
1947
+ a("div", Br, [
1948
+ a("div", Tr, [
1949
+ ge(r(o(t)("connect.loyalty.dashboard.review.observedValue")) + ": ", 1),
1950
+ a("span", Nr, r(D.observedValue.toLocaleString()), 1)
1949
1951
  ]),
1950
- a("div", Cr, [
1951
- be(r(o(t)("connect.loyalty.dashboard.review.threshold")) + ": ", 1),
1952
- a("span", Fr, r(A.thresholdValue === null ? "--" : A.thresholdValue.toLocaleString()), 1)
1952
+ a("div", Ur, [
1953
+ ge(r(o(t)("connect.loyalty.dashboard.review.threshold")) + ": ", 1),
1954
+ a("span", zr, r(D.thresholdValue === null ? "--" : D.thresholdValue.toLocaleString()), 1)
1953
1955
  ]),
1954
- a("div", Ar, [
1955
- be(r(o(t)("connect.loyalty.dashboard.review.rewardType")) + ": ", 1),
1956
- a("span", Dr, r(A.rewardType ? o(bt)(
1957
- A.rewardType,
1958
- l
1956
+ a("div", Vr, [
1957
+ ge(r(o(t)("connect.loyalty.dashboard.review.rewardType")) + ": ", 1),
1958
+ a("span", jr, r(D.rewardType ? o(gt)(
1959
+ D.rewardType,
1960
+ i
1959
1961
  ) : "--"), 1)
1960
1962
  ]),
1961
- a("div", kr, [
1963
+ a("div", Kr, [
1962
1964
  a("div", null, r(o(t)("connect.loyalty.dashboard.review.billIds")) + ": ", 1),
1963
- A.billIds.length ? (c(), d("div", Ir, [
1964
- (c(!0), d(I, null, J(A.billIds, (te) => (c(), V(Ee, {
1965
- key: te,
1965
+ D.billIds.length ? (c(), d("div", qr, [
1966
+ (c(!0), d(k, null, W(D.billIds, (B) => (c(), N(Ne, {
1967
+ key: B,
1966
1968
  content: o(t)("connect.loyalty.dashboard.review.copyBillId"),
1967
1969
  placement: "top"
1968
1970
  }, {
1969
1971
  default: U(() => [
1970
- h(tt, {
1971
- label: te,
1972
+ f(ot, {
1973
+ label: B,
1972
1974
  "aria-label": o(t)(
1973
1975
  "connect.loyalty.dashboard.review.copyBillIdAria",
1974
1976
  {
1975
- id: te
1977
+ id: B
1976
1978
  }
1977
1979
  ),
1978
1980
  "right-icon": "content_copy",
1979
1981
  variant: "plain",
1980
1982
  compact: "",
1981
1983
  class: "max-w-full cursor-pointer",
1982
- onClick: (ot) => He(te)
1984
+ onClick: (ae) => he(B)
1983
1985
  }, null, 8, ["label", "aria-label", "onClick"])
1984
1986
  ]),
1985
1987
  _: 2
1986
1988
  }, 1032, ["content"]))), 128))
1987
- ])) : (c(), d("span", Lr, " -- "))
1989
+ ])) : (c(), d("span", Yr, " -- "))
1988
1990
  ]),
1989
- a("div", Or, [
1990
- be(r(o(t)("connect.loyalty.dashboard.review.referenceIds")) + ": ", 1),
1991
- a("span", Er, r(Ye(A.referenceIds)), 1)
1991
+ a("div", Hr, [
1992
+ ge(r(o(t)("connect.loyalty.dashboard.review.referenceIds")) + ": ", 1),
1993
+ a("span", Wr, r(fe(D.referenceIds)), 1)
1992
1994
  ])
1993
1995
  ])
1994
1996
  ]))), 128))
1995
1997
  ])
1996
- ])) : Y("", !0)
1998
+ ])) : z("", !0)
1997
1999
  ]))), 128))
1998
- ])) : (c(), d("div", tr, [
1999
- h(N, {
2000
+ ])) : (c(), d("div", pr, [
2001
+ f(me, {
2000
2002
  name: "fact_check",
2001
2003
  outline: "",
2002
2004
  size: "lg",
2003
2005
  class: "text-fm-color-typo-tertiary"
2004
2006
  }),
2005
- a("div", ar, r(o(t)("connect.loyalty.dashboard.review.noFindings")), 1),
2006
- a("div", or, r(o(t)("connect.loyalty.dashboard.review.noFindingsDescription")), 1)
2007
+ a("div", br, r(o(t)("connect.loyalty.dashboard.review.noFindings")), 1),
2008
+ a("div", fr, r(o(t)("connect.loyalty.dashboard.review.noFindingsDescription")), 1)
2007
2009
  ])),
2008
- o(k) > 1 ? (c(), d("div", Pr, [
2009
- a("div", Tr, r(o(t)("connect.loyalty.dashboard.review.page", {
2010
- current: o(_e),
2011
- total: o(k)
2010
+ o(re) > 1 ? (c(), d("div", Gr, [
2011
+ a("div", Jr, r(o(t)("connect.loyalty.dashboard.review.page", {
2012
+ current: o(Ie),
2013
+ total: o(re)
2012
2014
  })), 1),
2013
- a("div", Br, [
2014
- h(Ee, {
2015
+ a("div", Zr, [
2016
+ f(Ne, {
2015
2017
  content: o(t)("connect.loyalty.dashboard.accessibility.previousPage")
2016
2018
  }, {
2017
2019
  default: U(() => [
2018
- h(P, {
2020
+ f(J, {
2019
2021
  icon: "chevron_left",
2020
2022
  variant: "tertiary",
2021
- disabled: o(f) === 0 || o(X),
2022
- onClick: Xe
2023
+ disabled: o(g) === 0 || o(X),
2024
+ onClick: et
2023
2025
  }, null, 8, ["disabled"])
2024
2026
  ]),
2025
2027
  _: 1
2026
2028
  }, 8, ["content"]),
2027
- h(Ee, {
2029
+ f(Ne, {
2028
2030
  content: o(t)("connect.loyalty.dashboard.accessibility.nextPage")
2029
2031
  }, {
2030
2032
  default: U(() => [
2031
- h(P, {
2033
+ f(J, {
2032
2034
  icon: "chevron_right",
2033
2035
  variant: "tertiary",
2034
- disabled: o(f) >= o(k) - 1 || o(X),
2035
- onClick: Qe
2036
+ disabled: o(g) >= o(re) - 1 || o(X),
2037
+ onClick: je
2036
2038
  }, null, 8, ["disabled"])
2037
2039
  ]),
2038
2040
  _: 1
2039
2041
  }, 8, ["content"])
2040
2042
  ])
2041
- ])) : Y("", !0)
2043
+ ])) : z("", !0)
2042
2044
  ]),
2043
- o(ae) ? (c(), V(Nt, {
2045
+ o(ee) ? (c(), N(Wt, {
2044
2046
  key: 0,
2045
2047
  ref_key: "detailSheetRef",
2046
- ref: ge,
2047
- member: o(ae)
2048
- }, null, 8, ["member"])) : Y("", !0)
2048
+ ref: le,
2049
+ member: o(ee)
2050
+ }, null, 8, ["member"])) : z("", !0)
2049
2051
  ]),
2050
2052
  _: 1
2051
2053
  }, 8, ["modelValue", "header"]);
2052
2054
  };
2053
2055
  }
2054
- }), Ur = { class: "flex items-start gap-12" }, zr = { class: "flex-1 min-w-0" }, Vr = { class: "flex items-center gap-8" }, jr = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, Kr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, qr = ["aria-label"], Yr = {
2056
+ }), Xr = { class: "flex items-start gap-12" }, en = { class: "flex-1 min-w-0" }, tn = { class: "flex items-center gap-8" }, an = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, on = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, sn = ["aria-label"], rn = {
2055
2057
  key: 1,
2056
2058
  class: "flex min-h-[220px] items-center justify-center text-center fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
2057
- }, Hr = {
2059
+ }, nn = {
2058
2060
  key: 2,
2059
2061
  class: "mt-24"
2060
- }, Wr = { class: "grid grid-cols-2 gap-16" }, Gr = { class: "border border-fm-color-neutral-gray-100 rounded-sm p-16" }, Jr = { class: "fm-typo-en-title-lg-800 text-fm-color-typo-primary" }, Zr = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mt-4" }, Qr = { class: "border border-fm-color-neutral-gray-100 rounded-sm p-16" }, Xr = { class: "fm-typo-en-title-lg-800 text-fm-color-typo-primary" }, en = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mt-4" }, tn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-16" }, an = /* @__PURE__ */ Z({
2062
+ }, ln = { class: "grid grid-cols-2 gap-16" }, cn = { class: "border border-fm-color-neutral-gray-100 rounded-sm p-16" }, dn = { class: "fm-typo-en-title-lg-800 text-fm-color-typo-primary" }, mn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mt-4" }, un = { class: "border border-fm-color-neutral-gray-100 rounded-sm p-16" }, yn = { class: "fm-typo-en-title-lg-800 text-fm-color-typo-primary" }, pn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary mt-4" }, bn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-16" }, fn = /* @__PURE__ */ Z({
2061
2063
  __name: "RewardAbuseMaximizers",
2062
2064
  props: {
2063
2065
  metric: {},
@@ -2065,27 +2067,27 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2065
2067
  error: { type: Boolean }
2066
2068
  },
2067
2069
  setup(e) {
2068
- const s = e, { t } = Q(), n = F(() => s.loading ? "loading" : s.error || !s.metric ? "unavailable" : s.metric.status === "insufficient-baseline" ? "insufficientBaseline" : s.metric.maximizerMembers === 0 ? "noMembers" : "available"), l = F(
2070
+ const s = e, { t } = Q(), n = $(() => s.loading ? "loading" : s.error || !s.metric ? "unavailable" : s.metric.status === "insufficient-baseline" ? "insufficientBaseline" : s.metric.maximizerMembers === 0 ? "noMembers" : "available"), i = $(
2069
2071
  () => t(`connect.loyalty.dashboard.maximizers.status.${n.value}`)
2070
- ), y = F(() => n.value === "unavailable" ? t("connect.loyalty.dashboard.maximizers.error") : n.value === "insufficientBaseline" ? t(
2072
+ ), y = $(() => n.value === "unavailable" ? t("connect.loyalty.dashboard.maximizers.error") : n.value === "insufficientBaseline" ? t(
2071
2073
  "connect.loyalty.dashboard.maximizers.insufficientBaselineMessage"
2072
- ) : n.value === "noMembers" ? t("connect.loyalty.dashboard.maximizers.noMembersMessage") : t("connect.loyalty.dashboard.maximizers.availableMessage")), p = F(() => n.value === "available" || n.value === "noMembers" ? "text-fm-color-typo-success bg-fm-color-system-success-100" : n.value === "insufficientBaseline" ? "text-fm-color-typo-warning bg-fm-color-system-warning-100" : "text-fm-color-typo-error bg-fm-color-system-error-100"), m = F(() => s.metric ? s.metric.maximizerMembers.toLocaleString() : ""), _ = F(() => !s.metric || s.metric.thresholdPct === null ? t("connect.loyalty.dashboard.states.unavailable") : `${s.metric.thresholdPct}%`);
2074
+ ) : n.value === "noMembers" ? t("connect.loyalty.dashboard.maximizers.noMembersMessage") : t("connect.loyalty.dashboard.maximizers.availableMessage")), p = $(() => n.value === "available" || n.value === "noMembers" ? "text-fm-color-typo-success bg-fm-color-system-success-100" : n.value === "insufficientBaseline" ? "text-fm-color-typo-warning bg-fm-color-system-warning-100" : "text-fm-color-typo-error bg-fm-color-system-error-100"), u = $(() => s.metric ? s.metric.maximizerMembers.toLocaleString() : ""), x = $(() => !s.metric || s.metric.thresholdPct === null ? t("connect.loyalty.dashboard.states.unavailable") : `${s.metric.thresholdPct}%`);
2073
2075
  return (w, R) => {
2074
- const f = M("FmIcon"), v = M("FmTooltip"), E = M("FmCircularProgress"), B = M("FmCard");
2075
- return c(), V(B, {
2076
+ const g = M("FmIcon"), h = M("FmTooltip"), V = M("FmCircularProgress"), oe = M("FmCard");
2077
+ return c(), N(oe, {
2076
2078
  variant: "outlined",
2077
2079
  class: "p-24 h-full"
2078
2080
  }, {
2079
2081
  default: U(() => [
2080
- a("div", Ur, [
2081
- a("div", zr, [
2082
- a("div", Vr, [
2083
- a("div", jr, r(o(t)("connect.loyalty.dashboard.maximizers.title")), 1),
2084
- h(v, {
2082
+ a("div", Xr, [
2083
+ a("div", en, [
2084
+ a("div", tn, [
2085
+ a("div", an, r(o(t)("connect.loyalty.dashboard.maximizers.title")), 1),
2086
+ f(h, {
2085
2087
  content: o(t)("connect.loyalty.dashboard.maximizers.tooltip")
2086
2088
  }, {
2087
2089
  default: U(() => [
2088
- h(f, {
2090
+ f(g, {
2089
2091
  name: "info",
2090
2092
  outline: "",
2091
2093
  size: "sm",
@@ -2095,11 +2097,11 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2095
2097
  _: 1
2096
2098
  }, 8, ["content"])
2097
2099
  ]),
2098
- a("div", Kr, r(o(t)("connect.loyalty.dashboard.maximizers.subtitle")), 1)
2100
+ a("div", on, r(o(t)("connect.loyalty.dashboard.maximizers.subtitle")), 1)
2099
2101
  ]),
2100
2102
  a("span", {
2101
2103
  class: T(["fm-typo-en-body-sm-600 px-8 py-4 rounded-sm whitespace-nowrap", o(p)])
2102
- }, r(o(l)), 3)
2104
+ }, r(o(i)), 3)
2103
2105
  ]),
2104
2106
  e.loading ? (c(), d("div", {
2105
2107
  key: 0,
@@ -2107,16 +2109,16 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2107
2109
  role: "status",
2108
2110
  "aria-label": o(t)("connect.loyalty.dashboard.accessibility.loading")
2109
2111
  }, [
2110
- h(E, { size: "lg" })
2111
- ], 8, qr)) : o(n) === "unavailable" ? (c(), d("div", Yr, r(o(y)), 1)) : (c(), d("div", Hr, [
2112
- a("div", Wr, [
2113
- a("div", Gr, [
2114
- a("div", Jr, r(o(m)), 1),
2115
- a("div", Zr, r(o(t)("connect.loyalty.dashboard.maximizers.membersInCohort")), 1)
2112
+ f(V, { size: "lg" })
2113
+ ], 8, sn)) : o(n) === "unavailable" ? (c(), d("div", rn, r(o(y)), 1)) : (c(), d("div", nn, [
2114
+ a("div", ln, [
2115
+ a("div", cn, [
2116
+ a("div", dn, r(o(u)), 1),
2117
+ a("div", mn, r(o(t)("connect.loyalty.dashboard.maximizers.membersInCohort")), 1)
2116
2118
  ]),
2117
- a("div", Qr, [
2118
- a("div", Xr, r(o(_)), 1),
2119
- a("div", en, r(o(t)("connect.loyalty.dashboard.maximizers.baselineRatio")), 1)
2119
+ a("div", un, [
2120
+ a("div", yn, r(o(x)), 1),
2121
+ a("div", pn, r(o(t)("connect.loyalty.dashboard.maximizers.baselineRatio")), 1)
2120
2122
  ])
2121
2123
  ]),
2122
2124
  a("div", {
@@ -2125,17 +2127,17 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2125
2127
  o(n) === "available" || o(n) === "noMembers" ? "text-fm-color-typo-secondary border-fm-color-neutral-gray-100 bg-fm-color-neutral-gray-100" : o(n) === "insufficientBaseline" ? "text-fm-color-typo-warning border-fm-color-system-warning-200 bg-fm-color-system-warning-100" : "text-fm-color-typo-error border-fm-color-system-error-200 bg-fm-color-system-error-100"
2126
2128
  ])
2127
2129
  }, r(o(y)), 3),
2128
- a("div", tn, r(o(t)("connect.loyalty.dashboard.maximizers.experienceNote")), 1)
2130
+ a("div", bn, r(o(t)("connect.loyalty.dashboard.maximizers.experienceNote")), 1)
2129
2131
  ]))
2130
2132
  ]),
2131
2133
  _: 1
2132
2134
  });
2133
2135
  };
2134
2136
  }
2135
- }), on = { class: "mb-6 flex items-center gap-3 fm-typo-en-body-md-600" }, sn = ["aria-label"], rn = {
2137
+ }), hn = { class: "mb-6 flex items-center gap-3 fm-typo-en-body-md-600" }, vn = ["aria-label"], gn = {
2136
2138
  key: 1,
2137
2139
  class: "flex min-h-[180px] items-center justify-center text-center fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
2138
- }, nn = { class: "flex items-baseline gap-10 mb-14 flex-wrap" }, ln = { class: "fm-typo-en-title-lg-800" }, cn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, dn = { class: "flex items-center gap-14 mt-10" }, mn = { class: "flex items-center gap-5" }, un = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, yn = { class: "flex items-center gap-5" }, pn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, bn = /* @__PURE__ */ Z({
2140
+ }, _n = { class: "flex items-baseline gap-10 mb-14 flex-wrap" }, xn = { class: "fm-typo-en-title-lg-800" }, wn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, Rn = { class: "flex items-center gap-14 mt-10" }, Sn = { class: "flex items-center gap-5" }, Mn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, $n = { class: "flex items-center gap-5" }, Cn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, Fn = /* @__PURE__ */ Z({
2139
2141
  __name: "SalesTrendChart",
2140
2142
  props: {
2141
2143
  sales: {},
@@ -2143,7 +2145,7 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2143
2145
  error: { type: Boolean }
2144
2146
  },
2145
2147
  setup(e) {
2146
- const s = e, { t } = Q(), n = F(() => [
2148
+ const s = e, { t } = Q(), n = $(() => [
2147
2149
  {
2148
2150
  label: t("connect.loyalty.dashboard.salesTrend.thisPeriod"),
2149
2151
  data: s.sales.series,
@@ -2156,17 +2158,17 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2156
2158
  color: "#B2B3B6",
2157
2159
  dash: !0
2158
2160
  }
2159
- ]), l = { display: !1 };
2161
+ ]), i = { display: !1 };
2160
2162
  return (y, p) => {
2161
- const m = M("FmCircularProgress"), _ = M("FmLineChart"), w = M("FmCard");
2162
- return c(), V(w, {
2163
+ const u = M("FmCircularProgress"), x = M("FmLineChart"), w = M("FmCard");
2164
+ return c(), N(w, {
2163
2165
  variant: "outlined",
2164
2166
  class: "p-24"
2165
2167
  }, {
2166
2168
  default: U(() => [
2167
- a("div", on, [
2169
+ a("div", hn, [
2168
2170
  a("span", null, r(o(t)("connect.loyalty.dashboard.salesTrend.title")), 1),
2169
- h(he, {
2171
+ f(xe, {
2170
2172
  description: s.sales.description
2171
2173
  }, null, 8, ["description"])
2172
2174
  ]),
@@ -2176,31 +2178,31 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2176
2178
  role: "status",
2177
2179
  "aria-label": o(t)("connect.loyalty.dashboard.accessibility.loading")
2178
2180
  }, [
2179
- h(m, { size: "lg" })
2180
- ], 8, sn)) : s.error ? (c(), d("div", rn, r(o(t)("connect.loyalty.dashboard.states.salesTrendUnavailable")), 1)) : (c(), d(I, { key: 2 }, [
2181
- a("div", nn, [
2182
- a("span", ln, r(s.sales.totalFmt), 1),
2181
+ f(u, { size: "lg" })
2182
+ ], 8, vn)) : s.error ? (c(), d("div", gn, r(o(t)("connect.loyalty.dashboard.states.salesTrendUnavailable")), 1)) : (c(), d(k, { key: 2 }, [
2183
+ a("div", _n, [
2184
+ a("span", xn, r(s.sales.totalFmt), 1),
2183
2185
  a("span", {
2184
2186
  class: T(["fm-typo-en-body-sm-600 px-9 py-3 rounded-full whitespace-nowrap", s.sales.deltaClass])
2185
2187
  }, r(s.sales.deltaStr), 3),
2186
- a("span", cn, r(o(t)("connect.loyalty.dashboard.salesTrend.vsPreviousPeriod")), 1)
2188
+ a("span", wn, r(o(t)("connect.loyalty.dashboard.salesTrend.vsPreviousPeriod")), 1)
2187
2189
  ]),
2188
- h(_, {
2190
+ f(x, {
2189
2191
  datasets: o(n),
2190
2192
  "x-axis": { categories: s.sales.comparisonCategories },
2191
- "x-cfg": l,
2192
- "y-cfg": l,
2193
+ "x-cfg": i,
2194
+ "y-cfg": i,
2193
2195
  legend: { display: !1 },
2194
2196
  height: "80px"
2195
2197
  }, null, 8, ["datasets", "x-axis"]),
2196
- a("div", dn, [
2197
- a("div", mn, [
2198
+ a("div", Rn, [
2199
+ a("div", Sn, [
2198
2200
  p[0] || (p[0] = a("div", { class: "w-14 h-2 bg-fm-color-primary rounded-1" }, null, -1)),
2199
- a("span", un, r(o(t)("connect.loyalty.dashboard.salesTrend.thisPeriod")), 1)
2201
+ a("span", Mn, r(o(t)("connect.loyalty.dashboard.salesTrend.thisPeriod")), 1)
2200
2202
  ]),
2201
- a("div", yn, [
2203
+ a("div", $n, [
2202
2204
  p[1] || (p[1] = a("div", { class: "w-14 border-t-[1.5px] border-dashed border-fm-color-neutral-gray-200" }, null, -1)),
2203
- a("span", pn, r(o(t)("connect.loyalty.dashboard.salesTrend.previousPeriod")), 1)
2205
+ a("span", Cn, r(o(t)("connect.loyalty.dashboard.salesTrend.previousPeriod")), 1)
2204
2206
  ])
2205
2207
  ])
2206
2208
  ], 64))
@@ -2209,109 +2211,131 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2209
2211
  });
2210
2212
  };
2211
2213
  }
2212
- }), fn = /* @__PURE__ */ Z({
2214
+ }), Dn = /* @__PURE__ */ Z({
2213
2215
  __name: "ComparisonMethodChip",
2214
2216
  props: {
2215
2217
  modelValue: {}
2216
2218
  },
2217
2219
  emits: ["update:model-value"],
2218
2220
  setup(e, { emit: s }) {
2219
- const t = e, n = s, { t: l } = Q(), y = S(!1), p = {
2221
+ const t = e, n = s, { t: i } = Q(), y = S(!1), p = {
2220
2222
  "same-period-last-week": "samePeriodLastWeek",
2221
2223
  "same-period-last-month": "samePeriodLastMonth",
2222
2224
  "preceding-period": "precedingPeriod",
2223
2225
  "same-period-last-year": "samePeriodLastYear",
2224
2226
  custom: "custom"
2225
- }, m = F(
2226
- () => Qo.map((R) => ({
2227
+ }, u = $(
2228
+ () => ms.map((R) => ({
2227
2229
  value: R,
2228
- label: l(
2230
+ label: i(
2229
2231
  `connect.loyalty.dashboard.filters.comparisonModes.${p[R]}`
2230
2232
  ),
2231
- sublabel: R === "same-period-last-week" || R === "same-period-last-month" ? l(
2233
+ sublabel: R === "same-period-last-week" || R === "same-period-last-month" ? i(
2232
2234
  `connect.loyalty.dashboard.filters.comparisonModeDescriptions.${p[R]}`
2233
2235
  ) : void 0
2234
2236
  }))
2235
- ), _ = F(
2237
+ ), x = $(
2236
2238
  () => {
2237
2239
  var R;
2238
- return (R = m.value.find((f) => f.value === t.modelValue)) == null ? void 0 : R.label;
2240
+ return (R = u.value.find((g) => g.value === t.modelValue)) == null ? void 0 : R.label;
2239
2241
  }
2240
2242
  );
2241
2243
  function w(R) {
2242
2244
  n("update:model-value", R), y.value = !1;
2243
2245
  }
2244
- return (R, f) => {
2245
- const v = M("FmChip"), E = M("FmMenuItem"), B = M("FmMenu");
2246
- return c(), V(B, {
2246
+ return (R, g) => {
2247
+ const h = M("FmChip"), V = M("FmMenuItem"), oe = M("FmMenu");
2248
+ return c(), N(oe, {
2247
2249
  placement: "bottom-end",
2248
2250
  "model-value": y.value,
2249
- onMenuChanged: f[0] || (f[0] = (D) => y.value = D)
2251
+ onMenuChanged: g[0] || (g[0] = (I) => y.value = I)
2250
2252
  }, {
2251
2253
  "menu-button": U(() => [
2252
- h(v, {
2253
- label: `${o(l)(
2254
+ f(h, {
2255
+ label: `${o(i)(
2254
2256
  "connect.loyalty.dashboard.filters.comparisonMethod"
2255
- )}: ${_.value}`,
2257
+ )}: ${x.value}`,
2256
2258
  icon: "compare_arrows",
2257
2259
  "right-icon": y.value ? "keyboard_arrow_up" : "keyboard_arrow_down",
2258
2260
  class: "text-fm-color-neutral-gray-400 cursor-pointer"
2259
2261
  }, null, 8, ["label", "right-icon"])
2260
2262
  ]),
2261
2263
  default: U(() => [
2262
- (c(!0), d(I, null, J(m.value, (D) => (c(), V(E, {
2263
- key: D.value,
2264
- label: D.label,
2265
- sublabel: D.sublabel,
2266
- "model-value": D.value === t.modelValue,
2267
- onClick: (X) => w(D.value)
2264
+ (c(!0), d(k, null, W(u.value, (I) => (c(), N(V, {
2265
+ key: I.value,
2266
+ label: I.label,
2267
+ sublabel: I.sublabel,
2268
+ "model-value": I.value === t.modelValue,
2269
+ onClick: (X) => w(I.value)
2268
2270
  }, null, 8, ["label", "sublabel", "model-value", "onClick"]))), 128))
2269
2271
  ]),
2270
2272
  _: 1
2271
2273
  }, 8, ["model-value"]);
2272
2274
  };
2273
2275
  }
2274
- }), hn = { class: "flex items-center gap-8" }, vn = { class: "fm-typo-en-title-md-600 fm-step-title line-clamp-2" }, gn = { class: "px-24 flex flex-col gap-16 pb-24" }, _n = { class: "flex items-center justify-between gap-8 flex-wrap" }, xn = { class: "flex items-center gap-8 flex-wrap" }, wn = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-tertiary" }, Rn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary -mt-8 text-right" }, Sn = { class: "grid grid-cols-[3fr_2fr] xs:grid-cols-1 gap-16 items-start" }, Mn = { class: "grid grid-cols-2 xs:grid-cols-1 gap-16 items-start" }, $n = { class: "flex flex-col gap-16" }, Cn = { class: "flex flex-col gap-16" }, qn = /* @__PURE__ */ Z({
2276
+ }), An = { class: "flex items-center gap-8" }, kn = { class: "fm-typo-en-title-md-600 fm-step-title line-clamp-2" }, In = { class: "px-24 flex flex-col gap-16 pb-24" }, Ln = { key: 1 }, On = { class: "flex items-center justify-between gap-8 flex-wrap" }, En = { class: "flex items-center gap-8 flex-wrap" }, Pn = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-tertiary" }, Bn = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary -mt-8 text-right" }, Tn = { class: "grid grid-cols-[3fr_2fr] xs:grid-cols-1 gap-16 items-start" }, Nn = { class: "grid grid-cols-2 xs:grid-cols-1 gap-16 items-start" }, Un = { class: "flex flex-col gap-16" }, zn = { class: "flex flex-col gap-16" }, ll = /* @__PURE__ */ Z({
2275
2277
  __name: "LoyaltyDashboard",
2276
2278
  setup(e) {
2277
- const { t: s, locale: t } = Q(), n = (i, b) => typeof b == "number" ? s(i, b) : b === void 0 ? s(i) : s(i, b), l = jt(), y = Kt(), { global: p } = Vt, m = F(
2278
- () => pt[y.currentCountry.value || "MY"] ?? pt.MY
2279
- ), _ = F(
2280
- () => Et.Country.getCountry(y.currentCountry.value || "MY").currency.code
2281
- ), [w, R] = Go(
2279
+ const { t: s, locale: t } = Q(), n = aa(), i = $(
2280
+ () => n.catalog && n.state ? oa(n.catalog, n.state) : null
2281
+ ), y = $(() => i.value === "goals" ? "goals" : "generic"), p = $(
2282
+ () => i.value === "picker" || !!i.value && n.doneCount(y.value) < n.ids(y.value).length
2283
+ ), u = $(() => {
2284
+ var l;
2285
+ return !!((l = n.state) != null && l.analyticDismissed);
2286
+ }), x = $(() => p.value && u.value);
2287
+ async function w() {
2288
+ try {
2289
+ await n.patch({ analyticDismissed: !0 });
2290
+ } catch {
2291
+ ht.error(s("connect.onboarding.save_error"), 3e3);
2292
+ }
2293
+ }
2294
+ async function R() {
2295
+ try {
2296
+ await n.patch({ analyticDismissed: !1 });
2297
+ } catch {
2298
+ ht.error(s("connect.onboarding.save_error"), 3e3);
2299
+ }
2300
+ }
2301
+ const g = (l, b) => typeof b == "number" ? s(l, b) : b === void 0 ? s(l) : s(l, b), h = Qt(), V = Xt(), { global: oe } = Zt, I = $(
2302
+ () => vt[V.currentCountry.value || "MY"] ?? vt.MY
2303
+ ), X = $(
2304
+ () => Kt.Country.getCountry(V.currentCountry.value || "MY").currency.code
2305
+ ), [ke, be] = is(
2282
2306
  "this-month",
2283
- m.value
2284
- ), f = S({
2285
- startDate: w,
2286
- endDate: R
2287
- }), v = S(
2288
- Xo
2289
- ), E = S({
2307
+ I.value
2308
+ ), A = S({
2309
+ startDate: ke,
2310
+ endDate: be
2311
+ }), ee = S(
2312
+ us
2313
+ ), le = S({
2290
2314
  startDate: void 0,
2291
2315
  endDate: void 0
2292
- }), B = F({
2316
+ }), G = $({
2293
2317
  get: () => {
2294
- if (!f.value.startDate || !f.value.endDate)
2295
- return { ...E.value };
2296
- const i = E.value.startDate && E.value.endDate ? [
2297
- E.value.startDate,
2298
- E.value.endDate
2318
+ if (!A.value.startDate || !A.value.endDate)
2319
+ return { ...le.value };
2320
+ const l = le.value.startDate && le.value.endDate ? [
2321
+ le.value.startDate,
2322
+ le.value.endDate
2299
2323
  ] : void 0;
2300
- return Me(
2301
- es(
2302
- [f.value.startDate, f.value.endDate],
2303
- v.value,
2304
- m.value,
2305
- i
2324
+ return Ze(
2325
+ ys(
2326
+ [A.value.startDate, A.value.endDate],
2327
+ ee.value,
2328
+ I.value,
2329
+ l
2306
2330
  )
2307
2331
  );
2308
2332
  },
2309
- set: (i) => {
2310
- v.value === "custom" && (E.value = { ...i });
2333
+ set: (l) => {
2334
+ ee.value === "custom" && (le.value = { ...l });
2311
2335
  }
2312
- }), D = S({ location: [] }), X = S(l.locations.length > 0), ve = S(!1), ne = S(0), j = S({}), ae = S(null), ge = S(null), le = S(null), ie = S(
2336
+ }), te = S({ location: [] }), se = S(h.locations.length > 0), Ue = S(!1), ze = S(0), ie = S({}), re = S(null), Ie = S(null), Le = S(null), Oe = S(
2313
2337
  null
2314
- ), oe = S(null), Ae = S([]), De = S(!1), ke = S(!1), k = kt({
2338
+ ), we = S(null), Ee = S([]), Pe = S(!1), Be = S(!1), L = Ut({
2315
2339
  totalMembers: { loading: !1, error: !1 },
2316
2340
  activeMembers: { loading: !1, error: !1 },
2317
2341
  memberSales: { loading: !1, error: !1 },
@@ -2322,27 +2346,27 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2322
2346
  memberSalesTrend: { loading: !1, error: !1 },
2323
2347
  memberSpendComparison: { loading: !1, error: !1 },
2324
2348
  rewardUsageHealth: { loading: !1, error: !1 }
2325
- }), _e = S({
2349
+ }), Re = S({
2326
2350
  outlier: { loading: !1, error: !1 },
2327
2351
  maximizers: { loading: !1, error: !1 }
2328
- }), xe = S(null), de = S(!1), me = S(!1), we = S(null), Re = S(null), Se = S(!1);
2329
- function Me([i, b]) {
2330
- return { startDate: i, endDate: b };
2352
+ }), ce = S(null), fe = S(!1), he = S(!1), ve = S(null), Se = S(null), Me = S(!1);
2353
+ function Ze([l, b]) {
2354
+ return { startDate: l, endDate: b };
2331
2355
  }
2332
- const Pe = F(
2333
- () => rs(
2334
- ae.value ?? {
2356
+ const ue = $(
2357
+ () => vs(
2358
+ re.value ?? {
2335
2359
  totalMembers: 0,
2336
2360
  activeMembers: 0,
2337
2361
  purchasingMembers: 0,
2338
2362
  repeatMembers: 0,
2339
2363
  rewardRedeemers: 0
2340
2364
  },
2341
- n
2365
+ g
2342
2366
  )
2343
- ), ue = F(
2344
- () => hs(
2345
- ge.value ?? {
2367
+ ), $e = $(
2368
+ () => As(
2369
+ Ie.value ?? {
2346
2370
  totalMembers: 0,
2347
2371
  newlyJoined: 0,
2348
2372
  frequent: 0,
@@ -2350,11 +2374,11 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2350
2374
  atRisk: 0,
2351
2375
  dormant: 0
2352
2376
  },
2353
- n
2377
+ g
2354
2378
  )
2355
- ), Ye = F(
2356
- () => ys(
2357
- le.value ?? {
2379
+ ), Qe = $(
2380
+ () => $s(
2381
+ Le.value ?? {
2358
2382
  categories: [""],
2359
2383
  prevCategories: [""],
2360
2384
  series: [0],
@@ -2362,498 +2386,517 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2362
2386
  memberSales: 0,
2363
2387
  deltaPct: 0
2364
2388
  },
2365
- _.value,
2366
- n
2389
+ X.value,
2390
+ g
2367
2391
  )
2368
- ), He = F(
2369
- () => ae.value ? ls(ae.value, n) : null
2370
- ), $e = F(
2371
- () => oe.value ? _s(
2372
- oe.value,
2373
- _.value,
2374
- n
2392
+ ), Ve = $(
2393
+ () => re.value ? _s(re.value, g) : null
2394
+ ), Te = $(
2395
+ () => we.value ? Ls(
2396
+ we.value,
2397
+ X.value,
2398
+ g
2375
2399
  ) : null
2376
- ), We = F(
2377
- () => bs(
2378
- ie.value ?? {
2400
+ ), de = $(
2401
+ () => Fs(
2402
+ Oe.value ?? {
2379
2403
  memberSales: 0,
2380
2404
  memberOrders: 0,
2381
2405
  nonMemberSales: 0,
2382
2406
  nonMemberOrders: 0
2383
2407
  },
2384
- _.value,
2385
- n
2408
+ X.value,
2409
+ g
2386
2410
  )
2387
- ), Ge = F(
2388
- () => us(
2389
- Ae.value,
2390
- D.value.location,
2391
- n
2411
+ ), Xe = $(
2412
+ () => Ms(
2413
+ Ee.value,
2414
+ te.value.location,
2415
+ g
2392
2416
  )
2393
- ), Te = F(
2394
- () => Wo(
2395
- xe.value,
2417
+ ), je = $(
2418
+ () => ls(
2419
+ ce.value,
2396
2420
  {
2397
- loading: de.value,
2398
- error: me.value
2421
+ loading: fe.value,
2422
+ error: he.value
2399
2423
  },
2400
- n
2424
+ g
2401
2425
  )
2402
2426
  );
2403
- function ye(i) {
2404
- const b = i.status === "loading" ? "loading" : i.status === "unavailable" ? "unavailable" : i.status === "empty" ? "empty" : i.status === "partial" ? "partial" : i.status === "stale" ? "stale" : "available";
2427
+ function et(l) {
2428
+ const b = l.status === "loading" ? "loading" : l.status === "unavailable" ? "unavailable" : l.status === "empty" ? "empty" : l.status === "partial" ? "partial" : l.status === "stale" ? "stale" : "available";
2405
2429
  return s(`connect.loyalty.dashboard.review.kpiStatuses.${b}`);
2406
2430
  }
2407
- function Ie(i) {
2408
- return i.status === "empty" ? "text-fm-color-typo-success" : i.status === "available" || i.status === "partial" || i.status === "stale" ? "text-fm-color-typo-warning" : "text-fm-color-typo-tertiary";
2431
+ function tt(l) {
2432
+ return l.status === "empty" ? "text-fm-color-typo-success" : l.status === "available" || l.status === "partial" || l.status === "stale" ? "text-fm-color-typo-warning" : "text-fm-color-typo-tertiary";
2409
2433
  }
2410
- const Je = F(() => {
2411
- const i = j.value, b = Te.value, C = b.flaggedMembers !== null && b.flaggedMembers > 0 && ["available", "partial", "stale"].includes(b.status), L = (O, se, Rt, St, yt, Mt, $t) => ({
2412
- label: s(se),
2413
- value: yt === void 0 ? "" : Mt(yt),
2414
- description: s(Rt),
2415
- icon: St,
2416
- delta: $t,
2434
+ const at = $(() => {
2435
+ const l = ie.value, b = je.value, F = b.flaggedMembers !== null && b.flaggedMembers > 0 && ["available", "partial", "stale"].includes(b.status), O = (E, pe, Fe, Lt, ft, Ot, Et) => ({
2436
+ label: s(pe),
2437
+ value: ft === void 0 ? "" : Ot(ft),
2438
+ description: s(Fe),
2439
+ icon: Lt,
2440
+ delta: Et,
2417
2441
  sub: null,
2418
2442
  deltaClass: "text-fm-color-typo-secondary",
2419
2443
  trendUp: !0,
2420
- loading: k[O].loading,
2421
- error: k[O].error
2444
+ loading: L[E].loading,
2445
+ error: L[E].error
2422
2446
  });
2423
2447
  return [
2424
- L(
2448
+ O(
2425
2449
  "totalMembers",
2426
2450
  "connect.loyalty.dashboard.kpis.totalMembers.label",
2427
2451
  "connect.loyalty.dashboard.kpis.totalMembers.description",
2428
2452
  "group",
2429
- i.totalMembers,
2430
- Oe,
2453
+ l.totalMembers,
2454
+ J,
2431
2455
  "0%"
2432
2456
  ),
2433
- L(
2457
+ O(
2434
2458
  "activeMembers",
2435
2459
  "connect.loyalty.dashboard.kpis.activeMembers.label",
2436
2460
  "connect.loyalty.dashboard.kpis.activeMembers.description",
2437
2461
  "bolt",
2438
- i.activeMembers,
2439
- Oe,
2462
+ l.activeMembers,
2463
+ J,
2440
2464
  "0%"
2441
2465
  ),
2442
- L(
2466
+ O(
2443
2467
  "memberSales",
2444
2468
  "connect.loyalty.dashboard.kpis.memberSales.label",
2445
2469
  "connect.loyalty.dashboard.kpis.memberSales.description",
2446
2470
  "payments",
2447
- i.memberSales,
2448
- (O) => fe(O, _.value),
2471
+ l.memberSales,
2472
+ (E) => _e(E, X.value),
2449
2473
  "0%"
2450
2474
  ),
2451
- L(
2475
+ O(
2452
2476
  "repeatRate",
2453
2477
  "connect.loyalty.dashboard.kpis.repeatRate.label",
2454
2478
  "connect.loyalty.dashboard.kpis.repeatRate.description",
2455
2479
  "repeat",
2456
- i.repeatRatePct,
2457
- Ne,
2480
+ l.repeatRatePct,
2481
+ Ke,
2458
2482
  "0pp"
2459
2483
  ),
2460
- L(
2484
+ O(
2461
2485
  "voucherRedemptionRate",
2462
2486
  "connect.loyalty.dashboard.kpis.voucherRedemptionRate.label",
2463
2487
  "connect.loyalty.dashboard.kpis.voucherRedemptionRate.description",
2464
2488
  "redeem",
2465
- i.voucherRedemptionRatePct,
2466
- Ne,
2489
+ l.voucherRedemptionRatePct,
2490
+ Ke,
2467
2491
  "0pp"
2468
2492
  ),
2469
2493
  {
2470
2494
  label: s("connect.loyalty.dashboard.kpis.flaggedForReview.label"),
2471
- value: b.flaggedMembers === null ? "" : Oe(b.flaggedMembers),
2495
+ value: b.flaggedMembers === null ? "" : J(b.flaggedMembers),
2472
2496
  description: s(
2473
2497
  "connect.loyalty.dashboard.kpis.flaggedForReview.description"
2474
2498
  ),
2475
2499
  icon: "fact_check",
2476
2500
  delta: "",
2477
- sub: ye(b),
2478
- subClass: Ie(b),
2479
- interactive: C,
2501
+ sub: et(b),
2502
+ subClass: tt(b),
2503
+ interactive: F,
2480
2504
  actionLabel: s("connect.loyalty.dashboard.review.action"),
2481
2505
  deltaClass: "text-fm-color-typo-secondary",
2482
2506
  trendUp: !0,
2483
- loading: de.value,
2484
- error: me.value || b.status === "unavailable"
2507
+ loading: fe.value,
2508
+ error: he.value || b.status === "unavailable"
2485
2509
  }
2486
- ].map((O) => ({ ...O, sub: O.sub ?? null }));
2487
- }), Le = F(
2488
- () => l.locations.map((i) => i._id.toString())
2489
- ), Ze = F(
2490
- () => l.locations.map((i) => ({
2491
- label: `${i.code ? `${i.code} - ` : ""}${i.name}`,
2492
- value: i._id.toString()
2510
+ ].map((E) => ({ ...E, sub: E.sub ?? null }));
2511
+ }), m = $(
2512
+ () => h.locations.map((l) => l._id.toString())
2513
+ ), C = $(
2514
+ () => h.locations.map((l) => ({
2515
+ label: `${l.code ? `${l.code} - ` : ""}${l.name}`,
2516
+ value: l._id.toString()
2493
2517
  }))
2494
- ), ee = F(
2495
- () => !f.value.startDate || !f.value.endDate || !X.value ? null : Ko({
2496
- dateRange: [f.value.startDate, f.value.endDate],
2497
- businessRestaurantIds: Le.value,
2498
- selectedRestaurantIds: D.value.location,
2499
- timezone: m.value
2518
+ ), P = $(
2519
+ () => !A.value.startDate || !A.value.endDate || !se.value ? null : os({
2520
+ dateRange: [A.value.startDate, A.value.endDate],
2521
+ businessRestaurantIds: m.value,
2522
+ selectedRestaurantIds: te.value.location,
2523
+ timezone: I.value
2500
2524
  })
2501
2525
  );
2502
- function Be(i) {
2503
- if (!i.startDate || !i.endDate) return "";
2504
- const b = (C, L) => new Intl.DateTimeFormat(t.value, {
2526
+ function j(l) {
2527
+ if (!l.startDate || !l.endDate) return "";
2528
+ const b = (F, O) => new Intl.DateTimeFormat(t.value, {
2505
2529
  day: "numeric",
2506
2530
  month: "short",
2507
- year: L ? "numeric" : void 0,
2508
- timeZone: m.value
2509
- }).format(Ce.tz(C, m.value).toDate());
2510
- return `${b(i.startDate, !1)} – ${b(i.endDate, !0)}`;
2531
+ year: O ? "numeric" : void 0,
2532
+ timeZone: I.value
2533
+ }).format(De.tz(F, I.value).toDate());
2534
+ return `${b(l.startDate, !1)} – ${b(l.endDate, !0)}`;
2511
2535
  }
2512
- const Qe = F(() => Be(f.value)), Xe = F(
2513
- () => Be(B.value)
2536
+ const ye = $(() => j(A.value)), me = $(
2537
+ () => j(G.value)
2514
2538
  );
2515
- function Oe(i) {
2516
- return i >= 1e3 ? `${(i / 1e3).toFixed(1).replace(/\.0$/, "")}k` : String(i);
2539
+ function J(l) {
2540
+ return l >= 1e3 ? `${(l / 1e3).toFixed(1).replace(/\.0$/, "")}k` : String(l);
2517
2541
  }
2518
- function Ne(i) {
2519
- return `${Math.round(i * 10) / 10}%`;
2542
+ function Ke(l) {
2543
+ return `${Math.round(l * 10) / 10}%`;
2520
2544
  }
2521
- function u(i) {
2522
- f.value = i;
2545
+ function ot(l) {
2546
+ A.value = l;
2523
2547
  }
2524
- function $(i) {
2525
- v.value = i;
2548
+ function Ne(l) {
2549
+ ee.value = l;
2526
2550
  }
2527
- function z(i) {
2528
- B.value = i;
2551
+ function st(l) {
2552
+ G.value = l;
2529
2553
  }
2530
- function W(i) {
2531
- if (i && typeof i == "object" && "value" in i && Number.isFinite(Number(i.value)))
2532
- return Number(i.value);
2554
+ function _(l) {
2555
+ if (l && typeof l == "object" && "value" in l && Number.isFinite(Number(l.value)))
2556
+ return Number(l.value);
2533
2557
  }
2534
- function ce() {
2535
- return !f.value.startDate || !f.value.endDate || !B.value.startDate || !B.value.endDate || !X.value ? null : Zo({
2536
- dateRange: [f.value.startDate, f.value.endDate],
2558
+ function D() {
2559
+ return !A.value.startDate || !A.value.endDate || !G.value.startDate || !G.value.endDate || !se.value ? null : ds({
2560
+ dateRange: [A.value.startDate, A.value.endDate],
2537
2561
  compareDateRange: [
2538
- B.value.startDate,
2539
- B.value.endDate
2562
+ G.value.startDate,
2563
+ G.value.endDate
2540
2564
  ],
2541
- selectedLocationIds: D.value.location,
2542
- locationIds: Le.value,
2543
- timezone: m.value
2565
+ selectedLocationIds: te.value.location,
2566
+ locationIds: m.value,
2567
+ timezone: I.value
2544
2568
  });
2545
2569
  }
2546
- function N(i) {
2547
- return i === ne.value;
2570
+ function B(l) {
2571
+ return l === ze.value;
2548
2572
  }
2549
- function P(i, b, C, L, pe) {
2550
- const O = k[i];
2551
- O.loading = !0, O.error = !1, Promise.resolve().then(() => b(C)).then((se) => {
2552
- N(L) && pe(se);
2573
+ function ae(l, b, F, O, Ce) {
2574
+ const E = L[l];
2575
+ E.loading = !0, E.error = !1, Promise.resolve().then(() => b(F)).then((pe) => {
2576
+ B(O) && Ce(pe);
2553
2577
  }).catch(() => {
2554
- N(L) && (O.error = !0);
2578
+ B(O) && (E.error = !0);
2555
2579
  }).finally(() => {
2556
- N(L) && (O.loading = !1);
2580
+ B(O) && (E.loading = !1);
2557
2581
  });
2558
2582
  }
2559
- function et(i, b) {
2560
- P(
2583
+ function St(l, b) {
2584
+ ae(
2561
2585
  "totalMembers",
2562
- G.readTotalMembers,
2563
- i,
2586
+ H.readTotalMembers,
2587
+ l,
2564
2588
  b,
2565
- (C) => {
2566
- const L = W(C);
2567
- if (L === void 0)
2589
+ (F) => {
2590
+ const O = _(F);
2591
+ if (O === void 0)
2568
2592
  throw new Error("Invalid total member metric");
2569
- j.value.totalMembers = L;
2593
+ ie.value.totalMembers = O;
2570
2594
  }
2571
- ), P(
2595
+ ), ae(
2572
2596
  "activeMembers",
2573
- G.readActiveMembers,
2574
- i,
2597
+ H.readActiveMembers,
2598
+ l,
2575
2599
  b,
2576
- (C) => {
2577
- j.value.activeMembers = C.activeMembers;
2600
+ (F) => {
2601
+ ie.value.activeMembers = F.activeMembers;
2578
2602
  }
2579
- ), P(
2603
+ ), ae(
2580
2604
  "memberSales",
2581
- G.readMemberSales,
2582
- i,
2605
+ H.readMemberSales,
2606
+ l,
2583
2607
  b,
2584
- (C) => {
2585
- j.value.memberSales = C.memberSales;
2608
+ (F) => {
2609
+ ie.value.memberSales = F.memberSales;
2586
2610
  }
2587
- ), P(
2611
+ ), ae(
2588
2612
  "repeatRate",
2589
- G.readRepeatRate,
2590
- i,
2613
+ H.readRepeatRate,
2614
+ l,
2591
2615
  b,
2592
- (C) => {
2593
- j.value.repeatRatePct = C.repeatRatePct;
2616
+ (F) => {
2617
+ ie.value.repeatRatePct = F.repeatRatePct;
2594
2618
  }
2595
- ), P(
2619
+ ), ae(
2596
2620
  "voucherRedemptionRate",
2597
- G.readVoucherRedemptionRate,
2598
- i,
2621
+ H.readVoucherRedemptionRate,
2622
+ l,
2599
2623
  b,
2600
- (C) => {
2601
- j.value.voucherRedemptionRatePct = C.voucherRedemptionRatePct;
2624
+ (F) => {
2625
+ ie.value.voucherRedemptionRatePct = F.voucherRedemptionRatePct;
2602
2626
  }
2603
2627
  );
2604
2628
  }
2605
- function tt(i, b) {
2606
- P(
2629
+ function Mt(l, b) {
2630
+ ae(
2607
2631
  "memberFunnel",
2608
- G.readMemberFunnel,
2609
- i,
2632
+ H.readMemberFunnel,
2633
+ l,
2610
2634
  b,
2611
- (C) => {
2612
- ae.value = C;
2635
+ (F) => {
2636
+ re.value = F;
2613
2637
  }
2614
2638
  );
2615
2639
  }
2616
- function Ee(i, b) {
2617
- P(
2640
+ function $t(l, b) {
2641
+ ae(
2618
2642
  "memberLifecycle",
2619
- G.readMemberLifecycle,
2620
- i,
2643
+ H.readMemberLifecycle,
2644
+ l,
2621
2645
  b,
2622
- (C) => {
2623
- ge.value = C;
2646
+ (F) => {
2647
+ Ie.value = F;
2624
2648
  }
2625
2649
  );
2626
2650
  }
2627
- function at(i, b) {
2628
- P(
2651
+ function Ct(l, b) {
2652
+ ae(
2629
2653
  "memberSalesTrend",
2630
- G.readMemberSalesTrend,
2631
- i,
2654
+ H.readMemberSalesTrend,
2655
+ l,
2632
2656
  b,
2633
- (C) => {
2634
- le.value = C;
2657
+ (F) => {
2658
+ Le.value = F;
2635
2659
  }
2636
2660
  );
2637
2661
  }
2638
- function x(i, b) {
2639
- P(
2662
+ function Ft(l, b) {
2663
+ ae(
2640
2664
  "memberSpendComparison",
2641
- G.readMemberSpendComparison,
2642
- i,
2665
+ H.readMemberSpendComparison,
2666
+ l,
2643
2667
  b,
2644
- (C) => {
2645
- ie.value = C;
2668
+ (F) => {
2669
+ Oe.value = F;
2646
2670
  }
2647
2671
  );
2648
2672
  }
2649
- function A(i, b) {
2650
- P(
2673
+ function Dt(l, b) {
2674
+ ae(
2651
2675
  "rewardUsageHealth",
2652
- G.readRewardUsageHealth,
2653
- i,
2676
+ H.readRewardUsageHealth,
2677
+ l,
2654
2678
  b,
2655
- (C) => {
2656
- oe.value = C;
2679
+ (F) => {
2680
+ we.value = F;
2657
2681
  }
2658
2682
  );
2659
2683
  }
2660
- function te() {
2661
- xe.value = null, de.value = !1, me.value = !1, we.value = null, Re.value = null, Object.values(_e.value).forEach((i) => {
2662
- i.loading = !1, i.error = !1;
2684
+ function yt() {
2685
+ ce.value = null, fe.value = !1, he.value = !1, ve.value = null, Se.value = null, Object.values(Re.value).forEach((l) => {
2686
+ l.loading = !1, l.error = !1;
2663
2687
  });
2664
2688
  }
2665
- function ot(i, b, C, L, pe) {
2666
- const O = _e.value[i];
2667
- O.loading = !0, O.error = !1, b(C).then((se) => {
2668
- N(L) && pe(se);
2689
+ function pt(l, b, F, O, Ce) {
2690
+ const E = Re.value[l];
2691
+ E.loading = !0, E.error = !1, b(F).then((pe) => {
2692
+ B(O) && Ce(pe);
2669
2693
  }).catch(() => {
2670
- N(L) && (O.error = !0);
2694
+ B(O) && (E.error = !0);
2671
2695
  }).finally(() => {
2672
- N(L) && (O.loading = !1);
2696
+ B(O) && (E.loading = !1);
2673
2697
  });
2674
2698
  }
2675
- function _t(i, b) {
2676
- xe.value = null, de.value = !0, me.value = !1, we.value = null, Re.value = null, ot(
2699
+ function At(l, b) {
2700
+ ce.value = null, fe.value = !0, he.value = !1, ve.value = null, Se.value = null, pt(
2677
2701
  "outlier",
2678
- G.readRewardEarningOutliers,
2679
- i,
2702
+ H.readRewardEarningOutliers,
2703
+ l,
2680
2704
  b,
2681
- (C) => {
2682
- we.value = C;
2705
+ (F) => {
2706
+ ve.value = F;
2683
2707
  }
2684
- ), ot(
2708
+ ), pt(
2685
2709
  "maximizers",
2686
- G.readRewardMaximizers,
2687
- i,
2710
+ H.readRewardMaximizers,
2711
+ l,
2688
2712
  b,
2689
- (C) => {
2690
- Re.value = C;
2713
+ (F) => {
2714
+ Se.value = F;
2691
2715
  }
2692
- ), G.readRewardAbuseSummary(i).then((C) => {
2693
- N(b) && (xe.value = C);
2716
+ ), H.readRewardAbuseSummary(l).then((F) => {
2717
+ B(b) && (ce.value = F);
2694
2718
  }).catch(() => {
2695
- N(b) && (me.value = !0);
2719
+ B(b) && (he.value = !0);
2696
2720
  }).finally(() => {
2697
- N(b) && (de.value = !1);
2721
+ B(b) && (fe.value = !1);
2698
2722
  });
2699
2723
  }
2700
- async function xt() {
2701
- De.value = !0, ke.value = !1;
2724
+ async function kt() {
2725
+ Pe.value = !0, Be.value = !1;
2702
2726
  try {
2703
- const { resources: i } = await Pt.readAll({
2727
+ const { resources: l } = await qt.readAll({
2704
2728
  limit: 1e3,
2705
2729
  skip: 0,
2706
2730
  sortBy: "_id",
2707
2731
  descending: !0
2708
2732
  });
2709
- Ae.value = i;
2710
- } catch (i) {
2711
- throw ke.value = !0, i;
2733
+ Ee.value = l;
2734
+ } catch (l) {
2735
+ throw Be.value = !0, l;
2712
2736
  } finally {
2713
- De.value = !1;
2737
+ Pe.value = !1;
2714
2738
  }
2715
2739
  }
2716
- function wt() {
2717
- j.value = {}, ae.value = null, ge.value = null, le.value = null, ie.value = null, oe.value = null, Object.values(k).forEach((i) => {
2718
- i.loading = !1, i.error = !1;
2740
+ function It() {
2741
+ ie.value = {}, re.value = null, Ie.value = null, Le.value = null, Oe.value = null, we.value = null, Object.values(L).forEach((l) => {
2742
+ l.loading = !1, l.error = !1;
2719
2743
  });
2720
2744
  }
2721
- function ut() {
2722
- const i = ++ne.value;
2723
- wt();
2724
- const b = ce();
2745
+ function bt() {
2746
+ const l = ++ze.value;
2747
+ It();
2748
+ const b = D();
2725
2749
  if (!b) {
2726
- te();
2750
+ yt();
2727
2751
  return;
2728
2752
  }
2729
- ee.value ? _t(ee.value, i) : te(), et(b, i), tt(b, i), Ee(b, i), at(b, i), x(b, i), A(b, i);
2753
+ P.value ? At(P.value, l) : yt(), St(b, l), Mt(b, l), $t(b, l), Ct(b, l), Ft(b, l), Dt(b, l);
2730
2754
  }
2731
- return ze(
2732
- [f, B, v, () => D.value.location],
2755
+ return Ye(
2756
+ [A, G, ee, () => te.value.location],
2733
2757
  () => {
2734
- ve.value && ut();
2758
+ Ue.value && bt();
2735
2759
  }
2736
- ), It(async () => {
2737
- await p(async () => {
2738
- X.value || await l.readLocations(), X.value = !0;
2739
- }), await ht(), ve.value = !0, ut(), xt().catch(() => {
2740
- Ae.value = [];
2760
+ ), zt(async () => {
2761
+ n.read(t.value), await oe(async () => {
2762
+ se.value || await h.readLocations(), se.value = !0;
2763
+ }), await xt(), Ue.value = !0, bt(), kt().catch(() => {
2764
+ Ee.value = [];
2741
2765
  });
2742
- }), (i, b) => {
2743
- var pe, O;
2744
- const C = M("FmPill"), L = M("FmPageHead");
2745
- return c(), d(I, null, [
2746
- h(L, {
2766
+ }), (l, b) => {
2767
+ var E, pe;
2768
+ const F = M("FmPill"), O = M("FmPageHead"), Ce = M("FmButton");
2769
+ return c(), d(k, null, [
2770
+ f(O, {
2747
2771
  title: o(s)("connect.loyalty.dashboard.title")
2748
2772
  }, {
2749
2773
  title: U(() => [
2750
- a("div", hn, [
2751
- a("span", vn, r(o(s)("connect.loyalty.dashboard.title")), 1),
2752
- h(C, { variant: "beta" })
2774
+ a("div", An, [
2775
+ a("span", kn, r(o(s)("connect.loyalty.dashboard.title")), 1),
2776
+ f(F, { variant: "beta" })
2753
2777
  ])
2754
2778
  ]),
2755
2779
  _: 1
2756
2780
  }, 8, ["title"]),
2757
- a("div", gn, [
2758
- a("div", _n, [
2759
- h(vt, {
2781
+ a("div", In, [
2782
+ o(p) && !o(u) ? (c(), d(k, { key: 0 }, [
2783
+ o(i) === "picker" ? (c(), N(ea, {
2784
+ key: 0,
2785
+ updating: !1,
2786
+ dismissible: "",
2787
+ onDismiss: w
2788
+ })) : (c(), N(ta, {
2789
+ key: 1,
2790
+ mode: o(y),
2791
+ placement: "analytic"
2792
+ }, null, 8, ["mode"]))
2793
+ ], 64)) : o(x) ? (c(), d("div", Ln, [
2794
+ f(Ce, {
2795
+ variant: "secondary",
2796
+ "prepend-icon": "checklist",
2797
+ label: o(s)("connect.onboarding.show_list"),
2798
+ onClick: R
2799
+ }, null, 8, ["label"])
2800
+ ])) : z("", !0),
2801
+ a("div", On, [
2802
+ f(wt, {
2760
2803
  label: `${o(s)("connect.loyalty.dashboard.filters.location")}: `,
2761
2804
  "all-label": o(s)("connect.loyalty.dashboard.filters.all"),
2762
2805
  "selected-label": o(s)("connect.loyalty.dashboard.filters.selected"),
2763
2806
  "search-placeholder": o(s)("connect.loyalty.dashboard.filters.searchLocations"),
2764
2807
  "right-icon": "keyboard_arrow_down",
2765
- modelValue: o(D).location,
2766
- "onUpdate:modelValue": b[0] || (b[0] = (se) => o(D).location = se),
2808
+ modelValue: o(te).location,
2809
+ "onUpdate:modelValue": b[0] || (b[0] = (Fe) => o(te).location = Fe),
2767
2810
  icon: "storefront",
2768
2811
  "show-item-label": !0,
2769
- items: o(l).locationOptions
2812
+ items: o(h).locationOptions
2770
2813
  }, null, 8, ["label", "all-label", "selected-label", "search-placeholder", "modelValue", "items"]),
2771
- a("div", xn, [
2772
- h(lt, {
2773
- "model-value": o(f),
2774
- "onUpdate:modelValue": u
2814
+ a("div", En, [
2815
+ f(it, {
2816
+ "model-value": o(A),
2817
+ "onUpdate:modelValue": ot
2775
2818
  }, null, 8, ["model-value"]),
2776
- a("span", wn, r(o(s)("connect.loyalty.dashboard.filters.comparisonSeparator")), 1),
2777
- h(fn, {
2778
- "model-value": o(v),
2779
- "onUpdate:modelValue": $
2819
+ a("span", Pn, r(o(s)("connect.loyalty.dashboard.filters.comparisonSeparator")), 1),
2820
+ f(Dn, {
2821
+ "model-value": o(ee),
2822
+ "onUpdate:modelValue": Ne
2780
2823
  }, null, 8, ["model-value"]),
2781
- h(lt, {
2782
- "model-value": o(B),
2783
- readonly: o(v) !== "custom",
2784
- "onUpdate:modelValue": z
2824
+ f(it, {
2825
+ "model-value": o(G),
2826
+ readonly: o(ee) !== "custom",
2827
+ "onUpdate:modelValue": st
2785
2828
  }, null, 8, ["model-value", "readonly"])
2786
2829
  ])
2787
2830
  ]),
2788
- a("div", Rn, r(o(s)("connect.loyalty.dashboard.filters.rangeSummary", {
2789
- current: o(Qe),
2790
- comparison: o(Xe)
2831
+ a("div", Bn, r(o(s)("connect.loyalty.dashboard.filters.rangeSummary", {
2832
+ current: o(ye),
2833
+ comparison: o(me)
2791
2834
  })), 1),
2792
- h(Aa, {
2793
- kpis: o(Je),
2794
- onSelect: b[1] || (b[1] = (se) => Se.value = !0)
2835
+ f(Va, {
2836
+ kpis: o(at),
2837
+ onSelect: b[1] || (b[1] = (Fe) => Me.value = !0)
2795
2838
  }, null, 8, ["kpis"]),
2796
- a("section", Sn, [
2797
- h(lo, {
2798
- stages: o(Pe).funnelStages,
2799
- footnote: o(Pe).funnelFootnote,
2839
+ a("section", Tn, [
2840
+ f(xo, {
2841
+ stages: o(ue).funnelStages,
2842
+ footnote: o(ue).funnelFootnote,
2800
2843
  interactive: !1,
2801
- loading: o(k).memberFunnel.loading,
2802
- error: o(k).memberFunnel.error
2844
+ loading: o(L).memberFunnel.loading,
2845
+ error: o(L).memberFunnel.error
2803
2846
  }, null, 8, ["stages", "footnote", "loading", "error"]),
2804
- h(ha, {
2805
- insight: o(He),
2806
- loading: o(k).memberFunnel.loading,
2807
- error: o(k).memberFunnel.error
2847
+ f(Aa, {
2848
+ insight: o(Ve),
2849
+ loading: o(L).memberFunnel.loading,
2850
+ error: o(L).memberFunnel.error
2808
2851
  }, null, 8, ["insight", "loading", "error"])
2809
2852
  ]),
2810
- a("section", Mn, [
2811
- a("div", $n, [
2812
- h(Ua, {
2813
- segments: o(ue).lifecycleSegs,
2814
- summary: o(ue).lifecycleSummary,
2853
+ a("section", Nn, [
2854
+ a("div", Un, [
2855
+ f(Xa, {
2856
+ segments: o($e).lifecycleSegs,
2857
+ summary: o($e).lifecycleSummary,
2815
2858
  interactive: !1,
2816
- loading: o(k).memberLifecycle.loading,
2817
- error: o(k).memberLifecycle.error
2859
+ loading: o(L).memberLifecycle.loading,
2860
+ error: o(L).memberLifecycle.error
2818
2861
  }, null, 8, ["segments", "summary", "loading", "error"]),
2819
- h(So, {
2820
- spend: o(We),
2821
- loading: o(k).memberSpendComparison.loading,
2822
- error: o(k).memberSpendComparison.error
2862
+ f(Bo, {
2863
+ spend: o(de),
2864
+ loading: o(L).memberSpendComparison.loading,
2865
+ error: o(L).memberSpendComparison.error
2823
2866
  }, null, 8, ["spend", "loading", "error"]),
2824
- h(an, {
2825
- metric: o(Re),
2826
- loading: o(_e).maximizers.loading,
2827
- error: o(_e).maximizers.error
2867
+ f(fn, {
2868
+ metric: o(Se),
2869
+ loading: o(Re).maximizers.loading,
2870
+ error: o(Re).maximizers.error
2828
2871
  }, null, 8, ["metric", "loading", "error"])
2829
2872
  ]),
2830
- a("div", Cn, [
2831
- h(bn, {
2832
- sales: o(Ye),
2833
- loading: o(k).memberSalesTrend.loading,
2834
- error: o(k).memberSalesTrend.error
2873
+ a("div", zn, [
2874
+ f(Fn, {
2875
+ sales: o(Qe),
2876
+ loading: o(L).memberSalesTrend.loading,
2877
+ error: o(L).memberSalesTrend.error
2835
2878
  }, null, 8, ["sales", "loading", "error"]),
2836
- h(Bo, {
2837
- kpis: ((pe = o($e)) == null ? void 0 : pe.rewardKpis) ?? [],
2838
- "top-rewards": ((O = o($e)) == null ? void 0 : O.topRewards) ?? [],
2839
- "has-data": !!o($e),
2840
- loading: o(k).rewardUsageHealth.loading,
2841
- error: o(k).rewardUsageHealth.error
2879
+ f(Zo, {
2880
+ kpis: ((E = o(Te)) == null ? void 0 : E.rewardKpis) ?? [],
2881
+ "top-rewards": ((pe = o(Te)) == null ? void 0 : pe.topRewards) ?? [],
2882
+ "has-data": !!o(Te),
2883
+ loading: o(L).rewardUsageHealth.loading,
2884
+ error: o(L).rewardUsageHealth.error
2842
2885
  }, null, 8, ["kpis", "top-rewards", "has-data", "loading", "error"]),
2843
- h(oa, {
2844
- campaigns: o(Ge),
2845
- loading: o(De),
2846
- error: o(ke)
2886
+ f(fa, {
2887
+ campaigns: o(Xe),
2888
+ loading: o(Pe),
2889
+ error: o(Be)
2847
2890
  }, null, 8, ["campaigns", "loading", "error"])
2848
2891
  ])
2849
2892
  ]),
2850
- h(Nr, {
2851
- modelValue: o(Se),
2852
- "onUpdate:modelValue": b[2] || (b[2] = (se) => nt(Se) ? Se.value = se : null),
2853
- summary: o(Te),
2854
- "outlier-metric": o(we),
2855
- payload: o(ee),
2856
- locations: o(Ze)
2893
+ f(Qr, {
2894
+ modelValue: o(Me),
2895
+ "onUpdate:modelValue": b[2] || (b[2] = (Fe) => lt(Me) ? Me.value = Fe : null),
2896
+ summary: o(je),
2897
+ "outlier-metric": o(ve),
2898
+ payload: o(P),
2899
+ locations: o(C)
2857
2900
  }, null, 8, ["modelValue", "summary", "outlier-metric", "payload", "locations"])
2858
2901
  ])
2859
2902
  ], 64);
@@ -2861,5 +2904,5 @@ const xs = { class: "flex flex-col gap-16 min-h-full" }, ws = { class: "flex fle
2861
2904
  }
2862
2905
  });
2863
2906
  export {
2864
- qn as default
2907
+ ll as default
2865
2908
  };