@dragonmastery/dragoncore-vue 0.0.21 → 0.0.22

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 (143) hide show
  1. package/dist/ChangePasswordPage-DVBkBcm9.js +6 -0
  2. package/dist/{ChangePasswordPage--3XwluwE.js → ChangePasswordPage-ePeFkv_6.js} +2 -2
  3. package/dist/{ChangePasswordPage--3XwluwE.js.map → ChangePasswordPage-ePeFkv_6.js.map} +1 -1
  4. package/dist/{ConsentRequired-C4IRMA0c.js → ConsentRequired-e7DEOGNg.js} +5 -5
  5. package/dist/{ConsentRequired-C4IRMA0c.js.map → ConsentRequired-e7DEOGNg.js.map} +1 -1
  6. package/dist/CreateTeamForm-CV9Y00tD.js +35 -0
  7. package/dist/CreateTeamMemberForm-BX1vUcdg.js +35 -0
  8. package/dist/{CreateUserPage-DLwXeLAq.js → CreateUserPage-Cdv-3U5M.js} +2 -2
  9. package/dist/{CreateUserPage-DLwXeLAq.js.map → CreateUserPage-Cdv-3U5M.js.map} +1 -1
  10. package/dist/CreateUserPage-DQoEX-Er.js +6 -0
  11. package/dist/CreditBalanceDashboard-BZAnEjSz.js +35 -0
  12. package/dist/CreditManagement-C4-_c175.js +35 -0
  13. package/dist/CustomerCreateSupportTicketForm-3tIJKMnJ.js +35 -0
  14. package/dist/{CustomerSupportTicketDetailPage-BdyaKG1v.js → CustomerSupportTicketDetailPage-UGqVoV4j.js} +7 -7
  15. package/dist/{CustomerSupportTicketDetailPage-BdyaKG1v.js.map → CustomerSupportTicketDetailPage-UGqVoV4j.js.map} +1 -1
  16. package/dist/CustomerSupportTicketList-CFQEoXtm.js +35 -0
  17. package/dist/{CustomerSupportTicketParent-HIxwSVdu.js → CustomerSupportTicketParent-C2XdM5f7.js} +2 -2
  18. package/dist/{CustomerSupportTicketParent-HIxwSVdu.js.map → CustomerSupportTicketParent-C2XdM5f7.js.map} +1 -1
  19. package/dist/CustomerSupportTicketParent-Tnov1dEg.js +7 -0
  20. package/dist/CustomerSupportTicketSuccess-DLszUCsg.js +35 -0
  21. package/dist/EditTeamForm-Ww04P2M0.js +35 -0
  22. package/dist/{EditTeamMemberForm-CaS2GLjV.js → EditTeamMemberForm-BgjNP8MZ.js} +2 -2
  23. package/dist/{EditTeamMemberForm-CaS2GLjV.js.map → EditTeamMemberForm-BgjNP8MZ.js.map} +1 -1
  24. package/dist/EditTeamMemberForm-COfY-2FQ.js +6 -0
  25. package/dist/EditUserPage-BJHs3raG.js +7 -0
  26. package/dist/{EditUserPage-DURc5rmi.js → EditUserPage-uLPhRW5x.js} +3 -3
  27. package/dist/{EditUserPage-DURc5rmi.js.map → EditUserPage-uLPhRW5x.js.map} +1 -1
  28. package/dist/{ForgotPassword-OjIPi9s9.js → ForgotPassword-B8JG_n9D.js} +2 -2
  29. package/dist/{ForgotPassword-OjIPi9s9.js.map → ForgotPassword-B8JG_n9D.js.map} +1 -1
  30. package/dist/ForgotPassword-CzMPARbz.js +7 -0
  31. package/dist/{LoginForm-9UFnA-fO.js → LoginForm-C-_lBDyl.js} +3 -3
  32. package/dist/{LoginForm-9UFnA-fO.js.map → LoginForm-C-_lBDyl.js.map} +1 -1
  33. package/dist/LoginForm-DdzRn8nU.js +7 -0
  34. package/dist/Logout-3_Ns09Vy.js +7 -0
  35. package/dist/{Logout-YgTgOFUH.js → Logout-CIAoXyOg.js} +3 -3
  36. package/dist/{Logout-YgTgOFUH.js.map → Logout-CIAoXyOg.js.map} +1 -1
  37. package/dist/{MfaSetup-RtFMY_dj.js → MfaSetup-9qdTKQ0m.js} +2 -2
  38. package/dist/{MfaSetup-RtFMY_dj.js.map → MfaSetup-9qdTKQ0m.js.map} +1 -1
  39. package/dist/MfaSetup-BE_NP70B.js +8 -0
  40. package/dist/{MfaVerify-Cvhe8bEM.js → MfaVerify-Cgta1nE9.js} +3 -3
  41. package/dist/{MfaVerify-Cvhe8bEM.js.map → MfaVerify-Cgta1nE9.js.map} +1 -1
  42. package/dist/MfaVerify-CyiJ9A3L.js +8 -0
  43. package/dist/{ResetPassword-BE4mXK9q.js → ResetPassword-DHUfERyS.js} +2 -2
  44. package/dist/{ResetPassword-BE4mXK9q.js.map → ResetPassword-DHUfERyS.js.map} +1 -1
  45. package/dist/ResetPassword-DXHunZVp.js +7 -0
  46. package/dist/{SavedFiltersPage-DQt6uc8m.js → SavedFiltersPage-CjFv4fI_.js} +26 -26
  47. package/dist/{SavedFiltersPage-DQt6uc8m.js.map → SavedFiltersPage-CjFv4fI_.js.map} +1 -1
  48. package/dist/Signup-Cy1puoqh.js +9 -0
  49. package/dist/{Signup-9TjMMnU4.js → Signup-DfG7Xmkx.js} +4 -4
  50. package/dist/{Signup-9TjMMnU4.js.map → Signup-DfG7Xmkx.js.map} +1 -1
  51. package/dist/{SignupConsentFlow-QUZGKjdB.js → SignupConsentFlow-YGWhF7tj.js} +4 -4
  52. package/dist/{SignupConsentFlow-QUZGKjdB.js.map → SignupConsentFlow-YGWhF7tj.js.map} +1 -1
  53. package/dist/{SignupRequirementsPage-DfbYmpQD.js → SignupRequirementsPage-Sm3vgkhC.js} +5 -5
  54. package/dist/{SignupRequirementsPage-DfbYmpQD.js.map → SignupRequirementsPage-Sm3vgkhC.js.map} +1 -1
  55. package/dist/StaffCreateSupportTicketForm-C5tRPz95.js +35 -0
  56. package/dist/{StaffSupportTicketDetailPage-DQdfh6H1.js → StaffSupportTicketDetailPage-ePkLJU12.js} +7 -7
  57. package/dist/{StaffSupportTicketDetailPage-DQdfh6H1.js.map → StaffSupportTicketDetailPage-ePkLJU12.js.map} +1 -1
  58. package/dist/StaffSupportTicketList-BbiPTm54.js +35 -0
  59. package/dist/{StaffSupportTicketParent-CilR4RGM.js → StaffSupportTicketParent-Bz-SH6-k.js} +2 -2
  60. package/dist/{StaffSupportTicketParent-CilR4RGM.js.map → StaffSupportTicketParent-Bz-SH6-k.js.map} +1 -1
  61. package/dist/StaffSupportTicketParent-D2onnMqe.js +7 -0
  62. package/dist/StaffSupportTicketSuccess-DLVRTvr1.js +35 -0
  63. package/dist/{SupportStaffPage-KKugAnFm.js → SupportStaffPage-0X1VMovT.js} +5 -5
  64. package/dist/{SupportStaffPage-KKugAnFm.js.map → SupportStaffPage-0X1VMovT.js.map} +1 -1
  65. package/dist/{SupportTicketMaintenancePage-smItdkrD.js → SupportTicketMaintenancePage-CLDqc4Pb.js} +4 -4
  66. package/dist/{SupportTicketMaintenancePage-smItdkrD.js.map → SupportTicketMaintenancePage-CLDqc4Pb.js.map} +1 -1
  67. package/dist/TeamAttachmentsTab-B-xXmvOy.js +35 -0
  68. package/dist/TeamHistoryTab-Bb7mq4Dc.js +4 -0
  69. package/dist/{TeamHistoryTab-D5biUPmq.js → TeamHistoryTab-D0zW5wjj.js} +2 -2
  70. package/dist/{TeamHistoryTab-D5biUPmq.js.map → TeamHistoryTab-D0zW5wjj.js.map} +1 -1
  71. package/dist/TeamList-B-cFoclM.js +35 -0
  72. package/dist/TeamMemberList-D3GNHlXH.js +35 -0
  73. package/dist/TeamMemberParent-BKfPMX05.js +35 -0
  74. package/dist/TeamNotesTab-BbODx7wS.js +7 -0
  75. package/dist/{TeamNotesTab-BzGZZ1h8.js → TeamNotesTab-DImzeVPk.js} +4 -4
  76. package/dist/{TeamNotesTab-BzGZZ1h8.js.map → TeamNotesTab-DImzeVPk.js.map} +1 -1
  77. package/dist/TeamParent-5lokhztw.js +35 -0
  78. package/dist/{TimelineNoteInput-0p-M4Qie.js → TimelineNoteInput-Cpnwnx7B.js} +2 -2
  79. package/dist/{TimelineNoteInput-0p-M4Qie.js.map → TimelineNoteInput-Cpnwnx7B.js.map} +1 -1
  80. package/dist/{TimelineSystemEvent-BHzFr46C.js → TimelineSystemEvent-BGG9WkQw.js} +4 -4
  81. package/dist/{TimelineSystemEvent-BHzFr46C.js.map → TimelineSystemEvent-BGG9WkQw.js.map} +1 -1
  82. package/dist/UserListPage-4hZll_PC.js +4 -0
  83. package/dist/{UserListPage-DUE5gJTo.js → UserListPage-DpkOdR1U.js} +2 -2
  84. package/dist/{UserListPage-DUE5gJTo.js.map → UserListPage-DpkOdR1U.js.map} +1 -1
  85. package/dist/{UserProfilePage-C3b93Keh.js → UserProfilePage-CWRgwGQH.js} +4 -4
  86. package/dist/{UserProfilePage-C3b93Keh.js.map → UserProfilePage-CWRgwGQH.js.map} +1 -1
  87. package/dist/UserProfilePage-qFrg3PiC.js +7 -0
  88. package/dist/VerifyEmail-C5EO8OFo.js +9 -0
  89. package/dist/{VerifyEmail-DlOmWGG-.js → VerifyEmail-DXZ4T5eN.js} +5 -5
  90. package/dist/{VerifyEmail-DlOmWGG-.js.map → VerifyEmail-DXZ4T5eN.js.map} +1 -1
  91. package/dist/ViewTeam-Die0SWa_.js +35 -0
  92. package/dist/ViewTeamMember-_sqrqGit.js +35 -0
  93. package/dist/index.d.ts +757 -757
  94. package/dist/index.js +25 -25
  95. package/dist/{src-QZJyMfGX.js → src-_IeDZXH6.js} +51 -51
  96. package/dist/{src-QZJyMfGX.js.map → src-_IeDZXH6.js.map} +1 -1
  97. package/dist/{useEmailVerificationChannel-BNi926Ho.js → useEmailVerificationChannel-BiiuuTUM.js} +2 -2
  98. package/dist/{useEmailVerificationChannel-BNi926Ho.js.map → useEmailVerificationChannel-BiiuuTUM.js.map} +1 -1
  99. package/dist/{useMutation-BTsyHKyn.js → useMutation-BMZJLpgx.js} +3 -3
  100. package/dist/{useMutation-BTsyHKyn.js.map → useMutation-BMZJLpgx.js.map} +1 -1
  101. package/dist/{useQuery-BggIE52P.js → useQuery-qpXzBuVg.js} +3 -3
  102. package/dist/{useQuery-BggIE52P.js.map → useQuery-qpXzBuVg.js.map} +1 -1
  103. package/dist/{useQueryCache-Bjm-S8v5.js → useQueryCache-DkRwK5Gz.js} +2 -2
  104. package/dist/{useQueryCache-Bjm-S8v5.js.map → useQueryCache-DkRwK5Gz.js.map} +1 -1
  105. package/dist/{useRpcAuth-rmHf7bYx.js → useRpcAuth-x5Gn5gR0.js} +17 -3
  106. package/dist/{useRpcAuth-rmHf7bYx.js.map → useRpcAuth-x5Gn5gR0.js.map} +1 -1
  107. package/package.json +2 -2
  108. package/dist/ChangePasswordPage-CpDPmEml.js +0 -6
  109. package/dist/CreateTeamForm-B4cIuYAf.js +0 -35
  110. package/dist/CreateTeamMemberForm-Chrw1y00.js +0 -35
  111. package/dist/CreateUserPage-WruMs7WP.js +0 -6
  112. package/dist/CreditBalanceDashboard-CkcsrZ_e.js +0 -35
  113. package/dist/CreditManagement-Ddvu9dMw.js +0 -35
  114. package/dist/CustomerCreateSupportTicketForm-BKperKGS.js +0 -35
  115. package/dist/CustomerSupportTicketList-DcbrjDa9.js +0 -35
  116. package/dist/CustomerSupportTicketParent-BeNzUwuP.js +0 -7
  117. package/dist/CustomerSupportTicketSuccess-CC967u3y.js +0 -35
  118. package/dist/EditTeamForm-B5Tee5wL.js +0 -35
  119. package/dist/EditTeamMemberForm-OtcS8QWt.js +0 -6
  120. package/dist/EditUserPage-T4DQlKhf.js +0 -7
  121. package/dist/ForgotPassword-CUifhmqP.js +0 -7
  122. package/dist/LoginForm-Bg7GoZEA.js +0 -7
  123. package/dist/Logout-Bs92csWH.js +0 -7
  124. package/dist/MfaSetup-BACX5XP-.js +0 -8
  125. package/dist/MfaVerify-ak4iSdQ2.js +0 -8
  126. package/dist/ResetPassword-pY1uhTdl.js +0 -7
  127. package/dist/Signup-Bq-G3D-s.js +0 -9
  128. package/dist/StaffCreateSupportTicketForm-D0ZuisDk.js +0 -35
  129. package/dist/StaffSupportTicketList-CiqC05XB.js +0 -35
  130. package/dist/StaffSupportTicketParent-DkV329NI.js +0 -7
  131. package/dist/StaffSupportTicketSuccess-CUYnimaI.js +0 -35
  132. package/dist/TeamAttachmentsTab-DUtCD1Yi.js +0 -35
  133. package/dist/TeamHistoryTab-BsUoH4VK.js +0 -4
  134. package/dist/TeamList-BkPIqZ8V.js +0 -35
  135. package/dist/TeamMemberList-1mxUGCNa.js +0 -35
  136. package/dist/TeamMemberParent-DzeBIElY.js +0 -35
  137. package/dist/TeamNotesTab-ClHl2nXd.js +0 -7
  138. package/dist/TeamParent-DJa9UZTP.js +0 -35
  139. package/dist/UserListPage-BTLE4J0s.js +0 -4
  140. package/dist/UserProfilePage-CVTORtSx.js +0 -7
  141. package/dist/VerifyEmail-DCP4DWIw.js +0 -9
  142. package/dist/ViewTeam-DVfnLMhV.js +0 -35
  143. package/dist/ViewTeamMember-L4v3gCIn.js +0 -35
