@dragonmastery/dragoncore-vue 0.0.22 → 0.0.23

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 (245) hide show
  1. package/dist/{AppLink-CHMMrSFI.js → AppLink-FcNGKgvG.js} +1 -1
  2. package/dist/{AppLink-CHMMrSFI.js.map → AppLink-FcNGKgvG.js.map} +1 -1
  3. package/dist/Appearance-Ch4zfWZ3.js +3 -0
  4. package/dist/{Appearance-DxWTyx1M.js → Appearance-shr0Aql0.js} +1 -1
  5. package/dist/{Appearance-DxWTyx1M.js.map → Appearance-shr0Aql0.js.map} +1 -1
  6. package/dist/{ChangePasswordPage-ePeFkv_6.js → ChangePasswordPage-C633yQiU.js} +2 -2
  7. package/dist/{ChangePasswordPage-ePeFkv_6.js.map → ChangePasswordPage-C633yQiU.js.map} +1 -1
  8. package/dist/ChangePasswordPage-CYuCCosx.js +7 -0
  9. package/dist/ConfirmDialog-DjthOYU6.js +85 -0
  10. package/dist/ConfirmDialog-DjthOYU6.js.map +1 -0
  11. package/dist/ConsentRequired-BPjsZoPY.js +211 -0
  12. package/dist/ConsentRequired-BPjsZoPY.js.map +1 -0
  13. package/dist/CreateTeamForm-CeaC41VY.js +142 -0
  14. package/dist/CreateTeamForm-CeaC41VY.js.map +1 -0
  15. package/dist/CreateTeamForm-DfgCaUwX.js +12 -0
  16. package/dist/CreateTeamMemberForm-Bv9gNG4z.js +140 -0
  17. package/dist/CreateTeamMemberForm-Bv9gNG4z.js.map +1 -0
  18. package/dist/CreateTeamMemberForm-CnHfpob_.js +12 -0
  19. package/dist/CreateUserPage-C9uOeYDJ.js +7 -0
  20. package/dist/{CreateUserPage-Cdv-3U5M.js → CreateUserPage-CqKcY7_X.js} +2 -2
  21. package/dist/{CreateUserPage-Cdv-3U5M.js.map → CreateUserPage-CqKcY7_X.js.map} +1 -1
  22. package/dist/CreditBalanceDashboard-0HiJE_OS.js +13 -0
  23. package/dist/CreditBalanceDashboard-k_orNn4h.js +28 -0
  24. package/dist/CreditBalanceDashboard-k_orNn4h.js.map +1 -0
  25. package/dist/CreditManagement-BVBZQDI4.js +356 -0
  26. package/dist/CreditManagement-BVBZQDI4.js.map +1 -0
  27. package/dist/CreditManagement-DXdIN-0d.js +13 -0
  28. package/dist/CreditTransactionHistory-DSu-6aDi.js +229 -0
  29. package/dist/CreditTransactionHistory-DSu-6aDi.js.map +1 -0
  30. package/dist/CustomerCreateSupportTicketForm-BsjX8Pja.js +14 -0
  31. package/dist/CustomerCreateSupportTicketForm-kf8YIGjx.js +158 -0
  32. package/dist/CustomerCreateSupportTicketForm-kf8YIGjx.js.map +1 -0
  33. package/dist/{CustomerSupportTicketDetailPage-UGqVoV4j.js → CustomerSupportTicketDetailPage-C_-YoAaP.js} +12 -9
  34. package/dist/{CustomerSupportTicketDetailPage-UGqVoV4j.js.map → CustomerSupportTicketDetailPage-C_-YoAaP.js.map} +1 -1
  35. package/dist/CustomerSupportTicketList-DdACn3ug.js +63 -0
  36. package/dist/{CustomerSupportTicketParent-C2XdM5f7.js → CustomerSupportTicketParent-BpBuYCrP.js} +4 -4
  37. package/dist/{CustomerSupportTicketParent-C2XdM5f7.js.map → CustomerSupportTicketParent-BpBuYCrP.js.map} +1 -1
  38. package/dist/CustomerSupportTicketParent-Djy7pNqO.js +8 -0
  39. package/dist/CustomerSupportTicketSuccess-DsFzpJFU.js +12 -0
  40. package/dist/CustomerSupportTicketSuccess-cumNSGdx.js +54 -0
  41. package/dist/CustomerSupportTicketSuccess-cumNSGdx.js.map +1 -0
  42. package/dist/EditTeamForm-BE3iX2x3.js +12 -0
  43. package/dist/EditTeamForm-BxRN338L.js +163 -0
  44. package/dist/EditTeamForm-BxRN338L.js.map +1 -0
  45. package/dist/EditTeamMemberForm-D7D1Zddh.js +9 -0
  46. package/dist/{EditTeamMemberForm-BgjNP8MZ.js → EditTeamMemberForm-DfgJr5Cy.js} +7 -72
  47. package/dist/EditTeamMemberForm-DfgJr5Cy.js.map +1 -0
  48. package/dist/EditUserPage-C0K7EGjM.js +8 -0
  49. package/dist/{EditUserPage-uLPhRW5x.js → EditUserPage-CI_jtU8P.js} +4 -4
  50. package/dist/{EditUserPage-uLPhRW5x.js.map → EditUserPage-CI_jtU8P.js.map} +1 -1
  51. package/dist/EnhancedRefreshTokenHandler-C6tZCcfX.js +189 -0
  52. package/dist/EnhancedRefreshTokenHandler-C6tZCcfX.js.map +1 -0
  53. package/dist/FieldsetSection-Cd4B8Ad7.js +27 -0
  54. package/dist/FieldsetSection-Cd4B8Ad7.js.map +1 -0
  55. package/dist/{ForgotPassword-B8JG_n9D.js → ForgotPassword-Ckb9Z-wb.js} +4 -4
  56. package/dist/{ForgotPassword-B8JG_n9D.js.map → ForgotPassword-Ckb9Z-wb.js.map} +1 -1
  57. package/dist/ForgotPassword-tJVSg7PB.js +8 -0
  58. package/dist/{TimelineSystemEvent-BGG9WkQw.js → InlineAttachments-DAn_QknY.js} +60 -661
  59. package/dist/InlineAttachments-DAn_QknY.js.map +1 -0
  60. package/dist/{LoginForm-C-_lBDyl.js → LoginForm-CMN2T1fA.js} +5 -5
  61. package/dist/{LoginForm-C-_lBDyl.js.map → LoginForm-CMN2T1fA.js.map} +1 -1
  62. package/dist/LoginForm-QFJ8NHww.js +8 -0
  63. package/dist/{Logout-CIAoXyOg.js → Logout-CFLYHlLr.js} +5 -5
  64. package/dist/{Logout-CIAoXyOg.js.map → Logout-CFLYHlLr.js.map} +1 -1
  65. package/dist/Logout-CjDBff3W.js +8 -0
  66. package/dist/MfaSetup-BZcoxJx-.js +9 -0
  67. package/dist/{MfaSetup-9qdTKQ0m.js → MfaSetup-XqoAwBXx.js} +5 -5
  68. package/dist/{MfaSetup-9qdTKQ0m.js.map → MfaSetup-XqoAwBXx.js.map} +1 -1
  69. package/dist/{MfaVerify-Cgta1nE9.js → MfaVerify-C-A75TFZ.js} +6 -6
  70. package/dist/{MfaVerify-Cgta1nE9.js.map → MfaVerify-C-A75TFZ.js.map} +1 -1
  71. package/dist/MfaVerify-Dy2aV5Gk.js +9 -0
  72. package/dist/{RecordVersionViewer-BWZ78vvE.js → RecordVersionViewer-D2j10HdK.js} +1 -1
  73. package/dist/{RecordVersionViewer-BWZ78vvE.js.map → RecordVersionViewer-D2j10HdK.js.map} +1 -1
  74. package/dist/{ResetPassword-DHUfERyS.js → ResetPassword-Cd-Yxp8E.js} +4 -4
  75. package/dist/{ResetPassword-DHUfERyS.js.map → ResetPassword-Cd-Yxp8E.js.map} +1 -1
  76. package/dist/ResetPassword-D6to3G6a.js +8 -0
  77. package/dist/{SavedFiltersPage-CjFv4fI_.js → SavedFiltersPage-DM5DvAFa.js} +62 -34
  78. package/dist/{SavedFiltersPage-CjFv4fI_.js.map → SavedFiltersPage-DM5DvAFa.js.map} +1 -1
  79. package/dist/{Signup-DfG7Xmkx.js → Signup-2pqvJiVt.js} +57 -57
  80. package/dist/Signup-2pqvJiVt.js.map +1 -0
  81. package/dist/Signup-XdImA1os.js +9 -0
  82. package/dist/{SignupConsentFlow-YGWhF7tj.js → SignupConsentFlow-X3kXuviv.js} +106 -70
  83. package/dist/SignupConsentFlow-X3kXuviv.js.map +1 -0
  84. package/dist/{SignupRequirementsPage-Sm3vgkhC.js → SignupRequirementsPage-Cf-ElkEq.js} +9 -8
  85. package/dist/{SignupRequirementsPage-Sm3vgkhC.js.map → SignupRequirementsPage-Cf-ElkEq.js.map} +1 -1
  86. package/dist/StaffCreateSupportTicketForm-BlUP2XXy.js +14 -0
  87. package/dist/StaffCreateSupportTicketForm-D2nn4rTU.js +255 -0
  88. package/dist/StaffCreateSupportTicketForm-D2nn4rTU.js.map +1 -0
  89. package/dist/{StaffSupportTicketDetailPage-ePkLJU12.js → StaffSupportTicketDetailPage-MFtm06BE.js} +14 -11
  90. package/dist/{StaffSupportTicketDetailPage-ePkLJU12.js.map → StaffSupportTicketDetailPage-MFtm06BE.js.map} +1 -1
  91. package/dist/StaffSupportTicketList-LfLx0pYP.js +63 -0
  92. package/dist/StaffSupportTicketParent-B7mEN1oD.js +8 -0
  93. package/dist/{StaffSupportTicketParent-Bz-SH6-k.js → StaffSupportTicketParent-BvPwgOqH.js} +4 -4
  94. package/dist/{StaffSupportTicketParent-Bz-SH6-k.js.map → StaffSupportTicketParent-BvPwgOqH.js.map} +1 -1
  95. package/dist/StaffSupportTicketSuccess-BMCOP3ko.js +12 -0
  96. package/dist/StaffSupportTicketSuccess-Ca2WrcRg.js +54 -0
  97. package/dist/StaffSupportTicketSuccess-Ca2WrcRg.js.map +1 -0
  98. package/dist/{SupportStaffPage-0X1VMovT.js → SupportStaffPage-B69-kuvg.js} +8 -7
  99. package/dist/{SupportStaffPage-0X1VMovT.js.map → SupportStaffPage-B69-kuvg.js.map} +1 -1
  100. package/dist/{SupportTicketDevLifecycleBadge-EMrQHfyG.js → SupportTicketDevLifecycleBadge-BoAjMb08.js} +1 -1
  101. package/dist/{SupportTicketDevLifecycleBadge-EMrQHfyG.js.map → SupportTicketDevLifecycleBadge-BoAjMb08.js.map} +1 -1
  102. package/dist/{SupportTicketMaintenancePage-CLDqc4Pb.js → SupportTicketMaintenancePage-Bptja-xb.js} +5 -4
  103. package/dist/{SupportTicketMaintenancePage-CLDqc4Pb.js.map → SupportTicketMaintenancePage-Bptja-xb.js.map} +1 -1
  104. package/dist/TeamAttachmentsTab-Dk3LxX3n.js +63 -0
  105. package/dist/TeamHistoryTab-CRONdHcL.js +6 -0
  106. package/dist/{TeamHistoryTab-D0zW5wjj.js → TeamHistoryTab-DM8KBEG1.js} +7 -19
  107. package/dist/TeamHistoryTab-DM8KBEG1.js.map +1 -0
  108. package/dist/TeamList-DYm_vQ2z.js +8 -0
  109. package/dist/TeamList-qdwlMuJv.js +141 -0
  110. package/dist/TeamList-qdwlMuJv.js.map +1 -0
  111. package/dist/TeamMemberList-4LRLT_7Z.js +7 -0
  112. package/dist/TeamMemberList-DyI1U1t_.js +166 -0
  113. package/dist/TeamMemberList-DyI1U1t_.js.map +1 -0
  114. package/dist/TeamMemberParent-B63pRfI6.js +10 -0
  115. package/dist/TeamMemberParent-D9Fxu7GD.js +83 -0
  116. package/dist/TeamMemberParent-D9Fxu7GD.js.map +1 -0
  117. package/dist/TeamMembersTab-BGcdyEE8.js +3 -0
  118. package/dist/{TeamMembersTab-4gmnP9sD.js → TeamMembersTab-BigqpBDH.js} +1 -1
  119. package/dist/{TeamMembersTab-4gmnP9sD.js.map → TeamMembersTab-BigqpBDH.js.map} +1 -1
  120. package/dist/{TeamNotesTab-DImzeVPk.js → TeamNotesTab-BgxleidZ.js} +6 -5
  121. package/dist/{TeamNotesTab-DImzeVPk.js.map → TeamNotesTab-BgxleidZ.js.map} +1 -1
  122. package/dist/TeamNotesTab-o7glfjoY.js +8 -0
  123. package/dist/TeamParent-BwXqA3rj.js +83 -0
  124. package/dist/TeamParent-BwXqA3rj.js.map +1 -0
  125. package/dist/TeamParent-CFOmyKPz.js +11 -0
  126. package/dist/{TimelineNoteInput-Cpnwnx7B.js → TimelineNoteInput-DXaodm43.js} +3 -2
  127. package/dist/{TimelineNoteInput-Cpnwnx7B.js.map → TimelineNoteInput-DXaodm43.js.map} +1 -1
  128. package/dist/TimelineSystemEvent-zCMUx5Zz.js +525 -0
  129. package/dist/TimelineSystemEvent-zCMUx5Zz.js.map +1 -0
  130. package/dist/UserListPage-Bmwg0an5.js +5 -0
  131. package/dist/{UserListPage-DpkOdR1U.js → UserListPage-DtA8tLff.js} +4 -3
  132. package/dist/{UserListPage-DpkOdR1U.js.map → UserListPage-DtA8tLff.js.map} +1 -1
  133. package/dist/UserProfilePage-DRbCAr9H.js +8 -0
  134. package/dist/{UserProfilePage-CWRgwGQH.js → UserProfilePage-g4-VEDXo.js} +4 -4
  135. package/dist/{UserProfilePage-CWRgwGQH.js.map → UserProfilePage-g4-VEDXo.js.map} +1 -1
  136. package/dist/{VerifyEmail-DXZ4T5eN.js → VerifyEmail-CM5ehFB8.js} +7 -7
  137. package/dist/{VerifyEmail-DXZ4T5eN.js.map → VerifyEmail-CM5ehFB8.js.map} +1 -1
  138. package/dist/VerifyEmail-DMHczC9f.js +10 -0
  139. package/dist/ViewTeam-CXyABxE6.js +8 -0
  140. package/dist/ViewTeam-DSbKV60o.js +220 -0
  141. package/dist/ViewTeam-DSbKV60o.js.map +1 -0
  142. package/dist/ViewTeamMember-BB0nvPOe.js +167 -0
  143. package/dist/ViewTeamMember-BB0nvPOe.js.map +1 -0
  144. package/dist/ViewTeamMember-jrOnBaDh.js +7 -0
  145. package/dist/ZiniaContainer-CjVhCnGB.js +18 -0
  146. package/dist/ZiniaContainer-CjVhCnGB.js.map +1 -0
  147. package/dist/{convertToLocalDateTime-CFhtN6PI.js → convertToLocalDateTime-BF25N4xd.js} +1 -2
  148. package/dist/convertToLocalDateTime-BF25N4xd.js.map +1 -0
  149. package/dist/customerSupportTicketRoutes-C7OxGAGl.js +142 -0
  150. package/dist/customerSupportTicketRoutes-C7OxGAGl.js.map +1 -0
  151. package/dist/{displayIdFormatter-Dz900Awr.js → displayIdFormatter-B-_WQHOr.js} +1 -1
  152. package/dist/{displayIdFormatter-Dz900Awr.js.map → displayIdFormatter-B-_WQHOr.js.map} +1 -1
  153. package/dist/{extractRpcErrorMessage-Di8E8-Wh.js → extractRpcErrorMessage-diUBl6Ij.js} +1 -1
  154. package/dist/{extractRpcErrorMessage-Di8E8-Wh.js.map → extractRpcErrorMessage-diUBl6Ij.js.map} +1 -1
  155. package/dist/index.d.ts +859 -900
  156. package/dist/index.js +66 -38
  157. package/dist/{mfaSchema-BnRWf0ma.js → mfaSchema-Ukqzdyck.js} +1 -1
  158. package/dist/{mfaSchema-BnRWf0ma.js.map → mfaSchema-Ukqzdyck.js.map} +1 -1
  159. package/dist/saved_filter-CfzH0BzK.js +1210 -0
  160. package/dist/saved_filter-CfzH0BzK.js.map +1 -0
  161. package/dist/signupConsentStorage-DS9vCUuC.js +27 -0
  162. package/dist/signupConsentStorage-DS9vCUuC.js.map +1 -0
  163. package/dist/{src-CEBiyg_f.css → src-C6ZmNSSU.css} +1 -1
  164. package/dist/{src-CEBiyg_f.css.map → src-C6ZmNSSU.css.map} +1 -1
  165. package/dist/src-DVe_0RO9.js +4654 -0
  166. package/dist/src-DVe_0RO9.js.map +1 -0
  167. package/dist/staffSupportTicketRoutes-CWutoQWp.js +135 -0
  168. package/dist/staffSupportTicketRoutes-CWutoQWp.js.map +1 -0
  169. package/dist/teamMemberMetadata-CQnbVepq.js +49 -0
  170. package/dist/teamMemberMetadata-CQnbVepq.js.map +1 -0
  171. package/dist/teamMetadata-DlvwO5V0.js +53 -0
  172. package/dist/teamMetadata-DlvwO5V0.js.map +1 -0
  173. package/dist/teamRoutes-KFgnsdDP.js +192 -0
  174. package/dist/teamRoutes-KFgnsdDP.js.map +1 -0
  175. package/dist/team_memberRoutes-Cjpw_ql6.js +84 -0
  176. package/dist/team_memberRoutes-Cjpw_ql6.js.map +1 -0
  177. package/dist/{useBreadcrumbs-qB6ghsAf.js → useBreadcrumbs-DIqU5AAp.js} +1 -1
  178. package/dist/{useBreadcrumbs-qB6ghsAf.js.map → useBreadcrumbs-DIqU5AAp.js.map} +1 -1
  179. package/dist/{useEmailVerificationChannel-BiiuuTUM.js → useEmailVerificationChannel-B51z65PN.js} +3 -3
  180. package/dist/{useEmailVerificationChannel-BiiuuTUM.js.map → useEmailVerificationChannel-B51z65PN.js.map} +1 -1
  181. package/dist/{useMutation-BMZJLpgx.js → useMutation-BLNuJoYl.js} +6 -3
  182. package/dist/useMutation-BLNuJoYl.js.map +1 -0
  183. package/dist/{useQuery-qpXzBuVg.js → useQuery-BzUGEOj0.js} +4 -3
  184. package/dist/{useQuery-qpXzBuVg.js.map → useQuery-BzUGEOj0.js.map} +1 -1
  185. package/dist/{useQueryCache-DkRwK5Gz.js → useQueryCache-alzaRWEb.js} +2 -2
  186. package/dist/{useQueryCache-DkRwK5Gz.js.map → useQueryCache-alzaRWEb.js.map} +1 -1
  187. package/dist/{useReturnUrl-qFeazn-G.js → useReturnUrl-B5V3SJf5.js} +1 -1
  188. package/dist/{useReturnUrl-qFeazn-G.js.map → useReturnUrl-B5V3SJf5.js.map} +1 -1
  189. package/dist/{useRpcAuth-x5Gn5gR0.js → useRpcAuth-CJtq1dqM.js} +9 -192
  190. package/dist/useRpcAuth-CJtq1dqM.js.map +1 -0
  191. package/dist/userAuthorized-C09FHWGL.js +185 -0
  192. package/dist/userAuthorized-C09FHWGL.js.map +1 -0
  193. package/package.json +3 -3
  194. package/dist/Appearance-D5pwxuf4.js +0 -3
  195. package/dist/ChangePasswordPage-DVBkBcm9.js +0 -6
  196. package/dist/ConsentRequired-e7DEOGNg.js +0 -213
  197. package/dist/ConsentRequired-e7DEOGNg.js.map +0 -1
  198. package/dist/CreateTeamForm-CV9Y00tD.js +0 -35
  199. package/dist/CreateTeamMemberForm-BX1vUcdg.js +0 -35
  200. package/dist/CreateUserPage-DQoEX-Er.js +0 -6
  201. package/dist/CreditBalanceDashboard-BZAnEjSz.js +0 -35
  202. package/dist/CreditManagement-C4-_c175.js +0 -35
  203. package/dist/CustomerCreateSupportTicketForm-3tIJKMnJ.js +0 -35
  204. package/dist/CustomerSupportTicketList-CFQEoXtm.js +0 -35
  205. package/dist/CustomerSupportTicketParent-Tnov1dEg.js +0 -7
  206. package/dist/CustomerSupportTicketSuccess-DLszUCsg.js +0 -35
  207. package/dist/EditTeamForm-Ww04P2M0.js +0 -35
  208. package/dist/EditTeamMemberForm-BgjNP8MZ.js.map +0 -1
  209. package/dist/EditTeamMemberForm-COfY-2FQ.js +0 -6
  210. package/dist/EditUserPage-BJHs3raG.js +0 -7
  211. package/dist/ForgotPassword-CzMPARbz.js +0 -7
  212. package/dist/LoginForm-DdzRn8nU.js +0 -7
  213. package/dist/Logout-3_Ns09Vy.js +0 -7
  214. package/dist/MfaSetup-BE_NP70B.js +0 -8
  215. package/dist/MfaVerify-CyiJ9A3L.js +0 -8
  216. package/dist/ResetPassword-DXHunZVp.js +0 -7
  217. package/dist/Signup-Cy1puoqh.js +0 -9
  218. package/dist/Signup-DfG7Xmkx.js.map +0 -1
  219. package/dist/SignupConsentFlow-YGWhF7tj.js.map +0 -1
  220. package/dist/StaffCreateSupportTicketForm-C5tRPz95.js +0 -35
  221. package/dist/StaffSupportTicketList-BbiPTm54.js +0 -35
  222. package/dist/StaffSupportTicketParent-D2onnMqe.js +0 -7
  223. package/dist/StaffSupportTicketSuccess-DLVRTvr1.js +0 -35
  224. package/dist/TeamAttachmentsTab-B-xXmvOy.js +0 -35
  225. package/dist/TeamHistoryTab-Bb7mq4Dc.js +0 -4
  226. package/dist/TeamHistoryTab-D0zW5wjj.js.map +0 -1
  227. package/dist/TeamList-B-cFoclM.js +0 -35
  228. package/dist/TeamMemberList-D3GNHlXH.js +0 -35
  229. package/dist/TeamMemberParent-BKfPMX05.js +0 -35
  230. package/dist/TeamMembersTab-CBB2Yl_I.js +0 -3
  231. package/dist/TeamNotesTab-BbODx7wS.js +0 -7
  232. package/dist/TeamParent-5lokhztw.js +0 -35
  233. package/dist/TimelineSystemEvent-BGG9WkQw.js.map +0 -1
  234. package/dist/UserListPage-4hZll_PC.js +0 -4
  235. package/dist/UserProfilePage-qFrg3PiC.js +0 -7
  236. package/dist/VerifyEmail-C5EO8OFo.js +0 -9
  237. package/dist/ViewTeam-Die0SWa_.js +0 -35
  238. package/dist/ViewTeamMember-_sqrqGit.js +0 -35
  239. package/dist/convertToLocalDateTime-CFhtN6PI.js.map +0 -1
  240. package/dist/src-_IeDZXH6.js +0 -8951
  241. package/dist/src-_IeDZXH6.js.map +0 -1
  242. package/dist/useMutation-BMZJLpgx.js.map +0 -1
  243. package/dist/useRpcAuth-x5Gn5gR0.js.map +0 -1
  244. package/dist/useSignupPendingData-BWHwUHhL.js +0 -47
  245. package/dist/useSignupPendingData-BWHwUHhL.js.map +0 -1
