@dragonmastery/dragoncore-vue 0.0.2 → 0.0.4

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 (186) hide show
  1. package/LICENSE +2 -2
  2. package/dist/{ChangePasswordPage-Btu5lf-r.js → ChangePasswordPage-DCews8GU.js} +2 -2
  3. package/dist/{ChangePasswordPage-Btu5lf-r.js.map → ChangePasswordPage-DCews8GU.js.map} +1 -1
  4. package/dist/ChangePasswordPage-Dm5vW0nl.js +6 -0
  5. package/dist/CreateTeamForm-zVlGgmL9.js +27 -0
  6. package/dist/CreateTeamMemberForm-DkCbsJDn.js +27 -0
  7. package/dist/{CreateUserPage-Cmx8xjjv.js → CreateUserPage-B8qeBZij.js} +2 -2
  8. package/dist/{CreateUserPage-Cmx8xjjv.js.map → CreateUserPage-B8qeBZij.js.map} +1 -1
  9. package/dist/CreateUserPage-WjYDkwpb.js +6 -0
  10. package/dist/CreditBalanceDashboard-BTW4IK66.js +27 -0
  11. package/dist/CreditManagement-0JxmCIAd.js +27 -0
  12. package/dist/CustomerCreateSupportTicketForm-CQcv4vrX.js +27 -0
  13. package/dist/CustomerSupportTicketDetailPage-DQa_Zvfe.js +703 -0
  14. package/dist/CustomerSupportTicketDetailPage-DQa_Zvfe.js.map +1 -0
  15. package/dist/CustomerSupportTicketList-CMPRQ_7O.js +27 -0
  16. package/dist/CustomerSupportTicketParent-BOYIren9.js +7 -0
  17. package/dist/{CustomerSupportTicketParent-2mONd9kL.js → CustomerSupportTicketParent-sT8hpgrA.js} +6 -6
  18. package/dist/CustomerSupportTicketParent-sT8hpgrA.js.map +1 -0
  19. package/dist/CustomerSupportTicketSuccess-CnRWm6gX.js +27 -0
  20. package/dist/EditTeamForm-BM90JTjr.js +27 -0
  21. package/dist/EditTeamMemberForm-B8-pI6Xm.js +6 -0
  22. package/dist/{EditTeamMemberForm-ru4WgLz-.js → EditTeamMemberForm-CKbKomrL.js} +27 -5
  23. package/dist/EditTeamMemberForm-CKbKomrL.js.map +1 -0
  24. package/dist/EditUserPage-BG-Fkx_c.js +7 -0
  25. package/dist/{EditUserPage-BxJ5QvIM.js → EditUserPage-XqF25iwz.js} +4 -4
  26. package/dist/{EditUserPage-BxJ5QvIM.js.map → EditUserPage-XqF25iwz.js.map} +1 -1
  27. package/dist/ForgotPassword-CjWv2V7p.js +7 -0
  28. package/dist/{ForgotPassword-CqhenzUG.js → ForgotPassword-D3bjL48L.js} +2 -2
  29. package/dist/{ForgotPassword-CqhenzUG.js.map → ForgotPassword-D3bjL48L.js.map} +1 -1
  30. package/dist/LoginForm--br4Il85.js +7 -0
  31. package/dist/{LoginForm-_PZ51Uwe.js → LoginForm-C85U2E2r.js} +3 -3
  32. package/dist/{LoginForm-_PZ51Uwe.js.map → LoginForm-C85U2E2r.js.map} +1 -1
  33. package/dist/Logout-DHT-5Qz3.js +6 -0
  34. package/dist/{Logout-BMjiqHnS.js → Logout-DZuWLh0O.js} +3 -3
  35. package/dist/{Logout-BMjiqHnS.js.map → Logout-DZuWLh0O.js.map} +1 -1
  36. package/dist/ResetPassword-DAn7dYAp.js +27 -0
  37. package/dist/SavedFiltersPage-BNasEKOY.js +391 -0
  38. package/dist/SavedFiltersPage-BNasEKOY.js.map +1 -0
  39. package/dist/Signup-VZa7U-Ur.js +7 -0
  40. package/dist/{Signup-c2-_yMOM.js → Signup-hpV8J5cM.js} +3 -3
  41. package/dist/{Signup-c2-_yMOM.js.map → Signup-hpV8J5cM.js.map} +1 -1
  42. package/dist/StaffCreateSupportTicketForm-DoHCw60c.js +27 -0
  43. package/dist/StaffSupportTicketDetailPage-D49ibqrO.js +1884 -0
  44. package/dist/StaffSupportTicketDetailPage-D49ibqrO.js.map +1 -0
  45. package/dist/StaffSupportTicketList-BgCIa_9v.js +27 -0
  46. package/dist/StaffSupportTicketParent-C7Mm7W_0.js +7 -0
  47. package/dist/{StaffSupportTicketParent-Cx1buQZw.js → StaffSupportTicketParent-CxrPxXSH.js} +6 -6
  48. package/dist/StaffSupportTicketParent-CxrPxXSH.js.map +1 -0
  49. package/dist/StaffSupportTicketSuccess-DZF2WpZc.js +27 -0
  50. package/dist/SupportStaffPage-nd0HowtH.js +156 -0
  51. package/dist/SupportStaffPage-nd0HowtH.js.map +1 -0
  52. package/dist/SupportTicketDevLifecycleBadge-Cl4y47Sy.js +116 -0
  53. package/dist/SupportTicketDevLifecycleBadge-Cl4y47Sy.js.map +1 -0
  54. package/dist/SupportTicketMaintenancePage-rcJ7EfDj.js +56 -0
  55. package/dist/SupportTicketMaintenancePage-rcJ7EfDj.js.map +1 -0
  56. package/dist/TeamAttachmentsTab-BoOIuTU1.js +27 -0
  57. package/dist/{TeamHistoryTab-gB3H2KZv.js → TeamHistoryTab-CNelXR3Q.js} +19 -6
  58. package/dist/TeamHistoryTab-CNelXR3Q.js.map +1 -0
  59. package/dist/TeamHistoryTab-siesF93u.js +4 -0
  60. package/dist/TeamList-TpS3BhPd.js +27 -0
  61. package/dist/TeamMemberList-CQTxcWNS.js +27 -0
  62. package/dist/TeamMemberParent-Bt0kbyKQ.js +27 -0
  63. package/dist/{NoteList-C0hRPNMO.js → TeamNotesTab-BhVRLG8h.js} +30 -69
  64. package/dist/TeamNotesTab-BhVRLG8h.js.map +1 -0
  65. package/dist/TeamNotesTab-Crp-afAe.js +7 -0
  66. package/dist/TeamParent-BvLiiJq6.js +27 -0
  67. package/dist/TimelineNoteInput-BRsQ2QTz.js +490 -0
  68. package/dist/TimelineNoteInput-BRsQ2QTz.js.map +1 -0
  69. package/dist/{InlineAttachments-I39rOvip.js → TimelineSystemEvent-B69B3eeL.js} +589 -126
  70. package/dist/TimelineSystemEvent-B69B3eeL.js.map +1 -0
  71. package/dist/UserListPage-D68AjrjM.js +4 -0
  72. package/dist/{UserListPage-WU56KiWj.js → UserListPage-OGYOLwlw.js} +3 -3
  73. package/dist/{UserListPage-WU56KiWj.js.map → UserListPage-OGYOLwlw.js.map} +1 -1
  74. package/dist/UserProfilePage-Q68NAGQQ.js +7 -0
  75. package/dist/{UserProfilePage-BtLUY1kt.js → UserProfilePage-uAIfC_NW.js} +4 -4
  76. package/dist/{UserProfilePage-BtLUY1kt.js.map → UserProfilePage-uAIfC_NW.js.map} +1 -1
  77. package/dist/ViewTeam-Bb1WH_Us.js +27 -0
  78. package/dist/ViewTeamMember-CBTAnAhS.js +27 -0
  79. package/dist/{convertToLocalDateTime-D4IoNvRj.js → convertToLocalDateTime-DOSGtMn8.js} +13 -3
  80. package/dist/convertToLocalDateTime-DOSGtMn8.js.map +1 -0
  81. package/dist/{displayIdFormatter-Dz900Awr.js → displayIdFormatter-BoKcrgF5.js} +1 -1
  82. package/dist/{displayIdFormatter-Dz900Awr.js.map → displayIdFormatter-BoKcrgF5.js.map} +1 -1
  83. package/dist/extractRpcErrorMessage-C_UbKgHL.js +20 -0
  84. package/dist/extractRpcErrorMessage-C_UbKgHL.js.map +1 -0
  85. package/dist/index.d.ts +1594 -1320
  86. package/dist/index.js +25 -40
  87. package/dist/{src-o5fMIo5_.js → src-ChwBeNHB.js} +4006 -1522
  88. package/dist/src-ChwBeNHB.js.map +1 -0
  89. package/dist/{useMutation-CFwe7H9j.js → useMutation-B4_S4Xoa.js} +3 -3
  90. package/dist/{useMutation-CFwe7H9j.js.map → useMutation-B4_S4Xoa.js.map} +1 -1
  91. package/dist/{useQuery-p7oJO7OD.js → useQuery-B7ndu5_P.js} +3 -3
  92. package/dist/{useQuery-p7oJO7OD.js.map → useQuery-B7ndu5_P.js.map} +1 -1
  93. package/dist/{useQueryCache-ByayvZgZ.js → useQueryCache-DqcDMsxb.js} +2 -2
  94. package/dist/{useQueryCache-ByayvZgZ.js.map → useQueryCache-DqcDMsxb.js.map} +1 -1
  95. package/dist/{useRpcAuth-BLlRSHy8.js → useRpcAuth-Dp2sec-X.js} +13 -4
  96. package/dist/useRpcAuth-Dp2sec-X.js.map +1 -0
  97. package/package.json +8 -8
  98. package/dist/ChangePasswordPage-mBBuQMkT.js +0 -6
  99. package/dist/CreateTeamForm-n2ut93vM.js +0 -43
  100. package/dist/CreateTeamMemberForm-CcH3AxNL.js +0 -43
  101. package/dist/CreateUserPage-CDrGuW9B.js +0 -6
  102. package/dist/CreditBalanceDashboard-DLz0ioP3.js +0 -43
  103. package/dist/CreditManagement-D3q5S-qc.js +0 -43
  104. package/dist/CustomerCreateSupportTicketForm-Ci7QYkG-.js +0 -43
  105. package/dist/CustomerEditSupportTicketForm-Dd5ZB74k.js +0 -159
  106. package/dist/CustomerEditSupportTicketForm-Dd5ZB74k.js.map +0 -1
  107. package/dist/CustomerEditSupportTicketForm-lLchVjnw.js +0 -9
  108. package/dist/CustomerSupportTicketAttachmentsTab-gBrVO97t.js +0 -43
  109. package/dist/CustomerSupportTicketCustomerNotesTab-D0jhzbOY.js +0 -8
  110. package/dist/CustomerSupportTicketCustomerNotesTab-D1aa9It7.js +0 -23
  111. package/dist/CustomerSupportTicketCustomerNotesTab-D1aa9It7.js.map +0 -1
  112. package/dist/CustomerSupportTicketHistoryTab-BNTf8EZq.js +0 -6
  113. package/dist/CustomerSupportTicketHistoryTab-CFYN_Sa4.js +0 -17
  114. package/dist/CustomerSupportTicketHistoryTab-CFYN_Sa4.js.map +0 -1
  115. package/dist/CustomerSupportTicketList-BkOzFxMP.js +0 -6
  116. package/dist/CustomerSupportTicketList-C2nUPawb.js +0 -166
  117. package/dist/CustomerSupportTicketList-C2nUPawb.js.map +0 -1
  118. package/dist/CustomerSupportTicketParent-2mONd9kL.js.map +0 -1
  119. package/dist/CustomerSupportTicketParent-N8ko1yFE.js +0 -7
  120. package/dist/CustomerSupportTicketSuccess-w_-9NXT4.js +0 -43
  121. package/dist/CustomerViewSupportTicket-CVwNH0lS.js +0 -11
  122. package/dist/CustomerViewSupportTicket-tZkxragu.js +0 -363
  123. package/dist/CustomerViewSupportTicket-tZkxragu.js.map +0 -1
  124. package/dist/EditTeamForm-BioqiTWE.js +0 -43
  125. package/dist/EditTeamMemberForm-DCq0Gsn_.js +0 -7
  126. package/dist/EditTeamMemberForm-ru4WgLz-.js.map +0 -1
  127. package/dist/EditUserPage-XOBuxUxd.js +0 -7
  128. package/dist/FieldsetSection-CsHN38_o.js +0 -27
  129. package/dist/FieldsetSection-CsHN38_o.js.map +0 -1
  130. package/dist/ForgotPassword-CpqvcSFg.js +0 -7
  131. package/dist/InlineAttachments-I39rOvip.js.map +0 -1
  132. package/dist/LoginForm-AM0qkfbU.js +0 -7
  133. package/dist/Logout-BfiBjlaH.js +0 -6
  134. package/dist/NoteList-C0hRPNMO.js.map +0 -1
  135. package/dist/NotificationEmailsPage-BjRqtW95.js +0 -141
  136. package/dist/NotificationEmailsPage-BjRqtW95.js.map +0 -1
  137. package/dist/NotificationEmailsPage-bx-9rg3x.js +0 -7
  138. package/dist/ResetPassword-BQLkR9TZ.js +0 -43
  139. package/dist/Signup-CnCcQlB8.js +0 -7
  140. package/dist/StaffCreateSupportTicketForm-ChVFDJdA.js +0 -43
  141. package/dist/StaffEditSupportTicketForm-DY1Zkf5k.js +0 -9
  142. package/dist/StaffEditSupportTicketForm-DuUKuIGg.js +0 -263
  143. package/dist/StaffEditSupportTicketForm-DuUKuIGg.js.map +0 -1
  144. package/dist/StaffSupportTicketAttachmentsTab-DpDXsHXP.js +0 -43
  145. package/dist/StaffSupportTicketCustomerNotesTab-CusqQV2-.js +0 -23
  146. package/dist/StaffSupportTicketCustomerNotesTab-CusqQV2-.js.map +0 -1
  147. package/dist/StaffSupportTicketCustomerNotesTab-rbJHJ0_V.js +0 -8
  148. package/dist/StaffSupportTicketHistoryTab-D24myEm3.js +0 -17
  149. package/dist/StaffSupportTicketHistoryTab-D24myEm3.js.map +0 -1
  150. package/dist/StaffSupportTicketHistoryTab-nmVma5vp.js +0 -6
  151. package/dist/StaffSupportTicketInternalNotesTab-D8HM--dp.js +0 -23
  152. package/dist/StaffSupportTicketInternalNotesTab-D8HM--dp.js.map +0 -1
  153. package/dist/StaffSupportTicketInternalNotesTab-DihYd5XI.js +0 -8
  154. package/dist/StaffSupportTicketList-DelptSmK.js +0 -43
  155. package/dist/StaffSupportTicketParent-BCrj3ckV.js +0 -7
  156. package/dist/StaffSupportTicketParent-Cx1buQZw.js.map +0 -1
  157. package/dist/StaffSupportTicketSuccess-BYxtY5wZ.js +0 -43
  158. package/dist/StaffSupportTicketWorkflowTab-BrDDBeK9.js +0 -9
  159. package/dist/StaffSupportTicketWorkflowTab-DmVTPzxS.js +0 -1234
  160. package/dist/StaffSupportTicketWorkflowTab-DmVTPzxS.js.map +0 -1
  161. package/dist/SupportTicketHistoryTab-CLMopA7a.js +0 -220
  162. package/dist/SupportTicketHistoryTab-CLMopA7a.js.map +0 -1
  163. package/dist/SupportTicketStatusBadge-YdZzjvkh.js +0 -163
  164. package/dist/SupportTicketStatusBadge-YdZzjvkh.js.map +0 -1
  165. package/dist/TeamAttachmentsTab-BxUpTWYh.js +0 -43
  166. package/dist/TeamHistoryTab-CUCT9MRG.js +0 -5
  167. package/dist/TeamHistoryTab-gB3H2KZv.js.map +0 -1
  168. package/dist/TeamList-By6pzWm5.js +0 -43
  169. package/dist/TeamMemberList-CYV9fWEb.js +0 -43
  170. package/dist/TeamMemberParent-CVvGqpxD.js +0 -43
  171. package/dist/TeamNotesTab-pfXTDhg6.js +0 -23
  172. package/dist/TeamNotesTab-pfXTDhg6.js.map +0 -1
  173. package/dist/TeamNotesTab-u4cDC67X.js +0 -8
  174. package/dist/TeamParent-BxT1KubK.js +0 -43
  175. package/dist/UserListPage-DsQdH2Sm.js +0 -4
  176. package/dist/UserProfilePage-B73JhjUu.js +0 -7
  177. package/dist/ViewTeam-DzX-obEl.js +0 -43
  178. package/dist/ViewTeamMember-PF6S_4Pb.js +0 -43
  179. package/dist/ZiniaContainer-C7c7Vwkh.js +0 -18
  180. package/dist/ZiniaContainer-C7c7Vwkh.js.map +0 -1
  181. package/dist/convertToLocalDateTime-D4IoNvRj.js.map +0 -1
  182. package/dist/creditValueFormatter-DftEzu8d.js +0 -128
  183. package/dist/creditValueFormatter-DftEzu8d.js.map +0 -1
  184. package/dist/src-o5fMIo5_.js.map +0 -1
  185. package/dist/useRpcAuth-BLlRSHy8.js.map +0 -1
  186. /package/dist/{TeamMembersTab-CpE9BaCi.js → TeamMembersTab-DTJxmb-M.js} +0 -0
