@dragonmastery/dragoncore-vue 0.0.18 → 0.0.20

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 (178) hide show
  1. package/dist/Appearance-D5pwxuf4.js +3 -0
  2. package/dist/{Appearance-BfPdKMXw.js → Appearance-DxWTyx1M.js} +1 -1
  3. package/dist/{Appearance-BfPdKMXw.js.map → Appearance-DxWTyx1M.js.map} +1 -1
  4. package/dist/{ChangePasswordPage-D2Ci00Sh.js → ChangePasswordPage-DBXchGfn.js} +2 -2
  5. package/dist/{ChangePasswordPage-D2Ci00Sh.js.map → ChangePasswordPage-DBXchGfn.js.map} +1 -1
  6. package/dist/ChangePasswordPage-Re323roR.js +6 -0
  7. package/dist/ConsentRequired-qMNT-U2T.js +204 -0
  8. package/dist/ConsentRequired-qMNT-U2T.js.map +1 -0
  9. package/dist/CreateTeamForm-DXN1hoJh.js +34 -0
  10. package/dist/CreateTeamMemberForm-CLHT1HN_.js +34 -0
  11. package/dist/{CreateUserPage-DbT_l32W.js → CreateUserPage-B0iHLsm5.js} +2 -2
  12. package/dist/{CreateUserPage-DbT_l32W.js.map → CreateUserPage-B0iHLsm5.js.map} +1 -1
  13. package/dist/CreateUserPage-C8107z_O.js +6 -0
  14. package/dist/CreditBalanceDashboard-D7MFKfh6.js +34 -0
  15. package/dist/CreditManagement-A8hVPoSp.js +34 -0
  16. package/dist/CustomerCreateSupportTicketForm-B8JQNC1I.js +34 -0
  17. package/dist/{CustomerSupportTicketDetailPage-CthS9akm.js → CustomerSupportTicketDetailPage-DyJTKtLU.js} +9 -9
  18. package/dist/{CustomerSupportTicketDetailPage-CthS9akm.js.map → CustomerSupportTicketDetailPage-DyJTKtLU.js.map} +1 -1
  19. package/dist/CustomerSupportTicketList-DR-UfcGr.js +34 -0
  20. package/dist/CustomerSupportTicketParent-C-KzT4qQ.js +7 -0
  21. package/dist/{CustomerSupportTicketParent-iBV1KRKL.js → CustomerSupportTicketParent-CldxkQ75.js} +4 -4
  22. package/dist/{CustomerSupportTicketParent-iBV1KRKL.js.map → CustomerSupportTicketParent-CldxkQ75.js.map} +1 -1
  23. package/dist/CustomerSupportTicketSuccess-SBdIcS-_.js +34 -0
  24. package/dist/EditTeamForm-BDQkhBbx.js +34 -0
  25. package/dist/EditTeamMemberForm-CBxFLoIy.js +6 -0
  26. package/dist/{EditTeamMemberForm-Cy8nzoUb.js → EditTeamMemberForm-CiNb4nNG.js} +2 -2
  27. package/dist/{EditTeamMemberForm-Cy8nzoUb.js.map → EditTeamMemberForm-CiNb4nNG.js.map} +1 -1
  28. package/dist/EditUserPage-BWKrAKZZ.js +7 -0
  29. package/dist/{EditUserPage-CIRqNko-.js → EditUserPage-DpV3dm-c.js} +4 -4
  30. package/dist/{EditUserPage-CIRqNko-.js.map → EditUserPage-DpV3dm-c.js.map} +1 -1
  31. package/dist/ForgotPassword-D3OQqbrD.js +7 -0
  32. package/dist/{ForgotPassword-CJg_buPl.js → ForgotPassword-roKwDfce.js} +3 -3
  33. package/dist/{ForgotPassword-CJg_buPl.js.map → ForgotPassword-roKwDfce.js.map} +1 -1
  34. package/dist/{LoginForm-DyHmiC1I.js → LoginForm-BGDymDnO.js} +4 -4
  35. package/dist/{LoginForm-DyHmiC1I.js.map → LoginForm-BGDymDnO.js.map} +1 -1
  36. package/dist/LoginForm-C97dUsU3.js +7 -0
  37. package/dist/Logout-Cbw1SacV.js +71 -0
  38. package/dist/Logout-Cbw1SacV.js.map +1 -0
  39. package/dist/Logout-DY3iorah.js +7 -0
  40. package/dist/{MfaSetup-D80HhwEz.js → MfaSetup-CwYXnvgW.js} +4 -4
  41. package/dist/{MfaSetup-D80HhwEz.js.map → MfaSetup-CwYXnvgW.js.map} +1 -1
  42. package/dist/MfaSetup-DAQV8MhP.js +8 -0
  43. package/dist/{MfaVerify-BEd-f6oV.js → MfaVerify-CIlen2i5.js} +5 -5
  44. package/dist/{MfaVerify-BEd-f6oV.js.map → MfaVerify-CIlen2i5.js.map} +1 -1
  45. package/dist/MfaVerify-D-_oX6gL.js +8 -0
  46. package/dist/RecordVersionViewer-BWZ78vvE.js +490 -0
  47. package/dist/RecordVersionViewer-BWZ78vvE.js.map +1 -0
  48. package/dist/{ResetPassword-4HLdgM7s.js → ResetPassword-BgKyXQ4q.js} +3 -3
  49. package/dist/{ResetPassword-4HLdgM7s.js.map → ResetPassword-BgKyXQ4q.js.map} +1 -1
  50. package/dist/ResetPassword-CkPqUFbq.js +7 -0
  51. package/dist/{SavedFiltersPage-p0qGRIuN.js → SavedFiltersPage-BlzfWkaj.js} +31 -29
  52. package/dist/{SavedFiltersPage-p0qGRIuN.js.map → SavedFiltersPage-BlzfWkaj.js.map} +1 -1
  53. package/dist/Signup-C2FshPnc.js +8 -0
  54. package/dist/Signup-qBqsSYVz.js +213 -0
  55. package/dist/Signup-qBqsSYVz.js.map +1 -0
  56. package/dist/SignupConsentFlow-DG2IGikE.js +243 -0
  57. package/dist/SignupConsentFlow-DG2IGikE.js.map +1 -0
  58. package/dist/SignupRequirementsPage-DnLpQfB8.js +360 -0
  59. package/dist/SignupRequirementsPage-DnLpQfB8.js.map +1 -0
  60. package/dist/StaffCreateSupportTicketForm-BrGB7tqD.js +34 -0
  61. package/dist/{StaffSupportTicketDetailPage-TaAPQARa.js → StaffSupportTicketDetailPage-D0SjH36N.js} +11 -11
  62. package/dist/{StaffSupportTicketDetailPage-TaAPQARa.js.map → StaffSupportTicketDetailPage-D0SjH36N.js.map} +1 -1
  63. package/dist/StaffSupportTicketList-HA4NlkKE.js +34 -0
  64. package/dist/StaffSupportTicketParent-BTbpNdfc.js +7 -0
  65. package/dist/{StaffSupportTicketParent-KYzy4eb4.js → StaffSupportTicketParent-Dk6RFRMt.js} +4 -4
  66. package/dist/{StaffSupportTicketParent-KYzy4eb4.js.map → StaffSupportTicketParent-Dk6RFRMt.js.map} +1 -1
  67. package/dist/StaffSupportTicketSuccess-CTeMG_iK.js +34 -0
  68. package/dist/{SupportStaffPage-D_YsHZZa.js → SupportStaffPage-DFcgP8iE.js} +7 -7
  69. package/dist/{SupportStaffPage-D_YsHZZa.js.map → SupportStaffPage-DFcgP8iE.js.map} +1 -1
  70. package/dist/{SupportTicketDevLifecycleBadge-B2NysMAj.js → SupportTicketDevLifecycleBadge-EMrQHfyG.js} +1 -1
  71. package/dist/{SupportTicketDevLifecycleBadge-B2NysMAj.js.map → SupportTicketDevLifecycleBadge-EMrQHfyG.js.map} +1 -1
  72. package/dist/{SupportTicketMaintenancePage-CpK1esq2.js → SupportTicketMaintenancePage-BCW0eZxV.js} +4 -4
  73. package/dist/{SupportTicketMaintenancePage-CpK1esq2.js.map → SupportTicketMaintenancePage-BCW0eZxV.js.map} +1 -1
  74. package/dist/TeamAttachmentsTab-IaRtuF55.js +34 -0
  75. package/dist/TeamHistoryTab-DWcVhkwC.js +4 -0
  76. package/dist/{TeamHistoryTab-BQ-eXtiw.js → TeamHistoryTab-PVS8A-6K.js} +3 -3
  77. package/dist/{TeamHistoryTab-BQ-eXtiw.js.map → TeamHistoryTab-PVS8A-6K.js.map} +1 -1
  78. package/dist/TeamList-BNo_ime8.js +34 -0
  79. package/dist/TeamMemberList-DJKYxfsx.js +34 -0
  80. package/dist/TeamMemberParent-Bk6dqXsh.js +34 -0
  81. package/dist/{TeamNotesTab-Dj12Q2gD.js → TeamNotesTab-D7ELC1EW.js} +5 -5
  82. package/dist/{TeamNotesTab-Dj12Q2gD.js.map → TeamNotesTab-D7ELC1EW.js.map} +1 -1
  83. package/dist/TeamNotesTab-JRWYpqRJ.js +7 -0
  84. package/dist/TeamParent-TSWT_0bK.js +34 -0
  85. package/dist/{TimelineNoteInput-DGDgyGe-.js → TimelineNoteInput-D-NjzUiF.js} +2 -2
  86. package/dist/{TimelineNoteInput-DGDgyGe-.js.map → TimelineNoteInput-D-NjzUiF.js.map} +1 -1
  87. package/dist/{TimelineSystemEvent-CBwUl5G8.js → TimelineSystemEvent-Cc6HMeO3.js} +4 -4
  88. package/dist/{TimelineSystemEvent-CBwUl5G8.js.map → TimelineSystemEvent-Cc6HMeO3.js.map} +1 -1
  89. package/dist/UserListPage-BjHbDpvC.js +4 -0
  90. package/dist/{UserListPage-D-IdlsHK.js → UserListPage-DdJFeLP1.js} +3 -3
  91. package/dist/{UserListPage-D-IdlsHK.js.map → UserListPage-DdJFeLP1.js.map} +1 -1
  92. package/dist/{UserProfilePage-DMwDVgXa.js → UserProfilePage-BhCxv0N9.js} +4 -4
  93. package/dist/{UserProfilePage-DMwDVgXa.js.map → UserProfilePage-BhCxv0N9.js.map} +1 -1
  94. package/dist/UserProfilePage-BxIMig4s.js +7 -0
  95. package/dist/VerifyEmail-BYSYk5ef.js +7 -0
  96. package/dist/{VerifyEmail-CHfTzrHg.js → VerifyEmail-DXYcjCX4.js} +57 -21
  97. package/dist/VerifyEmail-DXYcjCX4.js.map +1 -0
  98. package/dist/{VerifyEmailRequired-BCKREd_C.js → VerifyEmailRequired-DeMYFS0I.js} +22 -8
  99. package/dist/VerifyEmailRequired-DeMYFS0I.js.map +1 -0
  100. package/dist/ViewTeam-DIxy437n.js +34 -0
  101. package/dist/ViewTeamMember-DIaIqfbX.js +34 -0
  102. package/dist/{convertToLocalDateTime-mKs5eC9T.js → convertToLocalDateTime-CFhtN6PI.js} +12 -2
  103. package/dist/convertToLocalDateTime-CFhtN6PI.js.map +1 -0
  104. package/dist/{displayIdFormatter-rSbbsHIX.js → displayIdFormatter-Dz900Awr.js} +1 -1
  105. package/dist/{displayIdFormatter-rSbbsHIX.js.map → displayIdFormatter-Dz900Awr.js.map} +1 -1
  106. package/dist/{extractRpcErrorMessage-pP3v8kKE.js → extractRpcErrorMessage-Di8E8-Wh.js} +1 -1
  107. package/dist/{extractRpcErrorMessage-pP3v8kKE.js.map → extractRpcErrorMessage-Di8E8-Wh.js.map} +1 -1
  108. package/dist/index.d.ts +857 -801
  109. package/dist/index.js +35 -33
  110. package/dist/{mfaSchema-_vbG9jiT.js → mfaSchema-s-T8m-7-.js} +1 -1
  111. package/dist/{mfaSchema-_vbG9jiT.js.map → mfaSchema-s-T8m-7-.js.map} +1 -1
  112. package/dist/{src-B5eswi_J.js → src--FuqlDhU.js} +405 -804
  113. package/dist/src--FuqlDhU.js.map +1 -0
  114. package/dist/{useBreadcrumbs-B-W-miq6.js → useBreadcrumbs-qB6ghsAf.js} +1 -1
  115. package/dist/{useBreadcrumbs-B-W-miq6.js.map → useBreadcrumbs-qB6ghsAf.js.map} +1 -1
  116. package/dist/{useMutation-DzRSXPB1.js → useMutation-Dhx2gMgS.js} +3 -3
  117. package/dist/{useMutation-DzRSXPB1.js.map → useMutation-Dhx2gMgS.js.map} +1 -1
  118. package/dist/{useQuery-bvJabe9Q.js → useQuery-DxmMxM8z.js} +5 -5
  119. package/dist/useQuery-DxmMxM8z.js.map +1 -0
  120. package/dist/{useQueryCache-DIGf3fCM.js → useQueryCache-CJKZquh6.js} +2 -2
  121. package/dist/{useQueryCache-DIGf3fCM.js.map → useQueryCache-CJKZquh6.js.map} +1 -1
  122. package/dist/{useReturnUrl-BBoPnDR3.js → useReturnUrl-qFeazn-G.js} +17 -2
  123. package/dist/useReturnUrl-qFeazn-G.js.map +1 -0
  124. package/dist/{useRpcAuth-SgNzCAPa.js → useRpcAuth-Bse-lggK.js} +23 -10
  125. package/dist/useRpcAuth-Bse-lggK.js.map +1 -0
  126. package/dist/useSignupPendingData-BWHwUHhL.js +47 -0
  127. package/dist/useSignupPendingData-BWHwUHhL.js.map +1 -0
  128. package/package.json +5 -2
  129. package/src/daisyui.css +1 -0
  130. package/dist/Appearance-CohgRf-_.js +0 -3
  131. package/dist/ChangePasswordPage-DqnWhaUa.js +0 -6
  132. package/dist/CreateTeamForm-LadKAxsM.js +0 -32
  133. package/dist/CreateTeamMemberForm-eWL__TEt.js +0 -32
  134. package/dist/CreateUserPage-cduuWl9g.js +0 -6
  135. package/dist/CreditBalanceDashboard-CgRRO6MD.js +0 -32
  136. package/dist/CreditManagement-BBb_Xumq.js +0 -32
  137. package/dist/CustomerCreateSupportTicketForm-yfyeXr0V.js +0 -32
  138. package/dist/CustomerSupportTicketList-Zzsg1FtO.js +0 -32
  139. package/dist/CustomerSupportTicketParent-CqR8lF7r.js +0 -7
  140. package/dist/CustomerSupportTicketSuccess-BPyydSLQ.js +0 -32
  141. package/dist/EditTeamForm-D0wZKYm2.js +0 -32
  142. package/dist/EditTeamMemberForm-JuRGiWOn.js +0 -6
  143. package/dist/EditUserPage-Dl6d3Cuh.js +0 -7
  144. package/dist/ForgotPassword-rSN-8EC4.js +0 -7
  145. package/dist/LoginForm-YCzdrekw.js +0 -7
  146. package/dist/Logout-C6pWyTIm.js +0 -41
  147. package/dist/Logout-C6pWyTIm.js.map +0 -1
  148. package/dist/Logout-Ctc8b-B0.js +0 -6
  149. package/dist/MfaSetup-xNmNjSh1.js +0 -8
  150. package/dist/MfaVerify-C0COXH_W.js +0 -8
  151. package/dist/ResetPassword-BCzMTXpT.js +0 -7
  152. package/dist/Signup-Ct0m0x78.js +0 -137
  153. package/dist/Signup-Ct0m0x78.js.map +0 -1
  154. package/dist/Signup-DNEklGpK.js +0 -7
  155. package/dist/StaffCreateSupportTicketForm-CxpKnqCq.js +0 -32
  156. package/dist/StaffSupportTicketList-BuKBTk2v.js +0 -32
  157. package/dist/StaffSupportTicketParent-Lkn-5u7C.js +0 -7
  158. package/dist/StaffSupportTicketSuccess-BD1Xsnx1.js +0 -32
  159. package/dist/TeamAttachmentsTab-DA_MBYj8.js +0 -32
  160. package/dist/TeamHistoryTab-lz2ouNyP.js +0 -4
  161. package/dist/TeamList-T3mZJTzq.js +0 -32
  162. package/dist/TeamMemberList-BW4qqzC1.js +0 -32
  163. package/dist/TeamMemberParent-Wcht0pIz.js +0 -32
  164. package/dist/TeamNotesTab-aGD8O49y.js +0 -7
  165. package/dist/TeamParent-BkhaJwud.js +0 -32
  166. package/dist/UserListPage-C9zUjaOK.js +0 -4
  167. package/dist/UserProfilePage-D52_Q5yf.js +0 -7
  168. package/dist/VerifyEmail-5thal4d_.js +0 -7
  169. package/dist/VerifyEmail-CHfTzrHg.js.map +0 -1
  170. package/dist/VerifyEmailRequired-BCKREd_C.js.map +0 -1
  171. package/dist/ViewTeam-g7WhYvsR.js +0 -32
  172. package/dist/ViewTeamMember-ByCSsl5k.js +0 -32
  173. package/dist/convertToLocalDateTime-mKs5eC9T.js.map +0 -1
  174. package/dist/src-B5eswi_J.js.map +0 -1
  175. package/dist/useQuery-bvJabe9Q.js.map +0 -1
  176. package/dist/useReturnUrl-BBoPnDR3.js.map +0 -1
  177. package/dist/useRpcAuth-SgNzCAPa.js.map +0 -1
  178. /package/dist/{TeamMembersTab-CpE9BaCi.js → TeamMembersTab-CBB2Yl_I.js} +0 -0