@@ -0,0 +1,35 @@
1
+ import "./useRpcAuth-x5Gn5gR0.js";
2
+ import "./useQueryCache-DkRwK5Gz.js";
3
+ import "./useMutation-BMZJLpgx.js";
4
+ import "./useQuery-qpXzBuVg.js";
5
+ import { w as StaffSupportTicketList_default } from "./src-_IeDZXH6.js";
6
+ import "./AppLink-CHMMrSFI.js";
7
+ import "./TimelineSystemEvent-BGG9WkQw.js";
8
+ import "./TeamMembersTab-4gmnP9sD.js";
9
+ import "./Appearance-DxWTyx1M.js";
10
+ import "./useSignupPendingData-BWHwUHhL.js";
11
+ import "./useBreadcrumbs-qB6ghsAf.js";
12
+ import "./EditTeamMemberForm-BgjNP8MZ.js";
13
+ import "./RecordVersionViewer-BWZ78vvE.js";
14
+ import "./TeamHistoryTab-D0zW5wjj.js";
15
+ import "./UserProfilePage-CWRgwGQH.js";
16
+ import "./ChangePasswordPage-ePeFkv_6.js";
17
+ import "./TeamNotesTab-DImzeVPk.js";
18
+ import "./CustomerSupportTicketParent-C2XdM5f7.js";
19
+ import "./SupportTicketDevLifecycleBadge-EMrQHfyG.js";
20
+ import "./StaffSupportTicketParent-Bz-SH6-k.js";
21
+ import "./LoginForm-C-_lBDyl.js";
22
+ import "./useEmailVerificationChannel-BiiuuTUM.js";
23
+ import "./Signup-DfG7Xmkx.js";
24
+ import "./ForgotPassword-B8JG_n9D.js";
25
+ import "./ResetPassword-DHUfERyS.js";
26
+ import "./Logout-CIAoXyOg.js";
27
+ import "./mfaSchema-BnRWf0ma.js";
28
+ import "./MfaSetup-9qdTKQ0m.js";
29
+ import "./MfaVerify-Cgta1nE9.js";
30
+ import "./VerifyEmail-DXZ4T5eN.js";
31
+ import "./UserListPage-DpkOdR1U.js";
32
+ import "./CreateUserPage-Cdv-3U5M.js";
33
+ import "./EditUserPage-uLPhRW5x.js";
34
+
35
+ export { StaffSupportTicketList_default as default };
@@ -1,4 +1,4 @@
1
- import { t as useQuery } from "./useQuery-BggIE52P.js";
1
+ import { t as useQuery } from "./useQuery-qpXzBuVg.js";
2
2
  import { n as useBreadcrumbs } from "./useBreadcrumbs-qB6ghsAf.js";
3
3
  import { t as formatTicketDisplayId } from "./displayIdFormatter-Dz900Awr.js";
4
4
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, openBlock, provide, resolveComponent, toDisplayString, unref } from "vue";
@@ -63,4 +63,4 @@ var StaffSupportTicketParent_default = _sfc_main;
63
63
 
64
64
  //#endregion
65
65
  export { StaffSupportTicketParent_default as t };