@@ -0,0 +1,525 @@
1
+ import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString } from "vue";
2
+
3
+ //#region src/slices/support_ticket/utils/creditValueFormatter.ts
4
+ /**
5
+ * Helper function to check if credit value is empty
6
+ */
7
+ function isCreditValueEmpty(value) {
8
+ return value === null || value === void 0 || value.trim() === "";
9
+ }
10
+ /**
11
+ * Core credit formatting logic
12
+ */
13
+ function formatCreditValueCore(creditValue) {
14
+ if (isCreditValueEmpty(creditValue)) return "TBD";
15
+ const trimmed = creditValue.trim();
16
+ if (parseFloat(trimmed) === 0) return "0";
17
+ return trimmed.replace(/\.?0+$/, "");
18
+ }
19
+ /**
20
+ * Formats credit value for staff views (includes internal ticket logic)
21
+ *
22
+ * @param creditValue - The credit value from the database
23
+ * @param approvalStatus - The approval status to determine display logic
24
+ * @returns Formatted string for display
25
+ *
26
+ * @example
27
+ * formatStaffCreditValue("5.50", "PENDING") // "5.5"
28
+ * formatStaffCreditValue("10", "INTERNAL") // "N/A"
29
+ */
30
+ function formatStaffCreditValue(creditValue, approvalStatus) {
31
+ if (approvalStatus === "INTERNAL") return "N/A";
32
+ return formatCreditValueCore(creditValue);
33
+ }
34
+ /**
35
+ * Formats credit value for customer views (status-based logic)
36
+ *
37
+ * @param creditValue - The credit value from the database
38
+ * @param status - The computed status from the customer query
39
+ * @returns Formatted string for display
40
+ *
41
+ * @example
42
+ * formatCustomerCreditValue("5.50", "PENDING") // "5.5"
43
+ * formatCustomerCreditValue("5.50", "FOLLOWUP") // "5.5"
44
+ */
45
+ function formatCustomerCreditValue(creditValue) {
46
+ return formatCreditValueCore(creditValue);
47
+ }
48
+
49
+ //#endregion
50
+ //#region src/slices/support_ticket/shared/SupportTicketPriorityBadge.vue
51
+ const _hoisted_1$4 = ["aria-label"];
52
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
53
+ __name: "SupportTicketPriorityBadge",
54
+ props: {
55
+ priority: {},
56
+ size: { default: "md" },
57
+ variant: { default: "default" }
58
+ },
59
+ setup(__props) {
60
+ /**
61
+ * SupportTicketPriorityBadge - A reusable Vue component for displaying support ticket priority
62
+ * as color-coded badges with consistent DaisyUI styling and accessibility features.
63
+ *
64
+ * @example
65
+ * <SupportTicketPriorityBadge :priority="'HIGH'" size="md" />
66
+ * <SupportTicketPriorityBadge :priority="'CRITICAL'" size="sm" variant="outline" />
67
+ */
68
+ const props = __props;
69
+ /**
70
+ * Configuration for each priority badge
71
+ */
72
+ const priorityConfig = {
73
+ LOW: {
74
+ color: "badge-neutral",
75
+ text: "Low",
76
+ ariaLabel: "Priority: Low priority"
77
+ },
78
+ MEDIUM: {
79
+ color: "badge-neutral",
80
+ text: "Medium",
81
+ ariaLabel: "Priority: Medium priority"
82
+ },
83
+ HIGH: {
84
+ color: "badge-neutral",
85
+ text: "High",
86
+ ariaLabel: "Priority: High priority"
87
+ },
88
+ CRITICAL: {
89
+ color: "badge-neutral",
90
+ text: "Critical",
91
+ ariaLabel: "Priority: Critical priority"
92
+ }
93
+ };
94
+ const getPriorityConfig = (priority) => {
95
+ const config$1 = priorityConfig[priority];
96
+ if (!config$1) return {
97
+ color: "badge-neutral",
98
+ text: priority || "Unknown",
99
+ ariaLabel: `Priority: ${priority || "Unknown priority"}`
100
+ };
101
+ return config$1;
102
+ };
103
+ const config = computed(() => getPriorityConfig(props.priority));
104
+ const badgeClasses = computed(() => {
105
+ const baseClasses = ["badge", "text-xs"];
106
+ baseClasses.push(config.value.color);
107
+ if (props.size === "sm") baseClasses.push("badge-sm", "text-xs");
108
+ else if (props.size === "lg") baseClasses.push("badge-lg", "text-sm");
109
+ else baseClasses.push("text-xs", "sm:text-sm");
110
+ if (props.variant === "outline") baseClasses.push("badge-outline");
111
+ return baseClasses.join(" ");
112
+ });
113
+ const displayText = computed(() => config.value.text);
114
+ const ariaLabel = computed(() => config.value.ariaLabel);
115
+ return (_ctx, _cache) => {
116
+ return openBlock(), createElementBlock("div", {
117
+ class: normalizeClass(badgeClasses.value),
118
+ "aria-label": ariaLabel.value,
119
+ role: "status"
120
+ }, toDisplayString(displayText.value), 11, _hoisted_1$4);
121
+ };
122
+ }
123
+ });
124
+ var SupportTicketPriorityBadge_default = _sfc_main$4;
125
+
126
+ //#endregion
127
+ //#region src/slices/support_ticket/shared/SupportTicketTypeBadge.vue
128
+ const _hoisted_1$3 = ["aria-label"];
129
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
130
+ __name: "SupportTicketTypeBadge",
131
+ props: {
132
+ type: {},
133
+ size: { default: "md" },
134
+ variant: { default: "default" }
135
+ },
136
+ setup(__props) {
137
+ /**
138
+ * SupportTicketTypeBadge - A reusable Vue component for displaying support ticket type
139
+ * as color-coded badges with consistent DaisyUI styling and accessibility features.
140
+ *
141
+ * @example
142
+ * <SupportTicketTypeBadge :type="'BUG'" size="md" />
143
+ * <SupportTicketTypeBadge :type="'FEATURE_REQUEST'" size="sm" variant="outline" />
144
+ */
145
+ const props = __props;
146
+ /**
147
+ * Configuration for each type badge
148
+ */
149
+ const typeConfig = {
150
+ BUG: {
151
+ color: "badge-neutral",
152
+ text: "Bug",
153
+ ariaLabel: "Type: Bug report requiring fix"
154
+ },
155
+ FEATURE_REQUEST: {
156
+ color: "badge-neutral",
157
+ text: "Feature",
158
+ ariaLabel: "Type: New feature request"
159
+ },
160
+ IMPROVEMENT: {
161
+ color: "badge-neutral",
162
+ text: "Improvement",
163
+ ariaLabel: "Type: Enhancement to existing feature"
164
+ },
165
+ OPERATIONAL: {
166
+ color: "badge-neutral",
167
+ text: "Ops",
168
+ ariaLabel: "Type: Operational/admin work"
169
+ }
170
+ };
171
+ const getTypeConfig = (type) => {
172
+ const config$1 = typeConfig[type];
173
+ if (!config$1) return {
174
+ color: "badge-neutral",
175
+ text: type || "Unknown",
176
+ ariaLabel: `Type: ${type || "Unknown type"}`
177
+ };
178
+ return config$1;
179
+ };
180
+ const config = computed(() => getTypeConfig(props.type));
181
+ const badgeClasses = computed(() => {
182
+ const baseClasses = ["badge", "text-xs"];
183
+ baseClasses.push(config.value.color);
184
+ if (props.size === "sm") baseClasses.push("badge-sm", "text-xs");
185
+ else if (props.size === "lg") baseClasses.push("badge-lg", "text-sm");
186
+ else baseClasses.push("text-xs", "sm:text-sm");
187
+ if (props.variant === "outline") baseClasses.push("badge-outline");
188
+ return baseClasses.join(" ");
189
+ });
190
+ const displayText = computed(() => config.value.text);
191
+ const ariaLabel = computed(() => config.value.ariaLabel);
192
+ return (_ctx, _cache) => {
193
+ return openBlock(), createElementBlock("div", {
194
+ class: normalizeClass(badgeClasses.value),
195
+ "aria-label": ariaLabel.value,
196
+ role: "status"
197
+ }, toDisplayString(displayText.value), 11, _hoisted_1$3);
198
+ };
199
+ }
200
+ });
201
+ var SupportTicketTypeBadge_default = _sfc_main$3;
202
+
203
+ //#endregion
204
+ //#region src/slices/support_ticket/shared/SupportTicketApprovalBadge.vue
205
+ const _hoisted_1$2 = ["aria-label"];
206
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
207
+ __name: "SupportTicketApprovalBadge",
208
+ props: {
209
+ approvalStatus: {},
210
+ size: { default: "md" },
211
+ variant: { default: "default" }
212
+ },
213
+ setup(__props) {
214
+ /**
215
+ * SupportTicketApprovalBadge - A reusable Vue component for displaying support ticket approval status
216
+ * as color-coded badges with consistent DaisyUI styling and accessibility features.
217
+ *
218
+ * @example
219
+ * <SupportTicketApprovalBadge :approvalStatus="'PENDING'" size="md" />
220
+ * <SupportTicketApprovalBadge :approvalStatus="'APPROVED'" size="sm" variant="outline" />
221
+ */
222
+ const props = __props;
223
+ /**
224
+ * Configuration for each approval status badge
225
+ */
226
+ const approvalConfig = {
227
+ PENDING: {
228
+ color: "badge-warning",
229
+ text: "Pending",
230
+ ariaLabel: "Approval: Awaiting staff decision"
231
+ },
232
+ APPROVED: {
233
+ color: "badge-success",
234
+ text: "Approved",
235
+ ariaLabel: "Approval: Approved by staff"
236
+ },
237
+ REJECTED: {
238
+ color: "badge-error",
239
+ text: "Rejected",
240
+ ariaLabel: "Approval: Rejected by staff"
241
+ },
242
+ INTERNAL: {
243
+ color: "badge-info",
244
+ text: "Internal",
245
+ ariaLabel: "Approval: Internal staff ticket"
246
+ }
247
+ };
248
+ const getApprovalConfig = (approvalStatus) => {
249
+ const config$1 = approvalConfig[approvalStatus];
250
+ if (!config$1) return {
251
+ color: "badge-neutral",
252
+ text: approvalStatus || "Unknown",
253
+ ariaLabel: `Approval: ${approvalStatus || "Unknown status"}`
254
+ };
255
+ return config$1;
256
+ };
257
+ const config = computed(() => getApprovalConfig(props.approvalStatus));
258
+ const badgeClasses = computed(() => {
259
+ const baseClasses = ["badge", "text-xs"];
260
+ baseClasses.push(config.value.color);
261
+ if (props.size === "sm") baseClasses.push("badge-sm", "text-xs");
262
+ else if (props.size === "lg") baseClasses.push("badge-lg", "text-sm");
263
+ else baseClasses.push("text-xs", "sm:text-sm");
264
+ if (props.variant === "outline") baseClasses.push("badge-outline");
265
+ return baseClasses.join(" ");
266
+ });
267
+ const displayText = computed(() => config.value.text);
268
+ const ariaLabel = computed(() => config.value.ariaLabel);
269
+ return (_ctx, _cache) => {
270
+ return openBlock(), createElementBlock("div", {
271
+ class: normalizeClass(badgeClasses.value),
272
+ "aria-label": ariaLabel.value,
273
+ role: "status"
274
+ }, toDisplayString(displayText.value), 11, _hoisted_1$2);
275
+ };
276
+ }
277
+ });
278
+ var SupportTicketApprovalBadge_default = _sfc_main$2;
279
+
280
+ //#endregion
281
+ //#region src/slices/support_ticket/utils/formatTicketDate.ts
282
+ /**
283
+ * Takes an ISO date string and returns:
284
+ * - formatted: "Jan 15, 2025"
285
+ * - relative: "3 days ago" / "2 hours ago" / "just now"
286
+ * - localTime: "2:30 PM" (user's local time)
287
+ */
288
+ function formatTicketDate(isoString) {
289
+ const date = new Date(isoString);
290
+ if (isNaN(date.getTime())) return {
291
+ formatted: isoString,
292
+ relative: "",
293
+ localTime: ""
294
+ };
295
+ const formatted = date.toLocaleDateString(void 0, {
296
+ year: "numeric",
297
+ month: "short",
298
+ day: "numeric"
299
+ });
300
+ const localTime = date.toLocaleTimeString(void 0, {
301
+ hour: "numeric",
302
+ minute: "2-digit"
303
+ });
304
+ const diffMs = (/* @__PURE__ */ new Date()).getTime() - date.getTime();
305
+ const diffSec = Math.floor(diffMs / 1e3);
306
+ const diffMin = Math.floor(diffSec / 60);
307
+ const diffHour = Math.floor(diffMin / 60);
308
+ const diffDay = Math.floor(diffHour / 24);
309
+ let relative;
310
+ if (Math.abs(diffSec) < 60) relative = "just now";
311
+ else if (diffSec < 0) {
312
+ const sec = Math.abs(diffSec);
313
+ const min = Math.floor(sec / 60);
314
+ const hr = Math.floor(min / 60);
315
+ const day = Math.floor(hr / 24);
316
+ if (min < 60) relative = `in ${min} minute${min === 1 ? "" : "s"}`;
317
+ else if (hr < 24) relative = `in ${hr} hour${hr === 1 ? "" : "s"}`;
318
+ else relative = `in ${day} day${day === 1 ? "" : "s"}`;
319
+ } else if (diffMin < 60) relative = diffMin === 1 ? "1 minute ago" : `${diffMin} minutes ago`;
320
+ else if (diffHour < 24) relative = diffHour === 1 ? "1 hour ago" : `${diffHour} hours ago`;
321
+ else if (diffDay < 30) relative = diffDay === 1 ? "1 day ago" : `${diffDay} days ago`;
322
+ else {
323
+ const diffWeeks = Math.floor(diffDay / 7);
324
+ const diffMonths = Math.floor(diffDay / 30);
325
+ if (diffWeeks < 4) relative = diffWeeks === 1 ? "1 week ago" : `${diffWeeks} weeks ago`;
326
+ else if (diffMonths < 12) relative = diffMonths === 1 ? "1 month ago" : `${diffMonths} months ago`;
327
+ else {
328
+ const diffYears = Math.floor(diffMonths / 12);
329
+ relative = diffYears === 1 ? "1 year ago" : `${diffYears} years ago`;
330
+ }
331
+ }
332
+ return {
333
+ formatted,
334
+ relative,
335
+ localTime
336
+ };
337
+ }
338
+
339
+ //#endregion
340
+ //#region src/slices/support_ticket/shared/TimelineItem.vue
341
+ const _hoisted_1$1 = { class: "flex items-center gap-2 mb-3 flex-wrap" };
342
+ const _hoisted_2$1 = {
343
+ key: 0,
344
+ class: "badge badge-warning badge-sm gap-1 shrink-0",
345
+ "aria-label": "Internal note"
346
+ };
347
+ const _hoisted_3$1 = {
348
+ key: 1,
349
+ class: "w-6 h-6 rounded-full bg-primary text-primary-content text-xs flex items-center justify-center shrink-0",
350
+ "aria-hidden": "true"
351
+ };
352
+ const _hoisted_4$1 = { class: "font-semibold text-sm" };
353
+ const _hoisted_5$1 = { class: "text-base-content/50 text-sm" };
354
+ const _hoisted_6$1 = { class: "text-sm text-base-content break-words whitespace-pre-wrap" };
355
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
356
+ __name: "TimelineItem",
357
+ props: {
358
+ authorName: {},
359
+ createdAt: {},
360
+ variant: {}
361
+ },
362
+ setup(__props) {
363
+ const props = __props;
364
+ const authorInitial = computed(() => {
365
+ return (props.authorName?.trim() || "?").charAt(0).toUpperCase();
366
+ });
367
+ const relativeTime = computed(() => {
368
+ return props.createdAt ? formatTicketDate(props.createdAt).relative : "";
369
+ });
370
+ return (_ctx, _cache) => {
371
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["card card-bordered p-4 w-full", __props.variant === "internal" ? "bg-warning/10 border-warning/30" : "bg-base-100"]) }, [createElementVNode("div", _hoisted_1$1, [
372
+ __props.variant === "internal" ? (openBlock(), createElementBlock("span", _hoisted_2$1, [..._cache[0] || (_cache[0] = [createElementVNode("svg", {
373
+ xmlns: "http://www.w3.org/2000/svg",
374
+ fill: "none",
375
+ viewBox: "0 0 24 24",
376
+ "stroke-width": "1.5",
377
+ stroke: "currentColor",
378
+ class: "w-3.5 h-3.5"
379
+ }, [createElementVNode("path", {
380
+ "stroke-linecap": "round",
381
+ "stroke-linejoin": "round",
382
+ d: "M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z"
383
+ })], -1), createTextVNode(" Internal ", -1)])])) : (openBlock(), createElementBlock("span", _hoisted_3$1, toDisplayString(authorInitial.value), 1)),
384
+ createElementVNode("span", _hoisted_4$1, toDisplayString(__props.authorName), 1),
385
+ createElementVNode("span", _hoisted_5$1, "· " + toDisplayString(relativeTime.value), 1)
386
+ ]), createElementVNode("div", _hoisted_6$1, [renderSlot(_ctx.$slots, "default")])], 2);
387
+ };
388
+ }
389
+ });
390
+ var TimelineItem_default = _sfc_main$1;
391
+
392
+ //#endregion
393
+ //#region src/slices/support_ticket/shared/TimelineSystemEvent.vue
394
+ const _hoisted_1 = { class: "py-2 flex items-start gap-2 text-sm" };
395
+ const _hoisted_2 = { class: "flex-1 min-w-0 space-y-0.5" };
396
+ const _hoisted_3 = { class: "flex flex-wrap items-baseline gap-x-2 gap-y-1" };
397
+ const _hoisted_4 = { class: "text-base-content/60 font-medium" };
398
+ const _hoisted_5 = { class: "font-semibold text-base-content" };
399
+ const _hoisted_6 = { class: "badge badge-sm badge-outline border-base-content/20 text-base-content/80 font-normal px-1.5 py-0 capitalize" };
400
+ const _hoisted_7 = { class: "text-base-content/70" };
401
+ const _hoisted_8 = { class: "text-base-content/70" };
402
+ const _hoisted_9 = { class: "line-through text-base-content/50" };
403
+ const _hoisted_10 = {
404
+ key: 0,
405
+ class: "mt-1.5 ml-6 list-disc list-inside text-base-content/70 text-sm space-y-0.5"
406
+ };
407
+ const _hoisted_11 = { class: "italic text-base-content/60" };
408
+ const _hoisted_12 = { class: "line-through text-base-content/50 ml-1" };
409
+ const _hoisted_13 = {
410
+ key: 1,
411
+ class: "ml-1"
412
+ };
413
+ const _hoisted_14 = { class: "text-base-content/40 text-xs" };
414
+ const _hoisted_15 = ["title"];
415
+ const RECENT_THRESHOLD_HOURS = 18;
416
+ const _sfc_main = /* @__PURE__ */ defineComponent({
417
+ __name: "TimelineSystemEvent",
418
+ props: {
419
+ author: {},
420
+ message: {},
421
+ timestamp: {},
422
+ action: {},
423
+ type: {},
424
+ details: {},
425
+ oldValue: {},
426
+ newValue: {},
427
+ changes: {}
428
+ },
429
+ setup(__props) {
430
+ const props = __props;
431
+ const showFull = ref(false);
432
+ const displayAction = computed(() => props.action ?? props.message);
433
+ const displayDetails = computed(() => {
434
+ if (props.details) return props.details;
435
+ if (props.oldValue != null && props.newValue != null) return `${props.oldValue} → ${props.newValue}`;
436
+ return props.newValue ?? null;
437
+ });
438
+ const hasChangeDetails = computed(() => props.oldValue != null && props.newValue != null || props.details != null || props.newValue != null);
439
+ const detailsPrefix = computed(() => {
440
+ if (!props.details || props.oldValue == null && props.newValue == null) return null;
441
+ if (props.details.includes(" · ")) {
442
+ const parts = props.details.split(" · ");
443
+ return parts.length > 1 ? parts[0] : null;
444
+ }
445
+ return props.details;
446
+ });
447
+ /** Use relative time when within ~18 hours, otherwise full date and time */
448
+ const shortTime = computed(() => {
449
+ if (!props.timestamp) return "";
450
+ const { relative, formatted, localTime } = formatTicketDate(props.timestamp);
451
+ const dateTime = [formatted, localTime].filter(Boolean).join(", ");
452
+ if (!relative && !dateTime) return "";
453
+ const date = new Date(props.timestamp);
454
+ const hoursAgo = (Date.now() - date.getTime()) / (1e3 * 60 * 60);
455
+ return hoursAgo >= 0 && hoursAgo < RECENT_THRESHOLD_HOURS ? relative : dateTime;
456
+ });
457
+ const fullDateTime = computed(() => {
458
+ if (!props.timestamp) return "";
459
+ const { formatted, localTime } = formatTicketDate(props.timestamp);
460
+ return [formatted, localTime].filter(Boolean).join(", ");
461
+ });
462
+ const displayTime = computed(() => showFull.value ? fullDateTime.value : shortTime.value);
463
+ return (_ctx, _cache) => {
464
+ return openBlock(), createElementBlock("div", _hoisted_1, [_cache[7] || (_cache[7] = createElementVNode("svg", {
465
+ xmlns: "http://www.w3.org/2000/svg",
466
+ fill: "none",
467
+ viewBox: "0 0 24 24",
468
+ "stroke-width": "1.5",
469
+ stroke: "currentColor",
470
+ class: "w-4 h-4 text-base-content/30 shrink-0 mt-0.5",
471
+ "aria-hidden": "true"
472
+ }, [createElementVNode("path", {
473
+ "stroke-linecap": "round",
474
+ "stroke-linejoin": "round",
475
+ d: "M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 011.37.49l1.296 2.247a1.125 1.125 0 01-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 010 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 01-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 01-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 01-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 01-1.369-.49l-1.297-2.247a1.125 1.125 0 01.26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 010-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 01-.26-1.43l1.297-2.247a1.125 1.125 0 011.37-.491l1.216.456c.356.133.751.072 1.076-.124a6.57 6.57 0 01.22-.128c.332-.183.582-.495.644-.869l.214-1.281z"
476
+ }), createElementVNode("path", {
477
+ "stroke-linecap": "round",
478
+ "stroke-linejoin": "round",
479
+ d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z"
480
+ })], -1)), createElementVNode("div", _hoisted_2, [
481
+ createElementVNode("div", _hoisted_3, [
482
+ createElementVNode("span", _hoisted_4, toDisplayString(__props.author), 1),
483
+ _cache[5] || (_cache[5] = createElementVNode("span", {
484
+ class: "text-base-content/40 text-xs",
485
+ "aria-hidden": "true"
486
+ }, "·", -1)),
487
+ createElementVNode("span", _hoisted_5, toDisplayString(displayAction.value), 1),
488
+ __props.type ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [_cache[1] || (_cache[1] = createElementVNode("span", {
489
+ class: "text-base-content/40 text-xs",
490
+ "aria-hidden": "true"
491
+ }, "·", -1)), createElementVNode("span", _hoisted_6, toDisplayString(__props.type), 1)], 64)) : createCommentVNode("v-if", true),
492
+ __props.changes && __props.changes.length > 1 ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [__props.details ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [_cache[2] || (_cache[2] = createElementVNode("span", {
493
+ class: "text-base-content/40 text-xs",
494
+ "aria-hidden": "true"
495
+ }, "·", -1)), createElementVNode("span", _hoisted_7, toDisplayString(__props.details), 1)], 64)) : createCommentVNode("v-if", true)], 64)) : hasChangeDetails.value ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [_cache[4] || (_cache[4] = createElementVNode("span", {
496
+ class: "text-base-content/40 text-xs",
497
+ "aria-hidden": "true"
498
+ }, "·", -1)), createElementVNode("span", _hoisted_8, [detailsPrefix.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(toDisplayString(detailsPrefix.value), 1)], 64)) : createCommentVNode("v-if", true), __props.oldValue != null && __props.newValue != null ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
499
+ createElementVNode("span", _hoisted_9, toDisplayString(__props.oldValue), 1),
500
+ _cache[3] || (_cache[3] = createElementVNode("span", { class: "mx-1 text-base-content/40" }, "→", -1)),
501
+ createElementVNode("span", null, toDisplayString(__props.newValue), 1)
502
+ ], 64)) : displayDetails.value ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createTextVNode(toDisplayString(displayDetails.value), 1)], 64)) : createCommentVNode("v-if", true)])], 64)) : createCommentVNode("v-if", true)
503
+ ]),
504
+ __props.changes && __props.changes.length > 1 ? (openBlock(), createElementBlock("ul", _hoisted_10, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.changes, (change, i) => {
505
+ return openBlock(), createElementBlock("li", { key: i }, [createElementVNode("span", _hoisted_11, toDisplayString(change.action) + ":", 1), change.oldValue != null && change.newValue != null ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
506
+ createElementVNode("span", _hoisted_12, toDisplayString(change.oldValue), 1),
507
+ _cache[6] || (_cache[6] = createElementVNode("span", { class: "mx-1 text-base-content/40" }, "→", -1)),
508
+ createElementVNode("span", null, toDisplayString(change.newValue), 1)
509
+ ], 64)) : change.newValue != null ? (openBlock(), createElementBlock("span", _hoisted_13, toDisplayString(change.newValue), 1)) : createCommentVNode("v-if", true)]);
510
+ }), 128))])) : createCommentVNode("v-if", true),
511
+ createElementVNode("div", _hoisted_14, [createElementVNode("button", {
512
+ type: "button",
513
+ class: "cursor-pointer hover:text-base-content/60 hover:underline focus:outline-none focus:underline",
514
+ title: fullDateTime.value,
515
+ onClick: _cache[0] || (_cache[0] = ($event) => showFull.value = !showFull.value)
516
+ }, toDisplayString(displayTime.value), 9, _hoisted_15)])
517
+ ])]);
518
+ };
519
+ }
520
+ });
521
+ var TimelineSystemEvent_default = _sfc_main;
522
+
523
+ //#endregion
524
+ export { SupportTicketTypeBadge_default as a, formatStaffCreditValue as c, SupportTicketApprovalBadge_default as i, TimelineItem_default as n, SupportTicketPriorityBadge_default as o, formatTicketDate as r, formatCustomerCreditValue as s, TimelineSystemEvent_default as t };
525
+ //# sourceMappingURL=TimelineSystemEvent-zCMUx5Zz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelineSystemEvent-zCMUx5Zz.js","names":["priorityConfig: Record<SupportTicketPriority, PriorityBadgeConfig>","typeConfig: Record<SupportTicketType, TypeBadgeConfig>","approvalConfig: Record<SupportTicketApproval, ApprovalBadgeConfig>","relative: string"],"sources":["../src/slices/support_ticket/utils/creditValueFormatter.ts","../src/slices/support_ticket/shared/SupportTicketPriorityBadge.vue","../src/slices/support_ticket/shared/SupportTicketTypeBadge.vue","../src/slices/support_ticket/shared/SupportTicketApprovalBadge.vue","../src/slices/support_ticket/utils/formatTicketDate.ts","../src/slices/support_ticket/shared/TimelineItem.vue","../src/slices/support_ticket/shared/TimelineSystemEvent.vue"],"sourcesContent":["import type { SupportTicketApproval } from '@dragonmastery/dragoncore-shared';\n\n/**\n * Helper function to check if credit value is empty\n */\nfunction isCreditValueEmpty(value: string | null | undefined): boolean {\n return value === null || value === undefined || value.trim() === '';\n}\n\n/**\n * Core credit formatting logic\n */\nfunction formatCreditValueCore(creditValue: string | null | undefined): string {\n // Use same logic as backend formatter\n if (isCreditValueEmpty(creditValue)) {\n return 'TBD';\n }\n\n const trimmed = creditValue!.trim();\n const num = parseFloat(trimmed);\n\n // Explicit zero is valid - preserve it (same as backend)\n if (num === 0) {\n return '0';\n }\n\n // Remove trailing zeros for non-zero values (same as backend)\n // Examples: \"100.00\" -> \"100\", \"9.50\" -> \"9.5\", \"123.45\" -> \"123.45\"\n return trimmed.replace(/\\.?0+$/, '');\n}\n\n/**\n * Formats credit value for staff views (includes internal ticket logic)\n *\n * @param creditValue - The credit value from the database\n * @param approvalStatus - The approval status to determine display logic\n * @returns Formatted string for display\n *\n * @example\n * formatStaffCreditValue(\"5.50\", \"PENDING\") // \"5.5\"\n * formatStaffCreditValue(\"10\", \"INTERNAL\") // \"N/A\"\n */\nexport function formatStaffCreditValue(\n creditValue: string | null | undefined,\n approvalStatus?: SupportTicketApproval,\n): string {\n // Internal tickets don't use credits\n if (approvalStatus === 'INTERNAL') {\n return 'N/A';\n }\n\n return formatCreditValueCore(creditValue);\n}\n\n/**\n * Formats credit value for customer views (status-based logic)\n *\n * @param creditValue - The credit value from the database\n * @param status - The computed status from the customer query\n * @returns Formatted string for display\n *\n * @example\n * formatCustomerCreditValue(\"5.50\", \"PENDING\") // \"5.5\"\n * formatCustomerCreditValue(\"5.50\", \"FOLLOWUP\") // \"5.5\"\n */\nexport function formatCustomerCreditValue(creditValue: string | null | undefined): string {\n // Note: Internal tickets (status would be different) are handled by backend\n // Customers don't see internal tickets, so we don't need to check for INTERNAL here\n return formatCreditValueCore(creditValue);\n}\n","<template>\n <div :class=\"badgeClasses\" :aria-label=\"ariaLabel\" role=\"status\">\n {{ displayText }}\n </div>\n</template>\n\n<script setup lang=\"ts\">\n/**\n * SupportTicketPriorityBadge - A reusable Vue component for displaying support ticket priority\n * as color-coded badges with consistent DaisyUI styling and accessibility features.\n *\n * @example\n * <SupportTicketPriorityBadge :priority=\"'HIGH'\" size=\"md\" />\n * <SupportTicketPriorityBadge :priority=\"'CRITICAL'\" size=\"sm\" variant=\"outline\" />\n */\nimport type { SupportTicketPriority } from '@dragonmastery/dragoncore-shared';\nimport { computed } from 'vue';\n\n/**\n * Props for the SupportTicketPriorityBadge component\n */\ninterface Props {\n /** The support ticket priority to display */\n priority: SupportTicketPriority;\n /** Size of the badge - defaults to 'md' */\n size?: 'sm' | 'md' | 'lg';\n /** Visual variant of the badge - defaults to 'default' */\n variant?: 'default' | 'outline';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n size: 'md',\n variant: 'default',\n});\n\n/**\n * Configuration for each priority badge\n */\ninterface PriorityBadgeConfig {\n /** DaisyUI badge color class */\n color: string;\n /** Display text for the badge */\n text: string;\n /** Accessibility label for screen readers */\n ariaLabel: string;\n}\n\nconst priorityConfig: Record<SupportTicketPriority, PriorityBadgeConfig> = {\n LOW: {\n color: 'badge-neutral',\n text: 'Low',\n ariaLabel: 'Priority: Low priority',\n },\n MEDIUM: {\n color: 'badge-neutral',\n text: 'Medium',\n ariaLabel: 'Priority: Medium priority',\n },\n HIGH: {\n color: 'badge-neutral',\n text: 'High',\n ariaLabel: 'Priority: High priority',\n },\n CRITICAL: {\n color: 'badge-neutral',\n text: 'Critical',\n ariaLabel: 'Priority: Critical priority',\n },\n};\n\nconst getPriorityConfig = (priority: SupportTicketPriority): PriorityBadgeConfig => {\n const config = priorityConfig[priority];\n if (!config) {\n return {\n color: 'badge-neutral',\n text: priority || 'Unknown',\n ariaLabel: `Priority: ${priority || 'Unknown priority'}`,\n };\n }\n return config;\n};\n\nconst config = computed(() => getPriorityConfig(props.priority));\n\nconst badgeClasses = computed(() => {\n const baseClasses = ['badge', 'text-xs'];\n\n // Add color class\n baseClasses.push(config.value.color);\n\n // Add size class with responsive text sizing\n if (props.size === 'sm') {\n baseClasses.push('badge-sm', 'text-xs');\n } else if (props.size === 'lg') {\n baseClasses.push('badge-lg', 'text-sm');\n } else {\n // md size - responsive text\n baseClasses.push('text-xs', 'sm:text-sm');\n }\n\n // Add variant class\n if (props.variant === 'outline') {\n baseClasses.push('badge-outline');\n }\n\n return baseClasses.join(' ');\n});\n\nconst displayText = computed(() => config.value.text);\nconst ariaLabel = computed(() => config.value.ariaLabel);\n</script>\n","<template>\n <div :class=\"badgeClasses\" :aria-label=\"ariaLabel\" role=\"status\">\n {{ displayText }}\n </div>\n</template>\n\n<script setup lang=\"ts\">\n/**\n * SupportTicketTypeBadge - A reusable Vue component for displaying support ticket type\n * as color-coded badges with consistent DaisyUI styling and accessibility features.\n *\n * @example\n * <SupportTicketTypeBadge :type=\"'BUG'\" size=\"md\" />\n * <SupportTicketTypeBadge :type=\"'FEATURE_REQUEST'\" size=\"sm\" variant=\"outline\" />\n */\nimport type { SupportTicketType } from '@dragonmastery/dragoncore-shared';\nimport { computed } from 'vue';\n\n/**\n * Props for the SupportTicketTypeBadge component\n */\ninterface Props {\n /** The support ticket type to display */\n type: SupportTicketType;\n /** Size of the badge - defaults to 'md' */\n size?: 'sm' | 'md' | 'lg';\n /** Visual variant of the badge - defaults to 'default' */\n variant?: 'default' | 'outline';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n size: 'md',\n variant: 'default',\n});\n\n/**\n * Configuration for each type badge\n */\ninterface TypeBadgeConfig {\n /** DaisyUI badge color class */\n color: string;\n /** Display text for the badge */\n text: string;\n /** Accessibility label for screen readers */\n ariaLabel: string;\n}\n\nconst typeConfig: Record<SupportTicketType, TypeBadgeConfig> = {\n BUG: {\n color: 'badge-neutral',\n text: 'Bug',\n ariaLabel: 'Type: Bug report requiring fix',\n },\n FEATURE_REQUEST: {\n color: 'badge-neutral',\n text: 'Feature',\n ariaLabel: 'Type: New feature request',\n },\n IMPROVEMENT: {\n color: 'badge-neutral',\n text: 'Improvement',\n ariaLabel: 'Type: Enhancement to existing feature',\n },\n OPERATIONAL: {\n color: 'badge-neutral',\n text: 'Ops',\n ariaLabel: 'Type: Operational/admin work',\n },\n};\n\nconst getTypeConfig = (type: SupportTicketType): TypeBadgeConfig => {\n const config = typeConfig[type];\n if (!config) {\n return {\n color: 'badge-neutral',\n text: type || 'Unknown',\n ariaLabel: `Type: ${type || 'Unknown type'}`,\n };\n }\n return config;\n};\n\nconst config = computed(() => getTypeConfig(props.type));\n\nconst badgeClasses = computed(() => {\n const baseClasses = ['badge', 'text-xs'];\n\n // Add color class\n baseClasses.push(config.value.color);\n\n // Add size class with responsive text sizing\n if (props.size === 'sm') {\n baseClasses.push('badge-sm', 'text-xs');\n } else if (props.size === 'lg') {\n baseClasses.push('badge-lg', 'text-sm');\n } else {\n // md size - responsive text\n baseClasses.push('text-xs', 'sm:text-sm');\n }\n\n // Add variant class\n if (props.variant === 'outline') {\n baseClasses.push('badge-outline');\n }\n\n return baseClasses.join(' ');\n});\n\nconst displayText = computed(() => config.value.text);\nconst ariaLabel = computed(() => config.value.ariaLabel);\n</script>\n","<template>\n <div :class=\"badgeClasses\" :aria-label=\"ariaLabel\" role=\"status\">\n {{ displayText }}\n </div>\n</template>\n\n<script setup lang=\"ts\">\n/**\n * SupportTicketApprovalBadge - A reusable Vue component for displaying support ticket approval status\n * as color-coded badges with consistent DaisyUI styling and accessibility features.\n *\n * @example\n * <SupportTicketApprovalBadge :approvalStatus=\"'PENDING'\" size=\"md\" />\n * <SupportTicketApprovalBadge :approvalStatus=\"'APPROVED'\" size=\"sm\" variant=\"outline\" />\n */\nimport type { SupportTicketApproval } from '@dragonmastery/dragoncore-shared';\nimport { computed } from 'vue';\n\n/**\n * Props for the SupportTicketApprovalBadge component\n */\ninterface Props {\n /** The support ticket approval status to display */\n approvalStatus: SupportTicketApproval;\n /** Size of the badge - defaults to 'md' */\n size?: 'sm' | 'md' | 'lg';\n /** Visual variant of the badge - defaults to 'default' */\n variant?: 'default' | 'outline';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n size: 'md',\n variant: 'default',\n});\n\n/**\n * Configuration for each approval status badge\n */\ninterface ApprovalBadgeConfig {\n /** DaisyUI badge color class */\n color: string;\n /** Display text for the badge */\n text: string;\n /** Accessibility label for screen readers */\n ariaLabel: string;\n}\n\nconst approvalConfig: Record<SupportTicketApproval, ApprovalBadgeConfig> = {\n PENDING: {\n color: 'badge-warning',\n text: 'Pending',\n ariaLabel: 'Approval: Awaiting staff decision',\n },\n APPROVED: {\n color: 'badge-success',\n text: 'Approved',\n ariaLabel: 'Approval: Approved by staff',\n },\n REJECTED: {\n color: 'badge-error',\n text: 'Rejected',\n ariaLabel: 'Approval: Rejected by staff',\n },\n INTERNAL: {\n color: 'badge-info',\n text: 'Internal',\n ariaLabel: 'Approval: Internal staff ticket',\n },\n};\n\nconst getApprovalConfig = (approvalStatus: SupportTicketApproval): ApprovalBadgeConfig => {\n const config = approvalConfig[approvalStatus];\n if (!config) {\n return {\n color: 'badge-neutral',\n text: approvalStatus || 'Unknown',\n ariaLabel: `Approval: ${approvalStatus || 'Unknown status'}`,\n };\n }\n return config;\n};\n\nconst config = computed(() => getApprovalConfig(props.approvalStatus));\n\nconst badgeClasses = computed(() => {\n const baseClasses = ['badge', 'text-xs'];\n\n // Add color class\n baseClasses.push(config.value.color);\n\n // Add size class with responsive text sizing\n if (props.size === 'sm') {\n baseClasses.push('badge-sm', 'text-xs');\n } else if (props.size === 'lg') {\n baseClasses.push('badge-lg', 'text-sm');\n } else {\n // md size - responsive text\n baseClasses.push('text-xs', 'sm:text-sm');\n }\n\n // Add variant class\n if (props.variant === 'outline') {\n baseClasses.push('badge-outline');\n }\n\n return baseClasses.join(' ');\n});\n\nconst displayText = computed(() => config.value.text);\nconst ariaLabel = computed(() => config.value.ariaLabel);\n</script>\n","/**\n * Takes an ISO date string and returns:\n * - formatted: \"Jan 15, 2025\"\n * - relative: \"3 days ago\" / \"2 hours ago\" / \"just now\"\n * - localTime: \"2:30 PM\" (user's local time)\n */\nexport function formatTicketDate(isoString: string): {\n formatted: string;\n relative: string;\n localTime: string;\n} {\n const date = new Date(isoString);\n if (isNaN(date.getTime())) {\n return { formatted: isoString, relative: '', localTime: '' };\n }\n\n const formatted = date.toLocaleDateString(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n\n const localTime = date.toLocaleTimeString(undefined, {\n hour: 'numeric',\n minute: '2-digit',\n });\n\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffSec = Math.floor(diffMs / 1000);\n const diffMin = Math.floor(diffSec / 60);\n const diffHour = Math.floor(diffMin / 60);\n const diffDay = Math.floor(diffHour / 24);\n\n let relative: string;\n if (Math.abs(diffSec) < 60) {\n relative = 'just now';\n } else if (diffSec < 0) {\n const sec = Math.abs(diffSec);\n const min = Math.floor(sec / 60);\n const hr = Math.floor(min / 60);\n const day = Math.floor(hr / 24);\n if (min < 60) relative = `in ${min} minute${min === 1 ? '' : 's'}`;\n else if (hr < 24) relative = `in ${hr} hour${hr === 1 ? '' : 's'}`;\n else relative = `in ${day} day${day === 1 ? '' : 's'}`;\n } else if (diffMin < 60) {\n relative = diffMin === 1 ? '1 minute ago' : `${diffMin} minutes ago`;\n } else if (diffHour < 24) {\n relative = diffHour === 1 ? '1 hour ago' : `${diffHour} hours ago`;\n } else if (diffDay < 30) {\n relative = diffDay === 1 ? '1 day ago' : `${diffDay} days ago`;\n } else {\n const diffWeeks = Math.floor(diffDay / 7);\n const diffMonths = Math.floor(diffDay / 30);\n if (diffWeeks < 4) {\n relative = diffWeeks === 1 ? '1 week ago' : `${diffWeeks} weeks ago`;\n } else if (diffMonths < 12) {\n relative = diffMonths === 1 ? '1 month ago' : `${diffMonths} months ago`;\n } else {\n const diffYears = Math.floor(diffMonths / 12);\n relative = diffYears === 1 ? '1 year ago' : `${diffYears} years ago`;\n }\n }\n\n return { formatted, relative, localTime };\n}\n","<template>\n <div\n :class=\"[\n 'card card-bordered p-4 w-full',\n variant === 'internal'\n ? 'bg-warning/10 border-warning/30'\n : 'bg-base-100',\n ]\"\n >\n <div class=\"flex items-center gap-2 mb-3 flex-wrap\">\n <span\n v-if=\"variant === 'internal'\"\n class=\"badge badge-warning badge-sm gap-1 shrink-0\"\n aria-label=\"Internal note\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"w-3.5 h-3.5\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z\"\n />\n </svg>\n Internal\n </span>\n <span\n v-else\n class=\"w-6 h-6 rounded-full bg-primary text-primary-content text-xs flex items-center justify-center shrink-0\"\n aria-hidden=\"true\"\n >\n {{ authorInitial }}\n </span>\n <span class=\"font-semibold text-sm\">{{ authorName }}</span>\n <span class=\"text-base-content/50 text-sm\">· {{ relativeTime }}</span>\n </div>\n <div class=\"text-sm text-base-content break-words whitespace-pre-wrap\">\n <slot />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { formatTicketDate } from '../utils/formatTicketDate';\n\ninterface Props {\n authorName: string;\n createdAt: string;\n variant: 'customer' | 'internal';\n}\n\nconst props = defineProps<Props>();\n\nconst authorInitial = computed(() => {\n const name = props.authorName?.trim() || '?';\n return name.charAt(0).toUpperCase();\n});\n\nconst relativeTime = computed(() => {\n return props.createdAt ? formatTicketDate(props.createdAt).relative : '';\n});\n</script>\n","<template>\n <div class=\"py-2 flex items-start gap-2 text-sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"w-4 h-4 text-base-content/30 shrink-0 mt-0.5\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 011.37.49l1.296 2.247a1.125 1.125 0 01-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 010 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 01-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 01-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 01-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 01-1.369-.49l-1.297-2.247a1.125 1.125 0 01.26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 010-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 01-.26-1.43l1.297-2.247a1.125 1.125 0 011.37-.491l1.216.456c.356.133.751.072 1.076-.124a6.57 6.57 0 01.22-.128c.332-.183.582-.495.644-.869l.214-1.281z\"\n />\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n <div class=\"flex-1 min-w-0 space-y-0.5\">\n <div class=\"flex flex-wrap items-baseline gap-x-2 gap-y-1\">\n <span class=\"text-base-content/60 font-medium\">{{ author }}</span>\n <span class=\"text-base-content/40 text-xs\" aria-hidden=\"true\">·</span>\n <span class=\"font-semibold text-base-content\">{{ displayAction }}</span>\n <template v-if=\"type\">\n <span class=\"text-base-content/40 text-xs\" aria-hidden=\"true\">·</span>\n <span\n class=\"badge badge-sm badge-outline border-base-content/20 text-base-content/80 font-normal px-1.5 py-0 capitalize\"\n >\n {{ type }}\n </span>\n </template>\n <template v-if=\"changes && changes.length > 1\">\n <template v-if=\"details\">\n <span class=\"text-base-content/40 text-xs\" aria-hidden=\"true\">·</span>\n <span class=\"text-base-content/70\">{{ details }}</span>\n </template>\n </template>\n <template v-else-if=\"hasChangeDetails\">\n <span class=\"text-base-content/40 text-xs\" aria-hidden=\"true\">·</span>\n <span class=\"text-base-content/70\">\n <template v-if=\"detailsPrefix\">{{ detailsPrefix }} </template>\n <template v-if=\"oldValue != null && newValue != null\">\n <span class=\"line-through text-base-content/50\">{{ oldValue }}</span>\n <span class=\"mx-1 text-base-content/40\">→</span>\n <span>{{ newValue }}</span>\n </template>\n <template v-else-if=\"displayDetails\">{{ displayDetails }}</template>\n </span>\n </template>\n </div>\n <ul\n v-if=\"changes && changes.length > 1\"\n class=\"mt-1.5 ml-6 list-disc list-inside text-base-content/70 text-sm space-y-0.5\"\n >\n <li v-for=\"(change, i) in changes\" :key=\"i\">\n <span class=\"italic text-base-content/60\">{{ change.action }}:</span>\n <template v-if=\"change.oldValue != null && change.newValue != null\">\n <span class=\"line-through text-base-content/50 ml-1\">{{ change.oldValue }}</span>\n <span class=\"mx-1 text-base-content/40\">→</span>\n <span>{{ change.newValue }}</span>\n </template>\n <template v-else-if=\"change.newValue != null\">\n <span class=\"ml-1\">{{ change.newValue }}</span>\n </template>\n </li>\n </ul>\n <div class=\"text-base-content/40 text-xs\">\n <button\n type=\"button\"\n class=\"cursor-pointer hover:text-base-content/60 hover:underline focus:outline-none focus:underline\"\n :title=\"fullDateTime\"\n @click=\"showFull = !showFull\"\n >\n {{ displayTime }}\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { formatTicketDate } from '../utils/formatTicketDate';\n\ninterface SystemEventChange {\n action: string;\n oldValue: string | null;\n newValue: string | null;\n fieldName?: string;\n}\n\ninterface Props {\n author: string;\n message: string;\n timestamp: string;\n action?: string;\n type?: string | null;\n details?: string | null;\n oldValue?: string | null;\n newValue?: string | null;\n changes?: SystemEventChange[];\n}\n\nconst props = defineProps<Props>();\nconst showFull = ref(false);\n\nconst displayAction = computed(() => props.action ?? props.message);\nconst displayDetails = computed(() => {\n if (props.details) return props.details;\n if (props.oldValue != null && props.newValue != null) {\n return `${props.oldValue} → ${props.newValue}`;\n }\n return props.newValue ?? null;\n});\nconst hasChangeDetails = computed(\n () =>\n (props.oldValue != null && props.newValue != null) ||\n props.details != null ||\n props.newValue != null,\n);\nconst detailsPrefix = computed(() => {\n if (!props.details || (props.oldValue == null && props.newValue == null)) return null;\n if (props.details.includes(' · ')) {\n const parts = props.details.split(' · ');\n return parts.length > 1 ? parts[0]! : null;\n }\n return props.details;\n});\n\n/** Use relative time when within ~18 hours, otherwise full date and time */\nconst RECENT_THRESHOLD_HOURS = 18;\n\nconst shortTime = computed(() => {\n if (!props.timestamp) return '';\n const { relative, formatted, localTime } = formatTicketDate(props.timestamp);\n const dateTime = [formatted, localTime].filter(Boolean).join(', ');\n if (!relative && !dateTime) return '';\n const date = new Date(props.timestamp);\n const hoursAgo = (Date.now() - date.getTime()) / (1000 * 60 * 60);\n const isRecent = hoursAgo >= 0 && hoursAgo < RECENT_THRESHOLD_HOURS;\n return isRecent ? relative : dateTime;\n});\n\nconst fullDateTime = computed(() => {\n if (!props.timestamp) return '';\n const { formatted, localTime } = formatTicketDate(props.timestamp);\n return [formatted, localTime].filter(Boolean).join(', ');\n});\n\nconst displayTime = computed(() =>\n showFull.value ? fullDateTime.value : shortTime.value,\n);\n</script>\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import "./useRpcAuth-CJtq1dqM.js";
2
+ import "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
3
+ import { t as UserListPage_default } from "./UserListPage-DtA8tLff.js";
4
+
5
+ export { UserListPage_default as default };
@@ -1,5 +1,6 @@
1
- import { r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-x5Gn5gR0.js";
2
- import { t as formatSystemTimestamp } from "./convertToLocalDateTime-CFhtN6PI.js";
1
+ import { r as executeWithAuth } from "./useRpcAuth-CJtq1dqM.js";
2
+ import { r as getRefreshTokenHandler } from "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
3
+ import { t as formatSystemTimestamp } from "./convertToLocalDateTime-BF25N4xd.js";
3
4
  import { computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, resolveComponent, toDisplayString, unref, withCtx } from "vue";
4
5
  import { UserReadSchema } from "@dragonmastery/dragoncore-shared";
5
6
  import { useCursorDataTable, withMetadata } from "@dragonmastery/zinia-forms-core";
@@ -150,4 +151,4 @@ var UserListPage_default = _sfc_main;
150
151
 
151
152
  //#endregion
152
153
  export { userRowSchemaWithMetadata as n, UserTypeBadge_default as r, UserListPage_default as t };
153
- //# sourceMappingURL=UserListPage-DpkOdR1U.js.map
154
+ //# sourceMappingURL=UserListPage-DtA8tLff.js.map