@@ -1,15 +1,15 @@
1
- import { l as useUserSessionStore, m as useEnv } from "./useRpcAuth-BLlRSHy8.js";
2
- import { t as useMutation } from "./useMutation-CFwe7H9j.js";
3
- import { t as useQuery } from "./useQuery-p7oJO7OD.js";
1
+ import { l as useUserSessionStore, m as useEnv } from "./useRpcAuth-Dp2sec-X.js";
2
+ import { t as useMutation } from "./useMutation-B4_S4Xoa.js";
3
+ import { t as useQuery } from "./useQuery-B7ndu5_P.js";
4
4
  import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, onMounted, onUnmounted, openBlock, ref, renderList, renderSlot, toDisplayString, unref, watch, withModifiers } from "vue";
5
5
 
6
6
  //#region src/components/ConfirmDialog.vue
7
- const _hoisted_1$2 = { class: "font-bold text-lg mb-4" };
8
- const _hoisted_2$2 = { class: "py-4" };
9
- const _hoisted_3$2 = { class: "modal-action" };
10
- const _hoisted_4$2 = ["disabled"];
11
- const _hoisted_5$2 = ["disabled"];
12
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
7
+ const _hoisted_1$7 = { class: "font-bold text-lg mb-4" };
8
+ const _hoisted_2$4 = { class: "py-4" };
9
+ const _hoisted_3$4 = { class: "modal-action" };
10
+ const _hoisted_4$4 = ["disabled"];
11
+ const _hoisted_5$4 = ["disabled"];
12
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
13
13
  __name: "ConfirmDialog",