66
- //# sourceMappingURL=StaffSupportTicketParent-CilR4RGM.js.map
66
+ //# sourceMappingURL=StaffSupportTicketParent-Bz-SH6-k.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StaffSupportTicketParent-CilR4RGM.js","names":[],"sources":["../src/slices/support_ticket/staff/StaffSupportTicketParent.vue"],"sourcesContent":["<template>\n <!-- Only show full-page spinner on initial load; refetch keeps content visible -->\n <div v-if=\"isLoading && !ticket\" class=\"flex justify-center items-center p-8\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n\n <div v-else-if=\"error && !ticket\" class=\"alert alert-error mb-4\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"stroke-current shrink-0 h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <span>{{ error.message }}</span>\n </div>\n\n <RouterView v-else :ticket=\"ticket\" :isLoading=\"isLoading\" :error=\"error\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { useBreadcrumbs } from '../../../composables/useBreadcrumbs';\nimport { useQuery } from '../../../composables/useQuery';\nimport { computed, provide } from 'vue';\nimport { useRoute } from 'vue-router';\nimport { formatTicketDisplayId } from '../utils/displayIdFormatter';\n\nconst route = useRoute();\nconst ticketId = route.params.id as string;\n\n// Fetch ticket data once at parent level\nconst {\n data,\n loading: isLoading,\n error,\n refetch,\n} = useQuery((api) => api.supportTickets.staffGetTicket(ticketId), {});\n\nconst ticket = computed(() => data.value ?? null);\n\n// Provide refresh function to child components\nconst refreshTicket = async () => {\n await refetch();\n};\n\nprovide('refreshTicket', refreshTicket);\n\n// Manage breadcrumbs at parent level\nuseBreadcrumbs(() => [\n {\n label: 'Staff Support',\n to: { name: 'StaffSupportTicketList' },\n },\n {\n label: ticket.value\n ? formatTicketDisplayId(\n ticket.value.display_id,\n ticket.value.display_id_prefix,\n ticket.value.id,\n )\n : '',\n loading: !ticket.value,\n to: {\n name: 'StaffEditSupportTicket',\n params: { id: ticketId },\n },\n },\n]);\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAkCA,MAAM,WADQ,UAAU,CACD,OAAO;EAG9B,MAAM,EACJ,MACA,SAAS,WACT,OACA,YACE,UAAU,QAAQ,IAAI,eAAe,eAAe,SAAS,EAAE,EAAE,CAAC;EAEtE,MAAM,SAAS,eAAe,KAAK,SAAS,KAAK;EAGjD,MAAM,gBAAgB,YAAY;AAChC,SAAM,SAAS;;AAGjB,UAAQ,iBAAiB,cAAc;AAGvC,uBAAqB,CACnB;GACE,OAAO;GACP,IAAI,EAAE,MAAM,0BAA0B;GACvC,EACD;GACE,OAAO,OAAO,QACV,sBACE,OAAO,MAAM,YACb,OAAO,MAAM,mBACb,OAAO,MAAM,GACf,GACA;GACJ,SAAS,CAAC,OAAO;GACjB,IAAI;IACF,MAAM;IACN,QAAQ,EAAE,IAAI,UAAU;IACzB;GACF,CACF,CAAC;;;2DAxEA,mBAAA,+EAAmF,EACxE,MAAA,UAAS,IAAA,CAAK,OAAA,SAAA,WAAA,EAAzB,mBAEM,OAFN,YAEM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CADJ,mBAAwD,QAAA,EAAlD,OAAM,sCAAoC,EAAA,MAAA,GAAA,CAAA,EAAA,CAAA,IAGlC,MAAA,MAAK,IAAA,CAAK,OAAA,SAAA,WAAA,EAA1B,mBAeM,OAfN,YAeM,CAAA,OAAA,OAAA,OAAA,KAdJ,mBAYM,OAAA;IAXJ,OAAM;IACN,OAAM;IACN,MAAK;IACL,SAAQ;OAER,mBAKE,QAAA;IAJA,kBAAe;IACf,mBAAgB;IAChB,gBAAa;IACb,GAAE;cAGN,mBAAgC,QAAA,MAAA,gBAAvB,MAAA,MAAK,CAAC,QAAO,EAAA,EAAA,CAAA,CAAA,KAAA,WAAA,EAGxB,YAA4E,uBAAA;;IAAxD,QAAQ,OAAA;IAAS,WAAW,MAAA,UAAS;IAAG,OAAO,MAAA,MAAK"}
1
+ {"version":3,"file":"StaffSupportTicketParent-Bz-SH6-k.js","names":[],"sources":["../src/slices/support_ticket/staff/StaffSupportTicketParent.vue"],"sourcesContent":["<template>\n <!-- Only show full-page spinner on initial load; refetch keeps content visible -->\n <div v-if=\"isLoading && !ticket\" class=\"flex justify-center items-center p-8\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n\n <div v-else-if=\"error && !ticket\" class=\"alert alert-error mb-4\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"stroke-current shrink-0 h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <span>{{ error.message }}</span>\n </div>\n\n <RouterView v-else :ticket=\"ticket\" :isLoading=\"isLoading\" :error=\"error\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { useBreadcrumbs } from '../../../composables/useBreadcrumbs';\nimport { useQuery } from '../../../composables/useQuery';\nimport { computed, provide } from 'vue';\nimport { useRoute } from 'vue-router';\nimport { formatTicketDisplayId } from '../utils/displayIdFormatter';\n\nconst route = useRoute();\nconst ticketId = route.params.id as string;\n\n// Fetch ticket data once at parent level\nconst {\n data,\n loading: isLoading,\n error,\n refetch,\n} = useQuery((api) => api.supportTickets.staffGetTicket(ticketId), {});\n\nconst ticket = computed(() => data.value ?? null);\n\n// Provide refresh function to child components\nconst refreshTicket = async () => {\n await refetch();\n};\n\nprovide('refreshTicket', refreshTicket);\n\n// Manage breadcrumbs at parent level\nuseBreadcrumbs(() => [\n {\n label: 'Staff Support',\n to: { name: 'StaffSupportTicketList' },\n },\n {\n label: ticket.value\n ? formatTicketDisplayId(\n ticket.value.display_id,\n ticket.value.display_id_prefix,\n ticket.value.id,\n )\n : '',\n loading: !ticket.value,\n to: {\n name: 'StaffEditSupportTicket',\n params: { id: ticketId },\n },\n },\n]);\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAkCA,MAAM,WADQ,UAAU,CACD,OAAO;EAG9B,MAAM,EACJ,MACA,SAAS,WACT,OACA,YACE,UAAU,QAAQ,IAAI,eAAe,eAAe,SAAS,EAAE,EAAE,CAAC;EAEtE,MAAM,SAAS,eAAe,KAAK,SAAS,KAAK;EAGjD,MAAM,gBAAgB,YAAY;AAChC,SAAM,SAAS;;AAGjB,UAAQ,iBAAiB,cAAc;AAGvC,uBAAqB,CACnB;GACE,OAAO;GACP,IAAI,EAAE,MAAM,0BAA0B;GACvC,EACD;GACE,OAAO,OAAO,QACV,sBACE,OAAO,MAAM,YACb,OAAO,MAAM,mBACb,OAAO,MAAM,GACf,GACA;GACJ,SAAS,CAAC,OAAO;GACjB,IAAI;IACF,MAAM;IACN,QAAQ,EAAE,IAAI,UAAU;IACzB;GACF,CACF,CAAC;;;2DAxEA,mBAAA,+EAAmF,EACxE,MAAA,UAAS,IAAA,CAAK,OAAA,SAAA,WAAA,EAAzB,mBAEM,OAFN,YAEM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CADJ,mBAAwD,QAAA,EAAlD,OAAM,sCAAoC,EAAA,MAAA,GAAA,CAAA,EAAA,CAAA,IAGlC,MAAA,MAAK,IAAA,CAAK,OAAA,SAAA,WAAA,EAA1B,mBAeM,OAfN,YAeM,CAAA,OAAA,OAAA,OAAA,KAdJ,mBAYM,OAAA;IAXJ,OAAM;IACN,OAAM;IACN,MAAK;IACL,SAAQ;OAER,mBAKE,QAAA;IAJA,kBAAe;IACf,mBAAgB;IAChB,gBAAa;IACb,GAAE;cAGN,mBAAgC,QAAA,MAAA,gBAAvB,MAAA,MAAK,CAAC,QAAO,EAAA,EAAA,CAAA,CAAA,KAAA,WAAA,EAGxB,YAA4E,uBAAA;;IAAxD,QAAQ,OAAA;IAAS,WAAW,MAAA,UAAS;IAAG,OAAO,MAAA,MAAK"}
@@ -0,0 +1,7 @@
1
+ import "./useRpcAuth-x5Gn5gR0.js";
2
+ import "./useQueryCache-DkRwK5Gz.js";
3
+ import "./useQuery-qpXzBuVg.js";
4
+ import "./useBreadcrumbs-qB6ghsAf.js";
5
+ import { t as StaffSupportTicketParent_default } from "./StaffSupportTicketParent-Bz-SH6-k.js";
6
+
7
+ export { StaffSupportTicketParent_default as default };
@@ -0,0 +1,35 @@
1
+ import "./useRpcAuth-x5Gn5gR0.js";
2
+ import "./useQueryCache-DkRwK5Gz.js";
3
+ import "./useMutation-BMZJLpgx.js";
4
+ import "./useQuery-qpXzBuVg.js";
5
+ import { C as StaffSupportTicketSuccess_default } from "./src-_IeDZXH6.js";
6
+ import "./AppLink-CHMMrSFI.js";
7
+ import "./TimelineSystemEvent-BGG9WkQw.js";
8
+ import "./TeamMembersTab-4gmnP9sD.js";
9
+ import "./Appearance-DxWTyx1M.js";
10
+ import "./useSignupPendingData-BWHwUHhL.js";
11
+ import "./useBreadcrumbs-qB6ghsAf.js";
12
+ import "./EditTeamMemberForm-BgjNP8MZ.js";
13
+ import "./RecordVersionViewer-BWZ78vvE.js";
14
+ import "./TeamHistoryTab-D0zW5wjj.js";
15
+ import "./UserProfilePage-CWRgwGQH.js";
16
+ import "./ChangePasswordPage-ePeFkv_6.js";
17
+ import "./TeamNotesTab-DImzeVPk.js";
18
+ import "./CustomerSupportTicketParent-C2XdM5f7.js";
19
+ import "./SupportTicketDevLifecycleBadge-EMrQHfyG.js";
20
+ import "./StaffSupportTicketParent-Bz-SH6-k.js";
21
+ import "./LoginForm-C-_lBDyl.js";
22
+ import "./useEmailVerificationChannel-BiiuuTUM.js";
23
+ import "./Signup-DfG7Xmkx.js";
24
+ import "./ForgotPassword-B8JG_n9D.js";
25
+ import "./ResetPassword-DHUfERyS.js";
26
+ import "./Logout-CIAoXyOg.js";
27
+ import "./mfaSchema-BnRWf0ma.js";
28
+ import "./MfaSetup-9qdTKQ0m.js";
29
+ import "./MfaVerify-Cgta1nE9.js";
30
+ import "./VerifyEmail-DXZ4T5eN.js";
31
+ import "./UserListPage-DpkOdR1U.js";
32
+ import "./CreateUserPage-Cdv-3U5M.js";
33
+ import "./EditUserPage-uLPhRW5x.js";
34
+
35
+ export { StaffSupportTicketSuccess_default as default };
@@ -1,7 +1,7 @@
1
- import { r as executeWithAuth, s as getRefreshTokenHandler, t as BATCH_MODE } from "./useRpcAuth-rmHf7bYx.js";
2
- import "./useQueryCache-Bjm-S8v5.js";
3
- import { t as useMutation } from "./useMutation-BTsyHKyn.js";
4
- import { t as useQuery } from "./useQuery-BggIE52P.js";
1
+ import { r as executeWithAuth, s as getRefreshTokenHandler, t as BATCH_MODE } from "./useRpcAuth-x5Gn5gR0.js";
2
+ import "./useQueryCache-DkRwK5Gz.js";
3
+ import { t as useMutation } from "./useMutation-BMZJLpgx.js";
4
+ import { t as useQuery } from "./useQuery-qpXzBuVg.js";
5
5
  import { t as formatSystemTimestamp } from "./convertToLocalDateTime-CFhtN6PI.js";
6
6
  import { t as extractRpcErrorMessage } from "./extractRpcErrorMessage-Di8E8-Wh.js";
7
7
  import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, openBlock, ref, renderList, toDisplayString, unref, vModelSelect, watch, withDirectives } from "vue";
@@ -153,4 +153,4 @@ var SupportStaffPage_default = _sfc_main;
153
153
 
154
154
  //#endregion
155
155
  export { SupportStaffPage_default as default };