@@ -1,17 +1,18 @@
1
- import { c as setRefreshTokenHandler, i as setRouter, l as useUserSessionStore, m as useEnv, p as logger, r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-SgNzCAPa.js";
2
- import { t as useMutation } from "./useMutation-DzRSXPB1.js";
3
- import { t as useQuery } from "./useQuery-bvJabe9Q.js";
1
+ import { c as setRefreshTokenHandler, i as setRouter, l as useUserSessionStore, m as useEnv, p as logger, r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-Bse-lggK.js";
2
+ import { t as useMutation } from "./useMutation-Dhx2gMgS.js";
3
+ import { t as useQuery } from "./useQuery-DxmMxM8z.js";
4
4
  import { t as AppLink_default } from "./AppLink-CHMMrSFI.js";
5
- import { a as SupportTicketTypeBadge_default, c as formatCustomerCreditValue, d as ConfirmDialog_default, i as SupportTicketApprovalBadge_default, l as formatStaffCreditValue, o as SupportTicketPriorityBadge_default, s as InlineAttachments_default } from "./TimelineSystemEvent-CBwUl5G8.js";
5
+ import { a as SupportTicketTypeBadge_default, c as formatCustomerCreditValue, d as ConfirmDialog_default, i as SupportTicketApprovalBadge_default, l as formatStaffCreditValue, o as SupportTicketPriorityBadge_default, s as InlineAttachments_default } from "./TimelineSystemEvent-Cc6HMeO3.js";
6
6
  import { n as export_helper_default } from "./TeamMembersTab-4gmnP9sD.js";
7
- import { t as getBackLinkFromRoute } from "./useReturnUrl-BBoPnDR3.js";
8
- import { n as useBreadcrumbs, t as BREADCRUMB_KEY } from "./useBreadcrumbs-B-W-miq6.js";
9
- import { i as FieldsetSection_default, n as teamMemberCreateSchemaWithMetadata } from "./EditTeamMemberForm-Cy8nzoUb.js";
10
- import { r as ZiniaContainer_default } from "./TeamHistoryTab-BQ-eXtiw.js";
11
- import { n as formatToISODate, r as formatUserDate, t as formatSystemTimestamp } from "./convertToLocalDateTime-mKs5eC9T.js";
12
- import { t as extractRpcErrorMessage } from "./extractRpcErrorMessage-pP3v8kKE.js";
13
- import { t as formatTicketDisplayId } from "./displayIdFormatter-rSbbsHIX.js";
14
- import { t as SupportTicketDevLifecycleBadge_default } from "./SupportTicketDevLifecycleBadge-B2NysMAj.js";
7
+ import { n as getBackLinkFromRoute, o as withReturnUrl } from "./useReturnUrl-qFeazn-G.js";
8
+ import { n as SIGNUP_REQUIREMENTS_KEY, t as useSignupPendingData } from "./useSignupPendingData-BWHwUHhL.js";
9
+ import { n as useBreadcrumbs, t as BREADCRUMB_KEY } from "./useBreadcrumbs-qB6ghsAf.js";
10
+ import { i as FieldsetSection_default, n as teamMemberCreateSchemaWithMetadata } from "./EditTeamMemberForm-CiNb4nNG.js";
11
+ import { r as ZiniaContainer_default } from "./TeamHistoryTab-PVS8A-6K.js";
12
+ import { i as formatUserDate, n as formatToISODate, t as formatSystemTimestamp } from "./convertToLocalDateTime-CFhtN6PI.js";
13
+ import { t as extractRpcErrorMessage } from "./extractRpcErrorMessage-Di8E8-Wh.js";
14
+ import { t as formatTicketDisplayId } from "./displayIdFormatter-Dz900Awr.js";
15
+ import { t as SupportTicketDevLifecycleBadge_default } from "./SupportTicketDevLifecycleBadge-EMrQHfyG.js";
15
16
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineComponent, inject, isRef, nextTick, normalizeClass, onMounted, openBlock, provide, readonly, ref, renderList, renderSlot, resolveComponent, toDisplayString, unref, vModelCheckbox, vModelText, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
16
17
  import { RouterView, useRoute, useRouter } from "vue-router";
17
18
  import { toast } from "vue3-toastify";
@@ -50,19 +51,19 @@ const DragoncoreVue = { install(_app, options) {
50
51
 
51
52
  //#endregion
52
53
  //#region src/components/AppTabNavigation.vue
53
- const _hoisted_1$58 = { class: "w-full" };
54
- const _hoisted_2$53 = { class: "md:hidden relative" };
55
- const _hoisted_3$50 = { class: "font-medium" };
56
- const _hoisted_4$43 = {
54
+ const _hoisted_1$54 = { class: "w-full" };
55
+ const _hoisted_2$49 = { class: "md:hidden relative" };
56
+ const _hoisted_3$46 = { class: "font-medium" };
57
+ const _hoisted_4$39 = {
57
58
  key: 0,
58
59
  class: "absolute z-20 w-full bg-base-100 shadow-lg"
59
60
  };
60
- const _hoisted_5$33 = ["onClick"];
61
- const _hoisted_6$27 = { class: "hidden md:flex items-center overflow-x-auto" };
62
- const _hoisted_7$22 = { class: "flex-1 flex" };
63
- const _hoisted_8$22 = ["onClick"];
64
- const _hoisted_9$21 = { class: "ml-auto shrink-0" };
65
- const _sfc_main$64 = /* @__PURE__ */ defineComponent({
61
+ const _hoisted_5$29 = ["onClick"];
62
+ const _hoisted_6$23 = { class: "hidden md:flex items-center overflow-x-auto" };
63
+ const _hoisted_7$19 = { class: "flex-1 flex" };
64
+ const _hoisted_8$19 = ["onClick"];
65
+ const _hoisted_9$18 = { class: "ml-auto shrink-0" };
66
+ const _sfc_main$60 = /* @__PURE__ */ defineComponent({
66
67
  __name: "AppTabNavigation",
67
68
  props: {
68
69
  tabs: {},
@@ -103,13 +104,13 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
103
104
  };
104
105
  return (_ctx, _cache) => {
105
106
  const _component_router_link = resolveComponent("router-link");
106
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Mobile-first tab navigation with responsive grid layout "), createElementVNode("div", _hoisted_1$58, [
107
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Mobile-first tab navigation with responsive grid layout "), createElementVNode("div", _hoisted_1$54, [
107
108
  createCommentVNode(" Mobile view: Show dropdown on small screens "),
108
- createElementVNode("div", _hoisted_2$53, [
109
+ createElementVNode("div", _hoisted_2$49, [
109
110
  createElementVNode("button", {
110
111
  onClick: _cache[0] || (_cache[0] = ($event) => isMenuOpen.value = !isMenuOpen.value),
111
112
  class: "w-full flex items-center justify-between px-4 py-3 bg-base-100"
112
- }, [createElementVNode("span", _hoisted_3$50, toDisplayString(activeTabLabel.value), 1), _cache[2] || (_cache[2] = createElementVNode("svg", {
113
+ }, [createElementVNode("span", _hoisted_3$46, toDisplayString(activeTabLabel.value), 1), _cache[2] || (_cache[2] = createElementVNode("svg", {
113
114
  xmlns: "http://www.w3.org/2000/svg",
114
115
  class: "h-5 w-5",
115
116
  fill: "none",
@@ -122,7 +123,7 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
122
123
  d: "M19 9l-7 7-7-7"
123
124
  })], -1))]),
124
125
  createCommentVNode(" Dropdown menu "),
125
- isMenuOpen.value ? (openBlock(), createElementBlock("div", _hoisted_4$43, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab, index) => {
126
+ isMenuOpen.value ? (openBlock(), createElementBlock("div", _hoisted_4$39, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab, index) => {
126
127
  return openBlock(), createElementBlock(Fragment, { key: index }, [tab.to ? (openBlock(), createBlock(_component_router_link, {
127
128
  key: 0,
128
129
  to: tab.to,
@@ -135,12 +136,12 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
135
136
  key: 1,
136
137
  onClick: ($event) => handleTabClick(tab.id),
137
138
  class: normalizeClass(["block w-full text-left px-4 py-3 hover:bg-base-200", [__props.activeTab === tab.id ? "text-primary font-medium" : "text-base-content/70"]])
138
- }, toDisplayString(tab.label), 11, _hoisted_5$33))], 64);
139
+ }, toDisplayString(tab.label), 11, _hoisted_5$29))], 64);
139
140
  }), 128))])) : createCommentVNode("v-if", true)
140
141
  ]),
141
142
  createCommentVNode(" Desktop view: Show horizontal tabs on medium screens and up "),
142
- createElementVNode("div", _hoisted_6$27, [
143
- createElementVNode("div", _hoisted_7$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab, index) => {
143
+ createElementVNode("div", _hoisted_6$23, [
144
+ createElementVNode("div", _hoisted_7$19, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab, index) => {
144
145
  return openBlock(), createElementBlock(Fragment, { key: index }, [tab.to ? (openBlock(), createBlock(_component_router_link, {
145
146
  key: 0,
146
147
  to: tab.to,
@@ -152,26 +153,26 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
152
153
  key: 1,
153
154
  onClick: ($event) => handleTabClick(tab.id),
154
155
  class: normalizeClass(["px-4 py-3 border-b-2 whitespace-nowrap flex items-center", [__props.activeTab === tab.id ? "font-medium text-primary border-primary" : "border-transparent hover:border-base-300 text-base-content/70 hover:text-base-content"]])
155
- }, [renderSlot(_ctx.$slots, `icon-${tab.id}`), createElementVNode("span", null, toDisplayString(tab.label), 1)], 10, _hoisted_8$22))], 64);
156
+ }, [renderSlot(_ctx.$slots, `icon-${tab.id}`), createElementVNode("span", null, toDisplayString(tab.label), 1)], 10, _hoisted_8$19))], 64);
156
157
  }), 128))]),
157
158
  createCommentVNode(" Optional slot for additional content "),
158
- createElementVNode("div", _hoisted_9$21, [renderSlot(_ctx.$slots, "actions")])
159
+ createElementVNode("div", _hoisted_9$18, [renderSlot(_ctx.$slots, "actions")])
159
160
  ])
160
161
  ])], 2112);
161
162
  };
162
163
  }
163
164
  });
164
- var AppTabNavigation_default = _sfc_main$64;
165
+ var AppTabNavigation_default = _sfc_main$60;
165
166
 
166
167
  //#endregion
167
168
  //#region src/components/AppHeader.vue