14
14
  props: {
15
15
  modelValue: { type: Boolean },
@@ -64,37 +64,37 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
64
64
  class: "modal-box",
65
65
  onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"]))
66
66
  }, [
67
- createElementVNode("h3", _hoisted_1$2, toDisplayString(__props.title), 1),
68
- createElementVNode("div", _hoisted_2$2, [renderSlot(_ctx.$slots, "message", {}, () => [createElementVNode("p", null, toDisplayString(__props.message), 1)])]),
69
- createElementVNode("div", _hoisted_3$2, [createElementVNode("button", {
67
+ createElementVNode("h3", _hoisted_1$7, toDisplayString(__props.title), 1),
68
+ createElementVNode("div", _hoisted_2$4, [renderSlot(_ctx.$slots, "message", {}, () => [createElementVNode("p", null, toDisplayString(__props.message), 1)])]),
69
+ createElementVNode("div", _hoisted_3$4, [createElementVNode("button", {
70
70
  class: "btn btn-outline",
71
71
  onClick: withModifiers(handleCancel, ["prevent"]),
72
72
  disabled: __props.isProcessing,
73
73
  type: "button"
74
- }, toDisplayString(__props.cancelText), 9, _hoisted_4$2), createElementVNode("button", {
74
+ }, toDisplayString(__props.cancelText), 9, _hoisted_4$4), createElementVNode("button", {
75
75
  class: normalizeClass(["btn", __props.confirmButtonClass]),
76
76
  onClick: withModifiers(handleConfirm, ["prevent"]),
77
77
  disabled: __props.isProcessing,
78
78
  type: "button"
79
- }, toDisplayString(__props.isProcessing ? __props.processingText : __props.confirmText), 11, _hoisted_5$2)])
79
+ }, toDisplayString(__props.isProcessing ? __props.processingText : __props.confirmText), 11, _hoisted_5$4)])
80
80
  ])], 2);
81
81
  };
82
82
  }
83
83
  });
84
- var ConfirmDialog_default = _sfc_main$2;
84
+ var ConfirmDialog_default = _sfc_main$7;
85
85
 
86
86
  //#endregion
87
87
  //#region src/components/ImageModal.vue