156
- //# sourceMappingURL=SupportStaffPage-KKugAnFm.js.map
156
+ //# sourceMappingURL=SupportStaffPage-0X1VMovT.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SupportStaffPage-KKugAnFm.js","names":[],"sources":["../src/slices/admin/features/support_staff/SupportStaffPage.vue"],"sourcesContent":["<template>\n <div class=\"mt-2\">\n <div class=\"flex justify-between items-center mb-4\">\n <h1 class=\"text-2xl font-bold\">Support Staff</h1>\n </div>\n\n <p class=\"text-base-content/70 mb-4\">\n Users who can triage support tickets. They receive round-robin assignment when new tickets are created.\n </p>\n\n <!-- Add support staff -->\n <div class=\"card bg-base-200 mb-6\">\n <div class=\"card-body\">\n <h2 class=\"card-title text-lg\">Add Support Staff</h2>\n <div class=\"flex flex-wrap items-end gap-4\">\n <div class=\"form-control flex-1 min-w-[200px]\">\n <label class=\"label\">\n <span class=\"label-text\">User</span>\n </label>\n <select\n v-model=\"selectedUserId\"\n class=\"select select-bordered w-full\"\n :disabled=\"isAdding || !addableUsers.length\"\n >\n <option value=\"\">Select a user...</option>\n <option\n v-for=\"u in addableUsers\"\n :key=\"u.id\"\n :value=\"u.id\"\n >\n {{ u.email }} ({{ u.user_type }})\n </option>\n </select>\n <p v-if=\"!addableUsers.length && !isLoading\" class=\"text-sm text-base-content/50 mt-1\">\n All staff users are already support staff.\n </p>\n </div>\n <button\n class=\"btn btn-primary\"\n :disabled=\"!selectedUserId || isAdding\"\n @click=\"handleAdd\"\n >\n <span v-if=\"isAdding\" class=\"loading loading-spinner loading-sm\"></span>\n {{ isAdding ? 'Adding...' : 'Add' }}\n </button>\n </div>\n <p v-if=\"addError\" class=\"text-sm text-error mt-2\">{{ addError }}</p>\n </div>\n </div>\n\n <!-- List -->\n <div v-if=\"isLoading\" class=\"flex justify-center py-8\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n\n <div v-else-if=\"!(supportStaffPageData?.members ?? []).length\" class=\"alert alert-info\">\n <span>No support staff yet. Add users above to enable triage assignment.</span>\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>Email</th>\n <th>Added</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"m in (supportStaffPageData?.members ?? [])\" :key=\"m.id\">\n <td>{{ m.email }}</td>\n <td>{{ formatDate(m.created_at) }}</td>\n <td>\n <button\n class=\"btn btn-sm btn-ghost text-error\"\n :disabled=\"isRemoving === m.user_id\"\n @click=\"handleRemove(m.user_id)\"\n >\n <span v-if=\"isRemoving === m.user_id\" class=\"loading loading-spinner loading-xs\"></span>\n {{ isRemoving === m.user_id ? 'Removing...' : 'Remove' }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport { toast } from 'vue3-toastify';\nimport { BATCH_MODE } from '../../../../composables/useRpcAuth';\nimport { executeWithAuth } from '../../../../composables/useRpcAuth';\nimport { getRefreshTokenHandler } from '../../../../utils/EnhancedRefreshTokenHandler';\nimport { formatSystemTimestamp } from '../../../../utils/convertToLocalDateTime';\nimport { useQuery } from '../../../../composables/useQuery';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { extractRpcErrorMessage } from '../../../../utils/extractRpcErrorMessage';\n\nconst STAFF_TYPES = ['staff', 'super_admin'] as const;\n\nconst {\n data: supportStaffPageData,\n loading: isLoading,\n refetch,\n} = useQuery(\n async (api) => {\n const [members, allUsers] = await Promise.all([\n api.supportStaff.listSupportStaff(),\n api.users.listUsers(),\n ]);\n return { members, allUsers };\n },\n {\n cacheKey: 'support-staff-page',\n staleTime: 30 * 1000,\n batchMode: BATCH_MODE.batch,\n trackedSegment: 'support-staff-page',\n },\n);\n\nconst addableUsers = computed(() => {\n const users = supportStaffPageData.value?.allUsers ?? [];\n const staffIds = new Set((supportStaffPageData.value?.members ?? []).map((m) => m.user_id));\n return users.filter(\n (u) =>\n STAFF_TYPES.includes(u.user_type as (typeof STAFF_TYPES)[number]) &&\n !staffIds.has(u.id),\n );\n});\n\nconst selectedUserId = ref('');\nwatch(addableUsers, (users) => {\n if (!selectedUserId.value || !users.some((u) => u.id === selectedUserId.value)) {\n selectedUserId.value = '';\n }\n});\n\nconst { mutate: addSupportStaff, loading: isAdding } = useMutation(\n (api, userId: string) => api.supportStaff.addSupportStaff(userId),\n { invalidate: /support-staff|triage-users/ },\n);\n\nconst addError = ref<string | null>(null);\n\nasync function handleAdd() {\n if (!selectedUserId.value) return;\n addError.value = null;\n try {\n await addSupportStaff(selectedUserId.value);\n toast.success('Support staff added');\n selectedUserId.value = '';\n await refetch();\n } catch (e) {\n addError.value = extractRpcErrorMessage(e, 'Failed to add support staff');\n toast.error(addError.value);\n }\n}\n\nconst isRemoving = ref<string | null>(null);\n\nasync function handleRemove(userId: string) {\n isRemoving.value = userId;\n try {\n await executeWithAuth(\n async (api) => api.supportStaff.removeSupportStaff(userId),\n { refreshTokenHandler: getRefreshTokenHandler() },\n );\n toast.success('Support staff removed');\n await refetch();\n } catch (e) {\n toast.error(extractRpcErrorMessage(e, 'Failed to remove support staff'));\n } finally {\n isRemoving.value = null;\n }\n}\n\nfunction formatDate(s: string) {\n return formatSystemTimestamp(s);\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"SupportStaffPage-0X1VMovT.js","names":[],"sources":["../src/slices/admin/features/support_staff/SupportStaffPage.vue"],"sourcesContent":["<template>\n <div class=\"mt-2\">\n <div class=\"flex justify-between items-center mb-4\">\n <h1 class=\"text-2xl font-bold\">Support Staff</h1>\n </div>\n\n <p class=\"text-base-content/70 mb-4\">\n Users who can triage support tickets. They receive round-robin assignment when new tickets are created.\n </p>\n\n <!-- Add support staff -->\n <div class=\"card bg-base-200 mb-6\">\n <div class=\"card-body\">\n <h2 class=\"card-title text-lg\">Add Support Staff</h2>\n <div class=\"flex flex-wrap items-end gap-4\">\n <div class=\"form-control flex-1 min-w-[200px]\">\n <label class=\"label\">\n <span class=\"label-text\">User</span>\n </label>\n <select\n v-model=\"selectedUserId\"\n class=\"select select-bordered w-full\"\n :disabled=\"isAdding || !addableUsers.length\"\n >\n <option value=\"\">Select a user...</option>\n <option\n v-for=\"u in addableUsers\"\n :key=\"u.id\"\n :value=\"u.id\"\n >\n {{ u.email }} ({{ u.user_type }})\n </option>\n </select>\n <p v-if=\"!addableUsers.length && !isLoading\" class=\"text-sm text-base-content/50 mt-1\">\n All staff users are already support staff.\n </p>\n </div>\n <button\n class=\"btn btn-primary\"\n :disabled=\"!selectedUserId || isAdding\"\n @click=\"handleAdd\"\n >\n <span v-if=\"isAdding\" class=\"loading loading-spinner loading-sm\"></span>\n {{ isAdding ? 'Adding...' : 'Add' }}\n </button>\n </div>\n <p v-if=\"addError\" class=\"text-sm text-error mt-2\">{{ addError }}</p>\n </div>\n </div>\n\n <!-- List -->\n <div v-if=\"isLoading\" class=\"flex justify-center py-8\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n\n <div v-else-if=\"!(supportStaffPageData?.members ?? []).length\" class=\"alert alert-info\">\n <span>No support staff yet. Add users above to enable triage assignment.</span>\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>Email</th>\n <th>Added</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"m in (supportStaffPageData?.members ?? [])\" :key=\"m.id\">\n <td>{{ m.email }}</td>\n <td>{{ formatDate(m.created_at) }}</td>\n <td>\n <button\n class=\"btn btn-sm btn-ghost text-error\"\n :disabled=\"isRemoving === m.user_id\"\n @click=\"handleRemove(m.user_id)\"\n >\n <span v-if=\"isRemoving === m.user_id\" class=\"loading loading-spinner loading-xs\"></span>\n {{ isRemoving === m.user_id ? 'Removing...' : 'Remove' }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport { toast } from 'vue3-toastify';\nimport { BATCH_MODE } from '../../../../composables/useRpcAuth';\nimport { executeWithAuth } from '../../../../composables/useRpcAuth';\nimport { getRefreshTokenHandler } from '../../../../utils/EnhancedRefreshTokenHandler';\nimport { formatSystemTimestamp } from '../../../../utils/convertToLocalDateTime';\nimport { useQuery } from '../../../../composables/useQuery';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { extractRpcErrorMessage } from '../../../../utils/extractRpcErrorMessage';\n\nconst STAFF_TYPES = ['staff', 'super_admin'] as const;\n\nconst {\n data: supportStaffPageData,\n loading: isLoading,\n refetch,\n} = useQuery(\n async (api) => {\n const [members, allUsers] = await Promise.all([\n api.supportStaff.listSupportStaff(),\n api.users.listUsers(),\n ]);\n return { members, allUsers };\n },\n {\n cacheKey: 'support-staff-page',\n staleTime: 30 * 1000,\n batchMode: BATCH_MODE.batch,\n trackedSegment: 'support-staff-page',\n },\n);\n\nconst addableUsers = computed(() => {\n const users = supportStaffPageData.value?.allUsers ?? [];\n const staffIds = new Set((supportStaffPageData.value?.members ?? []).map((m) => m.user_id));\n return users.filter(\n (u) =>\n STAFF_TYPES.includes(u.user_type as (typeof STAFF_TYPES)[number]) &&\n !staffIds.has(u.id),\n );\n});\n\nconst selectedUserId = ref('');\nwatch(addableUsers, (users) => {\n if (!selectedUserId.value || !users.some((u) => u.id === selectedUserId.value)) {\n selectedUserId.value = '';\n }\n});\n\nconst { mutate: addSupportStaff, loading: isAdding } = useMutation(\n (api, userId: string) => api.supportStaff.addSupportStaff(userId),\n { invalidate: /support-staff|triage-users/ },\n);\n\nconst addError = ref<string | null>(null);\n\nasync function handleAdd() {\n if (!selectedUserId.value) return;\n addError.value = null;\n try {\n await addSupportStaff(selectedUserId.value);\n toast.success('Support staff added');\n selectedUserId.value = '';\n await refetch();\n } catch (e) {\n addError.value = extractRpcErrorMessage(e, 'Failed to add support staff');\n toast.error(addError.value);\n }\n}\n\nconst isRemoving = ref<string | null>(null);\n\nasync function handleRemove(userId: string) {\n isRemoving.value = userId;\n try {\n await executeWithAuth(\n async (api) => api.supportStaff.removeSupportStaff(userId),\n { refreshTokenHandler: getRefreshTokenHandler() },\n );\n toast.success('Support staff removed');\n await refetch();\n } catch (e) {\n toast.error(extractRpcErrorMessage(e, 'Failed to remove support staff'));\n } finally {\n isRemoving.value = null;\n }\n}\n\nfunction formatDate(s: string) {\n return formatSystemTimestamp(s);\n}\n</script>\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import "./useRpcAuth-rmHf7bYx.js";
2
- import "./useQueryCache-Bjm-S8v5.js";
3
- import { t as useMutation } from "./useMutation-BTsyHKyn.js";
1
+ import "./useRpcAuth-x5Gn5gR0.js";
2
+ import "./useQueryCache-DkRwK5Gz.js";
3
+ import { t as useMutation } from "./useMutation-BMZJLpgx.js";
4
4
  import { createElementBlock, createElementVNode, defineComponent, openBlock, unref } from "vue";