168
- const _hoisted_1$57 = { class: "bg-base-100 border-b border-base-300 z-10 w-full" };
169
- const _hoisted_2$52 = {
169
+ const _hoisted_1$53 = { class: "bg-base-100 border-b border-base-300 z-10 w-full" };
170
+ const _hoisted_2$48 = {
170
171
  key: 0,
171
172
  class: "w-full"
172
173
  };
173
- const _hoisted_3$49 = { class: "max-w-7xl mx-auto px-3 sm:px-4 md:px-6" };
174
- const _sfc_main$63 = /* @__PURE__ */ defineComponent({
174
+ const _hoisted_3$45 = { class: "max-w-7xl mx-auto px-3 sm:px-4 md:px-6" };
175
+ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
175
176
  __name: "AppHeader",
176
177
  props: {
177
178
  tabs: {},
@@ -180,9 +181,9 @@ const _sfc_main$63 = /* @__PURE__ */ defineComponent({
180
181
  emits: ["tab-click"],
181
182
  setup(__props) {
182
183
  return (_ctx, _cache) => {
183
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Full-width background with constrained content "), createElementVNode("div", _hoisted_1$57, [
184
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Full-width background with constrained content "), createElementVNode("div", _hoisted_1$53, [
184
185
  createCommentVNode(" Tab navigation - only shown when tabs are provided "),
185
- __props.tabs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$52, [createElementVNode("div", _hoisted_3$49, [createVNode(AppTabNavigation_default, {
186
+ __props.tabs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$48, [createElementVNode("div", _hoisted_3$45, [createVNode(AppTabNavigation_default, {
186
187
  tabs: __props.tabs,
187
188
  "active-tab": __props.activeTab,
188
189
  onTabClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("tab-click", $event))
@@ -201,19 +202,19 @@ const _sfc_main$63 = /* @__PURE__ */ defineComponent({
201
202
  };
202
203
  }
203
204
  });
204
- var AppHeader_default = _sfc_main$63;
205
+ var AppHeader_default = _sfc_main$59;
205
206
 
206
207
  //#endregion
207
208
  //#region src/components/BaseModal.vue
208
- const _hoisted_1$56 = { class: "modal-box max-w-md w-full max-h-[90vh] flex flex-col p-0" };
209
- const _hoisted_2$51 = { class: "flex justify-between items-center p-6 pb-4 border-b border-base-300 flex-shrink-0" };
210
- const _hoisted_3$48 = { class: "font-bold text-lg" };
211
- const _hoisted_4$42 = { class: "modal-content flex-1 overflow-y-auto p-6" };
212
- const _hoisted_5$32 = {
209
+ const _hoisted_1$52 = { class: "modal-box max-w-md w-full max-h-[90vh] flex flex-col p-0" };
210
+ const _hoisted_2$47 = { class: "flex justify-between items-center p-6 pb-4 border-b border-base-300 flex-shrink-0" };
211
+ const _hoisted_3$44 = { class: "font-bold text-lg" };
212
+ const _hoisted_4$38 = { class: "modal-content flex-1 overflow-y-auto p-6" };
213
+ const _hoisted_5$28 = {
213
214
  method: "dialog",
214
215
  class: "modal-backdrop"
215
216
  };
216
- const _sfc_main$62 = /* @__PURE__ */ defineComponent({
217
+ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
217
218
  __name: "BaseModal",
218
219
  props: {
219
220
  isOpen: { type: Boolean },
@@ -236,9 +237,9 @@ const _sfc_main$62 = /* @__PURE__ */ defineComponent({
236
237
  ref_key: "modal",
237
238
  ref: modal,
238
239
  class: "modal"
239
- }, [createElementVNode("div", _hoisted_1$56, [
240
+ }, [createElementVNode("div", _hoisted_1$52, [
240
241
  createCommentVNode(" Header with title and close button - fixed, not scrollable "),
241
- createElementVNode("div", _hoisted_2$51, [createElementVNode("h3", _hoisted_3$48, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]), createElementVNode("button", {
242
+ createElementVNode("div", _hoisted_2$47, [createElementVNode("h3", _hoisted_3$44, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]), createElementVNode("button", {
242
243
  type: "button",
243
244
  class: "btn btn-sm btn-circle btn-ghost",
244
245
  onClick: withModifiers(handleClose, ["prevent"]),
@@ -256,34 +257,34 @@ const _sfc_main$62 = /* @__PURE__ */ defineComponent({
256
257
  d: "M6 18L18 6M6 6l12 12"
257
258
  })], -1)])])]),
258
259
  createCommentVNode(" Content slot - scrollable area "),
259
- createElementVNode("div", _hoisted_4$42, [renderSlot(_ctx.$slots, "default")])
260
- ]), createElementVNode("form", _hoisted_5$32, [createElementVNode("button", {
260
+ createElementVNode("div", _hoisted_4$38, [renderSlot(_ctx.$slots, "default")])
261
+ ]), createElementVNode("form", _hoisted_5$28, [createElementVNode("button", {
261
262
  type: "button",
262
263
  onClick: withModifiers(handleClose, ["prevent"])
263
264
  }, "close")])], 512);
264
265
  };
265
266
  }
266
267
  });
267
- var BaseModal_default = _sfc_main$62;
268
+ var BaseModal_default = _sfc_main$58;
268
269
 
269
270
  //#endregion
270
271
  //#region src/components/InputModal.vue
271
- const _hoisted_1$55 = { class: "modal-box" };
272
- const _hoisted_2$50 = { class: "font-bold text-lg" };
273
- const _hoisted_3$47 = { class: "py-4" };
274
- const _hoisted_4$41 = { class: "form-control w-full" };
275
- const _hoisted_5$31 = { class: "label" };
276
- const _hoisted_6$26 = { class: "label-text" };
277
- const _hoisted_7$21 = ["placeholder"];
278
- const _hoisted_8$21 = {
272
+ const _hoisted_1$51 = { class: "modal-box" };
273
+ const _hoisted_2$46 = { class: "font-bold text-lg" };
274
+ const _hoisted_3$43 = { class: "py-4" };
275
+ const _hoisted_4$37 = { class: "form-control w-full" };
276
+ const _hoisted_5$27 = { class: "label" };
277
+ const _hoisted_6$22 = { class: "label-text" };
278
+ const _hoisted_7$18 = ["placeholder"];
279
+ const _hoisted_8$18 = {
279
280
  key: 0,
280
281
  class: "label"
281
282
  };
282
- const _hoisted_9$20 = { class: "label-text-alt text-error" };
283
- const _hoisted_10$17 = { class: "modal-action" };
284
- const _hoisted_11$16 = ["disabled"];
285
- const _hoisted_12$14 = ["disabled"];
286
- const _sfc_main$61 = /* @__PURE__ */ defineComponent({
283
+ const _hoisted_9$17 = { class: "label-text-alt text-error" };
284
+ const _hoisted_10$14 = { class: "modal-action" };
285
+ const _hoisted_11$13 = ["disabled"];
286
+ const _hoisted_12$11 = ["disabled"];
287
+ const _sfc_main$57 = /* @__PURE__ */ defineComponent({
287
288
  __name: "InputModal",
288
289
  props: {
289
290
  modelValue: { type: Boolean },
@@ -333,10 +334,10 @@ const _sfc_main$61 = /* @__PURE__ */ defineComponent({
333
334
  inputValue.value = "";
334
335
  };
335
336
  return (_ctx, _cache) => {
336
- return openBlock(), createElementBlock("div", { class: normalizeClass(["modal", { "modal-open": __props.modelValue }]) }, [createElementVNode("div", _hoisted_1$55, [
337
- createElementVNode("h3", _hoisted_2$50, toDisplayString(__props.title), 1),
338
- createElementVNode("div", _hoisted_3$47, [createElementVNode("label", _hoisted_4$41, [
339
- createElementVNode("div", _hoisted_5$31, [createElementVNode("span", _hoisted_6$26, toDisplayString(__props.label), 1)]),
337
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["modal", { "modal-open": __props.modelValue }]) }, [createElementVNode("div", _hoisted_1$51, [
338
+ createElementVNode("h3", _hoisted_2$46, toDisplayString(__props.title), 1),
339
+ createElementVNode("div", _hoisted_3$43, [createElementVNode("label", _hoisted_4$37, [
340
+ createElementVNode("div", _hoisted_5$27, [createElementVNode("span", _hoisted_6$22, toDisplayString(__props.label), 1)]),
340
341
  withDirectives(createElementVNode("input", {
341
342
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => inputValue.value = $event),
342
343
  type: "text",
@@ -345,18 +346,18 @@ const _sfc_main$61 = /* @__PURE__ */ defineComponent({
345
346
  onKeyup: [withKeys(handleConfirm, ["enter"]), withKeys(handleCancel, ["escape"])],
346
347
  ref_key: "inputRef",
347
348
  ref: inputRef
348
- }, null, 40, _hoisted_7$21), [[vModelText, inputValue.value]]),
349
- __props.error ? (openBlock(), createElementBlock("div", _hoisted_8$21, [createElementVNode("span", _hoisted_9$20, toDisplayString(__props.error), 1)])) : createCommentVNode("v-if", true)
349
+ }, null, 40, _hoisted_7$18), [[vModelText, inputValue.value]]),
350
+ __props.error ? (openBlock(), createElementBlock("div", _hoisted_8$18, [createElementVNode("span", _hoisted_9$17, toDisplayString(__props.error), 1)])) : createCommentVNode("v-if", true)
350
351
  ])]),
351
- createElementVNode("div", _hoisted_10$17, [createElementVNode("button", {
352
+ createElementVNode("div", _hoisted_10$14, [createElementVNode("button", {
352
353
  class: "btn",
353
354
  onClick: handleCancel,
354
355
  disabled: __props.isProcessing
355
- }, toDisplayString(__props.cancelText), 9, _hoisted_11$16), createElementVNode("button", {
356
+ }, toDisplayString(__props.cancelText), 9, _hoisted_11$13), createElementVNode("button", {
356
357
  class: normalizeClass(["btn", __props.confirmButtonClass]),
357
358
  onClick: handleConfirm,
358
359
  disabled: !inputValue.value || inputValue.value.trim() === "" || __props.isProcessing
359
- }, toDisplayString(__props.isProcessing ? __props.processingText : __props.confirmText), 11, _hoisted_12$14)])
360
+ }, toDisplayString(__props.isProcessing ? __props.processingText : __props.confirmText), 11, _hoisted_12$11)])
360
361
  ]), createElementVNode("div", {
361
362
  class: "modal-backdrop",
362
363
  onClick: handleCancel
@@ -364,11 +365,11 @@ const _sfc_main$61 = /* @__PURE__ */ defineComponent({
364
365
  };
365
366
  }
366
367
  });
367
- var InputModal_default = _sfc_main$61;
368
+ var InputModal_default = _sfc_main$57;
368
369
 
369
370
  //#endregion
370
371
  //#region src/components/LoginButton.vue
371
- const _sfc_main$60 = {};
372
+ const _sfc_main$56 = {};
372
373
  function _sfc_render(_ctx, _cache) {
373
374
  const _component_router_link = resolveComponent("router-link");
374
375
  return openBlock(), createBlock(_component_router_link, { to: "/auth/login" }, {
@@ -376,11 +377,11 @@ function _sfc_render(_ctx, _cache) {
376
377
  _: 1
377
378
  });
378
379
  }
379
- var LoginButton_default = /* @__PURE__ */ export_helper_default(_sfc_main$60, [["render", _sfc_render]]);
380
+ var LoginButton_default = /* @__PURE__ */ export_helper_default(_sfc_main$56, [["render", _sfc_render]]);
380
381
 
381
382
  //#endregion
382
383
  //#region src/components/ui/LogoPlaceholder.vue
383
- const _sfc_main$59 = /* @__PURE__ */ defineComponent({
384
+ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
384
385
  __name: "LogoPlaceholder",
385
386
  props: { size: { default: "md" } },
386
387
  setup(__props) {
@@ -389,52 +390,52 @@ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
389
390
  };
390
391
  }
391
392
  });
392
- var LogoPlaceholder_default = _sfc_main$59;
393
+ var LogoPlaceholder_default = _sfc_main$55;
393
394
 
394
395
  //#endregion
395
396
  //#region src/components/Navbar.vue
396
- const _hoisted_1$54 = { class: "sticky top-0 flex h-16 w-full justify-center border-b-2 border-solid border-b-base-300 bg-base-200 bg-opacity-90 text-base-content shadow-xs z-10" };
397
- const _hoisted_2$49 = { class: "navbar w-full" };
398
- const _hoisted_3$46 = { class: "flex flex-1 md:gap-1 lg:gap-2" };
399
- const _hoisted_4$40 = { class: "items-center gap-2 flex" };
400
- const _hoisted_5$30 = { class: "font-title inline-flex text-lg text-primary transition-all duration-200 md:text-3xl" };
401
- const _hoisted_6$25 = ["src"];
402
- const _hoisted_7$20 = {
397
+ const _hoisted_1$50 = { class: "sticky top-0 flex h-16 w-full justify-center border-b-2 border-solid border-b-base-300 bg-base-200 bg-opacity-90 text-base-content shadow-xs z-10" };
398
+ const _hoisted_2$45 = { class: "navbar w-full" };
399
+ const _hoisted_3$42 = { class: "flex flex-1 md:gap-1 lg:gap-2" };
400
+ const _hoisted_4$36 = { class: "items-center gap-2 flex" };
401
+ const _hoisted_5$26 = { class: "font-title inline-flex text-lg text-primary transition-all duration-200 md:text-3xl" };
402
+ const _hoisted_6$21 = ["src"];
403
+ const _hoisted_7$17 = {
403
404
  key: 0,
404
405
  class: "hidden md:flex items-center ml-4"
405
406
  };
406
- const _hoisted_8$20 = { class: "text-sm text-base-content/70 flex items-center gap-2" };
407
- const _hoisted_9$19 = {
407
+ const _hoisted_8$17 = { class: "text-sm text-base-content/70 flex items-center gap-2" };
408
+ const _hoisted_9$16 = {
408
409
  key: 0,
409
410
  class: "loading loading-spinner loading-xs"
410
411
  };
411
- const _hoisted_10$16 = { class: "font-medium" };
412
- const _hoisted_11$15 = {
412
+ const _hoisted_10$13 = { class: "font-medium" };
413
+ const _hoisted_11$12 = {
413
414
  key: 2,
414
415
  class: "text-base-content/50"
415
416
  };
416
- const _hoisted_12$13 = {
417
+ const _hoisted_12$10 = {
417
418
  key: 1,
418
419
  class: "flex md:hidden flex-col justify-center ml-2 leading-tight"
419
420
  };
420
- const _hoisted_13$11 = { class: "font-medium text-sm truncate max-w-[150px]" };
421
- const _hoisted_14$10 = {
421
+ const _hoisted_13$8 = { class: "font-medium text-sm truncate max-w-[150px]" };
422
+ const _hoisted_14$7 = {
422
423
  key: 0,
423
424
  class: "loading loading-spinner loading-xs"
424
425
  };
425
- const _hoisted_15$9 = { class: "flex-none gap-2" };
426
- const _hoisted_16$9 = {
426
+ const _hoisted_15$6 = { class: "flex-none gap-2" };
427
+ const _hoisted_16$6 = {
427
428
  key: 0,
428
429
  class: "loading btn-primary btn"
429
430
  };
430
- const _hoisted_17$8 = {
431
+ const _hoisted_17$5 = {
431
432
  key: 1,
432
433
  for: "my-drawer-4",
433
434
  tabindex: "0",
434
435
  class: "btn-ghost btn-circle avatar btn placeholder",
435
436
  id: "right-nav-label"
436
437
  };
437
- const _sfc_main$58 = /* @__PURE__ */ defineComponent({
438
+ const _sfc_main$54 = /* @__PURE__ */ defineComponent({
438
439
  __name: "Navbar",
439
440
  props: {
440
441
  breadcrumbs: {},
@@ -448,7 +449,7 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
448
449
  loading.value = false;
449
450
  return (_ctx, _cache) => {
450
451
  const _component_router_link = resolveComponent("router-link");
451
- return openBlock(), createElementBlock("header", _hoisted_1$54, [createElementVNode("nav", _hoisted_2$49, [createElementVNode("div", _hoisted_3$46, [_cache[3] || (_cache[3] = createElementVNode("label", {
452
+ return openBlock(), createElementBlock("header", _hoisted_1$50, [createElementVNode("nav", _hoisted_2$45, [createElementVNode("div", _hoisted_3$42, [_cache[3] || (_cache[3] = createElementVNode("label", {
452
453
  for: "drawer",
453
454
  class: "btn-ghost drawer-button btn-square btn"
454
455
  }, [createElementVNode("svg", {
@@ -462,13 +463,13 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
462
463
  "stroke-linecap": "round",
463
464
  "stroke-linejoin": "round",
464
465
  d: "M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"
465
- })])], -1)), createElementVNode("div", _hoisted_4$40, [
466
+ })])], -1)), createElementVNode("div", _hoisted_4$36, [
466
467
  createVNode(AppLink_default, {
467
468
  to: "/",
468
469
  "aria-current": "page",
469
470
  "aria-label": "Homepage"
470
471
  }, {
471
- default: withCtx(() => [createElementVNode("div", _hoisted_5$30, [!__props.logoSrc || imageLoadFailed.value ? (openBlock(), createBlock(LogoPlaceholder_default, {
472
+ default: withCtx(() => [createElementVNode("div", _hoisted_5$26, [!__props.logoSrc || imageLoadFailed.value ? (openBlock(), createBlock(LogoPlaceholder_default, {
472
473
  key: 0,
473
474
  size: "xs"
474
475
  })) : (openBlock(), createElementBlock("img", {
@@ -477,11 +478,11 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
477
478
  alt: "logo",
478
479
  class: "h-10 w-10 md:h-12 md:w-12",
479
480
  onError: _cache[0] || (_cache[0] = ($event) => imageLoadFailed.value = true)
480
- }, null, 40, _hoisted_6$25))])]),
481
+ }, null, 40, _hoisted_6$21))])]),
481
482
  _: 1
482
483
  }),
483
484
  createCommentVNode(" Breadcrumbs in navbar - Desktop view "),
484
- __props.breadcrumbs && __props.breadcrumbs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_7$20, [createElementVNode("div", _hoisted_8$20, [
485
+ __props.breadcrumbs && __props.breadcrumbs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_7$17, [createElementVNode("div", _hoisted_8$17, [
485
486
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.breadcrumbs, (crumb, index) => {
486
487
  return openBlock(), createElementBlock(Fragment, { key: index }, [
487
488
  createCommentVNode(" Link for all but the last item "),
@@ -495,17 +496,17 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
495
496
  }, 1032, ["to"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
496
497
  createCommentVNode(" Current page (not a link) "),
497
498
  createCommentVNode(" Show loading spinner if explicitly loading "),
498
- crumb.loading ? (openBlock(), createElementBlock("span", _hoisted_9$19)) : crumb.label ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Show label if provided "), createElementVNode("span", _hoisted_10$16, toDisplayString(crumb.label), 1)], 2112)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [createCommentVNode(" Fallback if neither loading nor label "), _cache[1] || (_cache[1] = createElementVNode("span", { class: "font-medium text-base-content/50" }, "...", -1))], 2112))
499
+ crumb.loading ? (openBlock(), createElementBlock("span", _hoisted_9$16)) : crumb.label ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Show label if provided "), createElementVNode("span", _hoisted_10$13, toDisplayString(crumb.label), 1)], 2112)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [createCommentVNode(" Fallback if neither loading nor label "), _cache[1] || (_cache[1] = createElementVNode("span", { class: "font-medium text-base-content/50" }, "...", -1))], 2112))
499
500
  ], 64)),
500
501
  createCommentVNode(" Separator between items "),
501
- index < __props.breadcrumbs.length - 1 ? (openBlock(), createElementBlock("span", _hoisted_11$15, "/")) : createCommentVNode("v-if", true)
502
+ index < __props.breadcrumbs.length - 1 ? (openBlock(), createElementBlock("span", _hoisted_11$12, "/")) : createCommentVNode("v-if", true)
502
503
  ], 64);
503
504
  }), 128)),
504
505
  createCommentVNode(" Optional status badge "),
505
506
  renderSlot(_ctx.$slots, "status")
506
507
  ])])) : createCommentVNode("v-if", true),
507
508
  createCommentVNode(" Breadcrumbs in navbar - Mobile view (GitHub style) "),
508
- __props.breadcrumbs && __props.breadcrumbs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_12$13, [
509
+ __props.breadcrumbs && __props.breadcrumbs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_12$10, [
509
510
  createCommentVNode(" Parent/previous breadcrumb (if exists) "),
510
511
  __props.breadcrumbs.length > 1 && __props.breadcrumbs[__props.breadcrumbs.length - 2] ? (openBlock(), createBlock(_component_router_link, {
511
512
  key: 0,
@@ -516,22 +517,22 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
516
517
  _: 1
517
518
  }, 8, ["to"])) : createCommentVNode("v-if", true),
518
519
  createCommentVNode(" Current page (last breadcrumb) "),
519
- createElementVNode("div", _hoisted_13$11, [createCommentVNode(" Show loading spinner if explicitly loading "), __props.breadcrumbs[__props.breadcrumbs.length - 1]?.loading ? (openBlock(), createElementBlock("span", _hoisted_14$10)) : __props.breadcrumbs[__props.breadcrumbs.length - 1]?.label ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Show label if provided "), createTextVNode(toDisplayString(__props.breadcrumbs[__props.breadcrumbs.length - 1].label), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [createCommentVNode(" Fallback "), _cache[2] || (_cache[2] = createElementVNode("span", { class: "text-base-content/50" }, "...", -1))], 2112))]),
520
+ createElementVNode("div", _hoisted_13$8, [createCommentVNode(" Show loading spinner if explicitly loading "), __props.breadcrumbs[__props.breadcrumbs.length - 1]?.loading ? (openBlock(), createElementBlock("span", _hoisted_14$7)) : __props.breadcrumbs[__props.breadcrumbs.length - 1]?.label ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Show label if provided "), createTextVNode(toDisplayString(__props.breadcrumbs[__props.breadcrumbs.length - 1].label), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [createCommentVNode(" Fallback "), _cache[2] || (_cache[2] = createElementVNode("span", { class: "text-base-content/50" }, "...", -1))], 2112))]),
520
521
  createCommentVNode(" Optional status badge "),
521
522
  renderSlot(_ctx.$slots, "mobile-status")
522
523
  ])) : createCommentVNode("v-if", true)
523
- ])]), createElementVNode("div", _hoisted_15$9, [_cache[5] || (_cache[5] = createElementVNode("div", { class: "form-control hidden sm:flex" }, [createCommentVNode(" <input\n type=\"text\"\n placeholder=\"Search\"\n class=\"input-bordered input input-sm\"\n /> ")], -1)), loading.value ? (openBlock(), createElementBlock("button", _hoisted_16$9)) : unref(user).currentSession ? (openBlock(), createElementBlock("label", _hoisted_17$8, [..._cache[4] || (_cache[4] = [createElementVNode("div", { class: "bg-neutral-focus text-neutral-content w-10 rounded-full" }, [createElementVNode("span", null, "U")], -1)])])) : (openBlock(), createBlock(LoginButton_default, { key: 2 }))])])]);
524
+ ])]), createElementVNode("div", _hoisted_15$6, [_cache[5] || (_cache[5] = createElementVNode("div", { class: "form-control hidden sm:flex" }, [createCommentVNode(" <input\n type=\"text\"\n placeholder=\"Search\"\n class=\"input-bordered input input-sm\"\n /> ")], -1)), loading.value ? (openBlock(), createElementBlock("button", _hoisted_16$6)) : unref(user).currentSession ? (openBlock(), createElementBlock("label", _hoisted_17$5, [..._cache[4] || (_cache[4] = [createElementVNode("div", { class: "bg-neutral-focus text-neutral-content w-10 rounded-full" }, [createElementVNode("span", null, "U")], -1)])])) : (openBlock(), createBlock(LoginButton_default, { key: 2 }))])])]);
524
525
  };
525
526
  }
526
527
  });
527
- var Navbar_default = _sfc_main$58;
528
+ var Navbar_default = _sfc_main$54;
528
529
 
529
530
  //#endregion
530
531
  //#region src/components/NotFound.vue
531
- const _hoisted_1$53 = { class: "flex items-center justify-center bg-base-100 mt-4" };
532
- const _hoisted_2$48 = { class: "max-w-md mx-auto text-center px-4" };
533
- const _hoisted_3$45 = { class: "flex flex-col sm:flex-row gap-4 justify-center" };
534
- const _sfc_main$57 = /* @__PURE__ */ defineComponent({
532
+ const _hoisted_1$49 = { class: "flex items-center justify-center bg-base-100 mt-4" };
533
+ const _hoisted_2$44 = { class: "max-w-md mx-auto text-center px-4" };
534
+ const _hoisted_3$41 = { class: "flex flex-col sm:flex-row gap-4 justify-center" };
535
+ const _sfc_main$53 = /* @__PURE__ */ defineComponent({
535
536
  __name: "NotFound",
536
537
  setup(__props) {
537
538
  const router = useRouter();
@@ -541,11 +542,11 @@ const _sfc_main$57 = /* @__PURE__ */ defineComponent({
541
542
  };
542
543
  return (_ctx, _cache) => {
543
544
  const _component_router_link = resolveComponent("router-link");
544
- return openBlock(), createElementBlock("div", _hoisted_1$53, [createElementVNode("div", _hoisted_2$48, [_cache[1] || (_cache[1] = createElementVNode("div", { class: "mb-8" }, [
545
+ return openBlock(), createElementBlock("div", _hoisted_1$49, [createElementVNode("div", _hoisted_2$44, [_cache[1] || (_cache[1] = createElementVNode("div", { class: "mb-8" }, [
545
546
  createElementVNode("h1", { class: "text-9xl font-bold text-primary mb-4" }, "404"),
546
547
  createElementVNode("h2", { class: "text-3xl font-bold mb-4" }, "Page Not Found"),
547
548
  createElementVNode("p", { class: "text-base-content/70 mb-8" }, " Sorry, we couldn't find the page you're looking for. The page may have been moved, deleted, or the URL might be incorrect. ")
548
- ], -1)), createElementVNode("div", _hoisted_3$45, [createVNode(_component_router_link, {
549
+ ], -1)), createElementVNode("div", _hoisted_3$41, [createVNode(_component_router_link, {
549
550
  to: { name: "Home" },
550
551
  class: "btn btn-primary"
551
552
  }, {
@@ -558,18 +559,25 @@ const _sfc_main$57 = /* @__PURE__ */ defineComponent({
558
559
  };
559
560
  }
560
561
  });
561
- var NotFound_default = _sfc_main$57;
562
+ var NotFound_default = _sfc_main$53;
562
563
 
563
564
  //#endregion
564
565
  //#region src/components/RightSidebar.vue
565
- const _hoisted_1$52 = { class: "drawer-side z-50" };
566
- const _hoisted_2$47 = { class: "menu p-3 w-80 h-full bg-base-200 text-base-content" };
567
- const _hoisted_3$44 = { class: "flex pb-2" };
568
- const _hoisted_4$39 = { class: "pl-3" };
569
- const _sfc_main$56 = /* @__PURE__ */ defineComponent({
566
+ const _hoisted_1$48 = { class: "drawer-side z-50" };
567
+ const _hoisted_2$43 = { class: "menu p-3 w-80 h-full bg-base-200 text-base-content" };
568
+ const _hoisted_3$40 = { class: "flex pb-2" };
569
+ const _hoisted_4$35 = { class: "pl-3" };
570
+ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
570
571
  __name: "RightSidebar",
572
+ props: { logoutReturnUrl: { default: "/" } },
571
573
  setup(__props) {
572
574
  const userSession = useUserSessionStore();
575
+ /**
576
+ * Where to redirect after logout. Default '/' (homepage) so user can browse anonymously.
577
+ * Apps can pass a different path via the logoutReturnUrl prop if needed.
578
+ */
579
+ const props = __props;
580
+ const logoutLink = computed(() => withReturnUrl("/auth/logout", props.logoutReturnUrl));
573
581
  let checked = ref(false);
574
582
  function closeDrawer(_) {
575
583
  checked.value = false;
@@ -580,13 +588,13 @@ const _sfc_main$56 = /* @__PURE__ */ defineComponent({
580
588
  type: "checkbox",
581
589
  class: "drawer-toggle",
582
590
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(checked) ? checked.value = $event : checked = $event)
583
- }, null, 512), [[vModelCheckbox, unref(checked)]]), createElementVNode("div", _hoisted_1$52, [_cache[7] || (_cache[7] = createElementVNode("label", {
591
+ }, null, 512), [[vModelCheckbox, unref(checked)]]), createElementVNode("div", _hoisted_1$48, [_cache[7] || (_cache[7] = createElementVNode("label", {
584
592
  for: "my-drawer-4",
585
593
  class: "drawer-overlay"
586
- }, null, -1)), createElementVNode("ul", _hoisted_2$47, [
587
- createElementVNode("div", _hoisted_3$44, [
594
+ }, null, -1)), createElementVNode("ul", _hoisted_2$43, [
595
+ createElementVNode("div", _hoisted_3$40, [
588
596
  _cache[1] || (_cache[1] = createElementVNode("div", { class: "avatar placeholder" }, [createElementVNode("div", { class: "bg-neutral-focus text-neutral-content w-10 h-10 rounded-full" }, [createElementVNode("span", null, "U")])], -1)),
589
- createElementVNode("label", _hoisted_4$39, toDisplayString(unref(userSession).currentSession?.user?.username), 1),
597
+ createElementVNode("label", _hoisted_4$35, toDisplayString(unref(userSession).currentSession?.user?.username), 1),
590
598
  _cache[2] || (_cache[2] = createElementVNode("div", { class: "grow" }, null, -1)),
591
599
  _cache[3] || (_cache[3] = createElementVNode("label", {
592
600
  for: "my-drawer-4",
@@ -598,15 +606,15 @@ const _sfc_main$56 = /* @__PURE__ */ defineComponent({
598
606
  _: 1
599
607
  })]),
600
608
  _cache[6] || (_cache[6] = createElementVNode("div", { class: "divider" }, null, -1)),
601
- createElementVNode("li", { onClick: closeDrawer }, [createVNode(AppLink_default, { to: "/auth/logout" }, {
609
+ createElementVNode("li", { onClick: closeDrawer }, [createVNode(AppLink_default, { to: logoutLink.value }, {
602
610
  default: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode("Logout", -1)])]),
603
611
  _: 1
604
- })])
612
+ }, 8, ["to"])])
605
613
  ])])], 64);
606
614
  };
607
615
  }
608
616
  });
609
- var RightSidebar_default = _sfc_main$56;
617
+ var RightSidebar_default = _sfc_main$52;
610
618
 
611
619
  //#endregion
612
620
  //#region src/composables/useBuildTag.ts
@@ -703,7 +711,7 @@ function useInjectedPinnedPresets() {
703
711
 
704
712
  //#endregion
705
713
  //#region src/components/Sidebar.vue
706
- const _hoisted_1$51 = {
714
+ const _hoisted_1$47 = {
707
715
  class: "drawer-side z-50",
708
716
  style: {
709
717
  "scroll-behavior": "smooth",
@@ -711,20 +719,20 @@ const _hoisted_1$51 = {
711
719
  },
712
720
  ref: "drawersidebar"
713
721
  };
714
- const _hoisted_2$46 = { class: "w-80 bg-base-200 h-full flex flex-col" };
715
- const _hoisted_3$43 = { class: "flex-1 overflow-y-auto overflow-x-hidden min-h-0" };
716
- const _hoisted_4$38 = { class: "menu p-3 w-full text-base-content" };
717
- const _hoisted_5$29 = { class: "flex" };
718
- const _hoisted_6$24 = { class: "font-title inline-flex text-2xl text-primary transition-all duration-200" };
719
- const _hoisted_7$19 = ["src"];
720
- const _hoisted_8$19 = {
722
+ const _hoisted_2$42 = { class: "w-80 bg-base-200 h-full flex flex-col" };
723
+ const _hoisted_3$39 = { class: "flex-1 overflow-y-auto overflow-x-hidden min-h-0" };
724
+ const _hoisted_4$34 = { class: "menu p-3 w-full text-base-content" };
725
+ const _hoisted_5$25 = { class: "flex" };
726
+ const _hoisted_6$20 = { class: "font-title inline-flex text-2xl text-primary transition-all duration-200" };
727
+ const _hoisted_7$16 = ["src"];
728
+ const _hoisted_8$16 = {
721
729
  key: 0,
722
730
  class: "w-full"
723
731
  };
724
- const _hoisted_9$18 = { class: "menu-title" };
725
- const _hoisted_10$15 = { class: "flex flex-col items-center justify-center w-full h-16" };
726
- const _hoisted_11$14 = { class: "text-xs text-neutral-500" };
727
- const _sfc_main$55 = /* @__PURE__ */ defineComponent({
732
+ const _hoisted_9$15 = { class: "menu-title" };
733
+ const _hoisted_10$12 = { class: "flex flex-col items-center justify-center w-full h-16" };
734
+ const _hoisted_11$11 = { class: "text-xs text-neutral-500" };
735
+ const _sfc_main$51 = /* @__PURE__ */ defineComponent({
728
736
  __name: "Sidebar",
729
737
  props: { logoSrc: {} },
730
738
  setup(__props) {
@@ -765,12 +773,12 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
765
773
  }
766
774
  return (_ctx, _cache) => {
767
775
  const _component_router_link = resolveComponent("router-link");
768
- return openBlock(), createElementBlock("div", _hoisted_1$51, [_cache[3] || (_cache[3] = createElementVNode("label", {
776
+ return openBlock(), createElementBlock("div", _hoisted_1$47, [_cache[3] || (_cache[3] = createElementVNode("label", {
769
777
  for: "drawer",
770
778
  class: "drawer-overlay"
771
- }, null, -1)), createElementVNode("aside", _hoisted_2$46, [createElementVNode("div", _hoisted_3$43, [createElementVNode("ul", _hoisted_4$38, [
772
- createElementVNode("div", _hoisted_5$29, [
773
- createElementVNode("div", _hoisted_6$24, [renderSlot(_ctx.$slots, "logo", {}, () => [!__props.logoSrc || imageLoadFailed.value ? (openBlock(), createBlock(LogoPlaceholder_default, {
779
+ }, null, -1)), createElementVNode("aside", _hoisted_2$42, [createElementVNode("div", _hoisted_3$39, [createElementVNode("ul", _hoisted_4$34, [
780
+ createElementVNode("div", _hoisted_5$25, [
781
+ createElementVNode("div", _hoisted_6$20, [renderSlot(_ctx.$slots, "logo", {}, () => [!__props.logoSrc || imageLoadFailed.value ? (openBlock(), createBlock(LogoPlaceholder_default, {
774
782
  key: 0,
775
783
  size: "sm"
776
784
  })) : (openBlock(), createElementBlock("img", {
@@ -779,7 +787,7 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
779
787
  alt: "logo",
780
788
  class: "h-12",
781
789
  onError: _cache[0] || (_cache[0] = ($event) => imageLoadFailed.value = true)
782
- }, null, 40, _hoisted_7$19))])]),
790
+ }, null, 40, _hoisted_7$16))])]),
783
791
  _cache[1] || (_cache[1] = createElementVNode("div", { class: "grow" }, null, -1)),
784
792
  createElementVNode("label", {
785
793
  for: "drawer",
@@ -789,7 +797,7 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
789
797
  }, " X ", 512)
790
798
  ]),
791
799
  createCommentVNode(" Favorites section (pinned presets) at top "),
792
- unref(pinnedPresets).pinned.value.length > 0 ? (openBlock(), createElementBlock("li", _hoisted_8$19, [_cache[2] || (_cache[2] = createElementVNode("div", { class: "menu-title" }, [createElementVNode("span", null, "FAVORITES")], -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(pinnedPresets).pinned.value, (preset) => {
800
+ unref(pinnedPresets).pinned.value.length > 0 ? (openBlock(), createElementBlock("li", _hoisted_8$16, [_cache[2] || (_cache[2] = createElementVNode("div", { class: "menu-title" }, [createElementVNode("span", null, "FAVORITES")], -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(pinnedPresets).pinned.value, (preset) => {
793
801
  return openBlock(), createBlock(_component_router_link, {
794
802
  key: preset.id,
795
803
  to: unref(pinnedPresets).getPresetLink(preset),
@@ -804,7 +812,7 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
804
812
  return openBlock(), createElementBlock("li", {
805
813
  key: section,
806
814
  class: "w-full"
807
- }, [createElementVNode("div", _hoisted_9$18, [createElementVNode("span", null, toDisplayString(capitalizeSection(section)), 1)]), (openBlock(true), createElementBlock(Fragment, null, renderList(routes, (route) => {
815
+ }, [createElementVNode("div", _hoisted_9$15, [createElementVNode("span", null, toDisplayString(capitalizeSection(section)), 1)]), (openBlock(true), createElementBlock(Fragment, null, renderList(routes, (route) => {
808
816
  return openBlock(), createBlock(AppLink_default, {
809
817
  key: route.path,
810
818
  to: getRouteLink(route),
@@ -816,11 +824,11 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
816
824
  }, 1032, ["to"]);
817
825
  }), 128))]);
818
826
  }), 128))
819
- ])]), createElementVNode("div", _hoisted_10$15, [createElementVNode("div", _hoisted_11$14, "Version: " + toDisplayString(unref(tag).build_tag), 1)])])], 512);
827
+ ])]), createElementVNode("div", _hoisted_10$12, [createElementVNode("div", _hoisted_11$11, "Version: " + toDisplayString(unref(tag).build_tag), 1)])])], 512);
820
828
  };
821
829
  }
822
830
  });
823
- var Sidebar_default = _sfc_main$55;
831
+ var Sidebar_default = _sfc_main$51;
824
832
 
825
833
  //#endregion
826
834
  //#region src/composables/useEmailVerificationGuard.ts
@@ -843,13 +851,13 @@ function useEmailVerificationGuard() {
843
851
 
844
852
  //#endregion
845
853
  //#region src/components/UnverifiedEmailBanner.vue
846
- const _hoisted_1$50 = {
854
+ const _hoisted_1$46 = {
847
855
  key: 0,
848
856
  class: "bg-warning/20 border border-warning/50 text-warning-content px-4 py-2 flex items-center justify-between gap-4"
849
857
  };
850
- const _hoisted_2$45 = { class: "text-sm" };
851
- const _hoisted_3$42 = ["disabled"];
852
- const _sfc_main$54 = /* @__PURE__ */ defineComponent({
858
+ const _hoisted_2$41 = { class: "text-sm" };
859
+ const _hoisted_3$38 = ["disabled"];
860
+ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
853
861
  __name: "UnverifiedEmailBanner",
854
862
  setup(__props) {
855
863
  const { showVerificationPrompt } = useEmailVerificationGuard();
@@ -874,28 +882,28 @@ const _sfc_main$54 = /* @__PURE__ */ defineComponent({
874
882
  }
875
883
  };
876
884
  return (_ctx, _cache) => {
877
- return unref(showVerificationPrompt) ? (openBlock(), createElementBlock("div", _hoisted_1$50, [createElementVNode("p", _hoisted_2$45, [
885
+ return unref(showVerificationPrompt) ? (openBlock(), createElementBlock("div", _hoisted_1$46, [createElementVNode("p", _hoisted_2$41, [
878
886
  _cache[0] || (_cache[0] = createTextVNode(" Please verify your email. Check your inbox or ", -1)),
879
887
  createElementVNode("button", {
880
888
  type: "button",
881
889
  class: "link link-hover font-medium underline",
882
890
  disabled: resendLoading.value,
883
891
  onClick: resendVerification
884
- }, toDisplayString(resendLoading.value ? "Sending..." : "resend verification email"), 9, _hoisted_3$42),
892
+ }, toDisplayString(resendLoading.value ? "Sending..." : "resend verification email"), 9, _hoisted_3$38),
885
893
  _cache[1] || (_cache[1] = createTextVNode(". ", -1))
886
894
  ])])) : createCommentVNode("v-if", true);
887
895
  };
888
896
  }
889
897
  });
890
- var UnverifiedEmailBanner_default = _sfc_main$54;
898
+ var UnverifiedEmailBanner_default = _sfc_main$50;
891
899
 
892
900
  //#endregion
893
901
  //#region src/layouts/Admin.vue
894
- const _hoisted_1$49 = { class: "drawer drawer-end" };
895
- const _hoisted_2$44 = { class: "drawer h-[calc(100vh_-_64px_-_64px)] bg-base-100" };
896
- const _hoisted_3$41 = { class: "drawer-content" };
897
- const _hoisted_4$37 = { class: "pr-1 pl-1 md:pr-4 md:pl-4" };
898
- const _sfc_main$53 = /* @__PURE__ */ defineComponent({
902
+ const _hoisted_1$45 = { class: "drawer drawer-end" };
903
+ const _hoisted_2$40 = { class: "drawer h-[calc(100vh_-_64px_-_64px)] bg-base-100" };
904
+ const _hoisted_3$37 = { class: "drawer-content" };
905
+ const _hoisted_4$33 = { class: "pr-1 pl-1 md:pr-4 md:pl-4" };
906
+ const _sfc_main$49 = /* @__PURE__ */ defineComponent({
899
907
  __name: "Admin",
900
908
  props: {
901
909
  logoSrc: {},
@@ -903,13 +911,13 @@ const _sfc_main$53 = /* @__PURE__ */ defineComponent({
903
911
  },
904
912
  setup(__props) {
905
913
  return (_ctx, _cache) => {
906
- return openBlock(), createElementBlock(Fragment, null, [createElementVNode("div", _hoisted_1$49, [createVNode(RightSidebar_default)]), createElementVNode("div", _hoisted_2$44, [
914
+ return openBlock(), createElementBlock(Fragment, null, [createElementVNode("div", _hoisted_1$45, [createVNode(RightSidebar_default)]), createElementVNode("div", _hoisted_2$40, [
907
915
  _cache[0] || (_cache[0] = createElementVNode("input", {
908
916
  id: "my-drawer-4",
909
917
  type: "checkbox",
910
918
  class: "drawer-toggle"
911
919
  }, null, -1)),
912
- createElementVNode("div", _hoisted_3$41, [createVNode(Navbar_default, { logoSrc: __props.navbarLogoSrc }, null, 8, ["logoSrc"]), createElementVNode("div", _hoisted_4$37, [createVNode(unref(RouterView))])]),
920
+ createElementVNode("div", _hoisted_3$37, [createVNode(Navbar_default, { logoSrc: __props.navbarLogoSrc }, null, 8, ["logoSrc"]), createElementVNode("div", _hoisted_4$33, [createVNode(unref(RouterView))])]),
913
921
  createVNode(Sidebar_default, { logoSrc: __props.logoSrc }, createSlots({ _: 2 }, [_ctx.$slots.sidebarLogo ? {
914
922
  name: "logo",
915
923
  fn: withCtx(() => [renderSlot(_ctx.$slots, "sidebarLogo")]),
@@ -919,27 +927,29 @@ const _sfc_main$53 = /* @__PURE__ */ defineComponent({
919
927
  };
920
928
  }
921
929
  });
922
- var Admin_default = _sfc_main$53;
930
+ var Admin_default = _sfc_main$49;
923
931
 
924
932
  //#endregion
925
933
  //#region src/layouts/Auth.vue
926
- const _hoisted_1$48 = { class: "m-4" };
927
- const _hoisted_2$43 = {
934
+ const _hoisted_1$44 = { class: "m-4" };
935
+ const _hoisted_2$39 = {
928
936
  key: 0,
929
937
  class: "flex justify-center mb-2"
930
938
  };
931
- const _hoisted_3$40 = { class: "flex flex-wrap gap-4 text-sm" };
932
- const _hoisted_4$36 = { class: "flex justify-center mb-6" };
933
- const _hoisted_5$28 = ["src"];
934
- const _hoisted_6$23 = { class: "min-h-screen bg-base-100 flex flex-col" };
935
- const _sfc_main$52 = /* @__PURE__ */ defineComponent({
939
+ const _hoisted_3$36 = { class: "flex flex-wrap gap-4 text-sm" };
940
+ const _hoisted_4$32 = { class: "flex justify-center mb-6" };
941
+ const _hoisted_5$24 = ["src"];
942
+ const _hoisted_6$19 = { class: "min-h-screen bg-base-100 flex flex-col" };
943
+ const _sfc_main$48 = /* @__PURE__ */ defineComponent({
936
944
  __name: "Auth",
937
945
  props: {
938
946
  logoSrc: {},
939
- backLinks: {}
947
+ backLinks: {},
948
+ signupRequirements: {}
940
949
  },
941
950
  setup(__props) {
942
951
  const props = __props;
952
+ if (props.signupRequirements !== void 0) provide(SIGNUP_REQUIREMENTS_KEY, props.signupRequirements);
943
953
  const route = useRoute();
944
954
  const imageLoadFailed = ref(false);
945
955
  const backLinks = computed(() => {
@@ -950,8 +960,8 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
950
960
  });
951
961
  const hasBackLinks = computed(() => backLinks.value.length > 0);
952
962
  return (_ctx, _cache) => {
953
- return openBlock(), createElementBlock("div", _hoisted_1$48, [
954
- hasBackLinks.value ? (openBlock(), createElementBlock("div", _hoisted_2$43, [createElementVNode("nav", _hoisted_3$40, [(openBlock(true), createElementBlock(Fragment, null, renderList(backLinks.value, (link, i) => {
963
+ return openBlock(), createElementBlock("div", _hoisted_1$44, [
964
+ hasBackLinks.value ? (openBlock(), createElementBlock("div", _hoisted_2$39, [createElementVNode("nav", _hoisted_3$36, [(openBlock(true), createElementBlock(Fragment, null, renderList(backLinks.value, (link, i) => {
955
965
  return openBlock(), createBlock(AppLink_default, {
956
966
  key: i,
957
967
  to: link.to,
@@ -961,7 +971,7 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
961
971
  _: 2
962
972
  }, 1032, ["to"]);
963
973
  }), 128))])])) : createCommentVNode("v-if", true),
964
- createElementVNode("div", _hoisted_4$36, [renderSlot(_ctx.$slots, "logo", {}, () => [!__props.logoSrc || imageLoadFailed.value ? (openBlock(), createBlock(LogoPlaceholder_default, {
974
+ createElementVNode("div", _hoisted_4$32, [renderSlot(_ctx.$slots, "logo", {}, () => [!__props.logoSrc || imageLoadFailed.value ? (openBlock(), createBlock(LogoPlaceholder_default, {
965
975
  key: 0,
966
976
  size: "md"
967
977
  })) : (openBlock(), createElementBlock("img", {
@@ -970,22 +980,22 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
970
980
  alt: "logo",
971
981
  class: "h-24",
972
982
  onError: _cache[0] || (_cache[0] = ($event) => imageLoadFailed.value = true)
973
- }, null, 40, _hoisted_5$28))])]),
974
- createElementVNode("div", _hoisted_6$23, [createVNode(unref(RouterView))])
983
+ }, null, 40, _hoisted_5$24))])]),
984
+ createElementVNode("div", _hoisted_6$19, [createVNode(unref(RouterView))])
975
985
  ]);
976
986
  };
977
987
  }
978
988
  });
979
- var Auth_default = _sfc_main$52;
989
+ var Auth_default = _sfc_main$48;
980
990
 
981
991
  //#endregion
982
992
  //#region src/layouts/Default.vue
983
- const _hoisted_1$47 = { class: "m-4" };
984
- const _sfc_main$51 = /* @__PURE__ */ defineComponent({
993
+ const _hoisted_1$43 = { class: "m-4" };
994
+ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
985
995
  __name: "Default",
986
996
  setup(__props) {
987
997
  return (_ctx, _cache) => {
988
- return openBlock(), createElementBlock("div", _hoisted_1$47, [createVNode(AppLink_default, {
998
+ return openBlock(), createElementBlock("div", _hoisted_1$43, [createVNode(AppLink_default, {
989
999
  to: "/auth/login",
990
1000
  "aria-current": "page",
991
1001
  "aria-label": "Homepage",
@@ -997,19 +1007,19 @@ const _sfc_main$51 = /* @__PURE__ */ defineComponent({
997
1007
  };
998
1008
  }
999
1009
  });
1000
- var Default_default = _sfc_main$51;
1010
+ var Default_default = _sfc_main$47;
1001
1011
 
1002
1012
  //#endregion
1003
1013
  //#region src/layouts/InApp.vue
1004
- const _hoisted_1$46 = { class: "drawer drawer-end" };
1005
- const _hoisted_2$42 = { class: "drawer h-[calc(100vh_)]" };
1006
- const _hoisted_3$39 = { class: "drawer-content flex flex-col" };
1007
- const _hoisted_4$35 = {
1014
+ const _hoisted_1$42 = { class: "drawer drawer-end" };
1015
+ const _hoisted_2$38 = { class: "drawer h-[calc(100vh_)]" };
1016
+ const _hoisted_3$35 = { class: "drawer-content flex flex-col" };
1017
+ const _hoisted_4$31 = {
1008
1018
  key: 0,
1009
1019
  class: "z-20"
1010
1020
  };
1011
- const _hoisted_5$27 = { class: "flex-1 px-3 sm:px-4 md:px-6 pb-4" };
1012
- const _sfc_main$50 = /* @__PURE__ */ defineComponent({
1021
+ const _hoisted_5$23 = { class: "flex-1 px-3 sm:px-4 md:px-6 pb-4" };
1022
+ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
1013
1023
  __name: "InApp",
1014
1024
  props: {
1015
1025
  logoSrc: {},
@@ -1072,16 +1082,16 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
1072
1082
  return route.meta.currentTab || "";
1073
1083
  });
1074
1084
  return (_ctx, _cache) => {
1075
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Right sidebar drawer "), createElementVNode("div", _hoisted_1$46, [
1085
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Right sidebar drawer "), createElementVNode("div", _hoisted_1$42, [
1076
1086
  createVNode(RightSidebar_default),
1077
1087
  createCommentVNode(" Left sidebar drawer "),
1078
- createElementVNode("div", _hoisted_2$42, [
1088
+ createElementVNode("div", _hoisted_2$38, [
1079
1089
  _cache[0] || (_cache[0] = createElementVNode("input", {
1080
1090
  id: "drawer",
1081
1091
  type: "checkbox",
1082
1092
  class: "drawer-toggle"
1083
1093
  }, null, -1)),
1084
- createElementVNode("div", _hoisted_3$39, [
1094
+ createElementVNode("div", _hoisted_3$35, [
1085
1095
  createCommentVNode(" Fixed navbar at top with breadcrumbs "),
1086
1096
  createVNode(Navbar_default, {
1087
1097
  class: "sticky top-0 z-30",
@@ -1090,12 +1100,12 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
1090
1100
  }, null, 8, ["breadcrumbs", "logoSrc"]),
1091
1101
  createVNode(UnverifiedEmailBanner_default),
1092
1102
  createCommentVNode(" Unified navigation with AppHeader (only shown when needed) "),
1093
- shouldShowAppHeader.value ? (openBlock(), createElementBlock("div", _hoisted_4$35, [createVNode(AppHeader_default, {
1103
+ shouldShowAppHeader.value ? (openBlock(), createElementBlock("div", _hoisted_4$31, [createVNode(AppHeader_default, {
1094
1104
  tabs: currentSectionTabs.value,
1095
1105
  "active-tab": currentActiveTab.value
1096
1106
  }, null, 8, ["tabs", "active-tab"])])) : createCommentVNode("v-if", true),
1097
1107
  createCommentVNode(" Main content "),
1098
- createElementVNode("div", _hoisted_5$27, [createVNode(unref(RouterView))])
1108
+ createElementVNode("div", _hoisted_5$23, [createVNode(unref(RouterView))])
1099
1109
  ]),
1100
1110
  createCommentVNode(" Left sidebar "),
1101
1111
  createVNode(Sidebar_default, { logoSrc: __props.logoSrc }, createSlots({ _: 2 }, [_ctx.$slots.sidebarLogo ? {
@@ -1108,14 +1118,14 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
1108
1118
  };
1109
1119
  }
1110
1120
  });
1111
- var InApp_default = _sfc_main$50;
1121
+ var InApp_default = _sfc_main$46;
1112
1122
 
1113
1123
  //#endregion
1114
1124
  //#region src/components/ui/FieldDisplay.vue
1115
- const _hoisted_1$45 = { class: "label" };
1116
- const _hoisted_2$41 = { class: "label-text font-medium" };
1117
- const _hoisted_3$38 = { class: "text-base-content" };
1118
- const _sfc_main$49 = /* @__PURE__ */ defineComponent({
1125
+ const _hoisted_1$41 = { class: "label" };
1126
+ const _hoisted_2$37 = { class: "label-text font-medium" };
1127
+ const _hoisted_3$34 = { class: "text-base-content" };
1128
+ const _sfc_main$45 = /* @__PURE__ */ defineComponent({
1119
1129
  __name: "FieldDisplay",
1120
1130
  props: {
1121
1131
  label: {},
@@ -1124,61 +1134,61 @@ const _sfc_main$49 = /* @__PURE__ */ defineComponent({
1124
1134
  },
1125
1135
  setup(__props) {
1126
1136
  return (_ctx, _cache) => {
1127
- return openBlock(), createElementBlock("div", { class: normalizeClass(["form-control", { "md:col-span-2": __props.fullWidth }]) }, [createElementVNode("label", _hoisted_1$45, [createElementVNode("span", _hoisted_2$41, toDisplayString(__props.label), 1)]), createElementVNode("div", _hoisted_3$38, toDisplayString(__props.value ?? "-"), 1)], 2);
1137
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["form-control", { "md:col-span-2": __props.fullWidth }]) }, [createElementVNode("label", _hoisted_1$41, [createElementVNode("span", _hoisted_2$37, toDisplayString(__props.label), 1)]), createElementVNode("div", _hoisted_3$34, toDisplayString(__props.value ?? "-"), 1)], 2);
1128
1138
  };
1129
1139
  }
1130
1140
  });
1131
- var FieldDisplay_default = _sfc_main$49;
1141
+ var FieldDisplay_default = _sfc_main$45;
1132
1142
 
1133
1143
  //#endregion
1134
1144
  //#region src/components/ui/FieldGroup.vue
1135
- const _hoisted_1$44 = { class: "card bg-base-100 shadow-sm" };
1136
- const _hoisted_2$40 = { class: "card-body" };
1137
- const _hoisted_3$37 = { class: "card-title text-lg mb-4" };
1138
- const _hoisted_4$34 = { class: "grid grid-cols-1 md:grid-cols-2 gap-4" };
1139
- const _sfc_main$48 = /* @__PURE__ */ defineComponent({
1145
+ const _hoisted_1$40 = { class: "card bg-base-100 shadow-sm" };
1146
+ const _hoisted_2$36 = { class: "card-body" };
1147
+ const _hoisted_3$33 = { class: "card-title text-lg mb-4" };
1148
+ const _hoisted_4$30 = { class: "grid grid-cols-1 md:grid-cols-2 gap-4" };
1149
+ const _sfc_main$44 = /* @__PURE__ */ defineComponent({
1140
1150
  __name: "FieldGroup",
1141
1151
  props: { title: {} },
1142
1152
  setup(__props) {
1143
1153
  return (_ctx, _cache) => {
1144
- return openBlock(), createElementBlock("div", _hoisted_1$44, [createElementVNode("div", _hoisted_2$40, [createElementVNode("h2", _hoisted_3$37, toDisplayString(__props.title), 1), createElementVNode("div", _hoisted_4$34, [renderSlot(_ctx.$slots, "default")])])]);
1154
+ return openBlock(), createElementBlock("div", _hoisted_1$40, [createElementVNode("div", _hoisted_2$36, [createElementVNode("h2", _hoisted_3$33, toDisplayString(__props.title), 1), createElementVNode("div", _hoisted_4$30, [renderSlot(_ctx.$slots, "default")])])]);
1145
1155
  };
1146
1156
  }
1147
1157
  });
1148
- var FieldGroup_default = _sfc_main$48;
1158
+ var FieldGroup_default = _sfc_main$44;
1149
1159
 
1150
1160
  //#endregion
1151
1161
  //#region src/components/ui/FileManager.vue
1152
- const _hoisted_1$43 = { class: "w-full px-2 sm:px-0" };
1153
- const _hoisted_2$39 = { class: "mb-4" };
1154
- const _hoisted_3$36 = { class: "flex flex-col sm:flex-row sm:justify-between sm:items-center gap-3 mb-3" };
1155
- const _hoisted_4$33 = { class: "text-lg font-medium" };
1156
- const _hoisted_5$26 = { class: "flex gap-2 sm:hidden" };
1157
- const _hoisted_6$22 = ["disabled"];
1158
- const _hoisted_7$18 = { class: "breadcrumbs text-xs sm:text-sm overflow-x-auto -mx-2 px-2" };
1159
- const _hoisted_8$18 = { class: "min-w-max" };
1160
- const _hoisted_9$17 = ["onClick", "title"];
1161
- const _hoisted_10$14 = ["accept"];
1162
- const _hoisted_11$13 = { class: "flex flex-col items-center justify-center py-4" };
1163
- const _hoisted_12$12 = { class: "text-lg font-medium" };
1164
- const _hoisted_13$10 = { class: "text-sm text-base-content/70 mt-1" };
1165
- const _hoisted_14$9 = {
1162
+ const _hoisted_1$39 = { class: "w-full px-2 sm:px-0" };
1163
+ const _hoisted_2$35 = { class: "mb-4" };
1164
+ const _hoisted_3$32 = { class: "flex flex-col sm:flex-row sm:justify-between sm:items-center gap-3 mb-3" };
1165
+ const _hoisted_4$29 = { class: "text-lg font-medium" };
1166
+ const _hoisted_5$22 = { class: "flex gap-2 sm:hidden" };
1167
+ const _hoisted_6$18 = ["disabled"];
1168
+ const _hoisted_7$15 = { class: "breadcrumbs text-xs sm:text-sm overflow-x-auto -mx-2 px-2" };
1169
+ const _hoisted_8$15 = { class: "min-w-max" };
1170
+ const _hoisted_9$14 = ["onClick", "title"];
1171
+ const _hoisted_10$11 = ["accept"];
1172
+ const _hoisted_11$10 = { class: "flex flex-col items-center justify-center py-4" };
1173
+ const _hoisted_12$9 = { class: "text-lg font-medium" };
1174
+ const _hoisted_13$7 = { class: "text-sm text-base-content/70 mt-1" };
1175
+ const _hoisted_14$6 = {
1166
1176
  key: 0,
1167
1177
  class: "text-xs text-base-content/50 mt-3"
1168
1178
  };
1169
- const _hoisted_15$8 = {
1179
+ const _hoisted_15$5 = {
1170
1180
  key: 0,
1171
1181
  class: "mb-4"
1172
1182
  };
1173
- const _hoisted_16$8 = { class: "space-y-3" };
1174
- const _hoisted_17$7 = { class: "flex justify-between items-start mb-2" };
1175
- const _hoisted_18$5 = { class: "flex-1" };
1176
- const _hoisted_19$5 = { class: "flex items-center gap-2" };
1177
- const _hoisted_20$5 = {
1183
+ const _hoisted_16$5 = { class: "space-y-3" };
1184
+ const _hoisted_17$4 = { class: "flex justify-between items-start mb-2" };
1185
+ const _hoisted_18$4 = { class: "flex-1" };
1186
+ const _hoisted_19$4 = { class: "flex items-center gap-2" };
1187
+ const _hoisted_20$4 = {
1178
1188
  key: 0,
1179
1189
  class: "loading loading-spinner loading-xs text-primary"
1180
1190
  };
1181
- const _hoisted_21$4 = {
1191
+ const _hoisted_21$3 = {
1182
1192
  key: 1,
1183
1193
  xmlns: "http://www.w3.org/2000/svg",
1184
1194
  class: "h-4 w-4 text-success",
@@ -1186,7 +1196,7 @@ const _hoisted_21$4 = {
1186
1196
  viewBox: "0 0 24 24",
1187
1197
  stroke: "currentColor"
1188
1198
  };
1189
- const _hoisted_22$4 = {
1199
+ const _hoisted_22$3 = {
1190
1200
  key: 2,
1191
1201
  xmlns: "http://www.w3.org/2000/svg",
1192
1202
  class: "h-4 w-4 text-error",
@@ -1270,7 +1280,7 @@ const _hoisted_68 = { class: "flex items-center gap-2" };
1270
1280
  const _hoisted_69 = { class: "font-medium" };
1271
1281
  const _hoisted_70 = { class: "text-base-content/70" };
1272
1282
  const DEFAULT_MAX_FILE_SIZE = 50 * 1024 * 1024;
1273
- const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1283
+ const _sfc_main$43 = /* @__PURE__ */ defineComponent({
1274
1284
  __name: "FileManager",
1275
1285
  props: {
1276
1286
  recordId: {},
@@ -1642,14 +1652,14 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1642
1652
  return "badge-neutral";
1643
1653
  };
1644
1654
  return (_ctx, _cache) => {
1645
- return openBlock(), createElementBlock("div", _hoisted_1$43, [
1655
+ return openBlock(), createElementBlock("div", _hoisted_1$39, [
1646
1656
  createCommentVNode(" File Manager Header "),
1647
- createElementVNode("div", _hoisted_2$39, [
1657
+ createElementVNode("div", _hoisted_2$35, [
1648
1658
  createCommentVNode(" Mobile: Stacked layout "),
1649
- createElementVNode("div", _hoisted_3$36, [
1650
- createElementVNode("h3", _hoisted_4$33, toDisplayString(config.value.title || "Attachments"), 1),
1659
+ createElementVNode("div", _hoisted_3$32, [
1660
+ createElementVNode("h3", _hoisted_4$29, toDisplayString(config.value.title || "Attachments"), 1),
1651
1661
  createCommentVNode(" Mobile: Action buttons "),
1652
- createElementVNode("div", _hoisted_5$26, [createElementVNode("button", {
1662
+ createElementVNode("div", _hoisted_5$22, [createElementVNode("button", {
1653
1663
  class: "btn btn-sm btn-primary flex-1",
1654
1664
  onClick: openFileSelector,
1655
1665
  disabled: isUploading.value
@@ -1664,7 +1674,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1664
1674
  "stroke-linejoin": "round",
1665
1675
  "stroke-width": "2",
1666
1676
  d: "M12 4v16m8-8H4"
1667
- })], -1)), createTextVNode(" " + toDisplayString(config.value.addButtonText || "Add Files"), 1)], 8, _hoisted_6$22), createElementVNode("button", {
1677
+ })], -1)), createTextVNode(" " + toDisplayString(config.value.addButtonText || "Add Files"), 1)], 8, _hoisted_6$18), createElementVNode("button", {
1668
1678
  class: "btn btn-sm btn-info flex-1",
1669
1679
  onClick: createFolder
1670
1680
  }, [..._cache[6] || (_cache[6] = [createElementVNode("svg", {
@@ -1686,7 +1696,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1686
1696
  }, "New Folder")])
1687
1697
  ]),
1688
1698
  createCommentVNode(" Breadcrumb Navigation - Mobile optimized "),
1689
- createElementVNode("div", _hoisted_7$18, [createElementVNode("ul", _hoisted_8$18, [createElementVNode("li", null, [createElementVNode("button", {
1699
+ createElementVNode("div", _hoisted_7$15, [createElementVNode("ul", _hoisted_8$15, [createElementVNode("li", null, [createElementVNode("button", {
1690
1700
  class: normalizeClass(["btn btn-sm sm:btn-xs btn-ghost min-h-[2.5rem] sm:min-h-0 py-2 sm:py-1", { "btn-active": !currentFolderId.value }]),
1691
1701
  onClick: _cache[0] || (_cache[0] = ($event) => navigateToFolder(null))
1692
1702
  }, [..._cache[7] || (_cache[7] = [createElementVNode("svg", {
@@ -1705,7 +1715,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1705
1715
  class: normalizeClass(["btn btn-sm sm:btn-xs btn-ghost min-h-[2.5rem] sm:min-h-0 py-2 sm:py-1 max-w-[8rem] sm:max-w-none truncate", { "btn-active": index === folderPath.value.length - 1 }]),
1706
1716
  onClick: ($event) => navigateToFolder(folder.id),
1707
1717
  title: folder.name
1708
- }, toDisplayString(folder.name), 11, _hoisted_9$17)]);
1718
+ }, toDisplayString(folder.name), 11, _hoisted_9$14)]);
1709
1719
  }), 128))])])
1710
1720
  ]),
1711
1721
  createElementVNode("input", {
@@ -1716,7 +1726,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1716
1726
  onChange: handleFileChange,
1717
1727
  multiple: "",
1718
1728
  accept: config.value.acceptedTypes
1719
- }, null, 40, _hoisted_10$14),
1729
+ }, null, 40, _hoisted_10$11),
1720
1730
  createCommentVNode(" Drag & Drop Zone (hidden on mobile) "),
1721
1731
  createElementVNode("div", {
1722
1732
  class: normalizeClass(["hidden sm:block border-2 border-dashed rounded-lg p-6 text-center mb-4 transition-colors", {
@@ -1727,7 +1737,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1727
1737
  onDragleave: _cache[2] || (_cache[2] = withModifiers(($event) => isDragging.value = false, ["prevent"])),
1728
1738
  onDrop: withModifiers(handleFileDrop, ["prevent"]),
1729
1739
  onClick: openFileSelector
1730
- }, [createElementVNode("div", _hoisted_11$13, [
1740
+ }, [createElementVNode("div", _hoisted_11$10, [
1731
1741
  _cache[8] || (_cache[8] = createElementVNode("svg", {
1732
1742
  xmlns: "http://www.w3.org/2000/svg",
1733
1743
  class: "h-12 w-12 mb-2 text-primary",
@@ -1740,12 +1750,12 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1740
1750
  "stroke-width": "2",
1741
1751
  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"
1742
1752
  })], -1)),
1743
- createElementVNode("p", _hoisted_12$12, toDisplayString(config.value.dropText || "Drag and drop files here"), 1),
1744
- createElementVNode("p", _hoisted_13$10, toDisplayString(config.value.browseText || "or click to browse files"), 1),
1745
- config.value.acceptText ? (openBlock(), createElementBlock("p", _hoisted_14$9, toDisplayString(config.value.acceptText), 1)) : createCommentVNode("v-if", true)
1753
+ createElementVNode("p", _hoisted_12$9, toDisplayString(config.value.dropText || "Drag and drop files here"), 1),
1754
+ createElementVNode("p", _hoisted_13$7, toDisplayString(config.value.browseText || "or click to browse files"), 1),
1755
+ config.value.acceptText ? (openBlock(), createElementBlock("p", _hoisted_14$6, toDisplayString(config.value.acceptText), 1)) : createCommentVNode("v-if", true)
1746
1756
  ])], 34),
1747
1757
  createCommentVNode(" Upload Queue "),
1748
- uploadQueue.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_15$8, [_cache[12] || (_cache[12] = createElementVNode("div", { class: "text-sm font-medium mb-2" }, "File uploads", -1)), createElementVNode("div", _hoisted_16$8, [(openBlock(true), createElementBlock(Fragment, null, renderList(uploadQueue.value, (item) => {
1758
+ uploadQueue.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_15$5, [_cache[12] || (_cache[12] = createElementVNode("div", { class: "text-sm font-medium mb-2" }, "File uploads", -1)), createElementVNode("div", _hoisted_16$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(uploadQueue.value, (item) => {
1749
1759
  return openBlock(), createElementBlock("div", {
1750
1760
  key: item.id,
1751
1761
  class: normalizeClass(["border border-base-200 rounded-lg p-3", {
@@ -1753,16 +1763,16 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1753
1763
  "bg-error/5 border-error/30": item.status === "error"
1754
1764
  }])
1755
1765
  }, [
1756
- createElementVNode("div", _hoisted_17$7, [
1757
- createElementVNode("div", _hoisted_18$5, [
1758
- createElementVNode("div", _hoisted_19$5, [
1766
+ createElementVNode("div", _hoisted_17$4, [
1767
+ createElementVNode("div", _hoisted_18$4, [
1768
+ createElementVNode("div", _hoisted_19$4, [
1759
1769
  createCommentVNode(" Status Icon "),
1760
- item.status === "uploading" ? (openBlock(), createElementBlock("div", _hoisted_20$5)) : item.status === "success" ? (openBlock(), createElementBlock("svg", _hoisted_21$4, [..._cache[9] || (_cache[9] = [createElementVNode("path", {
1770
+ item.status === "uploading" ? (openBlock(), createElementBlock("div", _hoisted_20$4)) : item.status === "success" ? (openBlock(), createElementBlock("svg", _hoisted_21$3, [..._cache[9] || (_cache[9] = [createElementVNode("path", {
1761
1771
  "stroke-linecap": "round",
1762
1772
  "stroke-linejoin": "round",
1763
1773
  "stroke-width": "2",
1764
1774
  d: "M5 13l4 4L19 7"
1765
- }, null, -1)])])) : item.status === "error" ? (openBlock(), createElementBlock("svg", _hoisted_22$4, [..._cache[10] || (_cache[10] = [createElementVNode("path", {
1775
+ }, null, -1)])])) : item.status === "error" ? (openBlock(), createElementBlock("svg", _hoisted_22$3, [..._cache[10] || (_cache[10] = [createElementVNode("path", {
1766
1776
  "stroke-linecap": "round",
1767
1777
  "stroke-linejoin": "round",
1768
1778
  "stroke-width": "2",
@@ -1985,47 +1995,47 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1985
1995
  };
1986
1996
  }
1987
1997
  });
1988
- var FileManager_default = _sfc_main$47;
1998
+ var FileManager_default = _sfc_main$43;
1989
1999
 
1990
2000
  //#endregion
1991
2001
  //#region src/components/ui/KeyValueEditor.vue
1992
- const _hoisted_1$42 = { class: "key-value-editor col-span-full" };
1993
- const _hoisted_2$38 = {
2002
+ const _hoisted_1$38 = { class: "key-value-editor col-span-full" };
2003
+ const _hoisted_2$34 = {
1994
2004
  key: 0,
1995
2005
  class: "mb-2"
1996
2006
  };
1997
- const _hoisted_3$35 = {
2007
+ const _hoisted_3$31 = {
1998
2008
  key: 0,
1999
2009
  class: "label p-0"
2000
2010
  };
2001
- const _hoisted_4$32 = { class: "label-text" };
2002
- const _hoisted_5$25 = {
2011
+ const _hoisted_4$28 = { class: "label-text" };
2012
+ const _hoisted_5$21 = {
2003
2013
  key: 1,
2004
2014
  class: "text-xs text-base-content/60 mt-1"
2005
2015
  };
2006
- const _hoisted_6$21 = {
2016
+ const _hoisted_6$17 = {
2007
2017
  key: 1,
2008
2018
  class: "text-error text-sm mb-2"
2009
2019
  };
2010
- const _hoisted_7$17 = { class: "space-y-3" };
2011
- const _hoisted_8$17 = { class: "flex-1" };
2012
- const _hoisted_9$16 = [
2020
+ const _hoisted_7$14 = { class: "space-y-3" };
2021
+ const _hoisted_8$14 = { class: "flex-1" };
2022
+ const _hoisted_9$13 = [
2013
2023
  "onUpdate:modelValue",
2014
2024
  "placeholder",
2015
2025
  "onInput"
2016
2026
  ];
2017
- const _hoisted_10$13 = { class: "flex-1" };
2018
- const _hoisted_11$12 = [
2027
+ const _hoisted_10$10 = { class: "flex-1" };
2028
+ const _hoisted_11$9 = [
2019
2029
  "onUpdate:modelValue",
2020
2030
  "placeholder",
2021
2031
  "onInput"
2022
2032
  ];
2023
- const _hoisted_12$11 = ["onClick", "disabled"];
2024
- const _hoisted_13$9 = {
2033
+ const _hoisted_12$8 = ["onClick", "disabled"];
2034
+ const _hoisted_13$6 = {
2025
2035
  key: 2,
2026
2036
  class: "text-center py-4 text-base-content/60"
2027
2037
  };
2028
- const _sfc_main$46 = /* @__PURE__ */ defineComponent({
2038
+ const _sfc_main$42 = /* @__PURE__ */ defineComponent({
2029
2039
  __name: "KeyValueEditor",
2030
2040
  props: {
2031
2041
  modelValue: { default: null },
@@ -2104,30 +2114,30 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
2104
2114
  pair[field] = value;
2105
2115
  };
2106
2116
  return (_ctx, _cache) => {
2107
- return openBlock(), createElementBlock("div", _hoisted_1$42, [
2108
- __props.label || __props.helpText ? (openBlock(), createElementBlock("div", _hoisted_2$38, [__props.label ? (openBlock(), createElementBlock("label", _hoisted_3$35, [createElementVNode("span", _hoisted_4$32, toDisplayString(__props.label), 1)])) : createCommentVNode("v-if", true), __props.helpText ? (openBlock(), createElementBlock("p", _hoisted_5$25, toDisplayString(__props.helpText), 1)) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true),
2109
- __props.error ? (openBlock(), createElementBlock("div", _hoisted_6$21, toDisplayString(__props.error), 1)) : createCommentVNode("v-if", true),
2110
- createElementVNode("div", _hoisted_7$17, [
2117
+ return openBlock(), createElementBlock("div", _hoisted_1$38, [
2118
+ __props.label || __props.helpText ? (openBlock(), createElementBlock("div", _hoisted_2$34, [__props.label ? (openBlock(), createElementBlock("label", _hoisted_3$31, [createElementVNode("span", _hoisted_4$28, toDisplayString(__props.label), 1)])) : createCommentVNode("v-if", true), __props.helpText ? (openBlock(), createElementBlock("p", _hoisted_5$21, toDisplayString(__props.helpText), 1)) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true),
2119
+ __props.error ? (openBlock(), createElementBlock("div", _hoisted_6$17, toDisplayString(__props.error), 1)) : createCommentVNode("v-if", true),
2120
+ createElementVNode("div", _hoisted_7$14, [
2111
2121
  createCommentVNode(" Key-Value Pairs List "),
2112
2122
  (openBlock(true), createElementBlock(Fragment, null, renderList(pairs.value, (pair, index) => {
2113
2123
  return openBlock(), createElementBlock("div", {
2114
2124
  key: index,
2115
2125
  class: "flex gap-2 items-start"
2116
2126
  }, [
2117
- createElementVNode("div", _hoisted_8$17, [withDirectives(createElementVNode("input", {
2127
+ createElementVNode("div", _hoisted_8$14, [withDirectives(createElementVNode("input", {
2118
2128
  "onUpdate:modelValue": ($event) => pair.key = $event,
2119
2129
  type: "text",
2120
2130
  placeholder: __props.keyPlaceholder,
2121
2131
  class: "input input-bordered w-full",
2122
2132
  onInput: ($event) => updatePair(index, "key", $event.target.value)
2123
- }, null, 40, _hoisted_9$16), [[vModelText, pair.key]])]),
2124
- createElementVNode("div", _hoisted_10$13, [withDirectives(createElementVNode("input", {
2133
+ }, null, 40, _hoisted_9$13), [[vModelText, pair.key]])]),
2134
+ createElementVNode("div", _hoisted_10$10, [withDirectives(createElementVNode("input", {
2125
2135
  "onUpdate:modelValue": ($event) => pair.value = $event,
2126
2136
  type: "text",
2127
2137
  placeholder: __props.valuePlaceholder,
2128
2138
  class: "input input-bordered w-full",
2129
2139
  onInput: ($event) => updatePair(index, "value", $event.target.value)
2130
- }, null, 40, _hoisted_11$12), [[vModelText, pair.value]])]),
2140
+ }, null, 40, _hoisted_11$9), [[vModelText, pair.value]])]),
2131
2141
  createElementVNode("button", {
2132
2142
  type: "button",
2133
2143
  class: "btn btn-error btn-sm",
@@ -2144,7 +2154,7 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
2144
2154
  "stroke-linejoin": "round",
2145
2155
  "stroke-width": "2",
2146
2156
  d: "M6 18L18 6M6 6l12 12"
2147
- })], -1)])], 8, _hoisted_12$11)
2157
+ })], -1)])], 8, _hoisted_12$8)
2148
2158
  ]);
2149
2159
  }), 128)),
2150
2160
  createCommentVNode(" Add New Pair Button "),
@@ -2166,498 +2176,12 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
2166
2176
  })], -1), createTextVNode(" Add Key-Value Pair ", -1)])])
2167
2177
  ]),
2168
2178
  createCommentVNode(" Empty State "),
2169
- pairs.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_13$9, " No key-value pairs. Click \"Add Key-Value Pair\" to get started. ")) : createCommentVNode("v-if", true)
2179
+ pairs.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_13$6, " No key-value pairs. Click \"Add Key-Value Pair\" to get started. ")) : createCommentVNode("v-if", true)
2170
2180
  ]);
2171
2181
  };
2172
2182
  }
2173
2183
  });
2174
- var KeyValueEditor_default = /* @__PURE__ */ export_helper_default(_sfc_main$46, [["__scopeId", "data-v-010818ef"]]);
2175
-
2176
- //#endregion
2177
- //#region src/components/ui/LoadingErrorStates.vue
2178
- const _hoisted_1$41 = {
2179
- key: 0,
2180
- class: "text-center py-8"
2181
- };
2182
- const _hoisted_2$37 = { class: "text-base-content/70 mt-2" };
2183
- const _hoisted_3$34 = { class: "text-center py-8" };
2184
- const _hoisted_4$31 = { class: "alert alert-error max-w-md mx-auto" };
2185
- const _hoisted_5$24 = { class: "font-bold" };
2186
- const _hoisted_6$20 = { class: "text-sm" };
2187
- const _sfc_main$45 = /* @__PURE__ */ defineComponent({
2188
- __name: "LoadingErrorStates",
2189
- props: {
2190
- isLoading: { type: Boolean },
2191
- error: {},
2192
- config: {}
2193
- },
2194
- emits: ["retry"],
2195
- setup(__props, { emit: __emit }) {
2196
- const props = __props;
2197
- const emit = __emit;
2198
- const config = computed(() => props.config || {});
2199
- function getErrorMessage(error) {
2200
- if (config.value.customErrorMessage) return config.value.customErrorMessage(error);
2201
- return error.message || "An unexpected error occurred";
2202
- }
2203
- function handleRetry() {
2204
- emit("retry");
2205
- }
2206
- return (_ctx, _cache) => {
2207
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Loading State "), __props.isLoading ? (openBlock(), createElementBlock("div", _hoisted_1$41, [renderSlot(_ctx.$slots, "loading", {}, () => [_cache[0] || (_cache[0] = createElementVNode("div", { class: "flex justify-center" }, [createElementVNode("span", { class: "loading loading-spinner loading-lg" })], -1)), createElementVNode("p", _hoisted_2$37, toDisplayString(config.value.loadingText || "Loading..."), 1)])])) : __props.error ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Error State "), createElementVNode("div", _hoisted_3$34, [renderSlot(_ctx.$slots, "error", {
2208
- error: __props.error,
2209
- retry: handleRetry
2210
- }, () => [createElementVNode("div", _hoisted_4$31, [_cache[1] || (_cache[1] = createElementVNode("svg", {
2211
- xmlns: "http://www.w3.org/2000/svg",
2212
- class: "stroke-current shrink-0 h-6 w-6",
2213
- fill: "none",
2214
- viewBox: "0 0 24 24"
2215
- }, [createElementVNode("path", {
2216
- "stroke-linecap": "round",
2217
- "stroke-linejoin": "round",
2218
- "stroke-width": "2",
2219
- d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
2220
- })], -1)), createElementVNode("div", null, [
2221
- createElementVNode("h3", _hoisted_5$24, toDisplayString(config.value.errorTitle || "Error"), 1),
2222
- createElementVNode("div", _hoisted_6$20, toDisplayString(getErrorMessage(__props.error)), 1),
2223
- config.value.showRetry !== false ? (openBlock(), createElementBlock("button", {
2224
- key: 0,
2225
- class: "btn btn-sm btn-outline mt-2",
2226
- onClick: handleRetry
2227
- }, toDisplayString(config.value.retryText || "Try Again"), 1)) : createCommentVNode("v-if", true)
2228
- ])])])])], 2112)) : createCommentVNode("v-if", true)], 2112);
2229
- };
2230
- }
2231
- });
2232
- var LoadingErrorStates_default = _sfc_main$45;
2233
-
2234
- //#endregion
2235
- //#region src/components/ui/RecordChangesSummary.vue
2236
- const _hoisted_1$40 = {
2237
- key: 0,
2238
- class: "card bg-base-100 shadow-sm mb-4"
2239
- };
2240
- const _hoisted_2$36 = { class: "card-body p-3 sm:p-5" };
2241
- const _hoisted_3$33 = { class: "flex justify-between items-center" };
2242
- const _hoisted_4$30 = { class: "card-title text-base sm:text-lg" };
2243
- const _hoisted_5$23 = { key: 0 };
2244
- const _hoisted_6$19 = { class: "hidden md:block overflow-x-auto mt-4" };
2245
- const _hoisted_7$16 = { class: "table table-zebra table-sm" };
2246
- const _hoisted_8$16 = { class: "font-mono text-xs" };
2247
- const _hoisted_9$15 = { class: "md:hidden space-y-4 mt-4" };
2248
- const _hoisted_10$12 = { class: "mb-2" };
2249
- const _hoisted_11$11 = { class: "font-mono text-xs font-bold" };
2250
- const _hoisted_12$10 = { class: "grid grid-cols-2 gap-2" };
2251
- const _hoisted_13$8 = { class: "text-xs text-base-content/70 mb-1" };
2252
- const _hoisted_14$8 = { class: "text-sm break-words" };
2253
- const _hoisted_15$7 = { class: "text-xs text-base-content/70 mb-1" };
2254
- const _hoisted_16$7 = { class: "text-sm break-words" };
2255
- const _hoisted_17$6 = {
2256
- key: 1,
2257
- class: "mt-2 text-sm text-base-content/70"
2258
- };
2259
- const _sfc_main$44 = /* @__PURE__ */ defineComponent({
2260
- __name: "RecordChangesSummary",
2261
- props: {
2262
- changedFields: {},
2263
- config: {}
2264
- },
2265
- setup(__props) {
2266
- const props = __props;
2267
- const config = computed(() => props.config || {});
2268
- const showChanges = ref(false);
2269
- function defaultFieldNameFormatter(path) {
2270
- if (config.value.customFieldLabels?.[path]) return config.value.customFieldLabels[path];
2271
- return path.split(".").map((segment) => segment.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase()).trim()).join(" → ");
2272
- }
2273
- function formatFieldName(path) {
2274
- if (config.value.fieldNameFormatter) return config.value.fieldNameFormatter(path);
2275
- return defaultFieldNameFormatter(path);
2276
- }
2277
- function defaultValueFormatter(value) {
2278
- if (value === null || value === void 0) return "N/A";
2279
- if (typeof value === "object") {
2280
- if (Array.isArray(value)) return value.length === 0 ? "Empty array" : `Array (${value.length} items)`;
2281
- return JSON.stringify(value, null, 2);
2282
- }
2283
- if (typeof value === "boolean") return value ? "Yes" : "No";
2284
- if (typeof value === "number") {
2285
- if (value > 0 && (value % 1 === 0 || value.toString().includes("."))) return value.toLocaleString("en-US", {
2286
- minimumFractionDigits: 2,
2287
- maximumFractionDigits: 2
2288
- });
2289
- return value.toString();
2290
- }
2291
- return String(value);
2292
- }
2293
- function formatValue(value, path) {
2294
- if (config.value.valueFormatter) return config.value.valueFormatter(value, path || "");
2295
- return defaultValueFormatter(value);
2296
- }
2297
- return (_ctx, _cache) => {
2298
- return __props.changedFields.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$40, [createElementVNode("div", _hoisted_2$36, [createElementVNode("div", _hoisted_3$33, [createElementVNode("h2", _hoisted_4$30, toDisplayString(config.value.title || "Changes in This Version"), 1), createElementVNode("button", {
2299
- onClick: _cache[0] || (_cache[0] = ($event) => showChanges.value = !showChanges.value),
2300
- class: "btn btn-sm btn-info"
2301
- }, toDisplayString(showChanges.value ? config.value.hideText || "Hide Changes" : config.value.showText || "Show Changes"), 1)]), showChanges.value ? (openBlock(), createElementBlock("div", _hoisted_5$23, [
2302
- createCommentVNode(" Desktop view - table format "),
2303
- createElementVNode("div", _hoisted_6$19, [createElementVNode("table", _hoisted_7$16, [createElementVNode("thead", null, [createElementVNode("tr", null, [
2304
- createElementVNode("th", null, toDisplayString(config.value.fieldColumnHeader || "Field"), 1),
2305
- createElementVNode("th", null, toDisplayString(config.value.previousColumnHeader || "Previous Value"), 1),
2306
- createElementVNode("th", null, toDisplayString(config.value.newColumnHeader || "New Value"), 1)
2307
- ])]), createElementVNode("tbody", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.changedFields, (change, index) => {
2308
- return openBlock(), createElementBlock("tr", { key: index }, [
2309
- createElementVNode("td", _hoisted_8$16, toDisplayString(formatFieldName(change.path)), 1),
2310
- createElementVNode("td", null, toDisplayString(formatValue(change.oldValue)), 1),
2311
- createElementVNode("td", null, toDisplayString(formatValue(change.newValue)), 1)
2312
- ]);
2313
- }), 128))])])]),
2314
- createCommentVNode(" Mobile view - card format "),
2315
- createElementVNode("div", _hoisted_9$15, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.changedFields, (change, index) => {
2316
- return openBlock(), createElementBlock("div", {
2317
- key: index,
2318
- class: "border border-base-300 rounded-lg p-3"
2319
- }, [createElementVNode("div", _hoisted_10$12, [createElementVNode("span", _hoisted_11$11, toDisplayString(formatFieldName(change.path)), 1)]), createElementVNode("div", _hoisted_12$10, [createElementVNode("div", null, [createElementVNode("div", _hoisted_13$8, toDisplayString(config.value.previousLabel || "Previous:"), 1), createElementVNode("div", _hoisted_14$8, toDisplayString(formatValue(change.oldValue)), 1)]), createElementVNode("div", null, [createElementVNode("div", _hoisted_15$7, toDisplayString(config.value.newLabel || "New:"), 1), createElementVNode("div", _hoisted_16$7, toDisplayString(formatValue(change.newValue)), 1)])])]);
2320
- }), 128))])
2321
- ])) : (openBlock(), createElementBlock("div", _hoisted_17$6, toDisplayString(__props.changedFields.length) + " " + toDisplayString(__props.changedFields.length === 1 ? config.value.fieldSingular || "field" : config.value.fieldPlural || "fields") + " changed ", 1))])])) : createCommentVNode("v-if", true);
2322
- };
2323
- }
2324
- });
2325
- var RecordChangesSummary_default = _sfc_main$44;
2326
-
2327
- //#endregion
2328
- //#region src/components/ui/RecordVersionList.vue
2329
- const _hoisted_1$39 = { class: "space-y-4" };
2330
- const _hoisted_2$35 = {
2331
- key: 0,
2332
- class: "space-y-4"
2333
- };
2334
- const _hoisted_3$32 = { class: "alert alert-error shadow-lg text-sm" };
2335
- const _hoisted_4$29 = { class: "font-bold" };
2336
- const _hoisted_5$22 = { class: "text-sm" };
2337
- const _hoisted_6$18 = { class: "alert alert-info shadow-lg text-sm" };
2338
- const _hoisted_7$15 = { class: "space-y-3 max-w-4xl mx-auto" };
2339
- const _hoisted_8$15 = { class: "card-body p-4" };
2340
- const _hoisted_9$14 = { class: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2" };
2341
- const _hoisted_10$11 = { class: "font-medium text-sm" };
2342
- const _hoisted_11$10 = { class: "flex items-center gap-2 text-xs text-base-content/70" };
2343
- const _hoisted_12$9 = {
2344
- key: 0,
2345
- class: "mt-1"
2346
- };
2347
- const _hoisted_13$7 = { class: "flex gap-2" };
2348
- const _hoisted_14$7 = ["onClick"];
2349
- const _hoisted_15$6 = {
2350
- key: 0,
2351
- class: "text-center py-4"
2352
- };
2353
- const _hoisted_16$6 = {
2354
- key: 1,
2355
- class: "text-center py-4"
2356
- };
2357
- const _hoisted_17$5 = ["disabled"];
2358
- const _sfc_main$43 = /* @__PURE__ */ defineComponent({
2359
- __name: "RecordVersionList",
2360
- props: {
2361
- versions: {},
2362
- loading: { type: Boolean },
2363
- error: {},
2364
- hasNextPage: { type: Boolean },
2365
- loadingMore: { type: Boolean },
2366
- config: {},
2367
- excludeLatest: { type: Boolean }
2368
- },
2369
- emits: ["retry", "load-more"],
2370
- setup(__props) {
2371
- const props = __props;
2372
- const config = computed(() => props.config || {});
2373
- const filteredVersions = computed(() => {
2374
- if (!props.excludeLatest) return props.versions;
2375
- if (props.versions.length <= 1) return [];
2376
- return props.versions.slice(1);
2377
- });
2378
- const defaultOperationLabels = {
2379
- insert: "Created",
2380
- update: "Updated",
2381
- delete: "Deleted"
2382
- };
2383
- const defaultOperationBadgeClasses = {
2384
- insert: "badge-success",
2385
- update: "badge-warning",
2386
- delete: "badge-error"
2387
- };
2388
- /**
2389
- * Format a date string to a readable format
2390
- */
2391
- function formatDate(dateString) {
2392
- if (!dateString) return "Unknown date";
2393
- try {
2394
- const date = new Date(dateString);
2395
- return new Intl.DateTimeFormat("en-US", {
2396
- year: "numeric",
2397
- month: "short",
2398
- day: "numeric",
2399
- hour: "2-digit",
2400
- minute: "2-digit"
2401
- }).format(date);
2402
- } catch (e) {
2403
- return "Invalid date";
2404
- }
2405
- }
2406
- /**
2407
- * Format the operation type for display
2408
- */
2409
- function formatOperation(operation) {
2410
- if (!operation) return "Unknown";
2411
- return {
2412
- ...defaultOperationLabels,
2413
- ...config.value.operationLabels
2414
- }[operation] || operation;
2415
- }
2416
- /**
2417
- * Get CSS class for operation badge
2418
- */
2419
- function getOperationBadgeClass(operation) {
2420
- if (!operation) return "badge-neutral";
2421
- return {
2422
- ...defaultOperationBadgeClasses,
2423
- ...config.value.operationBadgeClasses
2424
- }[operation] || "badge-neutral";
2425
- }
2426
- return (_ctx, _cache) => {
2427
- return openBlock(), createElementBlock("div", _hoisted_1$39, [createCommentVNode(" Loading State "), __props.loading ? (openBlock(), createElementBlock("div", _hoisted_2$35, [(openBlock(), createElementBlock(Fragment, null, renderList(3, (i) => {
2428
- return createElementVNode("div", {
2429
- key: i,
2430
- class: "card bg-base-100 shadow-xs animate-pulse"
2431
- }, [..._cache[2] || (_cache[2] = [createElementVNode("div", { class: "card-body p-4" }, [createElementVNode("div", { class: "h-4 bg-base-300 rounded-sm w-1/4 mb-2" }), createElementVNode("div", { class: "h-3 bg-base-300 rounded-sm w-1/3" })], -1)])]);
2432
- }), 64))])) : __props.error ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Error State "), createElementVNode("div", _hoisted_3$32, [
2433
- _cache[3] || (_cache[3] = createElementVNode("svg", {
2434
- xmlns: "http://www.w3.org/2000/svg",
2435
- class: "stroke-current shrink-0 h-5 w-5",
2436
- fill: "none",
2437
- viewBox: "0 0 24 24"
2438
- }, [createElementVNode("path", {
2439
- "stroke-linecap": "round",
2440
- "stroke-linejoin": "round",
2441
- "stroke-width": "2",
2442
- d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
2443
- })], -1)),
2444
- createElementVNode("div", null, [createElementVNode("h3", _hoisted_4$29, toDisplayString(config.value.errorTitle || "Error Loading Version History"), 1), createElementVNode("div", _hoisted_5$22, toDisplayString(__props.error.message), 1)]),
2445
- createElementVNode("button", {
2446
- class: "btn btn-xs",
2447
- onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("retry"))
2448
- }, toDisplayString(config.value.retryText || "Retry"), 1)
2449
- ])], 2112)) : !filteredVersions.value.length ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createCommentVNode(" No Versions "), createElementVNode("div", _hoisted_6$18, [_cache[4] || (_cache[4] = createElementVNode("svg", {
2450
- xmlns: "http://www.w3.org/2000/svg",
2451
- fill: "none",
2452
- viewBox: "0 0 24 24",
2453
- class: "stroke-current shrink-0 w-5 h-5"
2454
- }, [createElementVNode("path", {
2455
- "stroke-linecap": "round",
2456
- "stroke-linejoin": "round",
2457
- "stroke-width": "2",
2458
- d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
2459
- })], -1)), createElementVNode("span", null, toDisplayString(config.value.noVersionsText || `No previous versions available for this ${config.value.recordDisplayName || "record"}.`), 1)])], 2112)) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [createCommentVNode(" Version List "), createElementVNode("div", _hoisted_7$15, [
2460
- (openBlock(true), createElementBlock(Fragment, null, renderList(filteredVersions.value, (version) => {
2461
- return openBlock(), createElementBlock("div", {
2462
- key: version.id,
2463
- class: "card bg-base-100 shadow-xs hover:shadow-md transition-shadow duration-200"
2464
- }, [createElementVNode("div", _hoisted_8$15, [createElementVNode("div", _hoisted_9$14, [createElementVNode("div", null, [
2465
- createElementVNode("h3", _hoisted_10$11, toDisplayString(config.value.versionLabelFormat ? config.value.versionLabelFormat(version) : `Version from ${formatDate(version.recorded_at)}`), 1),
2466
- createElementVNode("div", _hoisted_11$10, [createElementVNode("span", { class: normalizeClass(["badge badge-xs", getOperationBadgeClass(version.operation)]) }, toDisplayString(formatOperation(version.operation)), 3), createElementVNode("span", null, "by " + toDisplayString(version.auth_username || "Unknown"), 1)]),
2467
- createCommentVNode(" Custom metadata slot "),
2468
- _ctx.$slots.versionMetadata ? (openBlock(), createElementBlock("div", _hoisted_12$9, [renderSlot(_ctx.$slots, "versionMetadata", { version })])) : createCommentVNode("v-if", true)
2469
- ]), createElementVNode("div", _hoisted_13$7, [createCommentVNode(" Custom actions slot "), renderSlot(_ctx.$slots, "versionActions", { version }, () => [createCommentVNode(" Default view action "), config.value.viewAction ? (openBlock(), createElementBlock("button", {
2470
- key: 0,
2471
- class: "btn btn-primary btn-xs",
2472
- onClick: ($event) => config.value.viewAction(version)
2473
- }, toDisplayString(config.value.viewActionText || "View Version"), 9, _hoisted_14$7)) : createCommentVNode("v-if", true)])])])])]);
2474
- }), 128)),
2475
- createCommentVNode(" Pagination "),
2476
- __props.loadingMore ? (openBlock(), createElementBlock("div", _hoisted_15$6, [..._cache[5] || (_cache[5] = [createElementVNode("span", { class: "loading loading-spinner loading-md" }, null, -1)])])) : createCommentVNode("v-if", true),
2477
- __props.hasNextPage ? (openBlock(), createElementBlock("div", _hoisted_16$6, [createElementVNode("button", {
2478
- class: "btn btn-sm btn-neutral",
2479
- onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("load-more")),
2480
- disabled: __props.loadingMore
2481
- }, toDisplayString(config.value.loadMoreText || "Load More"), 9, _hoisted_17$5)])) : createCommentVNode("v-if", true)
2482
- ])], 2112))]);
2483
- };
2484
- }
2485
- });
2486
- var RecordVersionList_default = _sfc_main$43;
2487
-
2488
- //#endregion
2489
- //#region src/components/ui/RecordVersionViewer.vue
2490
- const _hoisted_1$38 = { class: "sticky top-0 z-10 bg-base-100 shadow-sm" };
2491
- const _hoisted_2$34 = { class: "flex justify-between items-center p-4 border-b" };
2492
- const _hoisted_3$31 = { class: "text-lg font-semibold" };
2493
- const _hoisted_4$28 = {
2494
- key: 0,
2495
- class: "text-sm text-base-content/70"
2496
- };
2497
- const _hoisted_5$21 = { class: "flex gap-2" };
2498
- const _hoisted_6$17 = ["disabled"];
2499
- const _hoisted_7$14 = {
2500
- key: 0,
2501
- class: "loading loading-spinner loading-sm mr-1"
2502
- };
2503
- const _hoisted_8$14 = {
2504
- key: 0,
2505
- class: "max-w-4xl mx-auto p-2 md:p-4 bg-base-200 rounded-lg shadow-sm"
2506
- };
2507
- const _hoisted_9$13 = {
2508
- key: 0,
2509
- class: "mb-4"
2510
- };
2511
- const _hoisted_10$10 = {
2512
- key: 1,
2513
- class: "mb-4"
2514
- };
2515
- const _hoisted_11$9 = { class: "alert alert-warning" };
2516
- const _hoisted_12$8 = { class: "font-bold" };
2517
- const _hoisted_13$6 = { class: "text-sm" };
2518
- const _hoisted_14$6 = { class: "mb-4 p-3 bg-base-100 rounded-lg shadow-sm" };
2519
- const _hoisted_15$5 = { class: "font-semibold mb-2" };
2520
- const _hoisted_16$5 = { class: "grid grid-cols-1 md:grid-cols-2 gap-4 text-sm" };
2521
- const _hoisted_17$4 = { class: "text-base-content/70" };
2522
- const _hoisted_18$4 = { class: "ml-2" };
2523
- const _hoisted_19$4 = { class: "space-y-4" };
2524
- const _hoisted_20$4 = { class: "p-4 bg-base-100 rounded-lg shadow-sm" };
2525
- const _hoisted_21$3 = { class: "font-semibold mb-2" };
2526
- const _hoisted_22$3 = { class: "text-xs bg-base-200 p-3 rounded overflow-auto max-h-96" };
2527
- const _sfc_main$42 = /* @__PURE__ */ defineComponent({
2528
- __name: "RecordVersionViewer",
2529
- props: {
2530
- version: {},
2531
- recordData: {},
2532
- changedFields: { default: () => [] },
2533
- isLoading: { type: Boolean },
2534
- isRestoring: { type: Boolean },
2535
- error: {},
2536
- config: {}
2537
- },
2538
- setup(__props) {
2539
- const props = __props;
2540
- const config = computed(() => props.config || {});
2541
- const shouldShowChanges = computed(() => {
2542
- return props.changedFields && props.changedFields.length > 0 && props.version?.operation === "update";
2543
- });
2544
- const filteredRecordData = computed(() => {
2545
- if (!props.recordData) return {};
2546
- const excludeFields = new Set([
2547
- "id",
2548
- "created_at",
2549
- "updated_at",
2550
- "created_by",
2551
- "updated_by",
2552
- "__typename",
2553
- ...config.value.excludeFields || []
2554
- ]);
2555
- return Object.entries(props.recordData).filter(([key]) => !excludeFields.has(key)).reduce((acc, [key, value]) => {
2556
- acc[key] = value;
2557
- return acc;
2558
- }, {});
2559
- });
2560
- function formatVersionInfo(version) {
2561
- const date = new Date(version.recorded_at).toLocaleString();
2562
- return `${version.operation.charAt(0).toUpperCase() + version.operation.slice(1)} on ${date} by ${version.auth_username || "Unknown"}`;
2563
- }
2564
- function formatFieldName(field) {
2565
- if (config.value.formatFieldName) return config.value.formatFieldName(field);
2566
- return field.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase()).trim();
2567
- }
2568
- function formatValue(value) {
2569
- if (config.value.formatValue) return config.value.formatValue(value);
2570
- if (value === null || value === void 0) return "N/A";
2571
- if (typeof value === "boolean") return value ? "Yes" : "No";
2572
- if (typeof value === "object") return JSON.stringify(value);
2573
- return String(value);
2574
- }
2575
- async function handleRestore() {
2576
- if (config.value.onRestore && props.version) await config.value.onRestore(props.version);
2577
- }
2578
- return (_ctx, _cache) => {
2579
- return openBlock(), createElementBlock("div", null, [
2580
- createCommentVNode(" Version Header - sticky on mobile "),
2581
- createElementVNode("div", _hoisted_1$38, [renderSlot(_ctx.$slots, "header", {
2582
- version: __props.version,
2583
- isLoading: __props.isLoading,
2584
- isRestoring: __props.isRestoring
2585
- }, () => [createCommentVNode(" Default header "), createElementVNode("div", _hoisted_2$34, [createElementVNode("div", null, [createElementVNode("h1", _hoisted_3$31, toDisplayString(config.value.title || `View ${config.value.recordDisplayName || "Record"} Version`), 1), __props.version ? (openBlock(), createElementBlock("div", _hoisted_4$28, toDisplayString(formatVersionInfo(__props.version)), 1)) : createCommentVNode("v-if", true)]), createElementVNode("div", _hoisted_5$21, [
2586
- createCommentVNode(" Back button "),
2587
- config.value.onBack ? (openBlock(), createElementBlock("button", {
2588
- key: 0,
2589
- onClick: _cache[0] || (_cache[0] = (...args) => config.value.onBack && config.value.onBack(...args)),
2590
- class: "btn btn-ghost btn-sm"
2591
- }, [_cache[1] || (_cache[1] = createElementVNode("svg", {
2592
- xmlns: "http://www.w3.org/2000/svg",
2593
- class: "h-4 w-4 mr-1",
2594
- fill: "none",
2595
- viewBox: "0 0 24 24",
2596
- stroke: "currentColor"
2597
- }, [createElementVNode("path", {
2598
- "stroke-linecap": "round",
2599
- "stroke-linejoin": "round",
2600
- "stroke-width": "2",
2601
- d: "M10 19l-7-7m0 0l7-7m-7 7h18"
2602
- })], -1)), createTextVNode(" " + toDisplayString(config.value.backText || "Back"), 1)])) : createCommentVNode("v-if", true),
2603
- createCommentVNode(" Restore button "),
2604
- config.value.onRestore && __props.version && __props.version.operation !== "delete" ? (openBlock(), createElementBlock("button", {
2605
- key: 1,
2606
- onClick: handleRestore,
2607
- disabled: __props.isRestoring,
2608
- class: "btn btn-primary btn-sm"
2609
- }, [__props.isRestoring ? (openBlock(), createElementBlock("span", _hoisted_7$14)) : createCommentVNode("v-if", true), createTextVNode(" " + toDisplayString(config.value.restoreText || "Restore Version"), 1)], 8, _hoisted_6$17)) : createCommentVNode("v-if", true)
2610
- ])])])]),
2611
- createCommentVNode(" Loading and Error States "),
2612
- createVNode(LoadingErrorStates_default, {
2613
- "is-loading": __props.isLoading,
2614
- error: __props.error
2615
- }, null, 8, ["is-loading", "error"]),
2616
- createCommentVNode(" Main content area "),
2617
- !__props.isLoading && !__props.error && __props.recordData ? (openBlock(), createElementBlock("div", _hoisted_8$14, [
2618
- createCommentVNode(" Changes Summary - Only show for update operations "),
2619
- shouldShowChanges.value ? (openBlock(), createElementBlock("div", _hoisted_9$13, [renderSlot(_ctx.$slots, "changes", {
2620
- changedFields: __props.changedFields,
2621
- version: __props.version
2622
- }, () => [createVNode(RecordChangesSummary_default, {
2623
- "changed-fields": __props.changedFields,
2624
- config: config.value.changesSummaryConfig
2625
- }, null, 8, ["changed-fields", "config"])])])) : createCommentVNode("v-if", true),
2626
- createCommentVNode(" Deletion Notice "),
2627
- __props.version?.operation === "delete" ? (openBlock(), createElementBlock("div", _hoisted_10$10, [renderSlot(_ctx.$slots, "deletion-notice", { version: __props.version }, () => [createElementVNode("div", _hoisted_11$9, [_cache[2] || (_cache[2] = createElementVNode("svg", {
2628
- xmlns: "http://www.w3.org/2000/svg",
2629
- class: "stroke-current shrink-0 h-6 w-6",
2630
- fill: "none",
2631
- viewBox: "0 0 24 24"
2632
- }, [createElementVNode("path", {
2633
- "stroke-linecap": "round",
2634
- "stroke-linejoin": "round",
2635
- "stroke-width": "2",
2636
- d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z"
2637
- })], -1)), createElementVNode("div", null, [createElementVNode("h3", _hoisted_12$8, toDisplayString(config.value.deletionNoticeTitle || "Record Was Deleted"), 1), createElementVNode("div", _hoisted_13$6, toDisplayString(config.value.deletionNoticeText || "This version shows the state of the record before it was deleted."), 1)])])])])) : createCommentVNode("v-if", true),
2638
- createCommentVNode(" Record Information "),
2639
- createElementVNode("div", _hoisted_14$6, [renderSlot(_ctx.$slots, "record-info", {
2640
- recordData: __props.recordData,
2641
- version: __props.version
2642
- }, () => [
2643
- createCommentVNode(" Default record info display "),
2644
- createElementVNode("h3", _hoisted_15$5, toDisplayString(config.value.recordInfoTitle || "Record Information"), 1),
2645
- createElementVNode("div", _hoisted_16$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(filteredRecordData.value, (value, key) => {
2646
- return openBlock(), createElementBlock("div", { key }, [createElementVNode("strong", _hoisted_17$4, toDisplayString(formatFieldName(key)) + ":", 1), createElementVNode("span", _hoisted_18$4, toDisplayString(formatValue(value)), 1)]);
2647
- }), 128))])
2648
- ])]),
2649
- createCommentVNode(" Custom Content Area "),
2650
- createElementVNode("div", _hoisted_19$4, [renderSlot(_ctx.$slots, "content", {
2651
- recordData: __props.recordData,
2652
- version: __props.version,
2653
- changedFields: __props.changedFields
2654
- }, () => [createCommentVNode(" Fallback content if no slot provided "), createElementVNode("div", _hoisted_20$4, [createElementVNode("h3", _hoisted_21$3, toDisplayString(config.value.rawDataTitle || "Raw Data"), 1), createElementVNode("pre", _hoisted_22$3, toDisplayString(JSON.stringify(__props.recordData, null, 2)), 1)])])])
2655
- ])) : createCommentVNode("v-if", true)
2656
- ]);
2657
- };
2658
- }
2659
- });
2660
- var RecordVersionViewer_default = _sfc_main$42;
2184
+ var KeyValueEditor_default = /* @__PURE__ */ export_helper_default(_sfc_main$42, [["__scopeId", "data-v-010818ef"]]);
2661
2185
 
2662
2186
  //#endregion
2663
2187
  //#region src/components/ui/SummarySection.vue
@@ -2997,6 +2521,7 @@ function createUserAuthorizedGuard(options) {
2997
2521
  const { allowedUserTypes, redirectTo = { name: "Home" }, loginPath = "/auth/login", requireAuth = true } = options;
2998
2522
  return async (to, _from, next) => {
2999
2523
  const userSession = useUserSessionStore();
2524
+ const env = useEnv();
3000
2525
  if (requireAuth) if (!!userSession.accessToken) {
3001
2526
  const { accessTokenExpired, refreshTokenExpired } = userSession.isTokenExpired();
3002
2527
  if (!accessTokenExpired) {} else if (refreshTokenExpired) {
@@ -3034,6 +2559,16 @@ function createUserAuthorizedGuard(options) {
3034
2559
  return;
3035
2560
  }
3036
2561
  }
2562
+ if (to.path !== "/auth/consent-required" && env.requireConsentForExistingUsers) {
2563
+ if (userSession.currentSession?.user?.consents_complete === false) {
2564
+ logger.debug("[UserAuthorized] Consents incomplete, redirecting to consent-required");
2565
+ next({
2566
+ path: "/auth/consent-required",
2567
+ query: to.query
2568
+ });
2569
+ return;
2570
+ }
2571
+ }
3037
2572
  const userType = userSession.currentSession?.user.user_type;
3038
2573
  if (!userType) {
3039
2574
  logger.warn("[UserAuthorized] No user type found, redirecting");
@@ -3154,7 +2689,7 @@ const userRoutes = [{
3154
2689
  {
3155
2690
  path: "appearance",
3156
2691
  name: "Appearance",
3157
- component: () => import("./Appearance-CohgRf-_.js"),
2692
+ component: () => import("./Appearance-D5pwxuf4.js"),
3158
2693
  meta: {
3159
2694
  title: "Appearance",
3160
2695
  description: "Appearance page for Category 5 App"
@@ -3163,7 +2698,7 @@ const userRoutes = [{
3163
2698
  {
3164
2699
  path: "profile",
3165
2700
  name: "Profile",
3166
- component: () => import("./UserProfilePage-D52_Q5yf.js"),
2701
+ component: () => import("./UserProfilePage-BxIMig4s.js"),
3167
2702
  meta: {
3168
2703
  title: "Profile",
3169
2704
  description: "Profile page for Category 5 App"
@@ -3172,7 +2707,7 @@ const userRoutes = [{
3172
2707
  {
3173
2708
  path: "password",
3174
2709
  name: "Password",
3175
- component: () => import("./ChangePasswordPage-DqnWhaUa.js"),
2710
+ component: () => import("./ChangePasswordPage-Re323roR.js"),
3176
2711
  meta: {
3177
2712
  title: "Password",
3178
2713
  description: "Password page for Category 5 App"
@@ -3256,7 +2791,7 @@ const teamMemberRoutes = [
3256
2791
  {
3257
2792
  path: teamMemberPaths.list.path,
3258
2793
  name: teamMemberPaths.list.name,
3259
- component: () => import("./TeamMemberList-BW4qqzC1.js"),
2794
+ component: () => import("./TeamMemberList-DJKYxfsx.js"),
3260
2795
  beforeEnter: [userAuthenticated],
3261
2796
  meta: {
3262
2797
  title: "Team Members",
@@ -3266,7 +2801,7 @@ const teamMemberRoutes = [
3266
2801
  {
3267
2802
  path: teamMemberPaths.create.path,
3268
2803
  name: teamMemberPaths.create.name,
3269
- component: () => import("./CreateTeamMemberForm-eWL__TEt.js"),
2804
+ component: () => import("./CreateTeamMemberForm-CLHT1HN_.js"),
3270
2805
  beforeEnter: [userAuthenticated],
3271
2806
  meta: {
3272
2807
  title: "Create Team Member",
@@ -3275,7 +2810,7 @@ const teamMemberRoutes = [
3275
2810
  },
3276
2811
  {
3277
2812
  path: teamMemberPaths.view.path,
3278
- component: () => import("./TeamMemberParent-Wcht0pIz.js"),
2813
+ component: () => import("./TeamMemberParent-Bk6dqXsh.js"),
3279
2814
  beforeEnter: [userAuthenticated],
3280
2815
  meta: { sectionTabs: [{
3281
2816
  id: "view",
@@ -3289,7 +2824,7 @@ const teamMemberRoutes = [
3289
2824
  children: [{
3290
2825
  path: "",
3291
2826
  name: teamMemberPaths.view.name,
3292
- component: () => import("./ViewTeamMember-ByCSsl5k.js"),
2827
+ component: () => import("./ViewTeamMember-DIaIqfbX.js"),
3293
2828
  meta: {
3294
2829
  title: "View Team Member",
3295
2830
  description: "View team member details",
@@ -3298,7 +2833,7 @@ const teamMemberRoutes = [
3298
2833
  }, {
3299
2834
  path: teamMemberPaths.edit.path,
3300
2835
  name: teamMemberPaths.edit.name,
3301
- component: () => import("./EditTeamMemberForm-JuRGiWOn.js"),
2836
+ component: () => import("./EditTeamMemberForm-CBxFLoIy.js"),
3302
2837
  meta: {
3303
2838
  title: "Edit Team Member",
3304
2839
  description: "Edit team member details",
@@ -3362,7 +2897,7 @@ const teamRoutes = [{
3362
2897
  {
3363
2898
  path: teamPaths.list.path,
3364
2899
  name: teamPaths.list.name,
3365
- component: () => import("./TeamList-T3mZJTzq.js"),
2900
+ component: () => import("./TeamList-BNo_ime8.js"),
3366
2901
  meta: {
3367
2902
  title: "Teams",
3368
2903
  description: "Manage teams",
@@ -3380,7 +2915,7 @@ const teamRoutes = [{
3380
2915
  {
3381
2916
  path: teamPaths.create.path,
3382
2917
  name: teamPaths.create.name,
3383
- component: () => import("./CreateTeamForm-LadKAxsM.js"),
2918
+ component: () => import("./CreateTeamForm-DXN1hoJh.js"),
3384
2919
  meta: {
3385
2920
  title: "Create Team",
3386
2921
  description: "Create new team",
@@ -3395,7 +2930,7 @@ const teamRoutes = [{
3395
2930
  },
3396
2931
  {
3397
2932
  path: teamPaths.view.path,
3398
- component: () => import("./TeamParent-BkhaJwud.js"),
2933
+ component: () => import("./TeamParent-TSWT_0bK.js"),
3399
2934
  meta: { sectionTabs: [
3400
2935
  {
3401
2936
  id: "view",
@@ -3432,7 +2967,7 @@ const teamRoutes = [{
3432
2967
  {
3433
2968
  path: "",
3434
2969
  name: teamPaths.view.name,
3435
- component: () => import("./ViewTeam-g7WhYvsR.js"),
2970
+ component: () => import("./ViewTeam-DIxy437n.js"),
3436
2971
  meta: {
3437
2972
  title: "View Team",
3438
2973
  description: "View team details",
@@ -3442,7 +2977,7 @@ const teamRoutes = [{
3442
2977
  {
3443
2978
  path: teamPaths.edit.path,
3444
2979
  name: teamPaths.edit.name,
3445
- component: () => import("./EditTeamForm-D0wZKYm2.js"),
2980
+ component: () => import("./EditTeamForm-BDQkhBbx.js"),
3446
2981
  meta: {
3447
2982
  title: "Edit Team",
3448
2983
  description: "Edit team details",
@@ -3452,7 +2987,7 @@ const teamRoutes = [{
3452
2987
  {
3453
2988
  path: teamPaths.notes.path,
3454
2989
  name: teamPaths.notes.name,
3455
- component: () => import("./TeamNotesTab-aGD8O49y.js"),
2990
+ component: () => import("./TeamNotesTab-JRWYpqRJ.js"),
3456
2991
  meta: {
3457
2992
  title: "Team Notes",
3458
2993
  description: "View and manage notes",
@@ -3462,7 +2997,7 @@ const teamRoutes = [{
3462
2997
  {
3463
2998
  path: teamPaths.attachments.path,
3464
2999
  name: teamPaths.attachments.name,
3465
- component: () => import("./TeamAttachmentsTab-DA_MBYj8.js"),
3000
+ component: () => import("./TeamAttachmentsTab-IaRtuF55.js"),
3466
3001
  meta: {
3467
3002
  title: "Team Attachments",
3468
3003
  description: "View and manage attachments",
@@ -3472,7 +3007,7 @@ const teamRoutes = [{
3472
3007
  {
3473
3008
  path: teamPaths.history.path,
3474
3009
  name: teamPaths.history.name,
3475
- component: () => import("./TeamHistoryTab-lz2ouNyP.js"),
3010
+ component: () => import("./TeamHistoryTab-DWcVhkwC.js"),
3476
3011
  meta: {
3477
3012
  title: "Team History",
3478
3013
  description: "View audit trail and changes",
@@ -3482,7 +3017,7 @@ const teamRoutes = [{
3482
3017
  {
3483
3018
  path: teamPaths.members.path,
3484
3019
  name: teamPaths.members.name,
3485
- component: () => import("./TeamMembersTab-CpE9BaCi.js"),
3020
+ component: () => import("./TeamMembersTab-CBB2Yl_I.js"),
3486
3021
  meta: {
3487
3022
  title: "Team Members",
3488
3023
  description: "View and manage team members",
@@ -5008,7 +4543,7 @@ function useSavedFilters(config) {
5008
4543
  const savedFilterRoutes = [{
5009
4544
  path: "/saved-filters",
5010
4545
  name: "SavedFilters",
5011
- component: () => import("./SavedFiltersPage-p0qGRIuN.js"),
4546
+ component: () => import("./SavedFiltersPage-BlzfWkaj.js"),
5012
4547
  beforeEnter: [userAuthenticated],
5013
4548
  meta: {
5014
4549
  title: "Saved Filters",
@@ -5725,7 +5260,7 @@ const customerSupportTicketRoutes = [{
5725
5260
  {
5726
5261
  path: customerSupportPaths.customer_list.path,
5727
5262
  name: customerSupportPaths.customer_list.name,
5728
- component: () => import("./CustomerSupportTicketList-Zzsg1FtO.js"),
5263
+ component: () => import("./CustomerSupportTicketList-DR-UfcGr.js"),
5729
5264
  beforeEnter: (to) => customerListPresetGuard(to),
5730
5265
  meta: {
5731
5266
  title: "Tickets",
@@ -5744,7 +5279,7 @@ const customerSupportTicketRoutes = [{
5744
5279
  {
5745
5280
  path: customerSupportPaths.customer_create.path,
5746
5281
  name: customerSupportPaths.customer_create.name,
5747
- component: () => import("./CustomerCreateSupportTicketForm-yfyeXr0V.js"),
5282
+ component: () => import("./CustomerCreateSupportTicketForm-B8JQNC1I.js"),
5748
5283
  meta: {
5749
5284
  title: "Create Support Ticket",
5750
5285
  description: "Create new support ticket",
@@ -5760,7 +5295,7 @@ const customerSupportTicketRoutes = [{
5760
5295
  {
5761
5296
  path: customerSupportPaths.customer_create_success.path,
5762
5297
  name: customerSupportPaths.customer_create_success.name,
5763
- component: () => import("./CustomerSupportTicketSuccess-BPyydSLQ.js"),
5298
+ component: () => import("./CustomerSupportTicketSuccess-SBdIcS-_.js"),
5764
5299
  meta: {
5765
5300
  title: "Support Ticket Submitted",
5766
5301
  description: "Support ticket submitted successfully",
@@ -5782,7 +5317,7 @@ const customerSupportTicketRoutes = [{
5782
5317
  },
5783
5318
  {
5784
5319
  path: customerSupportPaths.customer_view.path,
5785
- component: () => import("./CustomerSupportTicketParent-CqR8lF7r.js"),
5320
+ component: () => import("./CustomerSupportTicketParent-C-KzT4qQ.js"),
5786
5321
  meta: {
5787
5322
  title: "View Support Ticket",
5788
5323
  description: "View support ticket details"
@@ -5790,7 +5325,7 @@ const customerSupportTicketRoutes = [{
5790
5325
  children: [{
5791
5326
  path: "",
5792
5327
  name: customerSupportPaths.customer_view.name,
5793
- component: () => import("./CustomerSupportTicketDetailPage-CthS9akm.js"),
5328
+ component: () => import("./CustomerSupportTicketDetailPage-DyJTKtLU.js"),
5794
5329
  meta: {
5795
5330
  title: "View Support Ticket",
5796
5331
  description: "View support ticket details"
@@ -5867,7 +5402,7 @@ const staffSupportTicketRoutes = [{
5867
5402
  {
5868
5403
  path: staffSupportPaths.staff_list.path,
5869
5404
  name: staffSupportPaths.staff_list.name,
5870
- component: () => import("./StaffSupportTicketList-BuKBTk2v.js"),
5405
+ component: () => import("./StaffSupportTicketList-HA4NlkKE.js"),
5871
5406
  beforeEnter: (to) => staffListPresetGuard(to),
5872
5407
  meta: {
5873
5408
  title: "Manage Support",
@@ -5881,7 +5416,7 @@ const staffSupportTicketRoutes = [{
5881
5416
  {
5882
5417
  path: staffSupportPaths.staff_create.path,
5883
5418
  name: staffSupportPaths.staff_create.name,
5884
- component: () => import("./StaffCreateSupportTicketForm-CxpKnqCq.js"),
5419
+ component: () => import("./StaffCreateSupportTicketForm-BrGB7tqD.js"),
5885
5420
  meta: {
5886
5421
  title: "Create Support Ticket",
5887
5422
  description: "Create new support ticket item",
@@ -5897,7 +5432,7 @@ const staffSupportTicketRoutes = [{
5897
5432
  {
5898
5433
  path: staffSupportPaths.staff_create_success.path,
5899
5434
  name: staffSupportPaths.staff_create_success.name,
5900
- component: () => import("./StaffSupportTicketSuccess-BD1Xsnx1.js"),
5435
+ component: () => import("./StaffSupportTicketSuccess-CTeMG_iK.js"),
5901
5436
  meta: {
5902
5437
  title: "Support Ticket Created",
5903
5438
  description: "Support ticket created successfully",
@@ -5919,7 +5454,7 @@ const staffSupportTicketRoutes = [{
5919
5454
  },
5920
5455
  {
5921
5456
  path: staffSupportPaths.staff_edit.path,
5922
- component: () => import("./StaffSupportTicketParent-Lkn-5u7C.js"),
5457
+ component: () => import("./StaffSupportTicketParent-BTbpNdfc.js"),
5923
5458
  meta: {
5924
5459
  title: "View Support Ticket",
5925
5460
  description: "View support ticket details"
@@ -5927,7 +5462,7 @@ const staffSupportTicketRoutes = [{
5927
5462
  children: [{
5928
5463
  path: "",
5929
5464
  name: staffSupportPaths.staff_edit.name,
5930
- component: () => import("./StaffSupportTicketDetailPage-TaAPQARa.js"),
5465
+ component: () => import("./StaffSupportTicketDetailPage-D0SjH36N.js"),
5931
5466
  meta: {
5932
5467
  title: "View Support Ticket",
5933
5468
  description: "View support ticket details"
@@ -8417,6 +7952,25 @@ function useSupportTicketStatus() {
8417
7952
  };
8418
7953
  }
8419
7954
 
7955
+ //#endregion
7956
+ //#region src/slices/auth/signupConsentsGuard.ts
7957
+ /**
7958
+ * Route guard for /auth/signup-consents.
7959
+ * Redirects to signup if there is no pending signup data (e.g. direct URL, refresh).
7960
+ * Runs only when entering the route, so it does not interfere with handleDecline or
7961
+ * completeSignup when they clear data and navigate elsewhere.
7962
+ */
7963
+ const signupConsentsGuard = (to, _from, next) => {
7964
+ const { get } = useSignupPendingData();
7965
+ if (get() == null) {
7966
+ const returnUrl = to.query.returnUrl;
7967
+ next({
7968
+ path: "/auth/signup",
7969
+ query: returnUrl ? { returnUrl } : {}
7970
+ });
7971
+ } else next();
7972
+ };
7973
+
8420
7974
  //#endregion
8421
7975
  //#region src/slices/auth/authRoutes.ts
8422
7976
  const authPaths = {
@@ -8464,6 +8018,16 @@ const authPaths = {
8464
8018
  path: "verify-email-required",
8465
8019
  full_path: "/auth/verify-email-required",
8466
8020
  name: "Verify Email Required"
8021
+ },
8022
+ consent_required: {
8023
+ path: "consent-required",
8024
+ full_path: "/auth/consent-required",
8025
+ name: "Consent Required"
8026
+ },
8027
+ signup_consents: {
8028
+ path: "signup-consents",
8029
+ full_path: "/auth/signup-consents",
8030
+ name: "Signup Consents"
8467
8031
  }
8468
8032
  };
8469
8033
  const { allowUserSignup } = useEnv();
@@ -8471,7 +8035,7 @@ const baseRoutes = [
8471
8035
  {
8472
8036
  path: authPaths.login.path,
8473
8037
  name: authPaths.login.name,
8474
- component: () => import("./LoginForm-YCzdrekw.js"),
8038
+ component: () => import("./LoginForm-C97dUsU3.js"),
8475
8039
  meta: {
8476
8040
  title: "Login",
8477
8041
  description: "Login page for Category 5 App"
@@ -8481,7 +8045,7 @@ const baseRoutes = [
8481
8045
  {
8482
8046
  path: authPaths.forgot_password.path,
8483
8047
  name: authPaths.forgot_password.name,
8484
- component: () => import("./ForgotPassword-rSN-8EC4.js"),
8048
+ component: () => import("./ForgotPassword-D3OQqbrD.js"),
8485
8049
  meta: {
8486
8050
  title: "Forgot Password",
8487
8051
  description: "Forgot Password page for Category 5 App"
@@ -8491,7 +8055,7 @@ const baseRoutes = [
8491
8055
  {
8492
8056
  path: authPaths.reset_password.path,
8493
8057
  name: authPaths.reset_password.name,
8494
- component: () => import("./ResetPassword-BCzMTXpT.js"),
8058
+ component: () => import("./ResetPassword-CkPqUFbq.js"),
8495
8059
  meta: {
8496
8060
  title: "Reset Password",
8497
8061
  description: "Reset Password page for Category 5 App"
@@ -8501,7 +8065,7 @@ const baseRoutes = [
8501
8065
  {
8502
8066
  path: authPaths.logout.path,
8503
8067
  name: authPaths.logout.name,
8504
- component: () => import("./Logout-Ctc8b-B0.js"),
8068
+ component: () => import("./Logout-DY3iorah.js"),
8505
8069
  meta: {
8506
8070
  title: "Logout",
8507
8071
  description: "Logout page for Category 5 App"
@@ -8510,7 +8074,7 @@ const baseRoutes = [
8510
8074
  {
8511
8075
  path: authPaths.mfa_setup.path,
8512
8076
  name: authPaths.mfa_setup.name,
8513
- component: () => import("./MfaSetup-xNmNjSh1.js"),
8077
+ component: () => import("./MfaSetup-DAQV8MhP.js"),
8514
8078
  meta: {
8515
8079
  title: "Set Up Two-Factor Authentication",
8516
8080
  description: "Enable MFA for your account"
@@ -8519,7 +8083,7 @@ const baseRoutes = [
8519
8083
  {
8520
8084
  path: authPaths.mfa_verify.path,
8521
8085
  name: authPaths.mfa_verify.name,
8522
- component: () => import("./MfaVerify-C0COXH_W.js"),
8086
+ component: () => import("./MfaVerify-D-_oX6gL.js"),
8523
8087
  meta: {
8524
8088
  title: "Verify Two-Factor Authentication",
8525
8089
  description: "Enter your MFA code to complete sign in"
@@ -8528,7 +8092,7 @@ const baseRoutes = [
8528
8092
  {
8529
8093
  path: authPaths.verify_email.path,
8530
8094
  name: authPaths.verify_email.name,
8531
- component: () => import("./VerifyEmail-5thal4d_.js"),
8095
+ component: () => import("./VerifyEmail-BYSYk5ef.js"),
8532
8096
  meta: {
8533
8097
  title: "Verify Email",
8534
8098
  description: "Verify your email address"
@@ -8537,17 +8101,36 @@ const baseRoutes = [
8537
8101
  {
8538
8102
  path: authPaths.verify_email_required.path,
8539
8103
  name: authPaths.verify_email_required.name,
8540
- component: () => import("./VerifyEmailRequired-BCKREd_C.js"),
8104
+ component: () => import("./VerifyEmailRequired-DeMYFS0I.js"),
8541
8105
  meta: {
8542
8106
  title: "Verify Email",
8543
8107
  description: "Check your email to verify your account"
8544
8108
  }
8109
+ },
8110
+ {
8111
+ path: authPaths.consent_required.path,
8112
+ name: authPaths.consent_required.name,
8113
+ component: () => import("./ConsentRequired-qMNT-U2T.js"),
8114
+ meta: {
8115
+ title: "Consent Required",
8116
+ description: "Accept updated terms to continue"
8117
+ }
8118
+ },
8119
+ {
8120
+ path: authPaths.signup_consents.path,
8121
+ name: authPaths.signup_consents.name,
8122
+ component: () => import("./SignupConsentFlow-DG2IGikE.js"),
8123
+ meta: {
8124
+ title: "Review and accept",
8125
+ description: "Review and accept terms to complete signup"
8126
+ },
8127
+ beforeEnter: [userAlreadyLoggedIn, signupConsentsGuard]
8545
8128
  }
8546
8129
  ];
8547
8130
  if (allowUserSignup) baseRoutes.splice(1, 0, {
8548
8131
  path: authPaths.register.path,
8549
8132
  name: authPaths.register.name,
8550
- component: () => import("./Signup-DNEklGpK.js"),
8133
+ component: () => import("./Signup-C2FshPnc.js"),
8551
8134
  meta: {
8552
8135
  title: "Register",
8553
8136
  description: "Register page for Category 5 App"
@@ -8617,13 +8200,18 @@ const adminRoutes = [{
8617
8200
  id: "support-ticket-maintenance",
8618
8201
  label: "Support Ticket Maintenance",
8619
8202
  to: { name: "SupportTicketMaintenance" }
8203
+ },
8204
+ {
8205
+ id: "signup-requirements",
8206
+ label: "Signup Requirements",
8207
+ to: { name: "SignupRequirements" }
8620
8208
  }
8621
8209
  ] },
8622
8210
  children: [
8623
8211
  {
8624
8212
  path: "create-user",
8625
8213
  name: "CreateUser",
8626
- component: () => import("./CreateUserPage-cduuWl9g.js"),
8214
+ component: () => import("./CreateUserPage-C8107z_O.js"),
8627
8215
  meta: {
8628
8216
  title: "Create User",
8629
8217
  description: "Create User page for Category 5 App",
@@ -8636,7 +8224,7 @@ const adminRoutes = [{
8636
8224
  {
8637
8225
  path: "support-staff",
8638
8226
  name: "SupportStaff",
8639
- component: () => import("./SupportStaffPage-D_YsHZZa.js"),
8227
+ component: () => import("./SupportStaffPage-DFcgP8iE.js"),
8640
8228
  meta: {
8641
8229
  title: "Support Staff",
8642
8230
  description: "Manage users who can triage support tickets",
@@ -8649,7 +8237,7 @@ const adminRoutes = [{
8649
8237
  {
8650
8238
  path: "users",
8651
8239
  name: "UserManagement",
8652
- component: () => import("./UserListPage-C9zUjaOK.js"),
8240
+ component: () => import("./UserListPage-BjHbDpvC.js"),
8653
8241
  meta: {
8654
8242
  title: "User Management",
8655
8243
  description: "View and manage all users",
@@ -8662,7 +8250,7 @@ const adminRoutes = [{
8662
8250
  {
8663
8251
  path: "users/:id/edit",
8664
8252
  name: "EditUser",
8665
- component: () => import("./EditUserPage-Dl6d3Cuh.js"),
8253
+ component: () => import("./EditUserPage-BWKrAKZZ.js"),
8666
8254
  meta: {
8667
8255
  title: "Edit User",
8668
8256
  description: "Edit user role",
@@ -8685,7 +8273,7 @@ const adminRoutes = [{
8685
8273
  {
8686
8274
  path: "credit-management",
8687
8275
  name: "CreditManagement",
8688
- component: () => import("./CreditManagement-BBb_Xumq.js"),
8276
+ component: () => import("./CreditManagement-A8hVPoSp.js"),
8689
8277
  meta: {
8690
8278
  title: "Credit Management",
8691
8279
  description: "Manage customer credits and allocations",
@@ -8698,7 +8286,7 @@ const adminRoutes = [{
8698
8286
  {
8699
8287
  path: "support-ticket-maintenance",
8700
8288
  name: "SupportTicketMaintenance",
8701
- component: () => import("./SupportTicketMaintenancePage-CpK1esq2.js"),
8289
+ component: () => import("./SupportTicketMaintenancePage-BCW0eZxV.js"),
8702
8290
  meta: {
8703
8291
  title: "Support Ticket Maintenance",
8704
8292
  description: "Admin utilities for fixing support ticket data",
@@ -8707,6 +8295,19 @@ const adminRoutes = [{
8707
8295
  visible_to: ["super_admin"]
8708
8296
  }
8709
8297
  }
8298
+ },
8299
+ {
8300
+ path: "signup-requirements",
8301
+ name: "SignupRequirements",
8302
+ component: () => import("./SignupRequirementsPage-DnLpQfB8.js"),
8303
+ meta: {
8304
+ title: "Signup Requirements",
8305
+ description: "Configure consent checkboxes shown on signup and consent-required flows",
8306
+ side_bar: {
8307
+ section: " Admin",
8308
+ visible_to: ["super_admin"]
8309
+ }
8310
+ }
8710
8311
  }
8711
8312
  ]
8712
8313
  }];
@@ -8726,7 +8327,7 @@ const creditRoutes = [{
8726
8327
  children: [{
8727
8328
  path: creditPaths.credit_balance.path,
8728
8329
  name: creditPaths.credit_balance.name,
8729
- component: () => import("./CreditBalanceDashboard-CgRRO6MD.js"),
8330
+ component: () => import("./CreditBalanceDashboard-D7MFKfh6.js"),
8730
8331
  meta: {
8731
8332
  title: "Credit Balance",
8732
8333
  description: "View your current credit balance and history.",
@@ -9331,5 +8932,5 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
9331
8932
  var CreditManagement_default = _sfc_main;
9332
8933
 
9333
8934
  //#endregion
9334
- export { createLastUsedPresetGuard as $, Sidebar_default as $t, ConvertToInternalWorkflow_default as A, userIsSuperAdmin as At, CustomerCreateSupportTicketForm_default as B, RecordVersionList_default as Bt, StaffSupportTicketSuccess_default as C, createLeadOrStaffOnlyGuard as Ct, adminSupportTicketCreateSchemaWithMetadata as D, leadOrStaffOnly as Dt, StaffCreateSupportTicketForm_default as E, createUserAuthorizedGuard as Et, CustomerCreditBalance_default as F, extractFiltersFromQuery as Ft, staffSupportTicketRoutes as G, FieldGroup_default as Gt, customerSupportTicketUpdateSchemaWithMetadata as H, LoadingErrorStates_default as Ht, CustomerSupportTicketSuccess_default as I, serializeFiltersToQueryParams as It, SavedFilterPresets_default as J, Default_default as Jt, customerSupportPaths as K, FieldDisplay_default as Kt, CustomerSupportTicketList_default as L, useUserLookup as Lt, CompleteSupportTicketForm_default as M, timezones as Mt, CancelInternalTaskWorkflow_default as N, buildQueryWithFilters as Nt, adminSupportTicketUpdateSchemaWithMetadata as O, staffOnly as Ot, ApproveRejectActions_default as P, deserializeFiltersFromQueryParams as Pt, useSavedFilters as Q, useEmailVerificationGuard as Qt, customerSupportTicketRowSchemaWithMetadata as R, SummarySection_default as Rt, CreditBalanceWidget_default as S, createAuthenticatedGuard as St, adminSupportTicketRowSchemaWithMetadata as T, createSuperAdminOnlyGuard as Tt, SupportTicketTimeline_default as U, KeyValueEditor_default as Ut, customerSupportTicketCreateSchemaWithMetadata as V, RecordChangesSummary_default as Vt, staffSupportPaths as W, FileManager_default as Wt, SaveFilterModal_default as X, Admin_default as Xt, ManagePresetsModal_default as Y, Auth_default as Yt, savedFilterRoutes as Z, UnverifiedEmailBanner_default as Zt, authRoutes as _, teamMemberPaths as _t, addCreditsSchemaWithMetadata as a, RightSidebar_default as an, teamMemberFiltersSchemaWithMetadata as at, adminSupportTicketFiltersSchemaWithMetadata as b, teamUpdateSchemaWithMetadata as bt, CreditTransactionHistory_default as c, LoginButton_default as cn, TeamParent_default as ct, CreditBalanceOverview_default as d, AppHeader_default as dn, teamFiltersSchemaWithMetadata as dt, PINNED_PRESETS_KEY as en, getLastUsedPresetRedirect as et, creditPaths as f, AppTabNavigation_default as fn, TeamAttachmentsTab_default as ft, authPaths as g, teamRoutes as gt, SocialLoginButtons_default as h, teamPaths as ht, AddCredits_default as i, useBuildTag as in, teamMemberRowSchemaWithMetadata as it, ConvertToCustomerWorkflow_default as j, userAlreadyLoggedIn as jt, ReactivateInternalTaskWorkflow_default as k, userAuthenticated as kt, CreditTransactionTypeBadge_default as l, InputModal_default as ln, TeamList_default as lt, adminRoutes as m, CreateTeamForm_default as mt, SetMonthlyAllocation_default as n, usePinnedPresets as nn, TeamMemberParent_default as nt, setMonthlyAllocationSchemaWithMetadata as o, NotFound_default as on, CreateTeamMemberForm_default as ot, creditRoutes as p, DragoncoreVue as pn, EditTeamForm_default as pt, customerSupportTicketRoutes as q, InApp_default as qt, ResetMonthlyBalance_default as r, MS as rn, TeamMemberList_default as rt, CreditBalanceDashboard_default as s, Navbar_default as sn, ViewTeam_default as st, CreditManagement_default as t, useInjectedPinnedPresets as tn, ViewTeamMember_default as tt, creditTransactionRowSchemaWithMetadata as u, BaseModal_default as un, teamRowSchemaWithMetadata as ut, useSupportTicketStatus as v, teamMemberRoutes as vt, StaffSupportTicketList_default as w, createStaffOnlyGuard as wt, SupportTicketAttachments_default as x, userRoutes as xt, useSupportTicketPermissions as y, teamCreateSchemaWithMetadata as yt, SupportTicketStatusBadge_default as z, RecordVersionViewer_default as zt };
9335
- //# sourceMappingURL=src-B5eswi_J.js.map
8935
+ export { createLastUsedPresetGuard as $, MS as $t, ConvertToInternalWorkflow_default as A, userIsSuperAdmin as At, CustomerCreateSupportTicketForm_default as B, FileManager_default as Bt, StaffSupportTicketSuccess_default as C, createLeadOrStaffOnlyGuard as Ct, adminSupportTicketCreateSchemaWithMetadata as D, leadOrStaffOnly as Dt, StaffCreateSupportTicketForm_default as E, createUserAuthorizedGuard as Et, CustomerCreditBalance_default as F, extractFiltersFromQuery as Ft, staffSupportTicketRoutes as G, Auth_default as Gt, customerSupportTicketUpdateSchemaWithMetadata as H, FieldDisplay_default as Ht, CustomerSupportTicketSuccess_default as I, serializeFiltersToQueryParams as It, SavedFilterPresets_default as J, useEmailVerificationGuard as Jt, customerSupportPaths as K, Admin_default as Kt, CustomerSupportTicketList_default as L, useUserLookup as Lt, CompleteSupportTicketForm_default as M, timezones as Mt, CancelInternalTaskWorkflow_default as N, buildQueryWithFilters as Nt, adminSupportTicketUpdateSchemaWithMetadata as O, staffOnly as Ot, ApproveRejectActions_default as P, deserializeFiltersFromQueryParams as Pt, useSavedFilters as Q, usePinnedPresets as Qt, customerSupportTicketRowSchemaWithMetadata as R, SummarySection_default as Rt, CreditBalanceWidget_default as S, createAuthenticatedGuard as St, adminSupportTicketRowSchemaWithMetadata as T, createSuperAdminOnlyGuard as Tt, SupportTicketTimeline_default as U, InApp_default as Ut, customerSupportTicketCreateSchemaWithMetadata as V, FieldGroup_default as Vt, staffSupportPaths as W, Default_default as Wt, SaveFilterModal_default as X, PINNED_PRESETS_KEY as Xt, ManagePresetsModal_default as Y, Sidebar_default as Yt, savedFilterRoutes as Z, useInjectedPinnedPresets as Zt, authRoutes as _, teamMemberPaths as _t, addCreditsSchemaWithMetadata as a, InputModal_default as an, teamMemberFiltersSchemaWithMetadata as at, adminSupportTicketFiltersSchemaWithMetadata as b, teamUpdateSchemaWithMetadata as bt, CreditTransactionHistory_default as c, AppTabNavigation_default as cn, TeamParent_default as ct, CreditBalanceOverview_default as d, teamFiltersSchemaWithMetadata as dt, useBuildTag as en, getLastUsedPresetRedirect as et, creditPaths as f, TeamAttachmentsTab_default as ft, authPaths as g, teamRoutes as gt, SocialLoginButtons_default as h, teamPaths as ht, AddCredits_default as i, LoginButton_default as in, teamMemberRowSchemaWithMetadata as it, ConvertToCustomerWorkflow_default as j, userAlreadyLoggedIn as jt, ReactivateInternalTaskWorkflow_default as k, userAuthenticated as kt, CreditTransactionTypeBadge_default as l, DragoncoreVue as ln, TeamList_default as lt, adminRoutes as m, CreateTeamForm_default as mt, SetMonthlyAllocation_default as n, NotFound_default as nn, TeamMemberParent_default as nt, setMonthlyAllocationSchemaWithMetadata as o, BaseModal_default as on, CreateTeamMemberForm_default as ot, creditRoutes as p, EditTeamForm_default as pt, customerSupportTicketRoutes as q, UnverifiedEmailBanner_default as qt, ResetMonthlyBalance_default as r, Navbar_default as rn, TeamMemberList_default as rt, CreditBalanceDashboard_default as s, AppHeader_default as sn, ViewTeam_default as st, CreditManagement_default as t, RightSidebar_default as tn, ViewTeamMember_default as tt, creditTransactionRowSchemaWithMetadata as u, teamRowSchemaWithMetadata as ut, useSupportTicketStatus as v, teamMemberRoutes as vt, StaffSupportTicketList_default as w, createStaffOnlyGuard as wt, SupportTicketAttachments_default as x, userRoutes as xt, useSupportTicketPermissions as y, teamCreateSchemaWithMetadata as yt, SupportTicketStatusBadge_default as z, KeyValueEditor_default as zt };
8936
+ //# sourceMappingURL=src--FuqlDhU.js.map