88
- const _hoisted_1$1 = { class: "modal-box w-full max-w-full h-full max-h-full p-0 flex flex-col bg-base-100" };
89
- const _hoisted_2$1 = { class: "flex items-center justify-between p-3 sm:p-4 border-b border-base-300 flex-shrink-0 bg-base-100/95 backdrop-blur" };
90
- const _hoisted_3$1 = { class: "flex-1 min-w-0 mr-2" };
91
- const _hoisted_4$1 = { class: "font-semibold text-sm sm:text-base truncate" };
92
- const _hoisted_5$1 = {
88
+ const _hoisted_1$6 = { class: "modal-box w-full max-w-full h-full max-h-full p-0 flex flex-col bg-base-100" };
89
+ const _hoisted_2$3 = { class: "flex items-center justify-between p-3 sm:p-4 border-b border-base-300 flex-shrink-0 bg-base-100/95 backdrop-blur" };
90
+ const _hoisted_3$3 = { class: "flex-1 min-w-0 mr-2" };
91
+ const _hoisted_4$3 = { class: "font-semibold text-sm sm:text-base truncate" };
92
+ const _hoisted_5$3 = {
93
93
  key: 0,
94
94
  class: "text-xs text-base-content/60 mt-0.5"
95
95
  };
96
- const _hoisted_6$1 = { class: "flex items-center gap-1 sm:gap-2 flex-shrink-0" };
97
- const _hoisted_7$1 = {
96
+ const _hoisted_6$3 = { class: "flex items-center gap-1 sm:gap-2 flex-shrink-0" };
97
+ const _hoisted_7$2 = {
98
98
  key: 0,
99
99
  class: "absolute inset-0 flex items-center justify-center"
100
100
  };
@@ -112,7 +112,7 @@ const _hoisted_12$1 = {
112
112
  const minScale = .5;
113
113
  const maxScale = 5;
114
114
  const zoomStep = .05;
115
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
115
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
116
116
  __name: "ImageModal",
117
117
  props: {
118
118
  isOpen: { type: Boolean },
@@ -542,9 +542,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
542
542
  class: normalizeClass(["modal", { "modal-open": isOpen.value }]),
543
543
  onClick: handleBackdropClick,
544
544
  onKeydown: handleKeydown
545
- }, [createElementVNode("div", _hoisted_1$1, [
545
+ }, [createElementVNode("div", _hoisted_1$6, [
546
546
  createCommentVNode(" Header "),
547
- createElementVNode("div", _hoisted_2$1, [createElementVNode("div", _hoisted_3$1, [createElementVNode("h3", _hoisted_4$1, toDisplayString(__props.imageName), 1), __props.imageIndex !== null && __props.totalImages !== null ? (openBlock(), createElementBlock("p", _hoisted_5$1, toDisplayString(__props.imageIndex + 1) + " / " + toDisplayString(__props.totalImages), 1)) : createCommentVNode("v-if", true)]), createElementVNode("div", _hoisted_6$1, [
547
+ createElementVNode("div", _hoisted_2$3, [createElementVNode("div", _hoisted_3$3, [createElementVNode("h3", _hoisted_4$3, toDisplayString(__props.imageName), 1), __props.imageIndex !== null && __props.totalImages !== null ? (openBlock(), createElementBlock("p", _hoisted_5$3, toDisplayString(__props.imageIndex + 1) + " / " + toDisplayString(__props.totalImages), 1)) : createCommentVNode("v-if", true)]), createElementVNode("div", _hoisted_6$3, [
548
548
  createCommentVNode(" Navigation buttons (if multiple images) "),
549
549
  showNavigation.value && __props.imageIndex !== null && __props.imageIndex > 0 ? (openBlock(), createElementBlock("button", {
550
550
  key: 0,
@@ -631,7 +631,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
631
631
  class: "flex-1 flex items-center justify-center overflow-hidden bg-base-200 relative"
632
632
  }, [
633
633
  createCommentVNode(" Loading state "),
634
- isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_7$1, [..._cache[8] || (_cache[8] = [createElementVNode("span", { class: "loading loading-spinner loading-lg" }, null, -1)])])) : createCommentVNode("v-if", true),
634
+ isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_7$2, [..._cache[8] || (_cache[8] = [createElementVNode("span", { class: "loading loading-spinner loading-lg" }, null, -1)])])) : createCommentVNode("v-if", true),
635
635
  createCommentVNode(" Error state "),
636
636
  hasError.value ? (openBlock(), createElementBlock("div", _hoisted_8$1, [..._cache[9] || (_cache[9] = [createElementVNode("svg", {
637
637
  xmlns: "http://www.w3.org/2000/svg",
@@ -744,66 +744,268 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
744
744
  };
745
745
  }
746
746
  });
747
- var ImageModal_default = _sfc_main$1;
747
+ var ImageModal_default = _sfc_main$6;
748
+
749
+ //#endregion
750
+ //#region src/slices/support_ticket/shared/SupportTicketPriorityBadge.vue
751
+ const _hoisted_1$5 = ["aria-label"];
752
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
753
+ __name: "SupportTicketPriorityBadge",
754
+ props: {
755
+ priority: {},
756
+ size: { default: "md" },
757
+ variant: { default: "default" }
758
+ },
759
+ setup(__props) {
760
+ /**
761
+ * SupportTicketPriorityBadge - A reusable Vue component for displaying support ticket priority
762
+ * as color-coded badges with consistent DaisyUI styling and accessibility features.
763
+ *
764
+ * @example
765
+ * <SupportTicketPriorityBadge :priority="'HIGH'" size="md" />
766
+ * <SupportTicketPriorityBadge :priority="'CRITICAL'" size="sm" variant="outline" />
767
+ */
768
+ const props = __props;
769
+ /**
770
+ * Configuration for each priority badge
771
+ */
772
+ const priorityConfig = {
773
+ LOW: {
774
+ color: "badge-neutral",
775
+ text: "Low",
776
+ ariaLabel: "Priority: Low priority"
777
+ },
778
+ MEDIUM: {
779
+ color: "badge-neutral",
780
+ text: "Medium",
781
+ ariaLabel: "Priority: Medium priority"
782
+ },
783
+ HIGH: {
784
+ color: "badge-neutral",
785
+ text: "High",
786
+ ariaLabel: "Priority: High priority"
787
+ },
788
+ CRITICAL: {
789
+ color: "badge-neutral",
790
+ text: "Critical",
791
+ ariaLabel: "Priority: Critical priority"
792
+ }
793
+ };
794
+ const getPriorityConfig = (priority) => {
795
+ const config$1 = priorityConfig[priority];
796
+ if (!config$1) return {
797
+ color: "badge-neutral",
798
+ text: priority || "Unknown",
799
+ ariaLabel: `Priority: ${priority || "Unknown priority"}`
800
+ };
801
+ return config$1;
802
+ };
803
+ const config = computed(() => getPriorityConfig(props.priority));
804
+ const badgeClasses = computed(() => {
805
+ const baseClasses = ["badge", "text-xs"];
806
+ baseClasses.push(config.value.color);
807
+ if (props.size === "sm") baseClasses.push("badge-sm", "text-xs");
808
+ else if (props.size === "lg") baseClasses.push("badge-lg", "text-sm");
809
+ else baseClasses.push("text-xs", "sm:text-sm");
810
+ if (props.variant === "outline") baseClasses.push("badge-outline");
811
+ return baseClasses.join(" ");
812
+ });
813
+ const displayText = computed(() => config.value.text);
814
+ const ariaLabel = computed(() => config.value.ariaLabel);
815
+ return (_ctx, _cache) => {
816
+ return openBlock(), createElementBlock("div", {
817
+ class: normalizeClass(badgeClasses.value),
818
+ "aria-label": ariaLabel.value,
819
+ role: "status"
820
+ }, toDisplayString(displayText.value), 11, _hoisted_1$5);
821
+ };
822
+ }
823
+ });
824
+ var SupportTicketPriorityBadge_default = _sfc_main$5;
825
+
826
+ //#endregion
827
+ //#region src/slices/support_ticket/shared/SupportTicketTypeBadge.vue
828
+ const _hoisted_1$4 = ["aria-label"];
829
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
830
+ __name: "SupportTicketTypeBadge",
831
+ props: {
832
+ type: {},
833
+ size: { default: "md" },
834
+ variant: { default: "default" }
835
+ },
836
+ setup(__props) {
837
+ /**
838
+ * SupportTicketTypeBadge - A reusable Vue component for displaying support ticket type
839
+ * as color-coded badges with consistent DaisyUI styling and accessibility features.
840
+ *
841
+ * @example
842
+ * <SupportTicketTypeBadge :type="'BUG'" size="md" />
843
+ * <SupportTicketTypeBadge :type="'FEATURE_REQUEST'" size="sm" variant="outline" />
844
+ */
845
+ const props = __props;
846
+ /**
847
+ * Configuration for each type badge
848
+ */
849
+ const typeConfig = {
850
+ BUG: {
851
+ color: "badge-neutral",
852
+ text: "Bug",
853
+ ariaLabel: "Type: Bug report requiring fix"
854
+ },
855
+ FEATURE_REQUEST: {
856
+ color: "badge-neutral",
857
+ text: "Feature",
858
+ ariaLabel: "Type: New feature request"
859
+ },
860
+ IMPROVEMENT: {
861
+ color: "badge-neutral",
862
+ text: "Improvement",
863
+ ariaLabel: "Type: Enhancement to existing feature"
864
+ },
865
+ OPERATIONAL: {
866
+ color: "badge-neutral",
867
+ text: "Ops",
868
+ ariaLabel: "Type: Operational/admin work"
869
+ }
870
+ };
871
+ const getTypeConfig = (type) => {
872
+ const config$1 = typeConfig[type];
873
+ if (!config$1) return {
874
+ color: "badge-neutral",
875
+ text: type || "Unknown",
876
+ ariaLabel: `Type: ${type || "Unknown type"}`
877
+ };
878
+ return config$1;
879
+ };
880
+ const config = computed(() => getTypeConfig(props.type));
881
+ const badgeClasses = computed(() => {
882
+ const baseClasses = ["badge", "text-xs"];
883
+ baseClasses.push(config.value.color);
884
+ if (props.size === "sm") baseClasses.push("badge-sm", "text-xs");
885
+ else if (props.size === "lg") baseClasses.push("badge-lg", "text-sm");
886
+ else baseClasses.push("text-xs", "sm:text-sm");
887
+ if (props.variant === "outline") baseClasses.push("badge-outline");
888
+ return baseClasses.join(" ");
889
+ });
890
+ const displayText = computed(() => config.value.text);
891
+ const ariaLabel = computed(() => config.value.ariaLabel);
892
+ return (_ctx, _cache) => {
893
+ return openBlock(), createElementBlock("div", {
894
+ class: normalizeClass(badgeClasses.value),
895
+ "aria-label": ariaLabel.value,
896
+ role: "status"
897
+ }, toDisplayString(displayText.value), 11, _hoisted_1$4);
898
+ };
899
+ }
900
+ });
901
+ var SupportTicketTypeBadge_default = _sfc_main$4;
902
+
903
+ //#endregion
904
+ //#region src/slices/support_ticket/utils/creditValueFormatter.ts
905
+ /**
906
+ * Helper function to check if credit value is empty
907
+ */
908
+ function isCreditValueEmpty(value) {
909
+ return value === null || value === void 0 || value.trim() === "";
910
+ }
911
+ /**
912
+ * Core credit formatting logic
913
+ */
914
+ function formatCreditValueCore(creditValue) {
915
+ if (isCreditValueEmpty(creditValue)) return "TBD";
916
+ const trimmed = creditValue.trim();
917
+ if (parseFloat(trimmed) === 0) return "0";
918
+ return trimmed.replace(/\.?0+$/, "");
919
+ }
920
+ /**
921
+ * Formats credit value for staff views (includes internal ticket logic)
922
+ *
923
+ * @param creditValue - The credit value from the database
924
+ * @param approvalStatus - The approval status to determine display logic
925
+ * @returns Formatted string for display
926
+ *
927
+ * @example
928
+ * formatStaffCreditValue("5.50", "PENDING") // "5.5"
929
+ * formatStaffCreditValue("10", "INTERNAL") // "N/A"
930
+ */
931
+ function formatStaffCreditValue(creditValue, approvalStatus) {
932
+ if (approvalStatus === "INTERNAL") return "N/A";
933
+ return formatCreditValueCore(creditValue);
934
+ }
935
+ /**
936
+ * Formats credit value for customer views (status-based logic)
937
+ *
938
+ * @param creditValue - The credit value from the database
939
+ * @param status - The computed status from the customer query
940
+ * @returns Formatted string for display
941
+ *
942
+ * @example
943
+ * formatCustomerCreditValue("5.50", "PENDING") // "5.5"
944
+ * formatCustomerCreditValue("5.50", "FOLLOWUP") // "5.5"
945
+ */
946
+ function formatCustomerCreditValue(creditValue) {
947
+ return formatCreditValueCore(creditValue);
948
+ }
748
949
 
749
950
  //#endregion
750
951
  //#region src/slices/support_ticket/shared/InlineAttachments.vue
751
- const _hoisted_1 = { class: "mt-4 sm:mt-6" };
752
- const _hoisted_2 = { class: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0 mb-3" };
753
- const _hoisted_3 = ["disabled"];
754
- const _hoisted_4 = { class: "flex flex-col items-center justify-center py-2 sm:py-4" };
755
- const _hoisted_5 = {
952
+ const _hoisted_1$3 = { class: "mt-4 sm:mt-6" };
953
+ const _hoisted_2$2 = {
954
+ key: 0,
955
+ class: "grid grid-cols-2 gap-2 sm:gap-4 mb-4"
956
+ };
957
+ const _hoisted_3$2 = {
756
958
  key: 0,
757
- class: "text-xs text-base-content/50 mt-2 sm:mt-3"
959
+ class: "hidden sm:block text-xs text-base-content/50"
758
960
  };
759
- const _hoisted_6 = {
961
+ const _hoisted_4$2 = {
760
962
  key: 1,
761
963
  class: "mb-4 space-y-2"
762
964
  };
763
- const _hoisted_7 = { class: "flex-1 min-w-0" };
764
- const _hoisted_8 = { class: "text-xs sm:text-sm font-medium truncate" };
765
- const _hoisted_9 = {
965
+ const _hoisted_5$2 = { class: "flex-1 min-w-0" };
966
+ const _hoisted_6$2 = { class: "text-xs sm:text-sm font-medium truncate" };
967
+ const _hoisted_7$1 = {
766
968
  key: 0,
767
969
  class: "w-full bg-base-300 rounded-full h-1.5 mt-1"
768
970
  };
769
- const _hoisted_10 = {
971
+ const _hoisted_8 = {
770
972
  key: 1,
771
973
  class: "text-xs text-error mt-1 break-words"
772
974
  };
773
- const _hoisted_11 = { class: "flex gap-2 sm:gap-1" };
774
- const _hoisted_12 = ["onClick"];
775
- const _hoisted_13 = ["onClick"];
776
- const _hoisted_14 = {
975
+ const _hoisted_9 = { class: "flex gap-2 sm:gap-1" };
976
+ const _hoisted_10 = ["onClick"];
977
+ const _hoisted_11 = ["onClick"];
978
+ const _hoisted_12 = {
777
979
  key: 2,
778
980
  class: "space-y-2"
779
981
  };
780
- const _hoisted_15 = {
982
+ const _hoisted_13 = {
781
983
  key: 0,
782
984
  class: "flex justify-center py-4"
783
985
  };
784
- const _hoisted_16 = ["onClick"];
785
- const _hoisted_17 = { class: "flex items-center gap-2 sm:gap-3 flex-1 min-w-0 w-full sm:w-auto" };
786
- const _hoisted_18 = { class: "flex-shrink-0" };
787
- const _hoisted_19 = {
986
+ const _hoisted_14 = ["onClick"];
987
+ const _hoisted_15 = { class: "flex items-center gap-2 sm:gap-3 flex-1 min-w-0 w-full sm:w-auto" };
988
+ const _hoisted_16 = { class: "flex-shrink-0" };
989
+ const _hoisted_17 = {
788
990
  key: 0,
789
991
  class: "w-10 h-10 sm:w-12 sm:h-12 rounded overflow-hidden bg-base-200 flex items-center justify-center"
790
992
  };
791
- const _hoisted_20 = ["src", "alt"];
792
- const _hoisted_21 = {
993
+ const _hoisted_18 = ["src", "alt"];
994
+ const _hoisted_19 = {
793
995
  key: 1,
794
996
  class: "w-full h-full flex items-center justify-center"
795
997
  };
796
- const _hoisted_22 = { class: "flex-1 min-w-0" };
797
- const _hoisted_23 = { class: "text-sm sm:text-base font-medium truncate" };
798
- const _hoisted_24 = { class: "text-xs text-base-content/60" };
998
+ const _hoisted_20 = { class: "flex-1 min-w-0" };
999
+ const _hoisted_21 = { class: "text-sm sm:text-base font-medium truncate" };
1000
+ const _hoisted_22 = { class: "text-xs text-base-content/60" };
1001
+ const _hoisted_23 = ["onClick"];
1002
+ const _hoisted_24 = ["onClick"];
799
1003
  const _hoisted_25 = ["onClick"];
800
- const _hoisted_26 = ["onClick"];
801
- const _hoisted_27 = ["onClick"];
802
- const _hoisted_28 = {
1004
+ const _hoisted_26 = {
803
1005
  key: 3,
804
1006
  class: "text-center py-8 text-base-content/50"
805
1007
  };
806
- const _sfc_main = /* @__PURE__ */ defineComponent({
1008
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
807
1009
  __name: "InlineAttachments",
808
1010
  props: {
809
1011
  recordId: {},
@@ -819,7 +1021,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
819
1021
  emits: [
820
1022
  "uploaded",
821
1023
  "deleted",
822
- "filesQueued"
1024
+ "filesQueued",
1025
+ "update:attachmentsCount"
823
1026
  ],
824
1027
  setup(__props, { expose: __expose, emit: __emit }) {
825
1028
  const props = __props;
@@ -876,6 +1079,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
876
1079
  });
877
1080
  return files;
878
1081
  });
1082
+ watch(() => attachments.value.length, (count) => emit("update:attachmentsCount", count), { immediate: true });
879
1083
  const deleteMessage = computed(() => {
880
1084
  if (!fileToDelete.value) return "Are you sure you want to delete this attachment? This action cannot be undone.";
881
1085
  return `Are you sure you want to delete "${fileToDelete.value.name}"? This action cannot be undone.`;
@@ -1019,6 +1223,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1019
1223
  if (!files || files.length === 0) return;
1020
1224
  processFiles(Array.from(files));
1021
1225
  };
1226
+ const handlePaste = (event) => {
1227
+ if (!props.canUpload || isUploading.value) return;
1228
+ const items = event.clipboardData?.items;
1229
+ if (!items) return;
1230
+ const imageFiles = [];
1231
+ for (const item of items) if (item.type.startsWith("image/")) {
1232
+ const file = item.getAsFile();
1233
+ if (file) imageFiles.push(file);
1234
+ }
1235
+ if (imageFiles.length > 0) {
1236
+ event.preventDefault();
1237
+ event.stopPropagation();
1238
+ processFiles(imageFiles);
1239
+ }
1240
+ };
1022
1241
  const processUploadQueue = async (ticketId) => {
1023
1242
  const nextItem = uploadQueue.value.find((item) => item.status === "pending");
1024
1243
  if (!nextItem) {
@@ -1139,25 +1358,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1139
1358
  });
1140
1359
  }, { immediate: true });
1141
1360
  return (_ctx, _cache) => {
1142
- return openBlock(), createElementBlock("div", _hoisted_1, [
1143
- createElementVNode("div", _hoisted_2, [_cache[5] || (_cache[5] = createElementVNode("h3", { class: "text-base sm:text-lg font-semibold" }, "Attachments", -1)), __props.canUpload ? (openBlock(), createElementBlock("button", {
1144
- key: 0,
1145
- onClick: withModifiers(openFileSelector, ["prevent"]),
1146
- class: "btn btn-sm btn-primary w-full sm:w-auto",
1147
- disabled: isUploading.value,
1148
- type: "button"
1149
- }, [..._cache[4] || (_cache[4] = [createElementVNode("svg", {
1150
- xmlns: "http://www.w3.org/2000/svg",
1151
- class: "h-4 w-4 mr-1",
1152
- fill: "none",
1153
- viewBox: "0 0 24 24",
1154
- stroke: "currentColor"
1155
- }, [createElementVNode("path", {
1156
- "stroke-linecap": "round",
1157
- "stroke-linejoin": "round",
1158
- "stroke-width": "2",
1159
- d: "M12 4v16m8-8H4"
1160
- })], -1), createTextVNode(" Add Files ", -1)])], 8, _hoisted_3)) : createCommentVNode("v-if", true)]),
1361
+ return openBlock(), createElementBlock("div", _hoisted_1$3, [
1161
1362
  createElementVNode("input", {
1162
1363
  ref_key: "fileInput",
1163
1364
  ref: fileInput,
@@ -1166,71 +1367,96 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1166
1367
  class: "hidden",
1167
1368
  onChange: handleFileSelect
1168
1369
  }, null, 544),
1169
- createCommentVNode(" Drag & Drop Zone (hidden on mobile, shown on desktop) "),
1170
- __props.canUpload ? (openBlock(), createElementBlock("div", {
1171
- key: 0,
1172
- class: normalizeClass(["hidden sm:block border-2 border-dashed rounded-lg p-4 sm:p-6 text-center mb-4 transition-colors cursor-pointer", {
1173
- "border-primary bg-primary/5": isDragging.value,
1174
- "border-base-300 hover:border-primary/50": !isDragging.value
1175
- }]),
1176
- onDragover: _cache[0] || (_cache[0] = withModifiers(($event) => isDragging.value = true, ["prevent"])),
1177
- onDragleave: _cache[1] || (_cache[1] = withModifiers(($event) => isDragging.value = false, ["prevent"])),
1178
- onDrop: withModifiers(handleFileDrop, ["prevent"]),
1179
- onClick: withModifiers(openFileSelector, ["prevent", "stop"])
1180
- }, [createElementVNode("div", _hoisted_4, [
1181
- _cache[6] || (_cache[6] = createElementVNode("svg", {
1182
- xmlns: "http://www.w3.org/2000/svg",
1183
- class: "h-8 w-8 sm:h-12 sm:w-12 mb-2 text-primary",
1184
- fill: "none",
1185
- viewBox: "0 0 24 24",
1186
- stroke: "currentColor"
1187
- }, [createElementVNode("path", {
1188
- "stroke-linecap": "round",
1189
- "stroke-linejoin": "round",
1190
- "stroke-width": "2",
1191
- d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"
1192
- })], -1)),
1193
- _cache[7] || (_cache[7] = createElementVNode("p", { class: "text-sm sm:text-lg font-medium" }, "Drag and drop files here", -1)),
1194
- _cache[8] || (_cache[8] = createElementVNode("p", { class: "text-xs sm:text-sm text-base-content/70 mt-1" }, "or click to browse files", -1)),
1195
- !__props.recordId ? (openBlock(), createElementBlock("p", _hoisted_5, " Files will be queued until ticket is created ")) : createCommentVNode("v-if", true)
1196
- ])], 34)) : createCommentVNode("v-if", true),
1370
+ createCommentVNode(" Drag & Drop and Paste: compact button-like on mobile, expanded on desktop "),
1371
+ __props.canUpload ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
1372
+ createCommentVNode(" Drag & Drop Zone "),
1373
+ createElementVNode("div", {
1374
+ class: normalizeClass(["flex flex-col items-center justify-center gap-1 sm:gap-2 py-2.5 px-2 sm:py-6 sm:px-4 rounded-lg border-2 border-dashed transition-colors cursor-pointer touch-manipulation text-center", {
1375
+ "border-primary bg-primary/5": isDragging.value,
1376
+ "border-base-300 hover:border-primary/50 active:border-primary/50": !isDragging.value
1377
+ }]),
1378
+ onDragover: _cache[0] || (_cache[0] = withModifiers(($event) => isDragging.value = true, ["prevent"])),
1379
+ onDragleave: _cache[1] || (_cache[1] = withModifiers(($event) => isDragging.value = false, ["prevent"])),
1380
+ onDrop: withModifiers(handleFileDrop, ["prevent"]),
1381
+ onClick: withModifiers(openFileSelector, ["prevent", "stop"])
1382
+ }, [
1383
+ _cache[4] || (_cache[4] = createElementVNode("svg", {
1384
+ xmlns: "http://www.w3.org/2000/svg",
1385
+ class: "h-5 w-5 sm:h-12 sm:w-12 text-primary shrink-0",
1386
+ fill: "none",
1387
+ viewBox: "0 0 24 24",
1388
+ stroke: "currentColor"
1389
+ }, [createElementVNode("path", {
1390
+ "stroke-linecap": "round",
1391
+ "stroke-linejoin": "round",
1392
+ "stroke-width": "2",
1393
+ d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"
1394
+ })], -1)),
1395
+ _cache[5] || (_cache[5] = createElementVNode("span", { class: "text-xs sm:text-lg font-medium" }, "Browse", -1)),
1396
+ _cache[6] || (_cache[6] = createElementVNode("span", { class: "hidden sm:inline text-xs text-base-content/70" }, "Drag and drop or click", -1)),
1397
+ !__props.recordId ? (openBlock(), createElementBlock("p", _hoisted_3$2, " Queued until ticket is created ")) : createCommentVNode("v-if", true)
1398
+ ], 34),
1399
+ createCommentVNode(" Paste zone - collapse handles visibility via CSS, so no unmount during animation "),
1400
+ createElementVNode("div", {
1401
+ tabindex: "0",
1402
+ role: "textbox",
1403
+ "aria-label": "Paste image here",
1404
+ class: "flex flex-col items-center justify-center gap-1 sm:gap-2 py-2.5 px-2 sm:py-6 sm:px-4 rounded-lg border-2 border-dashed border-base-300 cursor-text outline-none focus:border-primary focus:ring-2 focus:ring-primary/20 focus:bg-primary/5 touch-manipulation text-center",
1405
+ onPaste: handlePaste
1406
+ }, [..._cache[7] || (_cache[7] = [
1407
+ createElementVNode("svg", {
1408
+ xmlns: "http://www.w3.org/2000/svg",
1409
+ class: "h-5 w-5 sm:h-12 sm:w-12 text-primary shrink-0",
1410
+ fill: "none",
1411
+ viewBox: "0 0 24 24",
1412
+ stroke: "currentColor"
1413
+ }, [createElementVNode("path", {
1414
+ "stroke-linecap": "round",
1415
+ "stroke-linejoin": "round",
1416
+ "stroke-width": "2",
1417
+ d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
1418
+ })], -1),
1419
+ createElementVNode("span", { class: "text-xs sm:text-lg font-medium" }, "Paste", -1),
1420
+ createElementVNode("span", { class: "hidden sm:inline text-xs text-base-content/70" }, "Tap to focus, then paste", -1)
1421
+ ])], 32)
1422
+ ])) : createCommentVNode("v-if", true),
1197
1423
  createCommentVNode(" Upload Queue "),
1198
- uploadQueue.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_6, [(openBlock(true), createElementBlock(Fragment, null, renderList(uploadQueue.value, (item) => {
1424
+ uploadQueue.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_4$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(uploadQueue.value, (item) => {
1199
1425
  return openBlock(), createElementBlock("div", {
1200
1426
  key: item.id,
1201
1427
  class: "flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3 p-2 sm:p-3 bg-base-200 rounded-lg"
1202
- }, [createElementVNode("div", _hoisted_7, [
1203
- createElementVNode("div", _hoisted_8, toDisplayString(item.file.name), 1),
1204
- item.status === "uploading" ? (openBlock(), createElementBlock("div", _hoisted_9, [createElementVNode("div", {
1428
+ }, [createElementVNode("div", _hoisted_5$2, [
1429
+ createElementVNode("div", _hoisted_6$2, toDisplayString(item.file.name), 1),
1430
+ item.status === "uploading" ? (openBlock(), createElementBlock("div", _hoisted_7$1, [createElementVNode("div", {
1205
1431
  class: "bg-primary h-1.5 rounded-full transition-all",
1206
1432
  style: normalizeStyle({ width: `${item.progress}%` })
1207
1433
  }, null, 4)])) : createCommentVNode("v-if", true),
1208
- item.status === "error" ? (openBlock(), createElementBlock("div", _hoisted_10, toDisplayString(item.errorMessage), 1)) : createCommentVNode("v-if", true)
1209
- ]), createElementVNode("div", _hoisted_11, [item.status === "error" ? (openBlock(), createElementBlock("button", {
1434
+ item.status === "error" ? (openBlock(), createElementBlock("div", _hoisted_8, toDisplayString(item.errorMessage), 1)) : createCommentVNode("v-if", true)
1435
+ ]), createElementVNode("div", _hoisted_9, [item.status === "error" ? (openBlock(), createElementBlock("button", {
1210
1436
  key: 0,
1211
1437
  onClick: withModifiers(($event) => retryUpload(item), ["prevent"]),
1212
1438
  class: "btn btn-xs btn-ghost flex-1 sm:flex-none",
1213
1439
  type: "button"
1214
- }, " Retry ", 8, _hoisted_12)) : createCommentVNode("v-if", true), item.status !== "uploading" ? (openBlock(), createElementBlock("button", {
1440
+ }, " Retry ", 8, _hoisted_10)) : createCommentVNode("v-if", true), item.status !== "uploading" ? (openBlock(), createElementBlock("button", {
1215
1441
  key: 1,
1216
1442
  onClick: withModifiers(($event) => removeFromQueue(item.id), ["prevent"]),
1217
1443
  class: "btn btn-xs btn-ghost text-error flex-1 sm:flex-none",
1218
1444
  type: "button"
1219
- }, " Remove ", 8, _hoisted_13)) : createCommentVNode("v-if", true)])]);
1445
+ }, " Remove ", 8, _hoisted_11)) : createCommentVNode("v-if", true)])]);
1220
1446
  }), 128))])) : createCommentVNode("v-if", true),
1221
1447
  createCommentVNode(" Attachments List "),
1222
- (attachments.value.length > 0 || unref(attachmentsLoading)) && __props.recordId ? (openBlock(), createElementBlock("div", _hoisted_14, [unref(attachmentsLoading) ? (openBlock(), createElementBlock("div", _hoisted_15, [..._cache[9] || (_cache[9] = [createElementVNode("span", { class: "loading loading-spinner loading-sm" }, null, -1)])])) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(attachments.value, (file) => {
1448
+ (attachments.value.length > 0 || unref(attachmentsLoading)) && __props.recordId ? (openBlock(), createElementBlock("div", _hoisted_12, [unref(attachmentsLoading) ? (openBlock(), createElementBlock("div", _hoisted_13, [..._cache[8] || (_cache[8] = [createElementVNode("span", { class: "loading loading-spinner loading-sm" }, null, -1)])])) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(attachments.value, (file) => {
1223
1449
  return openBlock(), createElementBlock("div", {
1224
1450
  key: file.id,
1225
1451
  class: normalizeClass(["flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3 p-2 sm:p-3 bg-base-100 border border-base-300 rounded-lg hover:bg-base-200 transition-colors", { "cursor-pointer": isImage(file.type) }]),
1226
1452
  onClick: withModifiers(($event) => isImage(file.type) && viewImage(file), ["prevent"])
1227
- }, [createElementVNode("div", _hoisted_17, [createElementVNode("div", _hoisted_18, [createCommentVNode(" Image thumbnail preview "), isImage(file.type) ? (openBlock(), createElementBlock("div", _hoisted_19, [getImageUrlSync(file.id) ? (openBlock(), createElementBlock("img", {
1453
+ }, [createElementVNode("div", _hoisted_15, [createElementVNode("div", _hoisted_16, [createCommentVNode(" Image thumbnail preview "), isImage(file.type) ? (openBlock(), createElementBlock("div", _hoisted_17, [getImageUrlSync(file.id) ? (openBlock(), createElementBlock("img", {
1228
1454
  key: 0,
1229
1455
  src: getImageUrlSync(file.id),
1230
1456
  alt: file.name,
1231
1457
  class: "w-full h-full object-cover",
1232
1458
  onError: handleImageError
1233
- }, null, 40, _hoisted_20)) : (openBlock(), createElementBlock("div", _hoisted_21, [..._cache[10] || (_cache[10] = [createElementVNode("span", { class: "loading loading-spinner loading-xs" }, null, -1)])]))])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" File type badge for non-images "), createElementVNode("div", { class: normalizeClass(["badge badge-sm", getFileTypeBadgeClass(file.type)]) }, toDisplayString(getFileTypeLabel(file.type)), 3)], 2112))]), createElementVNode("div", _hoisted_22, [createElementVNode("div", _hoisted_23, toDisplayString(file.name), 1), createElementVNode("div", _hoisted_24, toDisplayString(formatFileSize(file.size)) + " • " + toDisplayString(formatDate(file.uploadedAt)), 1)])]), createElementVNode("div", {
1459
+ }, null, 40, _hoisted_18)) : (openBlock(), createElementBlock("div", _hoisted_19, [..._cache[9] || (_cache[9] = [createElementVNode("span", { class: "loading loading-spinner loading-xs" }, null, -1)])]))])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" File type badge for non-images "), createElementVNode("div", { class: normalizeClass(["badge badge-sm", getFileTypeBadgeClass(file.type)]) }, toDisplayString(getFileTypeLabel(file.type)), 3)], 2112))]), createElementVNode("div", _hoisted_20, [createElementVNode("div", _hoisted_21, toDisplayString(file.name), 1), createElementVNode("div", _hoisted_22, toDisplayString(formatFileSize(file.size)) + " • " + toDisplayString(formatDate(file.uploadedAt)), 1)])]), createElementVNode("div", {
1234
1460
  class: "flex gap-1 justify-end sm:justify-start",
1235
1461
  onClick: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"]))
1236
1462
  }, [
@@ -1240,7 +1466,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1240
1466
  class: "btn btn-sm btn-ghost btn-circle",
1241
1467
  title: "View Image",
1242
1468
  type: "button"
1243
- }, [..._cache[11] || (_cache[11] = [createElementVNode("svg", {
1469
+ }, [..._cache[10] || (_cache[10] = [createElementVNode("svg", {
1244
1470
  xmlns: "http://www.w3.org/2000/svg",
1245
1471
  class: "h-4 w-4",
1246
1472
  fill: "none",
@@ -1256,13 +1482,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1256
1482
  "stroke-linejoin": "round",
1257
1483
  "stroke-width": "2",
1258
1484
  d: "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
1259
- })], -1)])], 8, _hoisted_25)) : createCommentVNode("v-if", true),
1485
+ })], -1)])], 8, _hoisted_23)) : createCommentVNode("v-if", true),
1260
1486
  createElementVNode("button", {
1261
1487
  onClick: withModifiers(($event) => downloadFile(file, $event), ["prevent"]),
1262
1488
  class: "btn btn-sm btn-ghost btn-circle",
1263
1489
  title: "Download",
1264
1490
  type: "button"
1265
- }, [..._cache[12] || (_cache[12] = [createElementVNode("svg", {
1491
+ }, [..._cache[11] || (_cache[11] = [createElementVNode("svg", {
1266
1492
  xmlns: "http://www.w3.org/2000/svg",
1267
1493
  class: "h-4 w-4",
1268
1494
  fill: "none",
@@ -1273,14 +1499,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1273
1499
  "stroke-linejoin": "round",
1274
1500
  "stroke-width": "2",
1275
1501
  d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
1276
- })], -1)])], 8, _hoisted_26),
1502
+ })], -1)])], 8, _hoisted_24),
1277
1503
  __props.canDelete ? (openBlock(), createElementBlock("button", {
1278
1504
  key: 1,
1279
1505
  onClick: withModifiers(($event) => confirmDelete(file), ["prevent"]),
1280
1506
  class: "btn btn-sm btn-ghost btn-circle text-error",
1281
1507
  title: "Delete",
1282
1508
  type: "button"
1283
- }, [..._cache[13] || (_cache[13] = [createElementVNode("svg", {
1509
+ }, [..._cache[12] || (_cache[12] = [createElementVNode("svg", {
1284
1510
  xmlns: "http://www.w3.org/2000/svg",
1285
1511
  class: "h-4 w-4",
1286
1512
  fill: "none",
@@ -1291,9 +1517,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1291
1517
  "stroke-linejoin": "round",
1292
1518
  "stroke-width": "2",
1293
1519
  d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
1294
- })], -1)])], 8, _hoisted_27)) : createCommentVNode("v-if", true)
1295
- ])], 10, _hoisted_16);
1296
- }), 128))])) : !unref(attachmentsLoading) && __props.recordId ? (openBlock(), createElementBlock("div", _hoisted_28, [..._cache[14] || (_cache[14] = [createElementVNode("svg", {
1520
+ })], -1)])], 8, _hoisted_25)) : createCommentVNode("v-if", true)
1521
+ ])], 10, _hoisted_14);
1522
+ }), 128))])) : !unref(attachmentsLoading) && __props.recordId ? (openBlock(), createElementBlock("div", _hoisted_26, [..._cache[13] || (_cache[13] = [createElementVNode("svg", {
1297
1523
  xmlns: "http://www.w3.org/2000/svg",
1298
1524
  class: "h-12 w-12 mx-auto mb-2 opacity-50",
1299
1525
  fill: "none",
@@ -1344,8 +1570,245 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1344
1570
  };
1345
1571
  }
1346
1572
  });
1347
- var InlineAttachments_default = _sfc_main;
1573
+ var InlineAttachments_default = _sfc_main$3;
1574
+
1575
+ //#endregion
1576
+ //#region src/slices/support_ticket/shared/SupportTicketApprovalBadge.vue
1577
+ const _hoisted_1$2 = ["aria-label"];
1578
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1579
+ __name: "SupportTicketApprovalBadge",
1580
+ props: {
1581
+ approvalStatus: {},
1582
+ size: { default: "md" },
1583
+ variant: { default: "default" }
1584
+ },
1585
+ setup(__props) {
1586
+ /**
1587
+ * SupportTicketApprovalBadge - A reusable Vue component for displaying support ticket approval status
1588
+ * as color-coded badges with consistent DaisyUI styling and accessibility features.
1589
+ *
1590
+ * @example
1591
+ * <SupportTicketApprovalBadge :approvalStatus="'PENDING'" size="md" />
1592
+ * <SupportTicketApprovalBadge :approvalStatus="'APPROVED'" size="sm" variant="outline" />
1593
+ */
1594
+ const props = __props;
1595
+ /**
1596
+ * Configuration for each approval status badge
1597
+ */
1598
+ const approvalConfig = {
1599
+ PENDING: {
1600
+ color: "badge-warning",
1601
+ text: "Pending",
1602
+ ariaLabel: "Approval: Awaiting staff decision"
1603
+ },
1604
+ APPROVED: {
1605
+ color: "badge-success",
1606
+ text: "Approved",
1607
+ ariaLabel: "Approval: Approved by staff"
1608
+ },
1609
+ REJECTED: {
1610
+ color: "badge-error",
1611
+ text: "Rejected",
1612
+ ariaLabel: "Approval: Rejected by staff"
1613
+ },
1614
+ INTERNAL: {
1615
+ color: "badge-info",
1616
+ text: "Internal",
1617
+ ariaLabel: "Approval: Internal staff ticket"
1618
+ }
1619
+ };
1620
+ const getApprovalConfig = (approvalStatus) => {
1621
+ const config$1 = approvalConfig[approvalStatus];
1622
+ if (!config$1) return {
1623
+ color: "badge-neutral",
1624
+ text: approvalStatus || "Unknown",
1625
+ ariaLabel: `Approval: ${approvalStatus || "Unknown status"}`
1626
+ };
1627
+ return config$1;
1628
+ };
1629
+ const config = computed(() => getApprovalConfig(props.approvalStatus));
1630
+ const badgeClasses = computed(() => {
1631
+ const baseClasses = ["badge", "text-xs"];
1632
+ baseClasses.push(config.value.color);
1633
+ if (props.size === "sm") baseClasses.push("badge-sm", "text-xs");
1634
+ else if (props.size === "lg") baseClasses.push("badge-lg", "text-sm");
1635
+ else baseClasses.push("text-xs", "sm:text-sm");
1636
+ if (props.variant === "outline") baseClasses.push("badge-outline");
1637
+ return baseClasses.join(" ");
1638
+ });
1639
+ const displayText = computed(() => config.value.text);
1640
+ const ariaLabel = computed(() => config.value.ariaLabel);
1641
+ return (_ctx, _cache) => {
1642
+ return openBlock(), createElementBlock("div", {
1643
+ class: normalizeClass(badgeClasses.value),
1644
+ "aria-label": ariaLabel.value,
1645
+ role: "status"
1646
+ }, toDisplayString(displayText.value), 11, _hoisted_1$2);
1647
+ };
1648
+ }
1649
+ });
1650
+ var SupportTicketApprovalBadge_default = _sfc_main$2;
1651
+
1652
+ //#endregion
1653
+ //#region src/slices/support_ticket/utils/formatTicketDate.ts
1654
+ /**
1655
+ * Takes an ISO date string and returns:
1656
+ * - formatted: "Jan 15, 2025"
1657
+ * - relative: "3 days ago" / "2 hours ago" / "just now"
1658
+ */
1659
+ function formatTicketDate(isoString) {
1660
+ const date = new Date(isoString);
1661
+ if (isNaN(date.getTime())) return {
1662
+ formatted: isoString,
1663
+ relative: ""
1664
+ };
1665
+ const formatted = date.toLocaleDateString(void 0, {
1666
+ year: "numeric",
1667
+ month: "short",
1668
+ day: "numeric"
1669
+ });
1670
+ const diffMs = (/* @__PURE__ */ new Date()).getTime() - date.getTime();
1671
+ const diffSec = Math.floor(diffMs / 1e3);
1672
+ const diffMin = Math.floor(diffSec / 60);
1673
+ const diffHour = Math.floor(diffMin / 60);
1674
+ const diffDay = Math.floor(diffHour / 24);
1675
+ let relative;
1676
+ if (Math.abs(diffSec) < 60) relative = "just now";
1677
+ else if (diffSec < 0) {
1678
+ const sec = Math.abs(diffSec);
1679
+ const min = Math.floor(sec / 60);
1680
+ const hr = Math.floor(min / 60);
1681
+ const day = Math.floor(hr / 24);
1682
+ if (min < 60) relative = `in ${min} minute${min === 1 ? "" : "s"}`;
1683
+ else if (hr < 24) relative = `in ${hr} hour${hr === 1 ? "" : "s"}`;
1684
+ else relative = `in ${day} day${day === 1 ? "" : "s"}`;
1685
+ } else if (diffMin < 60) relative = diffMin === 1 ? "1 minute ago" : `${diffMin} minutes ago`;
1686
+ else if (diffHour < 24) relative = diffHour === 1 ? "1 hour ago" : `${diffHour} hours ago`;
1687
+ else if (diffDay < 30) relative = diffDay === 1 ? "1 day ago" : `${diffDay} days ago`;
1688
+ else {
1689
+ const diffWeeks = Math.floor(diffDay / 7);
1690
+ const diffMonths = Math.floor(diffDay / 30);
1691
+ if (diffWeeks < 4) relative = diffWeeks === 1 ? "1 week ago" : `${diffWeeks} weeks ago`;
1692
+ else if (diffMonths < 12) relative = diffMonths === 1 ? "1 month ago" : `${diffMonths} months ago`;
1693
+ else {
1694
+ const diffYears = Math.floor(diffMonths / 12);
1695
+ relative = diffYears === 1 ? "1 year ago" : `${diffYears} years ago`;
1696
+ }
1697
+ }
1698
+ return {
1699
+ formatted,
1700
+ relative
1701
+ };
1702
+ }
1703
+
1704
+ //#endregion
1705
+ //#region src/slices/support_ticket/shared/TimelineItem.vue
1706
+ const _hoisted_1$1 = { class: "flex items-center gap-2 mb-3 flex-wrap" };
1707
+ const _hoisted_2$1 = {
1708
+ key: 0,
1709
+ class: "badge badge-warning badge-sm gap-1 shrink-0",
1710
+ "aria-label": "Internal note"
1711
+ };
1712
+ const _hoisted_3$1 = {
1713
+ key: 1,
1714
+ class: "w-6 h-6 rounded-full bg-primary text-primary-content text-xs flex items-center justify-center shrink-0",
1715
+ "aria-hidden": "true"
1716
+ };
1717
+ const _hoisted_4$1 = { class: "font-semibold text-sm" };
1718
+ const _hoisted_5$1 = { class: "text-base-content/50 text-sm" };
1719
+ const _hoisted_6$1 = { class: "text-sm text-base-content break-words whitespace-pre-wrap" };
1720
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1721
+ __name: "TimelineItem",
1722
+ props: {
1723
+ authorName: {},
1724
+ createdAt: {},
1725
+ variant: {}
1726
+ },
1727
+ setup(__props) {
1728
+ const props = __props;
1729
+ const authorInitial = computed(() => {
1730
+ return (props.authorName?.trim() || "?").charAt(0).toUpperCase();
1731
+ });
1732
+ const relativeTime = computed(() => {
1733
+ return props.createdAt ? formatTicketDate(props.createdAt).relative : "";
1734
+ });
1735
+ return (_ctx, _cache) => {
1736
+ 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, [
1737
+ __props.variant === "internal" ? (openBlock(), createElementBlock("span", _hoisted_2$1, [..._cache[0] || (_cache[0] = [createElementVNode("svg", {
1738
+ xmlns: "http://www.w3.org/2000/svg",
1739
+ fill: "none",
1740
+ viewBox: "0 0 24 24",
1741
+ "stroke-width": "1.5",
1742
+ stroke: "currentColor",
1743
+ class: "w-3.5 h-3.5"
1744
+ }, [createElementVNode("path", {
1745
+ "stroke-linecap": "round",
1746
+ "stroke-linejoin": "round",
1747
+ 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"
1748
+ })], -1), createTextVNode(" Internal ", -1)])])) : (openBlock(), createElementBlock("span", _hoisted_3$1, toDisplayString(authorInitial.value), 1)),
1749
+ createElementVNode("span", _hoisted_4$1, toDisplayString(__props.authorName), 1),
1750
+ createElementVNode("span", _hoisted_5$1, "· " + toDisplayString(relativeTime.value), 1)
1751
+ ]), createElementVNode("div", _hoisted_6$1, [renderSlot(_ctx.$slots, "default")])], 2);
1752
+ };
1753
+ }
1754
+ });
1755
+ var TimelineItem_default = _sfc_main$1;
1756
+
1757
+ //#endregion
1758
+ //#region src/slices/support_ticket/shared/TimelineSystemEvent.vue
1759
+ const _hoisted_1 = { class: "py-2 flex items-start gap-2 text-sm" };
1760
+ const _hoisted_2 = { class: "flex-1 min-w-0" };
1761
+ const _hoisted_3 = { class: "font-medium text-base-content/70" };
1762
+ const _hoisted_4 = { class: "text-base-content/50 ml-1" };
1763
+ const _hoisted_5 = { class: "line-through text-base-content/40 ml-1" };
1764
+ const _hoisted_6 = { class: "ml-1" };
1765
+ const _hoisted_7 = { class: "text-base-content/30 text-xs" };
1766
+ const _sfc_main = /* @__PURE__ */ defineComponent({
1767
+ __name: "TimelineSystemEvent",
1768
+ props: {
1769
+ author: {},
1770
+ message: {},
1771
+ timestamp: {},
1772
+ oldValue: {},
1773
+ newValue: {}
1774
+ },
1775
+ setup(__props) {
1776
+ const props = __props;
1777
+ const relativeTime = computed(() => {
1778
+ return props.timestamp ? formatTicketDate(props.timestamp).relative : "";
1779
+ });
1780
+ return (_ctx, _cache) => {
1781
+ return openBlock(), createElementBlock("div", _hoisted_1, [_cache[1] || (_cache[1] = createElementVNode("svg", {
1782
+ xmlns: "http://www.w3.org/2000/svg",
1783
+ fill: "none",
1784
+ viewBox: "0 0 24 24",
1785
+ "stroke-width": "1.5",
1786
+ stroke: "currentColor",
1787
+ class: "w-4 h-4 text-base-content/30 shrink-0 mt-0.5",
1788
+ "aria-hidden": "true"
1789
+ }, [createElementVNode("path", {
1790
+ "stroke-linecap": "round",
1791
+ "stroke-linejoin": "round",
1792
+ 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"
1793
+ }), createElementVNode("path", {
1794
+ "stroke-linecap": "round",
1795
+ "stroke-linejoin": "round",
1796
+ d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z"
1797
+ })], -1)), createElementVNode("div", _hoisted_2, [
1798
+ createElementVNode("span", _hoisted_3, toDisplayString(__props.author), 1),
1799
+ createElementVNode("span", _hoisted_4, [__props.oldValue && __props.newValue ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
1800
+ createTextVNode(toDisplayString(__props.message) + " ", 1),
1801
+ createElementVNode("span", _hoisted_5, toDisplayString(__props.oldValue), 1),
1802
+ _cache[0] || (_cache[0] = createElementVNode("span", { class: "mx-1" }, "→", -1)),
1803
+ createElementVNode("span", null, toDisplayString(__props.newValue), 1)
1804
+ ], 64)) : __props.newValue ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(__props.message) + " ", 1), createElementVNode("span", _hoisted_6, toDisplayString(__props.newValue), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [createTextVNode(toDisplayString(__props.message), 1)], 64))]),
1805
+ createElementVNode("span", _hoisted_7, " · " + toDisplayString(relativeTime.value), 1)
1806
+ ])]);
1807
+ };
1808
+ }
1809
+ });
1810
+ var TimelineSystemEvent_default = _sfc_main;
1348
1811
 
1349
1812
  //#endregion
1350
- export { ImageModal_default as n, ConfirmDialog_default as r, InlineAttachments_default as t };
1351
- //# sourceMappingURL=InlineAttachments-I39rOvip.js.map
1813
+ export { InlineAttachments_default as a, SupportTicketTypeBadge_default as c, ConfirmDialog_default as d, SupportTicketApprovalBadge_default as i, SupportTicketPriorityBadge_default as l, TimelineItem_default as n, formatCustomerCreditValue as o, formatTicketDate as r, formatStaffCreditValue as s, TimelineSystemEvent_default as t, ImageModal_default as u };
1814
+ //# sourceMappingURL=TimelineSystemEvent-B69B3eeL.js.map