5
5
  import { toast } from "vue3-toastify";
6
6
 
@@ -53,4 +53,4 @@ var SupportTicketMaintenancePage_default = _sfc_main;
53
53
 
54
54
  //#endregion
55
55
  export { SupportTicketMaintenancePage_default as default };
56
- //# sourceMappingURL=SupportTicketMaintenancePage-smItdkrD.js.map
56
+ //# sourceMappingURL=SupportTicketMaintenancePage-CLDqc4Pb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SupportTicketMaintenancePage-smItdkrD.js","names":[],"sources":["../src/slices/admin/features/support_ticket_maintenance/SupportTicketMaintenancePage.vue"],"sourcesContent":["<template>\n <div class=\"mt-2\">\n <div class=\"flex justify-between items-center mb-4\">\n <h1 class=\"text-2xl font-bold\">Support Ticket Maintenance</h1>\n </div>\n\n <p class=\"text-base-content/70 mb-4\">\n Admin utilities for fixing support ticket data issues.\n </p>\n\n <div class=\"card bg-base-200\">\n <div class=\"card-body\">\n <h2 class=\"card-title text-lg\">Fix User IDs</h2>\n <p class=\"text-sm text-base-content/70 mb-4\">\n Some support tickets may have email addresses stored in user ID fields (e.g. updated_by, created_by)\n instead of user IDs. This tool scans for such tickets and replaces emails with the correct user IDs\n where a matching user exists.\n </p>\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm w-fit\"\n :disabled=\"isFixingUserIds\"\n @click=\"handleFixUserIds\"\n >\n <span v-if=\"isFixingUserIds\" class=\"loading loading-spinner loading-sm\"></span>\n <span v-else>Fix User IDs</span>\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useMutation } from '../../../../composables/useMutation';\nimport { toast } from 'vue3-toastify';\n\nconst { mutate: fixUserIds, loading: isFixingUserIds } = useMutation(\n (api) => api.supportTickets.staffFixSupportTicketUserIds(),\n {\n invalidate: /^support-ticket/,\n onSuccess: (result) => {\n toast.success(\n `Fixed ${result.ticketsFixed} ticket(s). Scanned: ${result.ticketsScanned}, skipped (no match): ${result.ticketsSkipped}`,\n );\n },\n onError: (err) => {\n toast.error(err?.message ?? 'Failed to fix user IDs');\n },\n },\n);\n\nasync function handleFixUserIds() {\n try {\n await fixUserIds(undefined);\n } catch {\n // Error handled by onError\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAoCA,MAAM,EAAE,QAAQ,YAAY,SAAS,oBAAoB,aACtD,QAAQ,IAAI,eAAe,8BAA8B,EAC1D;GACE,YAAY;GACZ,YAAY,WAAW;AACrB,UAAM,QACJ,SAAS,OAAO,aAAa,uBAAuB,OAAO,eAAe,wBAAwB,OAAO,iBAC1G;;GAEH,UAAU,QAAQ;AAChB,UAAM,MAAM,KAAK,WAAW,yBAAyB;;GAExD,CACF;EAED,eAAe,mBAAmB;AAChC,OAAI;AACF,UAAM,WAAW,OAAU;WACrB;;;uBArDR,mBA4BM,OA5BN,YA4BM;8BA3BJ,mBAEM,OAAA,EAFD,OAAM,0CAAwC,EAAA,CACjD,mBAA8D,MAAA,EAA1D,OAAM,sBAAoB,EAAC,6BAA0B,CAAA;8BAG3D,mBAEI,KAAA,EAFD,OAAM,6BAA2B,EAAC,4DAErC,GAAA;IAEA,mBAkBM,OAlBN,YAkBM,CAjBJ,mBAgBM,OAhBN,YAgBM;+BAfJ,mBAAgD,MAAA,EAA5C,OAAM,sBAAoB,EAAC,gBAAY,GAAA;+BAC3C,mBAII,KAAA,EAJD,OAAM,qCAAmC,EAAC,4OAI7C,GAAA;KACA,mBAQS,UAAA;MAPP,MAAK;MACL,OAAM;MACL,UAAU,MAAA,gBAAe;MACzB,SAAO;SAEI,MAAA,gBAAe,IAAA,WAAA,EAA3B,mBAA+E,QAA/E,WAA+E,KAAA,WAAA,EAC/E,mBAAgC,QAAA,YAAnB,eAAY,EAAA,EAAA,GAAA,WAAA"}
1
+ {"version":3,"file":"SupportTicketMaintenancePage-CLDqc4Pb.js","names":[],"sources":["../src/slices/admin/features/support_ticket_maintenance/SupportTicketMaintenancePage.vue"],"sourcesContent":["<template>\n <div class=\"mt-2\">\n <div class=\"flex justify-between items-center mb-4\">\n <h1 class=\"text-2xl font-bold\">Support Ticket Maintenance</h1>\n </div>\n\n <p class=\"text-base-content/70 mb-4\">\n Admin utilities for fixing support ticket data issues.\n </p>\n\n <div class=\"card bg-base-200\">\n <div class=\"card-body\">\n <h2 class=\"card-title text-lg\">Fix User IDs</h2>\n <p class=\"text-sm text-base-content/70 mb-4\">\n Some support tickets may have email addresses stored in user ID fields (e.g. updated_by, created_by)\n instead of user IDs. This tool scans for such tickets and replaces emails with the correct user IDs\n where a matching user exists.\n </p>\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm w-fit\"\n :disabled=\"isFixingUserIds\"\n @click=\"handleFixUserIds\"\n >\n <span v-if=\"isFixingUserIds\" class=\"loading loading-spinner loading-sm\"></span>\n <span v-else>Fix User IDs</span>\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useMutation } from '../../../../composables/useMutation';\nimport { toast } from 'vue3-toastify';\n\nconst { mutate: fixUserIds, loading: isFixingUserIds } = useMutation(\n (api) => api.supportTickets.staffFixSupportTicketUserIds(),\n {\n invalidate: /^support-ticket/,\n onSuccess: (result) => {\n toast.success(\n `Fixed ${result.ticketsFixed} ticket(s). Scanned: ${result.ticketsScanned}, skipped (no match): ${result.ticketsSkipped}`,\n );\n },\n onError: (err) => {\n toast.error(err?.message ?? 'Failed to fix user IDs');\n },\n },\n);\n\nasync function handleFixUserIds() {\n try {\n await fixUserIds(undefined);\n } catch {\n // Error handled by onError\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAoCA,MAAM,EAAE,QAAQ,YAAY,SAAS,oBAAoB,aACtD,QAAQ,IAAI,eAAe,8BAA8B,EAC1D;GACE,YAAY;GACZ,YAAY,WAAW;AACrB,UAAM,QACJ,SAAS,OAAO,aAAa,uBAAuB,OAAO,eAAe,wBAAwB,OAAO,iBAC1G;;GAEH,UAAU,QAAQ;AAChB,UAAM,MAAM,KAAK,WAAW,yBAAyB;;GAExD,CACF;EAED,eAAe,mBAAmB;AAChC,OAAI;AACF,UAAM,WAAW,OAAU;WACrB;;;uBArDR,mBA4BM,OA5BN,YA4BM;8BA3BJ,mBAEM,OAAA,EAFD,OAAM,0CAAwC,EAAA,CACjD,mBAA8D,MAAA,EAA1D,OAAM,sBAAoB,EAAC,6BAA0B,CAAA;8BAG3D,mBAEI,KAAA,EAFD,OAAM,6BAA2B,EAAC,4DAErC,GAAA;IAEA,mBAkBM,OAlBN,YAkBM,CAjBJ,mBAgBM,OAhBN,YAgBM;+BAfJ,mBAAgD,MAAA,EAA5C,OAAM,sBAAoB,EAAC,gBAAY,GAAA;+BAC3C,mBAII,KAAA,EAJD,OAAM,qCAAmC,EAAC,4OAI7C,GAAA;KACA,mBAQS,UAAA;MAPP,MAAK;MACL,OAAM;MACL,UAAU,MAAA,gBAAe;MACzB,SAAO;SAEI,MAAA,gBAAe,IAAA,WAAA,EAA3B,mBAA+E,QAA/E,WAA+E,KAAA,WAAA,EAC/E,mBAAgC,QAAA,YAAnB,eAAY,EAAA,EAAA,GAAA,WAAA"}
@@ -0,0 +1,35 @@
1
+ import "./useRpcAuth-x5Gn5gR0.js";
2
+ import "./useQueryCache-DkRwK5Gz.js";
3
+ import "./useMutation-BMZJLpgx.js";
4
+ import "./useQuery-qpXzBuVg.js";
5
+ import { ft as TeamAttachmentsTab_default } from "./src-_IeDZXH6.js";
6
+ import "./AppLink-CHMMrSFI.js";
7
+ import "./TimelineSystemEvent-BGG9WkQw.js";
8
+ import "./TeamMembersTab-4gmnP9sD.js";
9
+ import "./Appearance-DxWTyx1M.js";
10
+ import "./useSignupPendingData-BWHwUHhL.js";
11
+ import "./useBreadcrumbs-qB6ghsAf.js";
12
+ import "./EditTeamMemberForm-BgjNP8MZ.js";
13
+ import "./RecordVersionViewer-BWZ78vvE.js";
14
+ import "./TeamHistoryTab-D0zW5wjj.js";
15
+ import "./UserProfilePage-CWRgwGQH.js";
16
+ import "./ChangePasswordPage-ePeFkv_6.js";
17
+ import "./TeamNotesTab-DImzeVPk.js";
18
+ import "./CustomerSupportTicketParent-C2XdM5f7.js";
19
+ import "./SupportTicketDevLifecycleBadge-EMrQHfyG.js";
20
+ import "./StaffSupportTicketParent-Bz-SH6-k.js";
21
+ import "./LoginForm-C-_lBDyl.js";
22
+ import "./useEmailVerificationChannel-BiiuuTUM.js";
23
+ import "./Signup-DfG7Xmkx.js";
24
+ import "./ForgotPassword-B8JG_n9D.js";
25
+ import "./ResetPassword-DHUfERyS.js";
26
+ import "./Logout-CIAoXyOg.js";
27
+ import "./mfaSchema-BnRWf0ma.js";
28
+ import "./MfaSetup-9qdTKQ0m.js";
29
+ import "./MfaVerify-Cgta1nE9.js";
30
+ import "./VerifyEmail-DXZ4T5eN.js";
31
+ import "./UserListPage-DpkOdR1U.js";
32
+ import "./CreateUserPage-Cdv-3U5M.js";
33
+ import "./EditUserPage-uLPhRW5x.js";
34
+
35
+ export { TeamAttachmentsTab_default as default };
@@ -0,0 +1,4 @@
1
+ import "./useRpcAuth-x5Gn5gR0.js";
2
+ import { t as TeamHistoryTab_default } from "./TeamHistoryTab-D0zW5wjj.js";
3
+
4
+ export { TeamHistoryTab_default as default };
@@ -1,4 +1,4 @@
1
- import { r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-rmHf7bYx.js";
1
+ import { r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-x5Gn5gR0.js";
2
2
  import { t as formatSystemTimestamp } from "./convertToLocalDateTime-CFhtN6PI.js";
3
3
  import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, unref, withCtx } from "vue";
4
4
  import { useRoute } from "vue-router";
@@ -229,4 +229,4 @@ var TeamHistoryTab_default = _sfc_main;
229
229
 
230
230
  //#endregion
231
231
  export { recordVersionRowSchemaWithMetadata as n, ZiniaContainer_default as r, TeamHistoryTab_default as t };
232
- //# sourceMappingURL=TeamHistoryTab-D5biUPmq.js.map
232
+ //# sourceMappingURL=TeamHistoryTab-D0zW5wjj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TeamHistoryTab-D5biUPmq.js","names":["fields: Array<{ name: string; value: any }>","changes: Array<{ field: string; oldValue: any; newValue: any }>"],"sources":["../src/components/ui/ZiniaContainer.vue","../src/slices/team/recordVersionRowSchema.ts","../src/slices/team/components/TeamHistoryTab.vue","../src/slices/team/TeamHistoryTab.vue"],"sourcesContent":["<template>\n <div class=\"p-0 md:p-4 max-w-4xl mx-auto bg-base-200 card\">\n <div class=\"card-body p-4\">\n <slot />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n// Reusable container that matches ZiniaForm styling\n// Use this for cards/sections that should visually match forms\n</script>\n","import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { recordVersionSchema } from '@dragonmastery/dragoncore-shared';\nimport { z } from 'zod';\n\nexport const recordVersionRowSchemaWithMetadata = withMetadata(\n recordVersionSchema,\n 'recordVersionRowSchema',\n {},\n);\n\nexport type RecordVersionRow = z.infer<typeof recordVersionSchema>;\n","<template>\n <div class=\"mt-2\">\n <ZiniaContainer>\n <ZiniaDataTable>\n <!-- Custom cell templates -->\n <template #cell-operation=\"{ row }\">\n <div class=\"space-y-3\">\n <!-- Operation Badge -->\n <div class=\"flex flex-col sm:flex-row sm:items-center gap-2\">\n <div class=\"flex items-center gap-2\">\n <span\n class=\"badge badge-xs\"\n :class=\"{\n 'badge-success': row.operation === 'insert',\n 'badge-warning': row.operation === 'update',\n 'badge-error': row.operation === 'delete',\n }\"\n >\n {{ formatOperation(row.operation) }}\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-2 text-xs\">\n <span class=\"text-base-content/70\">\n {{ formatSystemTimestamp(row.recorded_at) }}\n </span>\n <span class=\"text-base-content/60\">\n by {{ row.auth_username || 'Unknown' }}\n </span>\n <button class=\"btn btn-primary btn-xs\" @click=\"toggleDetails(row.id)\">\n {{ expandedItems.has(row.id) ? 'Hide Details' : 'View Details' }}\n </button>\n </div>\n </div>\n\n <!-- Details based on operation type -->\n <div v-if=\"expandedItems.has(row.id)\" class=\"mt-3\">\n <div v-if=\"row.operation === 'insert'\">\n <h4 class=\"font-medium text-sm text-base-content/80 mb-2\">Created Record</h4>\n <div class=\"bg-base-200 rounded-lg p-3 text-sm\">\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-2\">\n <div\n v-for=\"field in getCreatedFields(row.record)\"\n :key=\"field.name\"\n class=\"flex flex-col\"\n >\n <span class=\"text-xs font-medium text-base-content/70 mb-1\">\n {{ formatFieldName(field.name) }}\n </span>\n <span class=\"text-xs font-mono text-base-content\">\n <span\n v-if=\"field.value === null || field.value === undefined\"\n class=\"text-base-content/50 italic\"\n >No value</span\n >\n <span v-else>{{ formatFieldValue(field.name, field.value) }}</span>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div v-else-if=\"row.operation === 'update'\">\n <h4 class=\"font-medium text-sm text-base-content/80 mb-2\">Changes Made</h4>\n <div class=\"space-y-2\">\n <div\n v-for=\"change in getChangedFields(row.record, row.old_record)\"\n :key=\"change.field\"\n class=\"border border-base-300 rounded p-2 bg-base-50\"\n >\n <div class=\"flex items-center justify-between mb-1\">\n <h5 class=\"font-medium text-xs text-base-content\">\n {{ formatFieldName(change.field) }}\n </h5>\n <span class=\"badge badge-xs badge-warning\">Updated</span>\n </div>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-2\">\n <div>\n <div class=\"text-xs font-medium text-base-content/70 mb-1\">\n Previous\n </div>\n <div class=\"bg-error/10 border border-error/20 rounded p-1 text-xs\">\n <span\n v-if=\"change.oldValue === null\"\n class=\"text-base-content/50 italic\"\n >No value</span\n >\n <span v-else class=\"font-mono\">{{\n formatFieldValue(change.field, change.oldValue)\n }}</span>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-base-content/70 mb-1\">New</div>\n <div\n class=\"bg-success/10 border border-success/20 rounded p-1 text-xs\"\n >\n <span\n v-if=\"change.newValue === null\"\n class=\"text-base-content/50 italic\"\n >No value</span\n >\n <span v-else class=\"font-mono\">{{\n formatFieldValue(change.field, change.newValue)\n }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div v-else-if=\"row.operation === 'delete'\">\n <h4 class=\"font-medium text-sm text-base-content/80 mb-2\">Deleted Record</h4>\n <div class=\"bg-error/10 rounded p-2 text-xs font-mono\">\n <pre class=\"whitespace-pre-wrap\">{{ formatRecordData(row.old_record) }}</pre>\n </div>\n </div>\n </div>\n </div>\n </template>\n </ZiniaDataTable>\n </ZiniaContainer>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useCursorDataTable } from '@dragonmastery/zinia-forms-core';\nimport { ref } from 'vue';\nimport { useRoute } from 'vue-router';\nimport ZiniaContainer from '../../../components/ui/ZiniaContainer.vue';\nimport { executeWithAuth } from '../../../composables/useRpcAuth';\nimport { getRefreshTokenHandler } from '../../../utils/EnhancedRefreshTokenHandler';\nimport { formatSystemTimestamp } from '../../../utils/convertToLocalDateTime';\nimport { recordVersionRowSchemaWithMetadata } from '../recordVersionRowSchema';\n\n// Get team ID from route\nconst route = useRoute();\nconst team_id = route.params.id as string;\n\n// Expanded items state\nconst expandedItems = ref(new Set<string>());\n\n// Data table configuration\nconst { ZiniaDataTable } = useCursorDataTable(recordVersionRowSchemaWithMetadata, {\n fetchData: async ({ cursor, pageSize, sort, filters }) => {\n // Build query variables for breadcrumb pagination\n const input = {\n record_id: team_id,\n record_type: 'team' as const,\n filters: {\n first: pageSize,\n ...(cursor ? { after: cursor } : {}),\n sortBy: sort?.field || 'recorded_at',\n sortDirection: (sort?.direction || 'desc') as 'asc' | 'desc',\n ...filters,\n },\n };\n\n // Call RPC endpoint\n const result = await executeWithAuth(\n async (api) => {\n return await api.recordVersions.listRecordVersionsPaginated(\n input.record_id,\n input.record_type,\n input.filters,\n );\n },\n { refreshTokenHandler: getRefreshTokenHandler() },\n );\n\n // Return paginated data with bidirectional navigation\n return {\n data: result.items || [],\n hasNextPage: result.pageInfo?.hasNextPage ?? false,\n hasPreviousPage: result.pageInfo?.hasPreviousPage ?? false,\n prevPageCursor: result.pageInfo?.prevPageCursor ?? undefined,\n nextPageCursor: result.pageInfo?.nextPageCursor ?? undefined,\n };\n },\n\n // Column configuration - only show operation column since everything is consolidated there\n columns: {\n operation: {\n label: '',\n field: 'operation',\n },\n },\n\n // Pagination settings\n pagination: {\n pageSize: 25,\n },\n});\n\n// Methods\nconst toggleDetails = (itemId: string) => {\n if (expandedItems.value.has(itemId)) {\n expandedItems.value.delete(itemId);\n } else {\n expandedItems.value.add(itemId);\n }\n};\n\nconst formatOperation = (operation: string) => {\n switch (operation) {\n case 'insert':\n return 'Created';\n case 'update':\n return 'Updated';\n case 'delete':\n return 'Deleted';\n default:\n return operation;\n }\n};\n\nconst formatRecordData = (recordData: string | null | undefined) => {\n if (!recordData) return 'No data';\n try {\n return JSON.stringify(JSON.parse(recordData), null, 2);\n } catch {\n return recordData;\n }\n};\n\nfunction getCreatedFields(record: string | null | undefined) {\n if (!record) return [];\n\n try {\n const createdData = JSON.parse(record);\n const fields: Array<{ name: string; value: any }> = [];\n\n for (const [name, value] of Object.entries(createdData)) {\n fields.push({ name, value });\n }\n\n return fields;\n } catch (error) {\n console.error('Error parsing record data:', error);\n return [];\n }\n}\n\nfunction getChangedFields(\n record: string | null | undefined,\n oldRecord: string | null | undefined,\n) {\n if (!record || !oldRecord) return [];\n\n try {\n const changedFields = JSON.parse(record);\n const oldData = JSON.parse(oldRecord);\n\n const changes: Array<{ field: string; oldValue: any; newValue: any }> = [];\n\n for (const [field, newValue] of Object.entries(changedFields)) {\n const oldValue = oldData[field];\n changes.push({ field, oldValue, newValue });\n }\n\n return changes;\n } catch (error) {\n console.error('Error parsing record data:', error);\n return [];\n }\n}\n\nfunction formatFieldName(fieldName: string): string {\n // Convert snake_case to Title Case\n return fieldName\n .split('_')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\nfunction formatFieldValue(fieldName: string, value: any): string {\n if (value === null || value === undefined) {\n return 'No value';\n }\n\n // Format dates\n if (fieldName.includes('_at') || fieldName.includes('At')) {\n try {\n return formatSystemTimestamp(value);\n } catch {\n return String(value);\n }\n }\n\n // Format booleans\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No';\n }\n\n // Format enums/status fields\n if (fieldName.includes('status') || fieldName.includes('Status')) {\n return String(value).replace(/_/g, ' ').toUpperCase();\n }\n\n return String(value);\n}\n</script>\n","<template>\n <TeamHistoryTabComponent />\n</template>\n\n<script setup lang=\"ts\">\nimport TeamHistoryTabComponent from './components/TeamHistoryTab.vue';\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"TeamHistoryTab-D0zW5wjj.js","names":["fields: Array<{ name: string; value: any }>","changes: Array<{ field: string; oldValue: any; newValue: any }>"],"sources":["../src/components/ui/ZiniaContainer.vue","../src/slices/team/recordVersionRowSchema.ts","../src/slices/team/components/TeamHistoryTab.vue","../src/slices/team/TeamHistoryTab.vue"],"sourcesContent":["<template>\n <div class=\"p-0 md:p-4 max-w-4xl mx-auto bg-base-200 card\">\n <div class=\"card-body p-4\">\n <slot />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n// Reusable container that matches ZiniaForm styling\n// Use this for cards/sections that should visually match forms\n</script>\n","import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { recordVersionSchema } from '@dragonmastery/dragoncore-shared';\nimport { z } from 'zod';\n\nexport const recordVersionRowSchemaWithMetadata = withMetadata(\n recordVersionSchema,\n 'recordVersionRowSchema',\n {},\n);\n\nexport type RecordVersionRow = z.infer<typeof recordVersionSchema>;\n","<template>\n <div class=\"mt-2\">\n <ZiniaContainer>\n <ZiniaDataTable>\n <!-- Custom cell templates -->\n <template #cell-operation=\"{ row }\">\n <div class=\"space-y-3\">\n <!-- Operation Badge -->\n <div class=\"flex flex-col sm:flex-row sm:items-center gap-2\">\n <div class=\"flex items-center gap-2\">\n <span\n class=\"badge badge-xs\"\n :class=\"{\n 'badge-success': row.operation === 'insert',\n 'badge-warning': row.operation === 'update',\n 'badge-error': row.operation === 'delete',\n }\"\n >\n {{ formatOperation(row.operation) }}\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-2 text-xs\">\n <span class=\"text-base-content/70\">\n {{ formatSystemTimestamp(row.recorded_at) }}\n </span>\n <span class=\"text-base-content/60\">\n by {{ row.auth_username || 'Unknown' }}\n </span>\n <button class=\"btn btn-primary btn-xs\" @click=\"toggleDetails(row.id)\">\n {{ expandedItems.has(row.id) ? 'Hide Details' : 'View Details' }}\n </button>\n </div>\n </div>\n\n <!-- Details based on operation type -->\n <div v-if=\"expandedItems.has(row.id)\" class=\"mt-3\">\n <div v-if=\"row.operation === 'insert'\">\n <h4 class=\"font-medium text-sm text-base-content/80 mb-2\">Created Record</h4>\n <div class=\"bg-base-200 rounded-lg p-3 text-sm\">\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-2\">\n <div\n v-for=\"field in getCreatedFields(row.record)\"\n :key=\"field.name\"\n class=\"flex flex-col\"\n >\n <span class=\"text-xs font-medium text-base-content/70 mb-1\">\n {{ formatFieldName(field.name) }}\n </span>\n <span class=\"text-xs font-mono text-base-content\">\n <span\n v-if=\"field.value === null || field.value === undefined\"\n class=\"text-base-content/50 italic\"\n >No value</span\n >\n <span v-else>{{ formatFieldValue(field.name, field.value) }}</span>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div v-else-if=\"row.operation === 'update'\">\n <h4 class=\"font-medium text-sm text-base-content/80 mb-2\">Changes Made</h4>\n <div class=\"space-y-2\">\n <div\n v-for=\"change in getChangedFields(row.record, row.old_record)\"\n :key=\"change.field\"\n class=\"border border-base-300 rounded p-2 bg-base-50\"\n >\n <div class=\"flex items-center justify-between mb-1\">\n <h5 class=\"font-medium text-xs text-base-content\">\n {{ formatFieldName(change.field) }}\n </h5>\n <span class=\"badge badge-xs badge-warning\">Updated</span>\n </div>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-2\">\n <div>\n <div class=\"text-xs font-medium text-base-content/70 mb-1\">\n Previous\n </div>\n <div class=\"bg-error/10 border border-error/20 rounded p-1 text-xs\">\n <span\n v-if=\"change.oldValue === null\"\n class=\"text-base-content/50 italic\"\n >No value</span\n >\n <span v-else class=\"font-mono\">{{\n formatFieldValue(change.field, change.oldValue)\n }}</span>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-base-content/70 mb-1\">New</div>\n <div\n class=\"bg-success/10 border border-success/20 rounded p-1 text-xs\"\n >\n <span\n v-if=\"change.newValue === null\"\n class=\"text-base-content/50 italic\"\n >No value</span\n >\n <span v-else class=\"font-mono\">{{\n formatFieldValue(change.field, change.newValue)\n }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div v-else-if=\"row.operation === 'delete'\">\n <h4 class=\"font-medium text-sm text-base-content/80 mb-2\">Deleted Record</h4>\n <div class=\"bg-error/10 rounded p-2 text-xs font-mono\">\n <pre class=\"whitespace-pre-wrap\">{{ formatRecordData(row.old_record) }}</pre>\n </div>\n </div>\n </div>\n </div>\n </template>\n </ZiniaDataTable>\n </ZiniaContainer>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useCursorDataTable } from '@dragonmastery/zinia-forms-core';\nimport { ref } from 'vue';\nimport { useRoute } from 'vue-router';\nimport ZiniaContainer from '../../../components/ui/ZiniaContainer.vue';\nimport { executeWithAuth } from '../../../composables/useRpcAuth';\nimport { getRefreshTokenHandler } from '../../../utils/EnhancedRefreshTokenHandler';\nimport { formatSystemTimestamp } from '../../../utils/convertToLocalDateTime';\nimport { recordVersionRowSchemaWithMetadata } from '../recordVersionRowSchema';\n\n// Get team ID from route\nconst route = useRoute();\nconst team_id = route.params.id as string;\n\n// Expanded items state\nconst expandedItems = ref(new Set<string>());\n\n// Data table configuration\nconst { ZiniaDataTable } = useCursorDataTable(recordVersionRowSchemaWithMetadata, {\n fetchData: async ({ cursor, pageSize, sort, filters }) => {\n // Build query variables for breadcrumb pagination\n const input = {\n record_id: team_id,\n record_type: 'team' as const,\n filters: {\n first: pageSize,\n ...(cursor ? { after: cursor } : {}),\n sortBy: sort?.field || 'recorded_at',\n sortDirection: (sort?.direction || 'desc') as 'asc' | 'desc',\n ...filters,\n },\n };\n\n // Call RPC endpoint\n const result = await executeWithAuth(\n async (api) => {\n return await api.recordVersions.listRecordVersionsPaginated(\n input.record_id,\n input.record_type,\n input.filters,\n );\n },\n { refreshTokenHandler: getRefreshTokenHandler() },\n );\n\n // Return paginated data with bidirectional navigation\n return {\n data: result.items || [],\n hasNextPage: result.pageInfo?.hasNextPage ?? false,\n hasPreviousPage: result.pageInfo?.hasPreviousPage ?? false,\n prevPageCursor: result.pageInfo?.prevPageCursor ?? undefined,\n nextPageCursor: result.pageInfo?.nextPageCursor ?? undefined,\n };\n },\n\n // Column configuration - only show operation column since everything is consolidated there\n columns: {\n operation: {\n label: '',\n field: 'operation',\n },\n },\n\n // Pagination settings\n pagination: {\n pageSize: 25,\n },\n});\n\n// Methods\nconst toggleDetails = (itemId: string) => {\n if (expandedItems.value.has(itemId)) {\n expandedItems.value.delete(itemId);\n } else {\n expandedItems.value.add(itemId);\n }\n};\n\nconst formatOperation = (operation: string) => {\n switch (operation) {\n case 'insert':\n return 'Created';\n case 'update':\n return 'Updated';\n case 'delete':\n return 'Deleted';\n default:\n return operation;\n }\n};\n\nconst formatRecordData = (recordData: string | null | undefined) => {\n if (!recordData) return 'No data';\n try {\n return JSON.stringify(JSON.parse(recordData), null, 2);\n } catch {\n return recordData;\n }\n};\n\nfunction getCreatedFields(record: string | null | undefined) {\n if (!record) return [];\n\n try {\n const createdData = JSON.parse(record);\n const fields: Array<{ name: string; value: any }> = [];\n\n for (const [name, value] of Object.entries(createdData)) {\n fields.push({ name, value });\n }\n\n return fields;\n } catch (error) {\n console.error('Error parsing record data:', error);\n return [];\n }\n}\n\nfunction getChangedFields(\n record: string | null | undefined,\n oldRecord: string | null | undefined,\n) {\n if (!record || !oldRecord) return [];\n\n try {\n const changedFields = JSON.parse(record);\n const oldData = JSON.parse(oldRecord);\n\n const changes: Array<{ field: string; oldValue: any; newValue: any }> = [];\n\n for (const [field, newValue] of Object.entries(changedFields)) {\n const oldValue = oldData[field];\n changes.push({ field, oldValue, newValue });\n }\n\n return changes;\n } catch (error) {\n console.error('Error parsing record data:', error);\n return [];\n }\n}\n\nfunction formatFieldName(fieldName: string): string {\n // Convert snake_case to Title Case\n return fieldName\n .split('_')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\nfunction formatFieldValue(fieldName: string, value: any): string {\n if (value === null || value === undefined) {\n return 'No value';\n }\n\n // Format dates\n if (fieldName.includes('_at') || fieldName.includes('At')) {\n try {\n return formatSystemTimestamp(value);\n } catch {\n return String(value);\n }\n }\n\n // Format booleans\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No';\n }\n\n // Format enums/status fields\n if (fieldName.includes('status') || fieldName.includes('Status')) {\n return String(value).replace(/_/g, ' ').toUpperCase();\n }\n\n return String(value);\n}\n</script>\n","<template>\n <TeamHistoryTabComponent />\n</template>\n\n<script setup lang=\"ts\">\nimport TeamHistoryTabComponent from './components/TeamHistoryTab.vue';\n</script>\n"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import "./useRpcAuth-x5Gn5gR0.js";
2
+ import "./useQueryCache-DkRwK5Gz.js";
3
+ import "./useMutation-BMZJLpgx.js";
4
+ import "./useQuery-qpXzBuVg.js";
5
+ import { lt as TeamList_default } from "./src-_IeDZXH6.js";
6
+ import "./AppLink-CHMMrSFI.js";
7
+ import "./TimelineSystemEvent-BGG9WkQw.js";
8
+ import "./TeamMembersTab-4gmnP9sD.js";
9
+ import "./Appearance-DxWTyx1M.js";
10
+ import "./useSignupPendingData-BWHwUHhL.js";
11
+ import "./useBreadcrumbs-qB6ghsAf.js";
12
+ import "./EditTeamMemberForm-BgjNP8MZ.js";
13
+ import "./RecordVersionViewer-BWZ78vvE.js";
14
+ import "./TeamHistoryTab-D0zW5wjj.js";
15
+ import "./UserProfilePage-CWRgwGQH.js";
16
+ import "./ChangePasswordPage-ePeFkv_6.js";
17
+ import "./TeamNotesTab-DImzeVPk.js";
18
+ import "./CustomerSupportTicketParent-C2XdM5f7.js";
19
+ import "./SupportTicketDevLifecycleBadge-EMrQHfyG.js";
20
+ import "./StaffSupportTicketParent-Bz-SH6-k.js";
21
+ import "./LoginForm-C-_lBDyl.js";
22
+ import "./useEmailVerificationChannel-BiiuuTUM.js";
23
+ import "./Signup-DfG7Xmkx.js";
24
+ import "./ForgotPassword-B8JG_n9D.js";
25
+ import "./ResetPassword-DHUfERyS.js";
26
+ import "./Logout-CIAoXyOg.js";
27
+ import "./mfaSchema-BnRWf0ma.js";
28
+ import "./MfaSetup-9qdTKQ0m.js";
29
+ import "./MfaVerify-Cgta1nE9.js";
30
+ import "./VerifyEmail-DXZ4T5eN.js";
31
+ import "./UserListPage-DpkOdR1U.js";
32
+ import "./CreateUserPage-Cdv-3U5M.js";
33
+ import "./EditUserPage-uLPhRW5x.js";
34
+
35
+ export { TeamList_default as default };
@@ -0,0 +1,35 @@
1
+ import "./useRpcAuth-x5Gn5gR0.js";
2
+ import "./useQueryCache-DkRwK5Gz.js";
3
+ import "./useMutation-BMZJLpgx.js";
4
+ import "./useQuery-qpXzBuVg.js";
5
+ import { rt as TeamMemberList_default } from "./src-_IeDZXH6.js";
6
+ import "./AppLink-CHMMrSFI.js";
7
+ import "./TimelineSystemEvent-BGG9WkQw.js";
8
+ import "./TeamMembersTab-4gmnP9sD.js";
9
+ import "./Appearance-DxWTyx1M.js";
10
+ import "./useSignupPendingData-BWHwUHhL.js";
11
+ import "./useBreadcrumbs-qB6ghsAf.js";
12
+ import "./EditTeamMemberForm-BgjNP8MZ.js";
13
+ import "./RecordVersionViewer-BWZ78vvE.js";
14
+ import "./TeamHistoryTab-D0zW5wjj.js";
15
+ import "./UserProfilePage-CWRgwGQH.js";
16
+ import "./ChangePasswordPage-ePeFkv_6.js";
17
+ import "./TeamNotesTab-DImzeVPk.js";
18
+ import "./CustomerSupportTicketParent-C2XdM5f7.js";
19
+ import "./SupportTicketDevLifecycleBadge-EMrQHfyG.js";
20
+ import "./StaffSupportTicketParent-Bz-SH6-k.js";
21
+ import "./LoginForm-C-_lBDyl.js";
22
+ import "./useEmailVerificationChannel-BiiuuTUM.js";
23
+ import "./Signup-DfG7Xmkx.js";
24
+ import "./ForgotPassword-B8JG_n9D.js";
25
+ import "./ResetPassword-DHUfERyS.js";
26
+ import "./Logout-CIAoXyOg.js";
27
+ import "./mfaSchema-BnRWf0ma.js";
28
+ import "./MfaSetup-9qdTKQ0m.js";
29
+ import "./MfaVerify-Cgta1nE9.js";
30
+ import "./VerifyEmail-DXZ4T5eN.js";
31
+ import "./UserListPage-DpkOdR1U.js";
32
+ import "./CreateUserPage-Cdv-3U5M.js";
33
+ import "./EditUserPage-uLPhRW5x.js";
34
+
35
+ export { TeamMemberList_default as default };
@@ -0,0 +1,35 @@
1
+ import "./useRpcAuth-x5Gn5gR0.js";
2
+ import "./useQueryCache-DkRwK5Gz.js";
3
+ import "./useMutation-BMZJLpgx.js";
4
+ import "./useQuery-qpXzBuVg.js";
5
+ import { nt as TeamMemberParent_default } from "./src-_IeDZXH6.js";
6
+ import "./AppLink-CHMMrSFI.js";
7
+ import "./TimelineSystemEvent-BGG9WkQw.js";
8
+ import "./TeamMembersTab-4gmnP9sD.js";
9
+ import "./Appearance-DxWTyx1M.js";
10
+ import "./useSignupPendingData-BWHwUHhL.js";
11
+ import "./useBreadcrumbs-qB6ghsAf.js";
12
+ import "./EditTeamMemberForm-BgjNP8MZ.js";
13
+ import "./RecordVersionViewer-BWZ78vvE.js";
14
+ import "./TeamHistoryTab-D0zW5wjj.js";
15
+ import "./UserProfilePage-CWRgwGQH.js";
16
+ import "./ChangePasswordPage-ePeFkv_6.js";
17
+ import "./TeamNotesTab-DImzeVPk.js";
18
+ import "./CustomerSupportTicketParent-C2XdM5f7.js";
19
+ import "./SupportTicketDevLifecycleBadge-EMrQHfyG.js";
20
+ import "./StaffSupportTicketParent-Bz-SH6-k.js";
21
+ import "./LoginForm-C-_lBDyl.js";
22
+ import "./useEmailVerificationChannel-BiiuuTUM.js";
23
+ import "./Signup-DfG7Xmkx.js";
24
+ import "./ForgotPassword-B8JG_n9D.js";
25
+ import "./ResetPassword-DHUfERyS.js";
26
+ import "./Logout-CIAoXyOg.js";
27
+ import "./mfaSchema-BnRWf0ma.js";
28
+ import "./MfaSetup-9qdTKQ0m.js";
29
+ import "./MfaVerify-Cgta1nE9.js";
30
+ import "./VerifyEmail-DXZ4T5eN.js";
31
+ import "./UserListPage-DpkOdR1U.js";
32
+ import "./CreateUserPage-Cdv-3U5M.js";
33
+ import "./EditUserPage-uLPhRW5x.js";
34
+
35
+ export { TeamMemberParent_default as default };
@@ -0,0 +1,7 @@
1
+ import "./useRpcAuth-x5Gn5gR0.js";
2
+ import "./useQueryCache-DkRwK5Gz.js";
3
+ import "./useMutation-BMZJLpgx.js";
4
+ import "./useQuery-qpXzBuVg.js";
5
+ import { t as TeamNotesTab_default } from "./TeamNotesTab-DImzeVPk.js";
6
+
7
+ export { TeamNotesTab_default as default };
@@ -1,6 +1,6 @@
1
- import { r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-rmHf7bYx.js";
2
- import { t as useMutation } from "./useMutation-BTsyHKyn.js";
3
- import { t as useQuery } from "./useQuery-BggIE52P.js";
1
+ import { r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-x5Gn5gR0.js";
2
+ import { t as useMutation } from "./useMutation-BMZJLpgx.js";
3
+ import { t as useQuery } from "./useQuery-qpXzBuVg.js";
4
4
  import { t as formatSystemTimestamp } from "./convertToLocalDateTime-CFhtN6PI.js";
5
5
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, toDisplayString, unref, watch, withCtx } from "vue";
6
6
  import { useRoute } from "vue-router";
@@ -455,4 +455,4 @@ var TeamNotesTab_default = _sfc_main;
455
455
 
456
456
  //#endregion
457
457
  export { EditNoteModal_default as a, noteCreateMetadata as i, NoteList_default as n, noteUpdateMetadata as o, noteRowSchemaWithMetadata as r, TeamNotesTab_default as t };
458
- //# sourceMappingURL=TeamNotesTab-BzGZZ1h8.js.map
458
+ //# sourceMappingURL=TeamNotesTab-DImzeVPk.js.map