@dragonmastery/dragoncore-vue 0.0.19 → 0.0.21

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 (182) hide show
  1. package/dist/AppLink-CHMMrSFI.js +54 -0
  2. package/dist/AppLink-CHMMrSFI.js.map +1 -0
  3. package/dist/Appearance-D5pwxuf4.js +3 -0
  4. package/dist/{Appearance-BfPdKMXw.js → Appearance-DxWTyx1M.js} +1 -1
  5. package/dist/{Appearance-BfPdKMXw.js.map → Appearance-DxWTyx1M.js.map} +1 -1
  6. package/dist/{ChangePasswordPage-DXzU3NI9.js → ChangePasswordPage--3XwluwE.js} +2 -2
  7. package/dist/{ChangePasswordPage-DXzU3NI9.js.map → ChangePasswordPage--3XwluwE.js.map} +1 -1
  8. package/dist/ChangePasswordPage-CpDPmEml.js +6 -0
  9. package/dist/ConsentRequired-C4IRMA0c.js +213 -0
  10. package/dist/ConsentRequired-C4IRMA0c.js.map +1 -0
  11. package/dist/CreateTeamForm-B4cIuYAf.js +35 -0
  12. package/dist/CreateTeamMemberForm-Chrw1y00.js +35 -0
  13. package/dist/{CreateUserPage-bwR6fq5C.js → CreateUserPage-DLwXeLAq.js} +2 -2
  14. package/dist/{CreateUserPage-bwR6fq5C.js.map → CreateUserPage-DLwXeLAq.js.map} +1 -1
  15. package/dist/CreateUserPage-WruMs7WP.js +6 -0
  16. package/dist/CreditBalanceDashboard-CkcsrZ_e.js +35 -0
  17. package/dist/CreditManagement-Ddvu9dMw.js +35 -0
  18. package/dist/CustomerCreateSupportTicketForm-BKperKGS.js +35 -0
  19. package/dist/{CustomerSupportTicketDetailPage-D_1t2EpN.js → CustomerSupportTicketDetailPage-BdyaKG1v.js} +9 -9
  20. package/dist/{CustomerSupportTicketDetailPage-D_1t2EpN.js.map → CustomerSupportTicketDetailPage-BdyaKG1v.js.map} +1 -1
  21. package/dist/CustomerSupportTicketList-DcbrjDa9.js +35 -0
  22. package/dist/CustomerSupportTicketParent-BeNzUwuP.js +7 -0
  23. package/dist/{CustomerSupportTicketParent-B09_iFpJ.js → CustomerSupportTicketParent-HIxwSVdu.js} +4 -4
  24. package/dist/{CustomerSupportTicketParent-B09_iFpJ.js.map → CustomerSupportTicketParent-HIxwSVdu.js.map} +1 -1
  25. package/dist/CustomerSupportTicketSuccess-CC967u3y.js +35 -0
  26. package/dist/EditTeamForm-B5Tee5wL.js +35 -0
  27. package/dist/{EditTeamMemberForm-DJW7yRQW.js → EditTeamMemberForm-CaS2GLjV.js} +2 -2
  28. package/dist/{EditTeamMemberForm-DJW7yRQW.js.map → EditTeamMemberForm-CaS2GLjV.js.map} +1 -1
  29. package/dist/EditTeamMemberForm-OtcS8QWt.js +6 -0
  30. package/dist/{EditUserPage-aDygGmfD.js → EditUserPage-DURc5rmi.js} +4 -4
  31. package/dist/{EditUserPage-aDygGmfD.js.map → EditUserPage-DURc5rmi.js.map} +1 -1
  32. package/dist/EditUserPage-T4DQlKhf.js +7 -0
  33. package/dist/ForgotPassword-CUifhmqP.js +7 -0
  34. package/dist/{ForgotPassword-CJjzm9GK.js → ForgotPassword-OjIPi9s9.js} +4 -3
  35. package/dist/{ForgotPassword-CJjzm9GK.js.map → ForgotPassword-OjIPi9s9.js.map} +1 -1
  36. package/dist/LoginForm-9UFnA-fO.js +118 -0
  37. package/dist/LoginForm-9UFnA-fO.js.map +1 -0
  38. package/dist/LoginForm-Bg7GoZEA.js +7 -0
  39. package/dist/Logout-Bs92csWH.js +7 -0
  40. package/dist/{Logout-Cm9kEzgH.js → Logout-YgTgOFUH.js} +5 -4
  41. package/dist/{Logout-Cm9kEzgH.js.map → Logout-YgTgOFUH.js.map} +1 -1
  42. package/dist/MfaSetup-BACX5XP-.js +8 -0
  43. package/dist/{MfaSetup-Ch0w-gTN.js → MfaSetup-RtFMY_dj.js} +5 -4
  44. package/dist/{MfaSetup-Ch0w-gTN.js.map → MfaSetup-RtFMY_dj.js.map} +1 -1
  45. package/dist/{MfaVerify-BwzjVrTj.js → MfaVerify-Cvhe8bEM.js} +6 -5
  46. package/dist/{MfaVerify-BwzjVrTj.js.map → MfaVerify-Cvhe8bEM.js.map} +1 -1
  47. package/dist/MfaVerify-ak4iSdQ2.js +8 -0
  48. package/dist/RecordVersionViewer-BWZ78vvE.js +490 -0
  49. package/dist/RecordVersionViewer-BWZ78vvE.js.map +1 -0
  50. package/dist/{ResetPassword-DuLuXaNp.js → ResetPassword-BE4mXK9q.js} +4 -3
  51. package/dist/{ResetPassword-DuLuXaNp.js.map → ResetPassword-BE4mXK9q.js.map} +1 -1
  52. package/dist/ResetPassword-pY1uhTdl.js +7 -0
  53. package/dist/{SavedFiltersPage-CawED9Oz.js → SavedFiltersPage-DQt6uc8m.js} +33 -30
  54. package/dist/{SavedFiltersPage-CawED9Oz.js.map → SavedFiltersPage-DQt6uc8m.js.map} +1 -1
  55. package/dist/Signup-9TjMMnU4.js +204 -0
  56. package/dist/Signup-9TjMMnU4.js.map +1 -0
  57. package/dist/Signup-Bq-G3D-s.js +9 -0
  58. package/dist/SignupConsentFlow-QUZGKjdB.js +269 -0
  59. package/dist/SignupConsentFlow-QUZGKjdB.js.map +1 -0
  60. package/dist/SignupRequirementsPage-DfbYmpQD.js +360 -0
  61. package/dist/SignupRequirementsPage-DfbYmpQD.js.map +1 -0
  62. package/dist/StaffCreateSupportTicketForm-D0ZuisDk.js +35 -0
  63. package/dist/{StaffSupportTicketDetailPage-DZZN3jmt.js → StaffSupportTicketDetailPage-DQdfh6H1.js} +11 -11
  64. package/dist/{StaffSupportTicketDetailPage-DZZN3jmt.js.map → StaffSupportTicketDetailPage-DQdfh6H1.js.map} +1 -1
  65. package/dist/StaffSupportTicketList-CiqC05XB.js +35 -0
  66. package/dist/{StaffSupportTicketParent-BYxQPuhI.js → StaffSupportTicketParent-CilR4RGM.js} +4 -4
  67. package/dist/{StaffSupportTicketParent-BYxQPuhI.js.map → StaffSupportTicketParent-CilR4RGM.js.map} +1 -1
  68. package/dist/StaffSupportTicketParent-DkV329NI.js +7 -0
  69. package/dist/StaffSupportTicketSuccess-CUYnimaI.js +35 -0
  70. package/dist/{SupportStaffPage-B05UR5LK.js → SupportStaffPage-KKugAnFm.js} +7 -7
  71. package/dist/{SupportStaffPage-B05UR5LK.js.map → SupportStaffPage-KKugAnFm.js.map} +1 -1
  72. package/dist/{SupportTicketDevLifecycleBadge-Ba-Rm6QW.js → SupportTicketDevLifecycleBadge-EMrQHfyG.js} +1 -1
  73. package/dist/{SupportTicketDevLifecycleBadge-Ba-Rm6QW.js.map → SupportTicketDevLifecycleBadge-EMrQHfyG.js.map} +1 -1
  74. package/dist/{SupportTicketMaintenancePage-BoZpjcAF.js → SupportTicketMaintenancePage-smItdkrD.js} +4 -4
  75. package/dist/{SupportTicketMaintenancePage-BoZpjcAF.js.map → SupportTicketMaintenancePage-smItdkrD.js.map} +1 -1
  76. package/dist/TeamAttachmentsTab-DUtCD1Yi.js +35 -0
  77. package/dist/TeamHistoryTab-BsUoH4VK.js +4 -0
  78. package/dist/{TeamHistoryTab-BrC6FFIw.js → TeamHistoryTab-D5biUPmq.js} +3 -3
  79. package/dist/{TeamHistoryTab-BrC6FFIw.js.map → TeamHistoryTab-D5biUPmq.js.map} +1 -1
  80. package/dist/TeamList-BkPIqZ8V.js +35 -0
  81. package/dist/TeamMemberList-1mxUGCNa.js +35 -0
  82. package/dist/TeamMemberParent-DzeBIElY.js +35 -0
  83. package/dist/{TeamNotesTab-B2eETkAz.js → TeamNotesTab-BzGZZ1h8.js} +5 -5
  84. package/dist/{TeamNotesTab-B2eETkAz.js.map → TeamNotesTab-BzGZZ1h8.js.map} +1 -1
  85. package/dist/TeamNotesTab-ClHl2nXd.js +7 -0
  86. package/dist/TeamParent-DJa9UZTP.js +35 -0
  87. package/dist/{TimelineNoteInput-C0a0WRQC.js → TimelineNoteInput-0p-M4Qie.js} +2 -2
  88. package/dist/{TimelineNoteInput-C0a0WRQC.js.map → TimelineNoteInput-0p-M4Qie.js.map} +1 -1
  89. package/dist/{TimelineSystemEvent-Dj2TMOF6.js → TimelineSystemEvent-BHzFr46C.js} +4 -4
  90. package/dist/{TimelineSystemEvent-Dj2TMOF6.js.map → TimelineSystemEvent-BHzFr46C.js.map} +1 -1
  91. package/dist/UserListPage-BTLE4J0s.js +4 -0
  92. package/dist/{UserListPage-QSdxrJT6.js → UserListPage-DUE5gJTo.js} +3 -3
  93. package/dist/{UserListPage-QSdxrJT6.js.map → UserListPage-DUE5gJTo.js.map} +1 -1
  94. package/dist/{UserProfilePage-X4z2lG-J.js → UserProfilePage-C3b93Keh.js} +4 -4
  95. package/dist/{UserProfilePage-X4z2lG-J.js.map → UserProfilePage-C3b93Keh.js.map} +1 -1
  96. package/dist/UserProfilePage-CVTORtSx.js +7 -0
  97. package/dist/VerifyEmail-DCP4DWIw.js +9 -0
  98. package/dist/VerifyEmail-DlOmWGG-.js +257 -0
  99. package/dist/VerifyEmail-DlOmWGG-.js.map +1 -0
  100. package/dist/ViewTeam-DVfnLMhV.js +35 -0
  101. package/dist/ViewTeamMember-L4v3gCIn.js +35 -0
  102. package/dist/{convertToLocalDateTime-DOSGtMn8.js → convertToLocalDateTime-CFhtN6PI.js} +12 -2
  103. package/dist/convertToLocalDateTime-CFhtN6PI.js.map +1 -0
  104. package/dist/{displayIdFormatter-B1ZKgofu.js → displayIdFormatter-Dz900Awr.js} +1 -1
  105. package/dist/{displayIdFormatter-B1ZKgofu.js.map → displayIdFormatter-Dz900Awr.js.map} +1 -1
  106. package/dist/{extractRpcErrorMessage-C_UbKgHL.js → extractRpcErrorMessage-Di8E8-Wh.js} +1 -1
  107. package/dist/{extractRpcErrorMessage-C_UbKgHL.js.map → extractRpcErrorMessage-Di8E8-Wh.js.map} +1 -1
  108. package/dist/index.d.ts +62 -17
  109. package/dist/index.js +37 -33
  110. package/dist/{mfaSchema-nfNCcEhM.js → mfaSchema-BnRWf0ma.js} +1 -1
  111. package/dist/{mfaSchema-nfNCcEhM.js.map → mfaSchema-BnRWf0ma.js.map} +1 -1
  112. package/dist/{src-CkgUIye9.js → src-QZJyMfGX.js} +422 -812
  113. package/dist/src-QZJyMfGX.js.map +1 -0
  114. package/dist/{useBreadcrumbs-DmgSucoe.js → useBreadcrumbs-qB6ghsAf.js} +1 -1
  115. package/dist/{useBreadcrumbs-DmgSucoe.js.map → useBreadcrumbs-qB6ghsAf.js.map} +1 -1
  116. package/dist/useEmailVerificationChannel-BNi926Ho.js +37 -0
  117. package/dist/useEmailVerificationChannel-BNi926Ho.js.map +1 -0
  118. package/dist/{useMutation-DbzXtqf1.js → useMutation-BTsyHKyn.js} +3 -3
  119. package/dist/{useMutation-DbzXtqf1.js.map → useMutation-BTsyHKyn.js.map} +1 -1
  120. package/dist/{useQuery-BKb5JXVS.js → useQuery-BggIE52P.js} +5 -5
  121. package/dist/useQuery-BggIE52P.js.map +1 -0
  122. package/dist/{useQueryCache-CHG4-HGF.js → useQueryCache-Bjm-S8v5.js} +2 -2
  123. package/dist/{useQueryCache-CHG4-HGF.js.map → useQueryCache-Bjm-S8v5.js.map} +1 -1
  124. package/dist/{useReturnUrl-Da8PpLb9.js → useReturnUrl-qFeazn-G.js} +2 -54
  125. package/dist/useReturnUrl-qFeazn-G.js.map +1 -0
  126. package/dist/{useRpcAuth-8Byr6SSI.js → useRpcAuth-rmHf7bYx.js} +42 -2
  127. package/dist/useRpcAuth-rmHf7bYx.js.map +1 -0
  128. package/dist/useSignupPendingData-BWHwUHhL.js +47 -0
  129. package/dist/useSignupPendingData-BWHwUHhL.js.map +1 -0
  130. package/package.json +5 -2
  131. package/src/daisyui.css +1 -0
  132. package/dist/Appearance-C3WguxT-.js +0 -3
  133. package/dist/ChangePasswordPage-BuVNYC_G.js +0 -6
  134. package/dist/CreateTeamForm-BuMrZ169.js +0 -32
  135. package/dist/CreateTeamMemberForm-D0xqR9me.js +0 -32
  136. package/dist/CreateUserPage-BWIvFF-4.js +0 -6
  137. package/dist/CreditBalanceDashboard-BR-er7gs.js +0 -32
  138. package/dist/CreditManagement-CyjrE1ep.js +0 -32
  139. package/dist/CustomerCreateSupportTicketForm-C9-CLRRQ.js +0 -32
  140. package/dist/CustomerSupportTicketList-B0dC7lgD.js +0 -32
  141. package/dist/CustomerSupportTicketParent-D0wLnKXf.js +0 -7
  142. package/dist/CustomerSupportTicketSuccess-BvuBglg8.js +0 -32
  143. package/dist/EditTeamForm-BJlOKEkI.js +0 -32
  144. package/dist/EditTeamMemberForm-CbDvTLXI.js +0 -6
  145. package/dist/EditUserPage-CsHl1h_g.js +0 -7
  146. package/dist/ForgotPassword-DJjmzU_m.js +0 -7
  147. package/dist/LoginForm-BeiI_y3E.js +0 -7
  148. package/dist/LoginForm-IEP-hEh0.js +0 -115
  149. package/dist/LoginForm-IEP-hEh0.js.map +0 -1
  150. package/dist/Logout-DmZTNQDP.js +0 -7
  151. package/dist/MfaSetup-BwkenBRD.js +0 -8
  152. package/dist/MfaVerify-BaUROEol.js +0 -8
  153. package/dist/ResetPassword-DEFj1pgV.js +0 -7
  154. package/dist/Signup-C94alv87.js +0 -166
  155. package/dist/Signup-C94alv87.js.map +0 -1
  156. package/dist/Signup-CFUbdrYs.js +0 -7
  157. package/dist/StaffCreateSupportTicketForm-AxprwWRv.js +0 -32
  158. package/dist/StaffSupportTicketList-DYKysNs3.js +0 -32
  159. package/dist/StaffSupportTicketParent-CT8oYFd6.js +0 -7
  160. package/dist/StaffSupportTicketSuccess-zWEagE4E.js +0 -32
  161. package/dist/TeamAttachmentsTab-BFRMbPlZ.js +0 -32
  162. package/dist/TeamHistoryTab-CYrt5KnE.js +0 -4
  163. package/dist/TeamList-CF5BQhfx.js +0 -32
  164. package/dist/TeamMemberList-Dfi2iKOH.js +0 -32
  165. package/dist/TeamMemberParent-DXcumR-Q.js +0 -32
  166. package/dist/TeamNotesTab-Bv_HPC6f.js +0 -7
  167. package/dist/TeamParent-DLoNn-mW.js +0 -32
  168. package/dist/UserListPage-CBwfXo15.js +0 -4
  169. package/dist/UserProfilePage-cTrZuwOT.js +0 -7
  170. package/dist/VerifyEmail-8bsvoDdM.js +0 -175
  171. package/dist/VerifyEmail-8bsvoDdM.js.map +0 -1
  172. package/dist/VerifyEmail-Cpc0umIu.js +0 -7
  173. package/dist/VerifyEmailRequired-CN1FU1AE.js +0 -74
  174. package/dist/VerifyEmailRequired-CN1FU1AE.js.map +0 -1
  175. package/dist/ViewTeam-DpjnoTwo.js +0 -32
  176. package/dist/ViewTeamMember-CRb2oBHG.js +0 -32
  177. package/dist/convertToLocalDateTime-DOSGtMn8.js.map +0 -1
  178. package/dist/src-CkgUIye9.js.map +0 -1
  179. package/dist/useQuery-BKb5JXVS.js.map +0 -1
  180. package/dist/useReturnUrl-Da8PpLb9.js.map +0 -1
  181. package/dist/useRpcAuth-8Byr6SSI.js.map +0 -1
  182. /package/dist/{TeamMembersTab-DTJxmb-M.js → TeamMembersTab-CBB2Yl_I.js} +0 -0
@@ -1,16 +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-8Byr6SSI.js";
2
- import { t as useMutation } from "./useMutation-DbzXtqf1.js";
3
- import { t as useQuery } from "./useQuery-BKb5JXVS.js";
4
- import { n as getBackLinkFromRoute, o as withReturnUrl, s as AppLink_default } from "./useReturnUrl-Da8PpLb9.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-Dj2TMOF6.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-rmHf7bYx.js";
2
+ import { t as useMutation } from "./useMutation-BTsyHKyn.js";
3
+ import { t as useQuery } from "./useQuery-BggIE52P.js";
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-BHzFr46C.js";
6
6
  import { n as export_helper_default } from "./TeamMembersTab-4gmnP9sD.js";
7
- import { n as useBreadcrumbs, t as BREADCRUMB_KEY } from "./useBreadcrumbs-DmgSucoe.js";
8
- import { i as FieldsetSection_default, n as teamMemberCreateSchemaWithMetadata } from "./EditTeamMemberForm-DJW7yRQW.js";
9
- import { r as ZiniaContainer_default } from "./TeamHistoryTab-BrC6FFIw.js";
10
- import { n as formatToISODate, r as formatUserDate, t as formatSystemTimestamp } from "./convertToLocalDateTime-DOSGtMn8.js";
11
- import { t as extractRpcErrorMessage } from "./extractRpcErrorMessage-C_UbKgHL.js";
12
- import { t as formatTicketDisplayId } from "./displayIdFormatter-B1ZKgofu.js";
13
- import { t as SupportTicketDevLifecycleBadge_default } from "./SupportTicketDevLifecycleBadge-Ba-Rm6QW.js";
7
+ import { n as getBackLinkFromRoute, o as withReturnUrl, r as getValidReturnUrl } 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-CaS2GLjV.js";
11
+ import { r as ZiniaContainer_default } from "./TeamHistoryTab-D5biUPmq.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";
14
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";
15
17
  import { RouterView, useRoute, useRouter } from "vue-router";
16
18
  import { toast } from "vue3-toastify";
@@ -49,19 +51,19 @@ const DragoncoreVue = { install(_app, options) {
49
51
 
50
52
  //#endregion
51
53
  //#region src/components/AppTabNavigation.vue
52
- const _hoisted_1$58 = { class: "w-full" };
53
- const _hoisted_2$53 = { class: "md:hidden relative" };
54
- const _hoisted_3$50 = { class: "font-medium" };
55
- 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 = {
56
58
  key: 0,
57
59
  class: "absolute z-20 w-full bg-base-100 shadow-lg"
58
60
  };
59
- const _hoisted_5$33 = ["onClick"];
60
- const _hoisted_6$27 = { class: "hidden md:flex items-center overflow-x-auto" };
61
- const _hoisted_7$22 = { class: "flex-1 flex" };
62
- const _hoisted_8$22 = ["onClick"];
63
- const _hoisted_9$21 = { class: "ml-auto shrink-0" };
64
- 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({
65
67
  __name: "AppTabNavigation",
66
68
  props: {
67
69
  tabs: {},
@@ -102,13 +104,13 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
102
104
  };
103
105
  return (_ctx, _cache) => {
104
106
  const _component_router_link = resolveComponent("router-link");
105
- 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, [
106
108
  createCommentVNode(" Mobile view: Show dropdown on small screens "),
107
- createElementVNode("div", _hoisted_2$53, [
109
+ createElementVNode("div", _hoisted_2$49, [
108
110
  createElementVNode("button", {
109
111
  onClick: _cache[0] || (_cache[0] = ($event) => isMenuOpen.value = !isMenuOpen.value),
110
112
  class: "w-full flex items-center justify-between px-4 py-3 bg-base-100"
111
- }, [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", {
112
114
  xmlns: "http://www.w3.org/2000/svg",
113
115
  class: "h-5 w-5",
114
116
  fill: "none",
@@ -121,7 +123,7 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
121
123
  d: "M19 9l-7 7-7-7"
122
124
  })], -1))]),
123
125
  createCommentVNode(" Dropdown menu "),
124
- 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) => {
125
127
  return openBlock(), createElementBlock(Fragment, { key: index }, [tab.to ? (openBlock(), createBlock(_component_router_link, {
126
128
  key: 0,
127
129
  to: tab.to,
@@ -134,12 +136,12 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
134
136
  key: 1,
135
137
  onClick: ($event) => handleTabClick(tab.id),
136
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"]])
137
- }, toDisplayString(tab.label), 11, _hoisted_5$33))], 64);
139
+ }, toDisplayString(tab.label), 11, _hoisted_5$29))], 64);
138
140
  }), 128))])) : createCommentVNode("v-if", true)
139
141
  ]),
140
142
  createCommentVNode(" Desktop view: Show horizontal tabs on medium screens and up "),
141
- createElementVNode("div", _hoisted_6$27, [
142
- 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) => {
143
145
  return openBlock(), createElementBlock(Fragment, { key: index }, [tab.to ? (openBlock(), createBlock(_component_router_link, {
144
146
  key: 0,
145
147
  to: tab.to,
@@ -151,26 +153,26 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
151
153
  key: 1,
152
154
  onClick: ($event) => handleTabClick(tab.id),
153
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"]])
154
- }, [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);
155
157
  }), 128))]),
156
158
  createCommentVNode(" Optional slot for additional content "),
157
- createElementVNode("div", _hoisted_9$21, [renderSlot(_ctx.$slots, "actions")])
159
+ createElementVNode("div", _hoisted_9$18, [renderSlot(_ctx.$slots, "actions")])
158
160
  ])
159
161
  ])], 2112);
160
162
  };
161
163
  }
162
164
  });
163
- var AppTabNavigation_default = _sfc_main$64;
165
+ var AppTabNavigation_default = _sfc_main$60;
164
166
 
165
167
  //#endregion
166
168
  //#region src/components/AppHeader.vue
167
- const _hoisted_1$57 = { class: "bg-base-100 border-b border-base-300 z-10 w-full" };
168
- 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 = {
169
171
  key: 0,
170
172
  class: "w-full"
171
173
  };
172
- const _hoisted_3$49 = { class: "max-w-7xl mx-auto px-3 sm:px-4 md:px-6" };
173
- 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({
174
176
  __name: "AppHeader",
175
177
  props: {
176
178
  tabs: {},
@@ -179,9 +181,9 @@ const _sfc_main$63 = /* @__PURE__ */ defineComponent({
179
181
  emits: ["tab-click"],
180
182
  setup(__props) {
181
183
  return (_ctx, _cache) => {
182
- 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, [
183
185
  createCommentVNode(" Tab navigation - only shown when tabs are provided "),
184
- __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, {
185
187
  tabs: __props.tabs,
186
188
  "active-tab": __props.activeTab,
187
189
  onTabClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("tab-click", $event))
@@ -200,19 +202,19 @@ const _sfc_main$63 = /* @__PURE__ */ defineComponent({
200
202
  };
201
203
  }
202
204
  });
203
- var AppHeader_default = _sfc_main$63;
205
+ var AppHeader_default = _sfc_main$59;
204
206
 
205
207
  //#endregion
206
208
  //#region src/components/BaseModal.vue
207
- const _hoisted_1$56 = { class: "modal-box max-w-md w-full max-h-[90vh] flex flex-col p-0" };
208
- const _hoisted_2$51 = { class: "flex justify-between items-center p-6 pb-4 border-b border-base-300 flex-shrink-0" };
209
- const _hoisted_3$48 = { class: "font-bold text-lg" };
210
- const _hoisted_4$42 = { class: "modal-content flex-1 overflow-y-auto p-6" };
211
- 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 = {
212
214
  method: "dialog",
213
215
  class: "modal-backdrop"
214
216
  };
215
- const _sfc_main$62 = /* @__PURE__ */ defineComponent({
217
+ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
216
218
  __name: "BaseModal",
217
219
  props: {
218
220
  isOpen: { type: Boolean },
@@ -235,9 +237,9 @@ const _sfc_main$62 = /* @__PURE__ */ defineComponent({
235
237
  ref_key: "modal",
236
238
  ref: modal,
237
239
  class: "modal"
238
- }, [createElementVNode("div", _hoisted_1$56, [
240
+ }, [createElementVNode("div", _hoisted_1$52, [
239
241
  createCommentVNode(" Header with title and close button - fixed, not scrollable "),
240
- 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", {
241
243
  type: "button",
242
244
  class: "btn btn-sm btn-circle btn-ghost",
243
245
  onClick: withModifiers(handleClose, ["prevent"]),
@@ -255,34 +257,34 @@ const _sfc_main$62 = /* @__PURE__ */ defineComponent({
255
257
  d: "M6 18L18 6M6 6l12 12"
256
258
  })], -1)])])]),
257
259
  createCommentVNode(" Content slot - scrollable area "),
258
- createElementVNode("div", _hoisted_4$42, [renderSlot(_ctx.$slots, "default")])
259
- ]), 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", {
260
262
  type: "button",
261
263
  onClick: withModifiers(handleClose, ["prevent"])
262
264
  }, "close")])], 512);
263
265
  };
264
266
  }
265
267
  });
266
- var BaseModal_default = _sfc_main$62;
268
+ var BaseModal_default = _sfc_main$58;
267
269
 
268
270
  //#endregion
269
271
  //#region src/components/InputModal.vue
270
- const _hoisted_1$55 = { class: "modal-box" };
271
- const _hoisted_2$50 = { class: "font-bold text-lg" };
272
- const _hoisted_3$47 = { class: "py-4" };
273
- const _hoisted_4$41 = { class: "form-control w-full" };
274
- const _hoisted_5$31 = { class: "label" };
275
- const _hoisted_6$26 = { class: "label-text" };
276
- const _hoisted_7$21 = ["placeholder"];
277
- 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 = {
278
280
  key: 0,
279
281
  class: "label"
280
282
  };
281
- const _hoisted_9$20 = { class: "label-text-alt text-error" };
282
- const _hoisted_10$17 = { class: "modal-action" };
283
- const _hoisted_11$16 = ["disabled"];
284
- const _hoisted_12$14 = ["disabled"];
285
- 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({
286
288
  __name: "InputModal",
287
289
  props: {
288
290
  modelValue: { type: Boolean },
@@ -332,10 +334,10 @@ const _sfc_main$61 = /* @__PURE__ */ defineComponent({
332
334
  inputValue.value = "";
333
335
  };
334
336
  return (_ctx, _cache) => {
335
- return openBlock(), createElementBlock("div", { class: normalizeClass(["modal", { "modal-open": __props.modelValue }]) }, [createElementVNode("div", _hoisted_1$55, [
336
- createElementVNode("h3", _hoisted_2$50, toDisplayString(__props.title), 1),
337
- createElementVNode("div", _hoisted_3$47, [createElementVNode("label", _hoisted_4$41, [
338
- 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)]),
339
341
  withDirectives(createElementVNode("input", {
340
342
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => inputValue.value = $event),
341
343
  type: "text",
@@ -344,18 +346,18 @@ const _sfc_main$61 = /* @__PURE__ */ defineComponent({
344
346
  onKeyup: [withKeys(handleConfirm, ["enter"]), withKeys(handleCancel, ["escape"])],
345
347
  ref_key: "inputRef",
346
348
  ref: inputRef
347
- }, null, 40, _hoisted_7$21), [[vModelText, inputValue.value]]),
348
- __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)
349
351
  ])]),
350
- createElementVNode("div", _hoisted_10$17, [createElementVNode("button", {
352
+ createElementVNode("div", _hoisted_10$14, [createElementVNode("button", {
351
353
  class: "btn",
352
354
  onClick: handleCancel,
353
355
  disabled: __props.isProcessing
354
- }, toDisplayString(__props.cancelText), 9, _hoisted_11$16), createElementVNode("button", {
356
+ }, toDisplayString(__props.cancelText), 9, _hoisted_11$13), createElementVNode("button", {
355
357
  class: normalizeClass(["btn", __props.confirmButtonClass]),
356
358
  onClick: handleConfirm,
357
359
  disabled: !inputValue.value || inputValue.value.trim() === "" || __props.isProcessing
358
- }, toDisplayString(__props.isProcessing ? __props.processingText : __props.confirmText), 11, _hoisted_12$14)])
360
+ }, toDisplayString(__props.isProcessing ? __props.processingText : __props.confirmText), 11, _hoisted_12$11)])
359
361
  ]), createElementVNode("div", {
360
362
  class: "modal-backdrop",
361
363
  onClick: handleCancel
@@ -363,11 +365,11 @@ const _sfc_main$61 = /* @__PURE__ */ defineComponent({
363
365
  };
364
366
  }
365
367
  });
366
- var InputModal_default = _sfc_main$61;
368
+ var InputModal_default = _sfc_main$57;
367
369
 
368
370
  //#endregion
369
371
  //#region src/components/LoginButton.vue
370
- const _sfc_main$60 = {};
372
+ const _sfc_main$56 = {};
371
373
  function _sfc_render(_ctx, _cache) {
372
374
  const _component_router_link = resolveComponent("router-link");
373
375
  return openBlock(), createBlock(_component_router_link, { to: "/auth/login" }, {
@@ -375,11 +377,11 @@ function _sfc_render(_ctx, _cache) {
375
377
  _: 1
376
378
  });
377
379
  }
378
- 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]]);
379
381
 
380
382
  //#endregion
381
383
  //#region src/components/ui/LogoPlaceholder.vue
382
- const _sfc_main$59 = /* @__PURE__ */ defineComponent({
384
+ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
383
385
  __name: "LogoPlaceholder",
384
386
  props: { size: { default: "md" } },
385
387
  setup(__props) {
@@ -388,52 +390,52 @@ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
388
390
  };
389
391
  }
390
392
  });
391
- var LogoPlaceholder_default = _sfc_main$59;
393
+ var LogoPlaceholder_default = _sfc_main$55;
392
394
 
393
395
  //#endregion
394
396
  //#region src/components/Navbar.vue
395
- 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" };
396
- const _hoisted_2$49 = { class: "navbar w-full" };
397
- const _hoisted_3$46 = { class: "flex flex-1 md:gap-1 lg:gap-2" };
398
- const _hoisted_4$40 = { class: "items-center gap-2 flex" };
399
- const _hoisted_5$30 = { class: "font-title inline-flex text-lg text-primary transition-all duration-200 md:text-3xl" };
400
- const _hoisted_6$25 = ["src"];
401
- 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 = {
402
404
  key: 0,
403
405
  class: "hidden md:flex items-center ml-4"
404
406
  };
405
- const _hoisted_8$20 = { class: "text-sm text-base-content/70 flex items-center gap-2" };
406
- 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 = {
407
409
  key: 0,
408
410
  class: "loading loading-spinner loading-xs"
409
411
  };
410
- const _hoisted_10$16 = { class: "font-medium" };
411
- const _hoisted_11$15 = {
412
+ const _hoisted_10$13 = { class: "font-medium" };
413
+ const _hoisted_11$12 = {
412
414
  key: 2,
413
415
  class: "text-base-content/50"
414
416
  };
415
- const _hoisted_12$13 = {
417
+ const _hoisted_12$10 = {
416
418
  key: 1,
417
419
  class: "flex md:hidden flex-col justify-center ml-2 leading-tight"
418
420
  };
419
- const _hoisted_13$11 = { class: "font-medium text-sm truncate max-w-[150px]" };
420
- const _hoisted_14$10 = {
421
+ const _hoisted_13$8 = { class: "font-medium text-sm truncate max-w-[150px]" };
422
+ const _hoisted_14$7 = {
421
423
  key: 0,
422
424
  class: "loading loading-spinner loading-xs"
423
425
  };
424
- const _hoisted_15$9 = { class: "flex-none gap-2" };
425
- const _hoisted_16$9 = {
426
+ const _hoisted_15$6 = { class: "flex-none gap-2" };
427
+ const _hoisted_16$6 = {
426
428
  key: 0,
427
429
  class: "loading btn-primary btn"
428
430
  };
429
- const _hoisted_17$8 = {
431
+ const _hoisted_17$5 = {
430
432
  key: 1,
431
433
  for: "my-drawer-4",
432
434
  tabindex: "0",
433
435
  class: "btn-ghost btn-circle avatar btn placeholder",
434
436
  id: "right-nav-label"
435
437
  };
436
- const _sfc_main$58 = /* @__PURE__ */ defineComponent({
438
+ const _sfc_main$54 = /* @__PURE__ */ defineComponent({
437
439
  __name: "Navbar",
438
440
  props: {
439
441
  breadcrumbs: {},
@@ -447,7 +449,7 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
447
449
  loading.value = false;
448
450
  return (_ctx, _cache) => {
449
451
  const _component_router_link = resolveComponent("router-link");
450
- 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", {
451
453
  for: "drawer",
452
454
  class: "btn-ghost drawer-button btn-square btn"
453
455
  }, [createElementVNode("svg", {
@@ -461,13 +463,13 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
461
463
  "stroke-linecap": "round",
462
464
  "stroke-linejoin": "round",
463
465
  d: "M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"
464
- })])], -1)), createElementVNode("div", _hoisted_4$40, [
466
+ })])], -1)), createElementVNode("div", _hoisted_4$36, [
465
467
  createVNode(AppLink_default, {
466
468
  to: "/",
467
469
  "aria-current": "page",
468
470
  "aria-label": "Homepage"
469
471
  }, {
470
- 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, {
471
473
  key: 0,
472
474
  size: "xs"
473
475
  })) : (openBlock(), createElementBlock("img", {
@@ -476,11 +478,11 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
476
478
  alt: "logo",
477
479
  class: "h-10 w-10 md:h-12 md:w-12",
478
480
  onError: _cache[0] || (_cache[0] = ($event) => imageLoadFailed.value = true)
479
- }, null, 40, _hoisted_6$25))])]),
481
+ }, null, 40, _hoisted_6$21))])]),
480
482
  _: 1
481
483
  }),
482
484
  createCommentVNode(" Breadcrumbs in navbar - Desktop view "),
483
- __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, [
484
486
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.breadcrumbs, (crumb, index) => {
485
487
  return openBlock(), createElementBlock(Fragment, { key: index }, [
486
488
  createCommentVNode(" Link for all but the last item "),
@@ -494,17 +496,17 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
494
496
  }, 1032, ["to"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
495
497
  createCommentVNode(" Current page (not a link) "),
496
498
  createCommentVNode(" Show loading spinner if explicitly loading "),
497
- 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))
498
500
  ], 64)),
499
501
  createCommentVNode(" Separator between items "),
500
- 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)
501
503
  ], 64);
502
504
  }), 128)),
503
505
  createCommentVNode(" Optional status badge "),
504
506
  renderSlot(_ctx.$slots, "status")
505
507
  ])])) : createCommentVNode("v-if", true),
506
508
  createCommentVNode(" Breadcrumbs in navbar - Mobile view (GitHub style) "),
507
- __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, [
508
510
  createCommentVNode(" Parent/previous breadcrumb (if exists) "),
509
511
  __props.breadcrumbs.length > 1 && __props.breadcrumbs[__props.breadcrumbs.length - 2] ? (openBlock(), createBlock(_component_router_link, {
510
512
  key: 0,
@@ -515,22 +517,22 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
515
517
  _: 1
516
518
  }, 8, ["to"])) : createCommentVNode("v-if", true),
517
519
  createCommentVNode(" Current page (last breadcrumb) "),
518
- 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))]),
519
521
  createCommentVNode(" Optional status badge "),
520
522
  renderSlot(_ctx.$slots, "mobile-status")
521
523
  ])) : createCommentVNode("v-if", true)
522
- ])]), 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 }))])])]);
523
525
  };
524
526
  }
525
527
  });
526
- var Navbar_default = _sfc_main$58;
528
+ var Navbar_default = _sfc_main$54;
527
529
 
528
530
  //#endregion
529
531
  //#region src/components/NotFound.vue
530
- const _hoisted_1$53 = { class: "flex items-center justify-center bg-base-100 mt-4" };
531
- const _hoisted_2$48 = { class: "max-w-md mx-auto text-center px-4" };
532
- const _hoisted_3$45 = { class: "flex flex-col sm:flex-row gap-4 justify-center" };
533
- 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({
534
536
  __name: "NotFound",
535
537
  setup(__props) {
536
538
  const router = useRouter();
@@ -540,11 +542,11 @@ const _sfc_main$57 = /* @__PURE__ */ defineComponent({
540
542
  };
541
543
  return (_ctx, _cache) => {
542
544
  const _component_router_link = resolveComponent("router-link");
543
- 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" }, [
544
546
  createElementVNode("h1", { class: "text-9xl font-bold text-primary mb-4" }, "404"),
545
547
  createElementVNode("h2", { class: "text-3xl font-bold mb-4" }, "Page Not Found"),
546
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. ")
547
- ], -1)), createElementVNode("div", _hoisted_3$45, [createVNode(_component_router_link, {
549
+ ], -1)), createElementVNode("div", _hoisted_3$41, [createVNode(_component_router_link, {
548
550
  to: { name: "Home" },
549
551
  class: "btn btn-primary"
550
552
  }, {
@@ -557,15 +559,15 @@ const _sfc_main$57 = /* @__PURE__ */ defineComponent({
557
559
  };
558
560
  }
559
561
  });
560
- var NotFound_default = _sfc_main$57;
562
+ var NotFound_default = _sfc_main$53;
561
563
 
562
564
  //#endregion
563
565
  //#region src/components/RightSidebar.vue
564
- const _hoisted_1$52 = { class: "drawer-side z-50" };
565
- const _hoisted_2$47 = { class: "menu p-3 w-80 h-full bg-base-200 text-base-content" };
566
- const _hoisted_3$44 = { class: "flex pb-2" };
567
- const _hoisted_4$39 = { class: "pl-3" };
568
- 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({
569
571
  __name: "RightSidebar",
570
572
  props: { logoutReturnUrl: { default: "/" } },
571
573
  setup(__props) {
@@ -586,13 +588,13 @@ const _sfc_main$56 = /* @__PURE__ */ defineComponent({
586
588
  type: "checkbox",
587
589
  class: "drawer-toggle",
588
590
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(checked) ? checked.value = $event : checked = $event)
589
- }, 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", {
590
592
  for: "my-drawer-4",
591
593
  class: "drawer-overlay"
592
- }, null, -1)), createElementVNode("ul", _hoisted_2$47, [
593
- createElementVNode("div", _hoisted_3$44, [
594
+ }, null, -1)), createElementVNode("ul", _hoisted_2$43, [
595
+ createElementVNode("div", _hoisted_3$40, [
594
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)),
595
- 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),
596
598
  _cache[2] || (_cache[2] = createElementVNode("div", { class: "grow" }, null, -1)),
597
599
  _cache[3] || (_cache[3] = createElementVNode("label", {
598
600
  for: "my-drawer-4",
@@ -612,7 +614,7 @@ const _sfc_main$56 = /* @__PURE__ */ defineComponent({
612
614
  };
613
615
  }
614
616
  });
615
- var RightSidebar_default = _sfc_main$56;
617
+ var RightSidebar_default = _sfc_main$52;
616
618
 
617
619
  //#endregion
618
620
  //#region src/composables/useBuildTag.ts
@@ -709,7 +711,7 @@ function useInjectedPinnedPresets() {
709
711
 
710
712
  //#endregion
711
713
  //#region src/components/Sidebar.vue
712
- const _hoisted_1$51 = {
714
+ const _hoisted_1$47 = {
713
715
  class: "drawer-side z-50",
714
716
  style: {
715
717
  "scroll-behavior": "smooth",
@@ -717,20 +719,20 @@ const _hoisted_1$51 = {
717
719
  },
718
720
  ref: "drawersidebar"
719
721
  };
720
- const _hoisted_2$46 = { class: "w-80 bg-base-200 h-full flex flex-col" };
721
- const _hoisted_3$43 = { class: "flex-1 overflow-y-auto overflow-x-hidden min-h-0" };
722
- const _hoisted_4$38 = { class: "menu p-3 w-full text-base-content" };
723
- const _hoisted_5$29 = { class: "flex" };
724
- const _hoisted_6$24 = { class: "font-title inline-flex text-2xl text-primary transition-all duration-200" };
725
- const _hoisted_7$19 = ["src"];
726
- 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 = {
727
729
  key: 0,
728
730
  class: "w-full"
729
731
  };
730
- const _hoisted_9$18 = { class: "menu-title" };
731
- const _hoisted_10$15 = { class: "flex flex-col items-center justify-center w-full h-16" };
732
- const _hoisted_11$14 = { class: "text-xs text-neutral-500" };
733
- 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({
734
736
  __name: "Sidebar",
735
737
  props: { logoSrc: {} },
736
738
  setup(__props) {
@@ -771,12 +773,12 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
771
773
  }
772
774
  return (_ctx, _cache) => {
773
775
  const _component_router_link = resolveComponent("router-link");
774
- 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", {
775
777
  for: "drawer",
776
778
  class: "drawer-overlay"
777
- }, null, -1)), createElementVNode("aside", _hoisted_2$46, [createElementVNode("div", _hoisted_3$43, [createElementVNode("ul", _hoisted_4$38, [
778
- createElementVNode("div", _hoisted_5$29, [
779
- 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, {
780
782
  key: 0,
781
783
  size: "sm"
782
784
  })) : (openBlock(), createElementBlock("img", {
@@ -785,7 +787,7 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
785
787
  alt: "logo",
786
788
  class: "h-12",
787
789
  onError: _cache[0] || (_cache[0] = ($event) => imageLoadFailed.value = true)
788
- }, null, 40, _hoisted_7$19))])]),
790
+ }, null, 40, _hoisted_7$16))])]),
789
791
  _cache[1] || (_cache[1] = createElementVNode("div", { class: "grow" }, null, -1)),
790
792
  createElementVNode("label", {
791
793
  for: "drawer",
@@ -795,7 +797,7 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
795
797
  }, " X ", 512)
796
798
  ]),
797
799
  createCommentVNode(" Favorites section (pinned presets) at top "),
798
- 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) => {
799
801
  return openBlock(), createBlock(_component_router_link, {
800
802
  key: preset.id,
801
803
  to: unref(pinnedPresets).getPresetLink(preset),
@@ -810,7 +812,7 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
810
812
  return openBlock(), createElementBlock("li", {
811
813
  key: section,
812
814
  class: "w-full"
813
- }, [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) => {
814
816
  return openBlock(), createBlock(AppLink_default, {
815
817
  key: route.path,
816
818
  to: getRouteLink(route),
@@ -822,11 +824,11 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
822
824
  }, 1032, ["to"]);
823
825
  }), 128))]);
824
826
  }), 128))
825
- ])]), 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);
826
828
  };
827
829
  }
828
830
  });
829
- var Sidebar_default = _sfc_main$55;
831
+ var Sidebar_default = _sfc_main$51;
830
832
 
831
833
  //#endregion
832
834
  //#region src/composables/useEmailVerificationGuard.ts
@@ -849,13 +851,13 @@ function useEmailVerificationGuard() {
849
851
 
850
852
  //#endregion
851
853
  //#region src/components/UnverifiedEmailBanner.vue
852
- const _hoisted_1$50 = {
854
+ const _hoisted_1$46 = {
853
855
  key: 0,
854
- class: "bg-warning/20 border border-warning/50 text-warning-content px-4 py-2 flex items-center justify-between gap-4"
856
+ class: "bg-warning border border-warning text-warning-content px-4 py-2 flex items-center justify-between gap-4"
855
857
  };
856
- const _hoisted_2$45 = { class: "text-sm" };
857
- const _hoisted_3$42 = ["disabled"];
858
- 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({
859
861
  __name: "UnverifiedEmailBanner",
860
862
  setup(__props) {
861
863
  const { showVerificationPrompt } = useEmailVerificationGuard();
@@ -880,28 +882,28 @@ const _sfc_main$54 = /* @__PURE__ */ defineComponent({
880
882
  }
881
883
  };
882
884
  return (_ctx, _cache) => {
883
- 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, [
884
886
  _cache[0] || (_cache[0] = createTextVNode(" Please verify your email. Check your inbox or ", -1)),
885
887
  createElementVNode("button", {
886
888
  type: "button",
887
889
  class: "link link-hover font-medium underline",
888
890
  disabled: resendLoading.value,
889
891
  onClick: resendVerification
890
- }, toDisplayString(resendLoading.value ? "Sending..." : "resend verification email"), 9, _hoisted_3$42),
892
+ }, toDisplayString(resendLoading.value ? "Sending..." : "resend verification email"), 9, _hoisted_3$38),
891
893
  _cache[1] || (_cache[1] = createTextVNode(". ", -1))
892
894
  ])])) : createCommentVNode("v-if", true);
893
895
  };
894
896
  }
895
897
  });
896
- var UnverifiedEmailBanner_default = _sfc_main$54;
898
+ var UnverifiedEmailBanner_default = _sfc_main$50;
897
899
 
898
900
  //#endregion
899
901
  //#region src/layouts/Admin.vue
900
- const _hoisted_1$49 = { class: "drawer drawer-end" };
901
- const _hoisted_2$44 = { class: "drawer h-[calc(100vh_-_64px_-_64px)] bg-base-100" };
902
- const _hoisted_3$41 = { class: "drawer-content" };
903
- const _hoisted_4$37 = { class: "pr-1 pl-1 md:pr-4 md:pl-4" };
904
- 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({
905
907
  __name: "Admin",
906
908
  props: {
907
909
  logoSrc: {},
@@ -909,13 +911,13 @@ const _sfc_main$53 = /* @__PURE__ */ defineComponent({
909
911
  },
910
912
  setup(__props) {
911
913
  return (_ctx, _cache) => {
912
- 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, [
913
915
  _cache[0] || (_cache[0] = createElementVNode("input", {
914
916
  id: "my-drawer-4",
915
917
  type: "checkbox",
916
918
  class: "drawer-toggle"
917
919
  }, null, -1)),
918
- 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))])]),
919
921
  createVNode(Sidebar_default, { logoSrc: __props.logoSrc }, createSlots({ _: 2 }, [_ctx.$slots.sidebarLogo ? {
920
922
  name: "logo",
921
923
  fn: withCtx(() => [renderSlot(_ctx.$slots, "sidebarLogo")]),
@@ -925,27 +927,29 @@ const _sfc_main$53 = /* @__PURE__ */ defineComponent({
925
927
  };
926
928
  }
927
929
  });
928
- var Admin_default = _sfc_main$53;
930
+ var Admin_default = _sfc_main$49;
929
931
 
930
932
  //#endregion
931
933
  //#region src/layouts/Auth.vue
932
- const _hoisted_1$48 = { class: "m-4" };
933
- const _hoisted_2$43 = {
934
+ const _hoisted_1$44 = { class: "m-2 sm:m-4" };
935
+ const _hoisted_2$39 = {
934
936
  key: 0,
935
937
  class: "flex justify-center mb-2"
936
938
  };
937
- const _hoisted_3$40 = { class: "flex flex-wrap gap-4 text-sm" };
938
- const _hoisted_4$36 = { class: "flex justify-center mb-6" };
939
- const _hoisted_5$28 = ["src"];
940
- const _hoisted_6$23 = { class: "min-h-screen bg-base-100 flex flex-col" };
941
- 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({
942
944
  __name: "Auth",
943
945
  props: {
944
946
  logoSrc: {},
945
- backLinks: {}
947
+ backLinks: {},
948
+ signupRequirements: {}
946
949
  },
947
950
  setup(__props) {
948
951
  const props = __props;
952
+ if (props.signupRequirements !== void 0) provide(SIGNUP_REQUIREMENTS_KEY, props.signupRequirements);
949
953
  const route = useRoute();
950
954
  const imageLoadFailed = ref(false);
951
955
  const backLinks = computed(() => {
@@ -956,8 +960,8 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
956
960
  });
957
961
  const hasBackLinks = computed(() => backLinks.value.length > 0);
958
962
  return (_ctx, _cache) => {
959
- return openBlock(), createElementBlock("div", _hoisted_1$48, [
960
- 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) => {
961
965
  return openBlock(), createBlock(AppLink_default, {
962
966
  key: i,
963
967
  to: link.to,
@@ -967,7 +971,7 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
967
971
  _: 2
968
972
  }, 1032, ["to"]);
969
973
  }), 128))])])) : createCommentVNode("v-if", true),
970
- 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, {
971
975
  key: 0,
972
976
  size: "md"
973
977
  })) : (openBlock(), createElementBlock("img", {
@@ -976,22 +980,22 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
976
980
  alt: "logo",
977
981
  class: "h-24",
978
982
  onError: _cache[0] || (_cache[0] = ($event) => imageLoadFailed.value = true)
979
- }, null, 40, _hoisted_5$28))])]),
980
- createElementVNode("div", _hoisted_6$23, [createVNode(unref(RouterView))])
983
+ }, null, 40, _hoisted_5$24))])]),
984
+ createElementVNode("div", _hoisted_6$19, [createVNode(unref(RouterView))])
981
985
  ]);
982
986
  };
983
987
  }
984
988
  });
985
- var Auth_default = _sfc_main$52;
989
+ var Auth_default = _sfc_main$48;
986
990
 
987
991
  //#endregion
988
992
  //#region src/layouts/Default.vue
989
- const _hoisted_1$47 = { class: "m-4" };
990
- const _sfc_main$51 = /* @__PURE__ */ defineComponent({
993
+ const _hoisted_1$43 = { class: "m-4" };
994
+ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
991
995
  __name: "Default",
992
996
  setup(__props) {
993
997
  return (_ctx, _cache) => {
994
- return openBlock(), createElementBlock("div", _hoisted_1$47, [createVNode(AppLink_default, {
998
+ return openBlock(), createElementBlock("div", _hoisted_1$43, [createVNode(AppLink_default, {
995
999
  to: "/auth/login",
996
1000
  "aria-current": "page",
997
1001
  "aria-label": "Homepage",
@@ -1003,19 +1007,19 @@ const _sfc_main$51 = /* @__PURE__ */ defineComponent({
1003
1007
  };
1004
1008
  }
1005
1009
  });
1006
- var Default_default = _sfc_main$51;
1010
+ var Default_default = _sfc_main$47;
1007
1011
 
1008
1012
  //#endregion
1009
1013
  //#region src/layouts/InApp.vue
1010
- const _hoisted_1$46 = { class: "drawer drawer-end" };
1011
- const _hoisted_2$42 = { class: "drawer h-[calc(100vh_)]" };
1012
- const _hoisted_3$39 = { class: "drawer-content flex flex-col" };
1013
- 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 = {
1014
1018
  key: 0,
1015
1019
  class: "z-20"
1016
1020
  };
1017
- const _hoisted_5$27 = { class: "flex-1 px-3 sm:px-4 md:px-6 pb-4" };
1018
- 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({
1019
1023
  __name: "InApp",
1020
1024
  props: {
1021
1025
  logoSrc: {},
@@ -1078,16 +1082,16 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
1078
1082
  return route.meta.currentTab || "";
1079
1083
  });
1080
1084
  return (_ctx, _cache) => {
1081
- 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, [
1082
1086
  createVNode(RightSidebar_default),
1083
1087
  createCommentVNode(" Left sidebar drawer "),
1084
- createElementVNode("div", _hoisted_2$42, [
1088
+ createElementVNode("div", _hoisted_2$38, [
1085
1089
  _cache[0] || (_cache[0] = createElementVNode("input", {
1086
1090
  id: "drawer",
1087
1091
  type: "checkbox",
1088
1092
  class: "drawer-toggle"
1089
1093
  }, null, -1)),
1090
- createElementVNode("div", _hoisted_3$39, [
1094
+ createElementVNode("div", _hoisted_3$35, [
1091
1095
  createCommentVNode(" Fixed navbar at top with breadcrumbs "),
1092
1096
  createVNode(Navbar_default, {
1093
1097
  class: "sticky top-0 z-30",
@@ -1096,12 +1100,12 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
1096
1100
  }, null, 8, ["breadcrumbs", "logoSrc"]),
1097
1101
  createVNode(UnverifiedEmailBanner_default),
1098
1102
  createCommentVNode(" Unified navigation with AppHeader (only shown when needed) "),
1099
- shouldShowAppHeader.value ? (openBlock(), createElementBlock("div", _hoisted_4$35, [createVNode(AppHeader_default, {
1103
+ shouldShowAppHeader.value ? (openBlock(), createElementBlock("div", _hoisted_4$31, [createVNode(AppHeader_default, {
1100
1104
  tabs: currentSectionTabs.value,
1101
1105
  "active-tab": currentActiveTab.value
1102
1106
  }, null, 8, ["tabs", "active-tab"])])) : createCommentVNode("v-if", true),
1103
1107
  createCommentVNode(" Main content "),
1104
- createElementVNode("div", _hoisted_5$27, [createVNode(unref(RouterView))])
1108
+ createElementVNode("div", _hoisted_5$23, [createVNode(unref(RouterView))])
1105
1109
  ]),
1106
1110
  createCommentVNode(" Left sidebar "),
1107
1111
  createVNode(Sidebar_default, { logoSrc: __props.logoSrc }, createSlots({ _: 2 }, [_ctx.$slots.sidebarLogo ? {
@@ -1114,14 +1118,14 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
1114
1118
  };
1115
1119
  }
1116
1120
  });
1117
- var InApp_default = _sfc_main$50;
1121
+ var InApp_default = _sfc_main$46;
1118
1122
 
1119
1123
  //#endregion
1120
1124
  //#region src/components/ui/FieldDisplay.vue
1121
- const _hoisted_1$45 = { class: "label" };
1122
- const _hoisted_2$41 = { class: "label-text font-medium" };
1123
- const _hoisted_3$38 = { class: "text-base-content" };
1124
- 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({
1125
1129
  __name: "FieldDisplay",
1126
1130
  props: {
1127
1131
  label: {},
@@ -1130,61 +1134,61 @@ const _sfc_main$49 = /* @__PURE__ */ defineComponent({
1130
1134
  },
1131
1135
  setup(__props) {
1132
1136
  return (_ctx, _cache) => {
1133
- 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);
1134
1138
  };
1135
1139
  }
1136
1140
  });
1137
- var FieldDisplay_default = _sfc_main$49;
1141
+ var FieldDisplay_default = _sfc_main$45;
1138
1142
 
1139
1143
  //#endregion
1140
1144
  //#region src/components/ui/FieldGroup.vue
1141
- const _hoisted_1$44 = { class: "card bg-base-100 shadow-sm" };
1142
- const _hoisted_2$40 = { class: "card-body" };
1143
- const _hoisted_3$37 = { class: "card-title text-lg mb-4" };
1144
- const _hoisted_4$34 = { class: "grid grid-cols-1 md:grid-cols-2 gap-4" };
1145
- 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({
1146
1150
  __name: "FieldGroup",
1147
1151
  props: { title: {} },
1148
1152
  setup(__props) {
1149
1153
  return (_ctx, _cache) => {
1150
- 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")])])]);
1151
1155
  };
1152
1156
  }
1153
1157
  });
1154
- var FieldGroup_default = _sfc_main$48;
1158
+ var FieldGroup_default = _sfc_main$44;
1155
1159
 
1156
1160
  //#endregion
1157
1161
  //#region src/components/ui/FileManager.vue
1158
- const _hoisted_1$43 = { class: "w-full px-2 sm:px-0" };
1159
- const _hoisted_2$39 = { class: "mb-4" };
1160
- const _hoisted_3$36 = { class: "flex flex-col sm:flex-row sm:justify-between sm:items-center gap-3 mb-3" };
1161
- const _hoisted_4$33 = { class: "text-lg font-medium" };
1162
- const _hoisted_5$26 = { class: "flex gap-2 sm:hidden" };
1163
- const _hoisted_6$22 = ["disabled"];
1164
- const _hoisted_7$18 = { class: "breadcrumbs text-xs sm:text-sm overflow-x-auto -mx-2 px-2" };
1165
- const _hoisted_8$18 = { class: "min-w-max" };
1166
- const _hoisted_9$17 = ["onClick", "title"];
1167
- const _hoisted_10$14 = ["accept"];
1168
- const _hoisted_11$13 = { class: "flex flex-col items-center justify-center py-4" };
1169
- const _hoisted_12$12 = { class: "text-lg font-medium" };
1170
- const _hoisted_13$10 = { class: "text-sm text-base-content/70 mt-1" };
1171
- 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 = {
1172
1176
  key: 0,
1173
1177
  class: "text-xs text-base-content/50 mt-3"
1174
1178
  };
1175
- const _hoisted_15$8 = {
1179
+ const _hoisted_15$5 = {
1176
1180
  key: 0,
1177
1181
  class: "mb-4"
1178
1182
  };
1179
- const _hoisted_16$8 = { class: "space-y-3" };
1180
- const _hoisted_17$7 = { class: "flex justify-between items-start mb-2" };
1181
- const _hoisted_18$5 = { class: "flex-1" };
1182
- const _hoisted_19$5 = { class: "flex items-center gap-2" };
1183
- 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 = {
1184
1188
  key: 0,
1185
1189
  class: "loading loading-spinner loading-xs text-primary"
1186
1190
  };
1187
- const _hoisted_21$4 = {
1191
+ const _hoisted_21$3 = {
1188
1192
  key: 1,
1189
1193
  xmlns: "http://www.w3.org/2000/svg",
1190
1194
  class: "h-4 w-4 text-success",
@@ -1192,7 +1196,7 @@ const _hoisted_21$4 = {
1192
1196
  viewBox: "0 0 24 24",
1193
1197
  stroke: "currentColor"
1194
1198
  };
1195
- const _hoisted_22$4 = {
1199
+ const _hoisted_22$3 = {
1196
1200
  key: 2,
1197
1201
  xmlns: "http://www.w3.org/2000/svg",
1198
1202
  class: "h-4 w-4 text-error",
@@ -1276,7 +1280,7 @@ const _hoisted_68 = { class: "flex items-center gap-2" };
1276
1280
  const _hoisted_69 = { class: "font-medium" };
1277
1281
  const _hoisted_70 = { class: "text-base-content/70" };
1278
1282
  const DEFAULT_MAX_FILE_SIZE = 50 * 1024 * 1024;
1279
- const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1283
+ const _sfc_main$43 = /* @__PURE__ */ defineComponent({
1280
1284
  __name: "FileManager",
1281
1285
  props: {
1282
1286
  recordId: {},
@@ -1648,14 +1652,14 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1648
1652
  return "badge-neutral";
1649
1653
  };
1650
1654
  return (_ctx, _cache) => {
1651
- return openBlock(), createElementBlock("div", _hoisted_1$43, [
1655
+ return openBlock(), createElementBlock("div", _hoisted_1$39, [
1652
1656
  createCommentVNode(" File Manager Header "),
1653
- createElementVNode("div", _hoisted_2$39, [
1657
+ createElementVNode("div", _hoisted_2$35, [
1654
1658
  createCommentVNode(" Mobile: Stacked layout "),
1655
- createElementVNode("div", _hoisted_3$36, [
1656
- 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),
1657
1661
  createCommentVNode(" Mobile: Action buttons "),
1658
- createElementVNode("div", _hoisted_5$26, [createElementVNode("button", {
1662
+ createElementVNode("div", _hoisted_5$22, [createElementVNode("button", {
1659
1663
  class: "btn btn-sm btn-primary flex-1",
1660
1664
  onClick: openFileSelector,
1661
1665
  disabled: isUploading.value
@@ -1670,7 +1674,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1670
1674
  "stroke-linejoin": "round",
1671
1675
  "stroke-width": "2",
1672
1676
  d: "M12 4v16m8-8H4"
1673
- })], -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", {
1674
1678
  class: "btn btn-sm btn-info flex-1",
1675
1679
  onClick: createFolder
1676
1680
  }, [..._cache[6] || (_cache[6] = [createElementVNode("svg", {
@@ -1692,7 +1696,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1692
1696
  }, "New Folder")])
1693
1697
  ]),
1694
1698
  createCommentVNode(" Breadcrumb Navigation - Mobile optimized "),
1695
- 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", {
1696
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 }]),
1697
1701
  onClick: _cache[0] || (_cache[0] = ($event) => navigateToFolder(null))
1698
1702
  }, [..._cache[7] || (_cache[7] = [createElementVNode("svg", {
@@ -1711,7 +1715,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1711
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 }]),
1712
1716
  onClick: ($event) => navigateToFolder(folder.id),
1713
1717
  title: folder.name
1714
- }, toDisplayString(folder.name), 11, _hoisted_9$17)]);
1718
+ }, toDisplayString(folder.name), 11, _hoisted_9$14)]);
1715
1719
  }), 128))])])
1716
1720
  ]),
1717
1721
  createElementVNode("input", {
@@ -1722,7 +1726,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1722
1726
  onChange: handleFileChange,
1723
1727
  multiple: "",
1724
1728
  accept: config.value.acceptedTypes
1725
- }, null, 40, _hoisted_10$14),
1729
+ }, null, 40, _hoisted_10$11),
1726
1730
  createCommentVNode(" Drag & Drop Zone (hidden on mobile) "),
1727
1731
  createElementVNode("div", {
1728
1732
  class: normalizeClass(["hidden sm:block border-2 border-dashed rounded-lg p-6 text-center mb-4 transition-colors", {
@@ -1733,7 +1737,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1733
1737
  onDragleave: _cache[2] || (_cache[2] = withModifiers(($event) => isDragging.value = false, ["prevent"])),
1734
1738
  onDrop: withModifiers(handleFileDrop, ["prevent"]),
1735
1739
  onClick: openFileSelector
1736
- }, [createElementVNode("div", _hoisted_11$13, [
1740
+ }, [createElementVNode("div", _hoisted_11$10, [
1737
1741
  _cache[8] || (_cache[8] = createElementVNode("svg", {
1738
1742
  xmlns: "http://www.w3.org/2000/svg",
1739
1743
  class: "h-12 w-12 mb-2 text-primary",
@@ -1746,12 +1750,12 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1746
1750
  "stroke-width": "2",
1747
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"
1748
1752
  })], -1)),
1749
- createElementVNode("p", _hoisted_12$12, toDisplayString(config.value.dropText || "Drag and drop files here"), 1),
1750
- createElementVNode("p", _hoisted_13$10, toDisplayString(config.value.browseText || "or click to browse files"), 1),
1751
- 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)
1752
1756
  ])], 34),
1753
1757
  createCommentVNode(" Upload Queue "),
1754
- 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) => {
1755
1759
  return openBlock(), createElementBlock("div", {
1756
1760
  key: item.id,
1757
1761
  class: normalizeClass(["border border-base-200 rounded-lg p-3", {
@@ -1759,16 +1763,16 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1759
1763
  "bg-error/5 border-error/30": item.status === "error"
1760
1764
  }])
1761
1765
  }, [
1762
- createElementVNode("div", _hoisted_17$7, [
1763
- createElementVNode("div", _hoisted_18$5, [
1764
- createElementVNode("div", _hoisted_19$5, [
1766
+ createElementVNode("div", _hoisted_17$4, [
1767
+ createElementVNode("div", _hoisted_18$4, [
1768
+ createElementVNode("div", _hoisted_19$4, [
1765
1769
  createCommentVNode(" Status Icon "),
1766
- 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", {
1767
1771
  "stroke-linecap": "round",
1768
1772
  "stroke-linejoin": "round",
1769
1773
  "stroke-width": "2",
1770
1774
  d: "M5 13l4 4L19 7"
1771
- }, 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", {
1772
1776
  "stroke-linecap": "round",
1773
1777
  "stroke-linejoin": "round",
1774
1778
  "stroke-width": "2",
@@ -1991,47 +1995,47 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
1991
1995
  };
1992
1996
  }
1993
1997
  });
1994
- var FileManager_default = _sfc_main$47;
1998
+ var FileManager_default = _sfc_main$43;
1995
1999
 
1996
2000
  //#endregion
1997
2001
  //#region src/components/ui/KeyValueEditor.vue
1998
- const _hoisted_1$42 = { class: "key-value-editor col-span-full" };
1999
- const _hoisted_2$38 = {
2002
+ const _hoisted_1$38 = { class: "key-value-editor col-span-full" };
2003
+ const _hoisted_2$34 = {
2000
2004
  key: 0,
2001
2005
  class: "mb-2"
2002
2006
  };
2003
- const _hoisted_3$35 = {
2007
+ const _hoisted_3$31 = {
2004
2008
  key: 0,
2005
2009
  class: "label p-0"
2006
2010
  };
2007
- const _hoisted_4$32 = { class: "label-text" };
2008
- const _hoisted_5$25 = {
2011
+ const _hoisted_4$28 = { class: "label-text" };
2012
+ const _hoisted_5$21 = {
2009
2013
  key: 1,
2010
2014
  class: "text-xs text-base-content/60 mt-1"
2011
2015
  };
2012
- const _hoisted_6$21 = {
2016
+ const _hoisted_6$17 = {
2013
2017
  key: 1,
2014
2018
  class: "text-error text-sm mb-2"
2015
2019
  };
2016
- const _hoisted_7$17 = { class: "space-y-3" };
2017
- const _hoisted_8$17 = { class: "flex-1" };
2018
- 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 = [
2019
2023
  "onUpdate:modelValue",
2020
2024
  "placeholder",
2021
2025
  "onInput"
2022
2026
  ];
2023
- const _hoisted_10$13 = { class: "flex-1" };
2024
- const _hoisted_11$12 = [
2027
+ const _hoisted_10$10 = { class: "flex-1" };
2028
+ const _hoisted_11$9 = [
2025
2029
  "onUpdate:modelValue",
2026
2030
  "placeholder",
2027
2031
  "onInput"
2028
2032
  ];
2029
- const _hoisted_12$11 = ["onClick", "disabled"];
2030
- const _hoisted_13$9 = {
2033
+ const _hoisted_12$8 = ["onClick", "disabled"];
2034
+ const _hoisted_13$6 = {
2031
2035
  key: 2,
2032
2036
  class: "text-center py-4 text-base-content/60"
2033
2037
  };
2034
- const _sfc_main$46 = /* @__PURE__ */ defineComponent({
2038
+ const _sfc_main$42 = /* @__PURE__ */ defineComponent({
2035
2039
  __name: "KeyValueEditor",
2036
2040
  props: {
2037
2041
  modelValue: { default: null },
@@ -2110,30 +2114,30 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
2110
2114
  pair[field] = value;
2111
2115
  };
2112
2116
  return (_ctx, _cache) => {
2113
- return openBlock(), createElementBlock("div", _hoisted_1$42, [
2114
- __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),
2115
- __props.error ? (openBlock(), createElementBlock("div", _hoisted_6$21, toDisplayString(__props.error), 1)) : createCommentVNode("v-if", true),
2116
- 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, [
2117
2121
  createCommentVNode(" Key-Value Pairs List "),
2118
2122
  (openBlock(true), createElementBlock(Fragment, null, renderList(pairs.value, (pair, index) => {
2119
2123
  return openBlock(), createElementBlock("div", {
2120
2124
  key: index,
2121
2125
  class: "flex gap-2 items-start"
2122
2126
  }, [
2123
- createElementVNode("div", _hoisted_8$17, [withDirectives(createElementVNode("input", {
2127
+ createElementVNode("div", _hoisted_8$14, [withDirectives(createElementVNode("input", {
2124
2128
  "onUpdate:modelValue": ($event) => pair.key = $event,
2125
2129
  type: "text",
2126
2130
  placeholder: __props.keyPlaceholder,
2127
2131
  class: "input input-bordered w-full",
2128
2132
  onInput: ($event) => updatePair(index, "key", $event.target.value)
2129
- }, null, 40, _hoisted_9$16), [[vModelText, pair.key]])]),
2130
- 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", {
2131
2135
  "onUpdate:modelValue": ($event) => pair.value = $event,
2132
2136
  type: "text",
2133
2137
  placeholder: __props.valuePlaceholder,
2134
2138
  class: "input input-bordered w-full",
2135
2139
  onInput: ($event) => updatePair(index, "value", $event.target.value)
2136
- }, null, 40, _hoisted_11$12), [[vModelText, pair.value]])]),
2140
+ }, null, 40, _hoisted_11$9), [[vModelText, pair.value]])]),
2137
2141
  createElementVNode("button", {
2138
2142
  type: "button",
2139
2143
  class: "btn btn-error btn-sm",
@@ -2150,7 +2154,7 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
2150
2154
  "stroke-linejoin": "round",
2151
2155
  "stroke-width": "2",
2152
2156
  d: "M6 18L18 6M6 6l12 12"
2153
- })], -1)])], 8, _hoisted_12$11)
2157
+ })], -1)])], 8, _hoisted_12$8)
2154
2158
  ]);
2155
2159
  }), 128)),
2156
2160
  createCommentVNode(" Add New Pair Button "),
@@ -2172,498 +2176,12 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
2172
2176
  })], -1), createTextVNode(" Add Key-Value Pair ", -1)])])
2173
2177
  ]),
2174
2178
  createCommentVNode(" Empty State "),
2175
- 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)
2176
- ]);
2177
- };
2178
- }
2179
- });
2180
- var KeyValueEditor_default = /* @__PURE__ */ export_helper_default(_sfc_main$46, [["__scopeId", "data-v-010818ef"]]);
2181
-
2182
- //#endregion
2183
- //#region src/components/ui/LoadingErrorStates.vue
2184
- const _hoisted_1$41 = {
2185
- key: 0,
2186
- class: "text-center py-8"
2187
- };
2188
- const _hoisted_2$37 = { class: "text-base-content/70 mt-2" };
2189
- const _hoisted_3$34 = { class: "text-center py-8" };
2190
- const _hoisted_4$31 = { class: "alert alert-error max-w-md mx-auto" };
2191
- const _hoisted_5$24 = { class: "font-bold" };
2192
- const _hoisted_6$20 = { class: "text-sm" };
2193
- const _sfc_main$45 = /* @__PURE__ */ defineComponent({
2194
- __name: "LoadingErrorStates",
2195
- props: {
2196
- isLoading: { type: Boolean },
2197
- error: {},
2198
- config: {}
2199
- },
2200
- emits: ["retry"],
2201
- setup(__props, { emit: __emit }) {
2202
- const props = __props;
2203
- const emit = __emit;
2204
- const config = computed(() => props.config || {});
2205
- function getErrorMessage(error) {
2206
- if (config.value.customErrorMessage) return config.value.customErrorMessage(error);
2207
- return error.message || "An unexpected error occurred";
2208
- }
2209
- function handleRetry() {
2210
- emit("retry");
2211
- }
2212
- return (_ctx, _cache) => {
2213
- 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", {
2214
- error: __props.error,
2215
- retry: handleRetry
2216
- }, () => [createElementVNode("div", _hoisted_4$31, [_cache[1] || (_cache[1] = createElementVNode("svg", {
2217
- xmlns: "http://www.w3.org/2000/svg",
2218
- class: "stroke-current shrink-0 h-6 w-6",
2219
- fill: "none",
2220
- viewBox: "0 0 24 24"
2221
- }, [createElementVNode("path", {
2222
- "stroke-linecap": "round",
2223
- "stroke-linejoin": "round",
2224
- "stroke-width": "2",
2225
- d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
2226
- })], -1)), createElementVNode("div", null, [
2227
- createElementVNode("h3", _hoisted_5$24, toDisplayString(config.value.errorTitle || "Error"), 1),
2228
- createElementVNode("div", _hoisted_6$20, toDisplayString(getErrorMessage(__props.error)), 1),
2229
- config.value.showRetry !== false ? (openBlock(), createElementBlock("button", {
2230
- key: 0,
2231
- class: "btn btn-sm btn-outline mt-2",
2232
- onClick: handleRetry
2233
- }, toDisplayString(config.value.retryText || "Try Again"), 1)) : createCommentVNode("v-if", true)
2234
- ])])])])], 2112)) : createCommentVNode("v-if", true)], 2112);
2235
- };
2236
- }
2237
- });
2238
- var LoadingErrorStates_default = _sfc_main$45;
2239
-
2240
- //#endregion
2241
- //#region src/components/ui/RecordChangesSummary.vue
2242
- const _hoisted_1$40 = {
2243
- key: 0,
2244
- class: "card bg-base-100 shadow-sm mb-4"
2245
- };
2246
- const _hoisted_2$36 = { class: "card-body p-3 sm:p-5" };
2247
- const _hoisted_3$33 = { class: "flex justify-between items-center" };
2248
- const _hoisted_4$30 = { class: "card-title text-base sm:text-lg" };
2249
- const _hoisted_5$23 = { key: 0 };
2250
- const _hoisted_6$19 = { class: "hidden md:block overflow-x-auto mt-4" };
2251
- const _hoisted_7$16 = { class: "table table-zebra table-sm" };
2252
- const _hoisted_8$16 = { class: "font-mono text-xs" };
2253
- const _hoisted_9$15 = { class: "md:hidden space-y-4 mt-4" };
2254
- const _hoisted_10$12 = { class: "mb-2" };
2255
- const _hoisted_11$11 = { class: "font-mono text-xs font-bold" };
2256
- const _hoisted_12$10 = { class: "grid grid-cols-2 gap-2" };
2257
- const _hoisted_13$8 = { class: "text-xs text-base-content/70 mb-1" };
2258
- const _hoisted_14$8 = { class: "text-sm break-words" };
2259
- const _hoisted_15$7 = { class: "text-xs text-base-content/70 mb-1" };
2260
- const _hoisted_16$7 = { class: "text-sm break-words" };
2261
- const _hoisted_17$6 = {
2262
- key: 1,
2263
- class: "mt-2 text-sm text-base-content/70"
2264
- };
2265
- const _sfc_main$44 = /* @__PURE__ */ defineComponent({
2266
- __name: "RecordChangesSummary",
2267
- props: {
2268
- changedFields: {},
2269
- config: {}
2270
- },
2271
- setup(__props) {
2272
- const props = __props;
2273
- const config = computed(() => props.config || {});
2274
- const showChanges = ref(false);
2275
- function defaultFieldNameFormatter(path) {
2276
- if (config.value.customFieldLabels?.[path]) return config.value.customFieldLabels[path];
2277
- return path.split(".").map((segment) => segment.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase()).trim()).join(" → ");
2278
- }
2279
- function formatFieldName(path) {
2280
- if (config.value.fieldNameFormatter) return config.value.fieldNameFormatter(path);
2281
- return defaultFieldNameFormatter(path);
2282
- }
2283
- function defaultValueFormatter(value) {
2284
- if (value === null || value === void 0) return "N/A";
2285
- if (typeof value === "object") {
2286
- if (Array.isArray(value)) return value.length === 0 ? "Empty array" : `Array (${value.length} items)`;
2287
- return JSON.stringify(value, null, 2);
2288
- }
2289
- if (typeof value === "boolean") return value ? "Yes" : "No";
2290
- if (typeof value === "number") {
2291
- if (value > 0 && (value % 1 === 0 || value.toString().includes("."))) return value.toLocaleString("en-US", {
2292
- minimumFractionDigits: 2,
2293
- maximumFractionDigits: 2
2294
- });
2295
- return value.toString();
2296
- }
2297
- return String(value);
2298
- }
2299
- function formatValue(value, path) {
2300
- if (config.value.valueFormatter) return config.value.valueFormatter(value, path || "");
2301
- return defaultValueFormatter(value);
2302
- }
2303
- return (_ctx, _cache) => {
2304
- 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", {
2305
- onClick: _cache[0] || (_cache[0] = ($event) => showChanges.value = !showChanges.value),
2306
- class: "btn btn-sm btn-info"
2307
- }, toDisplayString(showChanges.value ? config.value.hideText || "Hide Changes" : config.value.showText || "Show Changes"), 1)]), showChanges.value ? (openBlock(), createElementBlock("div", _hoisted_5$23, [
2308
- createCommentVNode(" Desktop view - table format "),
2309
- createElementVNode("div", _hoisted_6$19, [createElementVNode("table", _hoisted_7$16, [createElementVNode("thead", null, [createElementVNode("tr", null, [
2310
- createElementVNode("th", null, toDisplayString(config.value.fieldColumnHeader || "Field"), 1),
2311
- createElementVNode("th", null, toDisplayString(config.value.previousColumnHeader || "Previous Value"), 1),
2312
- createElementVNode("th", null, toDisplayString(config.value.newColumnHeader || "New Value"), 1)
2313
- ])]), createElementVNode("tbody", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.changedFields, (change, index) => {
2314
- return openBlock(), createElementBlock("tr", { key: index }, [
2315
- createElementVNode("td", _hoisted_8$16, toDisplayString(formatFieldName(change.path)), 1),
2316
- createElementVNode("td", null, toDisplayString(formatValue(change.oldValue)), 1),
2317
- createElementVNode("td", null, toDisplayString(formatValue(change.newValue)), 1)
2318
- ]);
2319
- }), 128))])])]),
2320
- createCommentVNode(" Mobile view - card format "),
2321
- createElementVNode("div", _hoisted_9$15, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.changedFields, (change, index) => {
2322
- return openBlock(), createElementBlock("div", {
2323
- key: index,
2324
- class: "border border-base-300 rounded-lg p-3"
2325
- }, [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)])])]);
2326
- }), 128))])
2327
- ])) : (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);
2328
- };
2329
- }
2330
- });
2331
- var RecordChangesSummary_default = _sfc_main$44;
2332
-
2333
- //#endregion
2334
- //#region src/components/ui/RecordVersionList.vue
2335
- const _hoisted_1$39 = { class: "space-y-4" };
2336
- const _hoisted_2$35 = {
2337
- key: 0,
2338
- class: "space-y-4"
2339
- };
2340
- const _hoisted_3$32 = { class: "alert alert-error shadow-lg text-sm" };
2341
- const _hoisted_4$29 = { class: "font-bold" };
2342
- const _hoisted_5$22 = { class: "text-sm" };
2343
- const _hoisted_6$18 = { class: "alert alert-info shadow-lg text-sm" };
2344
- const _hoisted_7$15 = { class: "space-y-3 max-w-4xl mx-auto" };
2345
- const _hoisted_8$15 = { class: "card-body p-4" };
2346
- const _hoisted_9$14 = { class: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2" };
2347
- const _hoisted_10$11 = { class: "font-medium text-sm" };
2348
- const _hoisted_11$10 = { class: "flex items-center gap-2 text-xs text-base-content/70" };
2349
- const _hoisted_12$9 = {
2350
- key: 0,
2351
- class: "mt-1"
2352
- };
2353
- const _hoisted_13$7 = { class: "flex gap-2" };
2354
- const _hoisted_14$7 = ["onClick"];
2355
- const _hoisted_15$6 = {
2356
- key: 0,
2357
- class: "text-center py-4"
2358
- };
2359
- const _hoisted_16$6 = {
2360
- key: 1,
2361
- class: "text-center py-4"
2362
- };
2363
- const _hoisted_17$5 = ["disabled"];
2364
- const _sfc_main$43 = /* @__PURE__ */ defineComponent({
2365
- __name: "RecordVersionList",
2366
- props: {
2367
- versions: {},
2368
- loading: { type: Boolean },
2369
- error: {},
2370
- hasNextPage: { type: Boolean },
2371
- loadingMore: { type: Boolean },
2372
- config: {},
2373
- excludeLatest: { type: Boolean }
2374
- },
2375
- emits: ["retry", "load-more"],
2376
- setup(__props) {
2377
- const props = __props;
2378
- const config = computed(() => props.config || {});
2379
- const filteredVersions = computed(() => {
2380
- if (!props.excludeLatest) return props.versions;
2381
- if (props.versions.length <= 1) return [];
2382
- return props.versions.slice(1);
2383
- });
2384
- const defaultOperationLabels = {
2385
- insert: "Created",
2386
- update: "Updated",
2387
- delete: "Deleted"
2388
- };
2389
- const defaultOperationBadgeClasses = {
2390
- insert: "badge-success",
2391
- update: "badge-warning",
2392
- delete: "badge-error"
2393
- };
2394
- /**
2395
- * Format a date string to a readable format
2396
- */
2397
- function formatDate(dateString) {
2398
- if (!dateString) return "Unknown date";
2399
- try {
2400
- const date = new Date(dateString);
2401
- return new Intl.DateTimeFormat("en-US", {
2402
- year: "numeric",
2403
- month: "short",
2404
- day: "numeric",
2405
- hour: "2-digit",
2406
- minute: "2-digit"
2407
- }).format(date);
2408
- } catch (e) {
2409
- return "Invalid date";
2410
- }
2411
- }
2412
- /**
2413
- * Format the operation type for display
2414
- */
2415
- function formatOperation(operation) {
2416
- if (!operation) return "Unknown";
2417
- return {
2418
- ...defaultOperationLabels,
2419
- ...config.value.operationLabels
2420
- }[operation] || operation;
2421
- }
2422
- /**
2423
- * Get CSS class for operation badge
2424
- */
2425
- function getOperationBadgeClass(operation) {
2426
- if (!operation) return "badge-neutral";
2427
- return {
2428
- ...defaultOperationBadgeClasses,
2429
- ...config.value.operationBadgeClasses
2430
- }[operation] || "badge-neutral";
2431
- }
2432
- return (_ctx, _cache) => {
2433
- 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) => {
2434
- return createElementVNode("div", {
2435
- key: i,
2436
- class: "card bg-base-100 shadow-xs animate-pulse"
2437
- }, [..._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)])]);
2438
- }), 64))])) : __props.error ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Error State "), createElementVNode("div", _hoisted_3$32, [
2439
- _cache[3] || (_cache[3] = createElementVNode("svg", {
2440
- xmlns: "http://www.w3.org/2000/svg",
2441
- class: "stroke-current shrink-0 h-5 w-5",
2442
- fill: "none",
2443
- viewBox: "0 0 24 24"
2444
- }, [createElementVNode("path", {
2445
- "stroke-linecap": "round",
2446
- "stroke-linejoin": "round",
2447
- "stroke-width": "2",
2448
- d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
2449
- })], -1)),
2450
- 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)]),
2451
- createElementVNode("button", {
2452
- class: "btn btn-xs",
2453
- onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("retry"))
2454
- }, toDisplayString(config.value.retryText || "Retry"), 1)
2455
- ])], 2112)) : !filteredVersions.value.length ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createCommentVNode(" No Versions "), createElementVNode("div", _hoisted_6$18, [_cache[4] || (_cache[4] = createElementVNode("svg", {
2456
- xmlns: "http://www.w3.org/2000/svg",
2457
- fill: "none",
2458
- viewBox: "0 0 24 24",
2459
- class: "stroke-current shrink-0 w-5 h-5"
2460
- }, [createElementVNode("path", {
2461
- "stroke-linecap": "round",
2462
- "stroke-linejoin": "round",
2463
- "stroke-width": "2",
2464
- d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
2465
- })], -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, [
2466
- (openBlock(true), createElementBlock(Fragment, null, renderList(filteredVersions.value, (version) => {
2467
- return openBlock(), createElementBlock("div", {
2468
- key: version.id,
2469
- class: "card bg-base-100 shadow-xs hover:shadow-md transition-shadow duration-200"
2470
- }, [createElementVNode("div", _hoisted_8$15, [createElementVNode("div", _hoisted_9$14, [createElementVNode("div", null, [
2471
- createElementVNode("h3", _hoisted_10$11, toDisplayString(config.value.versionLabelFormat ? config.value.versionLabelFormat(version) : `Version from ${formatDate(version.recorded_at)}`), 1),
2472
- 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)]),
2473
- createCommentVNode(" Custom metadata slot "),
2474
- _ctx.$slots.versionMetadata ? (openBlock(), createElementBlock("div", _hoisted_12$9, [renderSlot(_ctx.$slots, "versionMetadata", { version })])) : createCommentVNode("v-if", true)
2475
- ]), createElementVNode("div", _hoisted_13$7, [createCommentVNode(" Custom actions slot "), renderSlot(_ctx.$slots, "versionActions", { version }, () => [createCommentVNode(" Default view action "), config.value.viewAction ? (openBlock(), createElementBlock("button", {
2476
- key: 0,
2477
- class: "btn btn-primary btn-xs",
2478
- onClick: ($event) => config.value.viewAction(version)
2479
- }, toDisplayString(config.value.viewActionText || "View Version"), 9, _hoisted_14$7)) : createCommentVNode("v-if", true)])])])])]);
2480
- }), 128)),
2481
- createCommentVNode(" Pagination "),
2482
- __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),
2483
- __props.hasNextPage ? (openBlock(), createElementBlock("div", _hoisted_16$6, [createElementVNode("button", {
2484
- class: "btn btn-sm btn-neutral",
2485
- onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("load-more")),
2486
- disabled: __props.loadingMore
2487
- }, toDisplayString(config.value.loadMoreText || "Load More"), 9, _hoisted_17$5)])) : createCommentVNode("v-if", true)
2488
- ])], 2112))]);
2489
- };
2490
- }
2491
- });
2492
- var RecordVersionList_default = _sfc_main$43;
2493
-
2494
- //#endregion
2495
- //#region src/components/ui/RecordVersionViewer.vue
2496
- const _hoisted_1$38 = { class: "sticky top-0 z-10 bg-base-100 shadow-sm" };
2497
- const _hoisted_2$34 = { class: "flex justify-between items-center p-4 border-b" };
2498
- const _hoisted_3$31 = { class: "text-lg font-semibold" };
2499
- const _hoisted_4$28 = {
2500
- key: 0,
2501
- class: "text-sm text-base-content/70"
2502
- };
2503
- const _hoisted_5$21 = { class: "flex gap-2" };
2504
- const _hoisted_6$17 = ["disabled"];
2505
- const _hoisted_7$14 = {
2506
- key: 0,
2507
- class: "loading loading-spinner loading-sm mr-1"
2508
- };
2509
- const _hoisted_8$14 = {
2510
- key: 0,
2511
- class: "max-w-4xl mx-auto p-2 md:p-4 bg-base-200 rounded-lg shadow-sm"
2512
- };
2513
- const _hoisted_9$13 = {
2514
- key: 0,
2515
- class: "mb-4"
2516
- };
2517
- const _hoisted_10$10 = {
2518
- key: 1,
2519
- class: "mb-4"
2520
- };
2521
- const _hoisted_11$9 = { class: "alert alert-warning" };
2522
- const _hoisted_12$8 = { class: "font-bold" };
2523
- const _hoisted_13$6 = { class: "text-sm" };
2524
- const _hoisted_14$6 = { class: "mb-4 p-3 bg-base-100 rounded-lg shadow-sm" };
2525
- const _hoisted_15$5 = { class: "font-semibold mb-2" };
2526
- const _hoisted_16$5 = { class: "grid grid-cols-1 md:grid-cols-2 gap-4 text-sm" };
2527
- const _hoisted_17$4 = { class: "text-base-content/70" };
2528
- const _hoisted_18$4 = { class: "ml-2" };
2529
- const _hoisted_19$4 = { class: "space-y-4" };
2530
- const _hoisted_20$4 = { class: "p-4 bg-base-100 rounded-lg shadow-sm" };
2531
- const _hoisted_21$3 = { class: "font-semibold mb-2" };
2532
- const _hoisted_22$3 = { class: "text-xs bg-base-200 p-3 rounded overflow-auto max-h-96" };
2533
- const _sfc_main$42 = /* @__PURE__ */ defineComponent({
2534
- __name: "RecordVersionViewer",
2535
- props: {
2536
- version: {},
2537
- recordData: {},
2538
- changedFields: { default: () => [] },
2539
- isLoading: { type: Boolean },
2540
- isRestoring: { type: Boolean },
2541
- error: {},
2542
- config: {}
2543
- },
2544
- setup(__props) {
2545
- const props = __props;
2546
- const config = computed(() => props.config || {});
2547
- const shouldShowChanges = computed(() => {
2548
- return props.changedFields && props.changedFields.length > 0 && props.version?.operation === "update";
2549
- });
2550
- const filteredRecordData = computed(() => {
2551
- if (!props.recordData) return {};
2552
- const excludeFields = new Set([
2553
- "id",
2554
- "created_at",
2555
- "updated_at",
2556
- "created_by",
2557
- "updated_by",
2558
- "__typename",
2559
- ...config.value.excludeFields || []
2560
- ]);
2561
- return Object.entries(props.recordData).filter(([key]) => !excludeFields.has(key)).reduce((acc, [key, value]) => {
2562
- acc[key] = value;
2563
- return acc;
2564
- }, {});
2565
- });
2566
- function formatVersionInfo(version) {
2567
- const date = new Date(version.recorded_at).toLocaleString();
2568
- return `${version.operation.charAt(0).toUpperCase() + version.operation.slice(1)} on ${date} by ${version.auth_username || "Unknown"}`;
2569
- }
2570
- function formatFieldName(field) {
2571
- if (config.value.formatFieldName) return config.value.formatFieldName(field);
2572
- return field.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase()).trim();
2573
- }
2574
- function formatValue(value) {
2575
- if (config.value.formatValue) return config.value.formatValue(value);
2576
- if (value === null || value === void 0) return "N/A";
2577
- if (typeof value === "boolean") return value ? "Yes" : "No";
2578
- if (typeof value === "object") return JSON.stringify(value);
2579
- return String(value);
2580
- }
2581
- async function handleRestore() {
2582
- if (config.value.onRestore && props.version) await config.value.onRestore(props.version);
2583
- }
2584
- return (_ctx, _cache) => {
2585
- return openBlock(), createElementBlock("div", null, [
2586
- createCommentVNode(" Version Header - sticky on mobile "),
2587
- createElementVNode("div", _hoisted_1$38, [renderSlot(_ctx.$slots, "header", {
2588
- version: __props.version,
2589
- isLoading: __props.isLoading,
2590
- isRestoring: __props.isRestoring
2591
- }, () => [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, [
2592
- createCommentVNode(" Back button "),
2593
- config.value.onBack ? (openBlock(), createElementBlock("button", {
2594
- key: 0,
2595
- onClick: _cache[0] || (_cache[0] = (...args) => config.value.onBack && config.value.onBack(...args)),
2596
- class: "btn btn-ghost btn-sm"
2597
- }, [_cache[1] || (_cache[1] = createElementVNode("svg", {
2598
- xmlns: "http://www.w3.org/2000/svg",
2599
- class: "h-4 w-4 mr-1",
2600
- fill: "none",
2601
- viewBox: "0 0 24 24",
2602
- stroke: "currentColor"
2603
- }, [createElementVNode("path", {
2604
- "stroke-linecap": "round",
2605
- "stroke-linejoin": "round",
2606
- "stroke-width": "2",
2607
- d: "M10 19l-7-7m0 0l7-7m-7 7h18"
2608
- })], -1)), createTextVNode(" " + toDisplayString(config.value.backText || "Back"), 1)])) : createCommentVNode("v-if", true),
2609
- createCommentVNode(" Restore button "),
2610
- config.value.onRestore && __props.version && __props.version.operation !== "delete" ? (openBlock(), createElementBlock("button", {
2611
- key: 1,
2612
- onClick: handleRestore,
2613
- disabled: __props.isRestoring,
2614
- class: "btn btn-primary btn-sm"
2615
- }, [__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)
2616
- ])])])]),
2617
- createCommentVNode(" Loading and Error States "),
2618
- createVNode(LoadingErrorStates_default, {
2619
- "is-loading": __props.isLoading,
2620
- error: __props.error
2621
- }, null, 8, ["is-loading", "error"]),
2622
- createCommentVNode(" Main content area "),
2623
- !__props.isLoading && !__props.error && __props.recordData ? (openBlock(), createElementBlock("div", _hoisted_8$14, [
2624
- createCommentVNode(" Changes Summary - Only show for update operations "),
2625
- shouldShowChanges.value ? (openBlock(), createElementBlock("div", _hoisted_9$13, [renderSlot(_ctx.$slots, "changes", {
2626
- changedFields: __props.changedFields,
2627
- version: __props.version
2628
- }, () => [createVNode(RecordChangesSummary_default, {
2629
- "changed-fields": __props.changedFields,
2630
- config: config.value.changesSummaryConfig
2631
- }, null, 8, ["changed-fields", "config"])])])) : createCommentVNode("v-if", true),
2632
- createCommentVNode(" Deletion Notice "),
2633
- __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", {
2634
- xmlns: "http://www.w3.org/2000/svg",
2635
- class: "stroke-current shrink-0 h-6 w-6",
2636
- fill: "none",
2637
- viewBox: "0 0 24 24"
2638
- }, [createElementVNode("path", {
2639
- "stroke-linecap": "round",
2640
- "stroke-linejoin": "round",
2641
- "stroke-width": "2",
2642
- 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"
2643
- })], -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),
2644
- createCommentVNode(" Record Information "),
2645
- createElementVNode("div", _hoisted_14$6, [renderSlot(_ctx.$slots, "record-info", {
2646
- recordData: __props.recordData,
2647
- version: __props.version
2648
- }, () => [
2649
- createCommentVNode(" Default record info display "),
2650
- createElementVNode("h3", _hoisted_15$5, toDisplayString(config.value.recordInfoTitle || "Record Information"), 1),
2651
- createElementVNode("div", _hoisted_16$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(filteredRecordData.value, (value, key) => {
2652
- return openBlock(), createElementBlock("div", { key }, [createElementVNode("strong", _hoisted_17$4, toDisplayString(formatFieldName(key)) + ":", 1), createElementVNode("span", _hoisted_18$4, toDisplayString(formatValue(value)), 1)]);
2653
- }), 128))])
2654
- ])]),
2655
- createCommentVNode(" Custom Content Area "),
2656
- createElementVNode("div", _hoisted_19$4, [renderSlot(_ctx.$slots, "content", {
2657
- recordData: __props.recordData,
2658
- version: __props.version,
2659
- changedFields: __props.changedFields
2660
- }, () => [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)])])])
2661
- ])) : 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)
2662
2180
  ]);
2663
2181
  };
2664
2182
  }
2665
2183
  });
2666
- var RecordVersionViewer_default = _sfc_main$42;
2184
+ var KeyValueEditor_default = /* @__PURE__ */ export_helper_default(_sfc_main$42, [["__scopeId", "data-v-010818ef"]]);
2667
2185
 
2668
2186
  //#endregion
2669
2187
  //#region src/components/ui/SummarySection.vue
@@ -3003,6 +2521,7 @@ function createUserAuthorizedGuard(options) {
3003
2521
  const { allowedUserTypes, redirectTo = { name: "Home" }, loginPath = "/auth/login", requireAuth = true } = options;
3004
2522
  return async (to, _from, next) => {
3005
2523
  const userSession = useUserSessionStore();
2524
+ const env = useEnv();
3006
2525
  if (requireAuth) if (!!userSession.accessToken) {
3007
2526
  const { accessTokenExpired, refreshTokenExpired } = userSession.isTokenExpired();
3008
2527
  if (!accessTokenExpired) {} else if (refreshTokenExpired) {
@@ -3040,6 +2559,26 @@ function createUserAuthorizedGuard(options) {
3040
2559
  return;
3041
2560
  }
3042
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
+ }
2572
+ if (!to.path.startsWith("/auth/") && env.emailVerificationMode === "strict") {
2573
+ if (!(userSession.currentSession?.user?.email_verified ?? true)) {
2574
+ logger.debug("[UserAuthorized] Strict mode: unverified user, redirecting to verify-email");
2575
+ next({
2576
+ path: "/auth/verify-email",
2577
+ query: { returnUrl: to.fullPath }
2578
+ });
2579
+ return;
2580
+ }
2581
+ }
3043
2582
  const userType = userSession.currentSession?.user.user_type;
3044
2583
  if (!userType) {
3045
2584
  logger.warn("[UserAuthorized] No user type found, redirecting");
@@ -3160,7 +2699,7 @@ const userRoutes = [{
3160
2699
  {
3161
2700
  path: "appearance",
3162
2701
  name: "Appearance",
3163
- component: () => import("./Appearance-C3WguxT-.js"),
2702
+ component: () => import("./Appearance-D5pwxuf4.js"),
3164
2703
  meta: {
3165
2704
  title: "Appearance",
3166
2705
  description: "Appearance page for Category 5 App"
@@ -3169,7 +2708,7 @@ const userRoutes = [{
3169
2708
  {
3170
2709
  path: "profile",
3171
2710
  name: "Profile",
3172
- component: () => import("./UserProfilePage-cTrZuwOT.js"),
2711
+ component: () => import("./UserProfilePage-CVTORtSx.js"),
3173
2712
  meta: {
3174
2713
  title: "Profile",
3175
2714
  description: "Profile page for Category 5 App"
@@ -3178,7 +2717,7 @@ const userRoutes = [{
3178
2717
  {
3179
2718
  path: "password",
3180
2719
  name: "Password",
3181
- component: () => import("./ChangePasswordPage-BuVNYC_G.js"),
2720
+ component: () => import("./ChangePasswordPage-CpDPmEml.js"),
3182
2721
  meta: {
3183
2722
  title: "Password",
3184
2723
  description: "Password page for Category 5 App"
@@ -3262,7 +2801,7 @@ const teamMemberRoutes = [
3262
2801
  {
3263
2802
  path: teamMemberPaths.list.path,
3264
2803
  name: teamMemberPaths.list.name,
3265
- component: () => import("./TeamMemberList-Dfi2iKOH.js"),
2804
+ component: () => import("./TeamMemberList-1mxUGCNa.js"),
3266
2805
  beforeEnter: [userAuthenticated],
3267
2806
  meta: {
3268
2807
  title: "Team Members",
@@ -3272,7 +2811,7 @@ const teamMemberRoutes = [
3272
2811
  {
3273
2812
  path: teamMemberPaths.create.path,
3274
2813
  name: teamMemberPaths.create.name,
3275
- component: () => import("./CreateTeamMemberForm-D0xqR9me.js"),
2814
+ component: () => import("./CreateTeamMemberForm-Chrw1y00.js"),
3276
2815
  beforeEnter: [userAuthenticated],
3277
2816
  meta: {
3278
2817
  title: "Create Team Member",
@@ -3281,7 +2820,7 @@ const teamMemberRoutes = [
3281
2820
  },
3282
2821
  {
3283
2822
  path: teamMemberPaths.view.path,
3284
- component: () => import("./TeamMemberParent-DXcumR-Q.js"),
2823
+ component: () => import("./TeamMemberParent-DzeBIElY.js"),
3285
2824
  beforeEnter: [userAuthenticated],
3286
2825
  meta: { sectionTabs: [{
3287
2826
  id: "view",
@@ -3295,7 +2834,7 @@ const teamMemberRoutes = [
3295
2834
  children: [{
3296
2835
  path: "",
3297
2836
  name: teamMemberPaths.view.name,
3298
- component: () => import("./ViewTeamMember-CRb2oBHG.js"),
2837
+ component: () => import("./ViewTeamMember-L4v3gCIn.js"),
3299
2838
  meta: {
3300
2839
  title: "View Team Member",
3301
2840
  description: "View team member details",
@@ -3304,7 +2843,7 @@ const teamMemberRoutes = [
3304
2843
  }, {
3305
2844
  path: teamMemberPaths.edit.path,
3306
2845
  name: teamMemberPaths.edit.name,
3307
- component: () => import("./EditTeamMemberForm-CbDvTLXI.js"),
2846
+ component: () => import("./EditTeamMemberForm-OtcS8QWt.js"),
3308
2847
  meta: {
3309
2848
  title: "Edit Team Member",
3310
2849
  description: "Edit team member details",
@@ -3368,7 +2907,7 @@ const teamRoutes = [{
3368
2907
  {
3369
2908
  path: teamPaths.list.path,
3370
2909
  name: teamPaths.list.name,
3371
- component: () => import("./TeamList-CF5BQhfx.js"),
2910
+ component: () => import("./TeamList-BkPIqZ8V.js"),
3372
2911
  meta: {
3373
2912
  title: "Teams",
3374
2913
  description: "Manage teams",
@@ -3386,7 +2925,7 @@ const teamRoutes = [{
3386
2925
  {
3387
2926
  path: teamPaths.create.path,
3388
2927
  name: teamPaths.create.name,
3389
- component: () => import("./CreateTeamForm-BuMrZ169.js"),
2928
+ component: () => import("./CreateTeamForm-B4cIuYAf.js"),
3390
2929
  meta: {
3391
2930
  title: "Create Team",
3392
2931
  description: "Create new team",
@@ -3401,7 +2940,7 @@ const teamRoutes = [{
3401
2940
  },
3402
2941
  {
3403
2942
  path: teamPaths.view.path,
3404
- component: () => import("./TeamParent-DLoNn-mW.js"),
2943
+ component: () => import("./TeamParent-DJa9UZTP.js"),
3405
2944
  meta: { sectionTabs: [
3406
2945
  {
3407
2946
  id: "view",
@@ -3438,7 +2977,7 @@ const teamRoutes = [{
3438
2977
  {
3439
2978
  path: "",
3440
2979
  name: teamPaths.view.name,
3441
- component: () => import("./ViewTeam-DpjnoTwo.js"),
2980
+ component: () => import("./ViewTeam-DVfnLMhV.js"),
3442
2981
  meta: {
3443
2982
  title: "View Team",
3444
2983
  description: "View team details",
@@ -3448,7 +2987,7 @@ const teamRoutes = [{
3448
2987
  {
3449
2988
  path: teamPaths.edit.path,
3450
2989
  name: teamPaths.edit.name,
3451
- component: () => import("./EditTeamForm-BJlOKEkI.js"),
2990
+ component: () => import("./EditTeamForm-B5Tee5wL.js"),
3452
2991
  meta: {
3453
2992
  title: "Edit Team",
3454
2993
  description: "Edit team details",
@@ -3458,7 +2997,7 @@ const teamRoutes = [{
3458
2997
  {
3459
2998
  path: teamPaths.notes.path,
3460
2999
  name: teamPaths.notes.name,
3461
- component: () => import("./TeamNotesTab-Bv_HPC6f.js"),
3000
+ component: () => import("./TeamNotesTab-ClHl2nXd.js"),
3462
3001
  meta: {
3463
3002
  title: "Team Notes",
3464
3003
  description: "View and manage notes",
@@ -3468,7 +3007,7 @@ const teamRoutes = [{
3468
3007
  {
3469
3008
  path: teamPaths.attachments.path,
3470
3009
  name: teamPaths.attachments.name,
3471
- component: () => import("./TeamAttachmentsTab-BFRMbPlZ.js"),
3010
+ component: () => import("./TeamAttachmentsTab-DUtCD1Yi.js"),
3472
3011
  meta: {
3473
3012
  title: "Team Attachments",
3474
3013
  description: "View and manage attachments",
@@ -3478,7 +3017,7 @@ const teamRoutes = [{
3478
3017
  {
3479
3018
  path: teamPaths.history.path,
3480
3019
  name: teamPaths.history.name,
3481
- component: () => import("./TeamHistoryTab-CYrt5KnE.js"),
3020
+ component: () => import("./TeamHistoryTab-BsUoH4VK.js"),
3482
3021
  meta: {
3483
3022
  title: "Team History",
3484
3023
  description: "View audit trail and changes",
@@ -3488,7 +3027,7 @@ const teamRoutes = [{
3488
3027
  {
3489
3028
  path: teamPaths.members.path,
3490
3029
  name: teamPaths.members.name,
3491
- component: () => import("./TeamMembersTab-DTJxmb-M.js"),
3030
+ component: () => import("./TeamMembersTab-CBB2Yl_I.js"),
3492
3031
  meta: {
3493
3032
  title: "Team Members",
3494
3033
  description: "View and manage team members",
@@ -5014,7 +4553,7 @@ function useSavedFilters(config) {
5014
4553
  const savedFilterRoutes = [{
5015
4554
  path: "/saved-filters",
5016
4555
  name: "SavedFilters",
5017
- component: () => import("./SavedFiltersPage-CawED9Oz.js"),
4556
+ component: () => import("./SavedFiltersPage-DQt6uc8m.js"),
5018
4557
  beforeEnter: [userAuthenticated],
5019
4558
  meta: {
5020
4559
  title: "Saved Filters",
@@ -5731,7 +5270,7 @@ const customerSupportTicketRoutes = [{
5731
5270
  {
5732
5271
  path: customerSupportPaths.customer_list.path,
5733
5272
  name: customerSupportPaths.customer_list.name,
5734
- component: () => import("./CustomerSupportTicketList-B0dC7lgD.js"),
5273
+ component: () => import("./CustomerSupportTicketList-DcbrjDa9.js"),
5735
5274
  beforeEnter: (to) => customerListPresetGuard(to),
5736
5275
  meta: {
5737
5276
  title: "Tickets",
@@ -5750,7 +5289,7 @@ const customerSupportTicketRoutes = [{
5750
5289
  {
5751
5290
  path: customerSupportPaths.customer_create.path,
5752
5291
  name: customerSupportPaths.customer_create.name,
5753
- component: () => import("./CustomerCreateSupportTicketForm-C9-CLRRQ.js"),
5292
+ component: () => import("./CustomerCreateSupportTicketForm-BKperKGS.js"),
5754
5293
  meta: {
5755
5294
  title: "Create Support Ticket",
5756
5295
  description: "Create new support ticket",
@@ -5766,7 +5305,7 @@ const customerSupportTicketRoutes = [{
5766
5305
  {
5767
5306
  path: customerSupportPaths.customer_create_success.path,
5768
5307
  name: customerSupportPaths.customer_create_success.name,
5769
- component: () => import("./CustomerSupportTicketSuccess-BvuBglg8.js"),
5308
+ component: () => import("./CustomerSupportTicketSuccess-CC967u3y.js"),
5770
5309
  meta: {
5771
5310
  title: "Support Ticket Submitted",
5772
5311
  description: "Support ticket submitted successfully",
@@ -5788,7 +5327,7 @@ const customerSupportTicketRoutes = [{
5788
5327
  },
5789
5328
  {
5790
5329
  path: customerSupportPaths.customer_view.path,
5791
- component: () => import("./CustomerSupportTicketParent-D0wLnKXf.js"),
5330
+ component: () => import("./CustomerSupportTicketParent-BeNzUwuP.js"),
5792
5331
  meta: {
5793
5332
  title: "View Support Ticket",
5794
5333
  description: "View support ticket details"
@@ -5796,7 +5335,7 @@ const customerSupportTicketRoutes = [{
5796
5335
  children: [{
5797
5336
  path: "",
5798
5337
  name: customerSupportPaths.customer_view.name,
5799
- component: () => import("./CustomerSupportTicketDetailPage-D_1t2EpN.js"),
5338
+ component: () => import("./CustomerSupportTicketDetailPage-BdyaKG1v.js"),
5800
5339
  meta: {
5801
5340
  title: "View Support Ticket",
5802
5341
  description: "View support ticket details"
@@ -5873,7 +5412,7 @@ const staffSupportTicketRoutes = [{
5873
5412
  {
5874
5413
  path: staffSupportPaths.staff_list.path,
5875
5414
  name: staffSupportPaths.staff_list.name,
5876
- component: () => import("./StaffSupportTicketList-DYKysNs3.js"),
5415
+ component: () => import("./StaffSupportTicketList-CiqC05XB.js"),
5877
5416
  beforeEnter: (to) => staffListPresetGuard(to),
5878
5417
  meta: {
5879
5418
  title: "Manage Support",
@@ -5887,7 +5426,7 @@ const staffSupportTicketRoutes = [{
5887
5426
  {
5888
5427
  path: staffSupportPaths.staff_create.path,
5889
5428
  name: staffSupportPaths.staff_create.name,
5890
- component: () => import("./StaffCreateSupportTicketForm-AxprwWRv.js"),
5429
+ component: () => import("./StaffCreateSupportTicketForm-D0ZuisDk.js"),
5891
5430
  meta: {
5892
5431
  title: "Create Support Ticket",
5893
5432
  description: "Create new support ticket item",
@@ -5903,7 +5442,7 @@ const staffSupportTicketRoutes = [{
5903
5442
  {
5904
5443
  path: staffSupportPaths.staff_create_success.path,
5905
5444
  name: staffSupportPaths.staff_create_success.name,
5906
- component: () => import("./StaffSupportTicketSuccess-zWEagE4E.js"),
5445
+ component: () => import("./StaffSupportTicketSuccess-CUYnimaI.js"),
5907
5446
  meta: {
5908
5447
  title: "Support Ticket Created",
5909
5448
  description: "Support ticket created successfully",
@@ -5925,7 +5464,7 @@ const staffSupportTicketRoutes = [{
5925
5464
  },
5926
5465
  {
5927
5466
  path: staffSupportPaths.staff_edit.path,
5928
- component: () => import("./StaffSupportTicketParent-CT8oYFd6.js"),
5467
+ component: () => import("./StaffSupportTicketParent-DkV329NI.js"),
5929
5468
  meta: {
5930
5469
  title: "View Support Ticket",
5931
5470
  description: "View support ticket details"
@@ -5933,7 +5472,7 @@ const staffSupportTicketRoutes = [{
5933
5472
  children: [{
5934
5473
  path: "",
5935
5474
  name: staffSupportPaths.staff_edit.name,
5936
- component: () => import("./StaffSupportTicketDetailPage-DZZN3jmt.js"),
5475
+ component: () => import("./StaffSupportTicketDetailPage-DQdfh6H1.js"),
5937
5476
  meta: {
5938
5477
  title: "View Support Ticket",
5939
5478
  description: "View support ticket details"
@@ -8423,6 +7962,36 @@ function useSupportTicketStatus() {
8423
7962
  };
8424
7963
  }
8425
7964
 
7965
+ //#endregion
7966
+ //#region src/middleware/skipVerifyEmailIfAlreadyVerified.ts
7967
+ /**
7968
+ * Redirects away from the verify-email page when the user is already logged in and verified.
7969
+ * Use as beforeEnter on the verify-email route.
7970
+ */
7971
+ const skipVerifyEmailIfAlreadyVerified = (to, _from, next) => {
7972
+ if (useUserSessionStore().currentSession?.user?.email_verified) next(getValidReturnUrl(to, "/"));
7973
+ else next();
7974
+ };
7975
+
7976
+ //#endregion
7977
+ //#region src/slices/auth/signupConsentsGuard.ts
7978
+ /**
7979
+ * Route guard for /auth/signup-consents.
7980
+ * Redirects to signup if there is no pending signup data (e.g. direct URL, refresh).
7981
+ * Runs only when entering the route, so it does not interfere with handleDecline or
7982
+ * completeSignup when they clear data and navigate elsewhere.
7983
+ */
7984
+ const signupConsentsGuard = (to, _from, next) => {
7985
+ const { get } = useSignupPendingData();
7986
+ if (get() == null) {
7987
+ const returnUrl = to.query.returnUrl;
7988
+ next({
7989
+ path: "/auth/signup",
7990
+ query: returnUrl ? { returnUrl } : {}
7991
+ });
7992
+ } else next();
7993
+ };
7994
+
8426
7995
  //#endregion
8427
7996
  //#region src/slices/auth/authRoutes.ts
8428
7997
  const authPaths = {
@@ -8466,10 +8035,15 @@ const authPaths = {
8466
8035
  full_path: "/auth/verify-email",
8467
8036
  name: "Verify Email"
8468
8037
  },
8469
- verify_email_required: {
8470
- path: "verify-email-required",
8471
- full_path: "/auth/verify-email-required",
8472
- name: "Verify Email Required"
8038
+ consent_required: {
8039
+ path: "consent-required",
8040
+ full_path: "/auth/consent-required",
8041
+ name: "Consent Required"
8042
+ },
8043
+ signup_consents: {
8044
+ path: "signup-consents",
8045
+ full_path: "/auth/signup-consents",
8046
+ name: "Signup Consents"
8473
8047
  }
8474
8048
  };
8475
8049
  const { allowUserSignup } = useEnv();
@@ -8477,7 +8051,7 @@ const baseRoutes = [
8477
8051
  {
8478
8052
  path: authPaths.login.path,
8479
8053
  name: authPaths.login.name,
8480
- component: () => import("./LoginForm-BeiI_y3E.js"),
8054
+ component: () => import("./LoginForm-Bg7GoZEA.js"),
8481
8055
  meta: {
8482
8056
  title: "Login",
8483
8057
  description: "Login page for Category 5 App"
@@ -8487,7 +8061,7 @@ const baseRoutes = [
8487
8061
  {
8488
8062
  path: authPaths.forgot_password.path,
8489
8063
  name: authPaths.forgot_password.name,
8490
- component: () => import("./ForgotPassword-DJjmzU_m.js"),
8064
+ component: () => import("./ForgotPassword-CUifhmqP.js"),
8491
8065
  meta: {
8492
8066
  title: "Forgot Password",
8493
8067
  description: "Forgot Password page for Category 5 App"
@@ -8497,7 +8071,7 @@ const baseRoutes = [
8497
8071
  {
8498
8072
  path: authPaths.reset_password.path,
8499
8073
  name: authPaths.reset_password.name,
8500
- component: () => import("./ResetPassword-DEFj1pgV.js"),
8074
+ component: () => import("./ResetPassword-pY1uhTdl.js"),
8501
8075
  meta: {
8502
8076
  title: "Reset Password",
8503
8077
  description: "Reset Password page for Category 5 App"
@@ -8507,7 +8081,7 @@ const baseRoutes = [
8507
8081
  {
8508
8082
  path: authPaths.logout.path,
8509
8083
  name: authPaths.logout.name,
8510
- component: () => import("./Logout-DmZTNQDP.js"),
8084
+ component: () => import("./Logout-Bs92csWH.js"),
8511
8085
  meta: {
8512
8086
  title: "Logout",
8513
8087
  description: "Logout page for Category 5 App"
@@ -8516,7 +8090,7 @@ const baseRoutes = [
8516
8090
  {
8517
8091
  path: authPaths.mfa_setup.path,
8518
8092
  name: authPaths.mfa_setup.name,
8519
- component: () => import("./MfaSetup-BwkenBRD.js"),
8093
+ component: () => import("./MfaSetup-BACX5XP-.js"),
8520
8094
  meta: {
8521
8095
  title: "Set Up Two-Factor Authentication",
8522
8096
  description: "Enable MFA for your account"
@@ -8525,7 +8099,7 @@ const baseRoutes = [
8525
8099
  {
8526
8100
  path: authPaths.mfa_verify.path,
8527
8101
  name: authPaths.mfa_verify.name,
8528
- component: () => import("./MfaVerify-BaUROEol.js"),
8102
+ component: () => import("./MfaVerify-ak4iSdQ2.js"),
8529
8103
  meta: {
8530
8104
  title: "Verify Two-Factor Authentication",
8531
8105
  description: "Enter your MFA code to complete sign in"
@@ -8534,26 +8108,44 @@ const baseRoutes = [
8534
8108
  {
8535
8109
  path: authPaths.verify_email.path,
8536
8110
  name: authPaths.verify_email.name,
8537
- component: () => import("./VerifyEmail-Cpc0umIu.js"),
8111
+ component: () => import("./VerifyEmail-DCP4DWIw.js"),
8538
8112
  meta: {
8539
8113
  title: "Verify Email",
8540
8114
  description: "Verify your email address"
8541
- }
8115
+ },
8116
+ beforeEnter: [skipVerifyEmailIfAlreadyVerified]
8117
+ },
8118
+ {
8119
+ path: "verify-email-required",
8120
+ redirect: (to) => ({
8121
+ path: "/auth/verify-email",
8122
+ query: to.query
8123
+ })
8542
8124
  },
8543
8125
  {
8544
- path: authPaths.verify_email_required.path,
8545
- name: authPaths.verify_email_required.name,
8546
- component: () => import("./VerifyEmailRequired-CN1FU1AE.js"),
8126
+ path: authPaths.consent_required.path,
8127
+ name: authPaths.consent_required.name,
8128
+ component: () => import("./ConsentRequired-C4IRMA0c.js"),
8547
8129
  meta: {
8548
- title: "Verify Email",
8549
- description: "Check your email to verify your account"
8130
+ title: "Consent Required",
8131
+ description: "Accept updated terms to continue"
8550
8132
  }
8133
+ },
8134
+ {
8135
+ path: authPaths.signup_consents.path,
8136
+ name: authPaths.signup_consents.name,
8137
+ component: () => import("./SignupConsentFlow-QUZGKjdB.js"),
8138
+ meta: {
8139
+ title: "Review and accept",
8140
+ description: "Review and accept terms to complete signup"
8141
+ },
8142
+ beforeEnter: [userAlreadyLoggedIn, signupConsentsGuard]
8551
8143
  }
8552
8144
  ];
8553
8145
  if (allowUserSignup) baseRoutes.splice(1, 0, {
8554
8146
  path: authPaths.register.path,
8555
8147
  name: authPaths.register.name,
8556
- component: () => import("./Signup-CFUbdrYs.js"),
8148
+ component: () => import("./Signup-Bq-G3D-s.js"),
8557
8149
  meta: {
8558
8150
  title: "Register",
8559
8151
  description: "Register page for Category 5 App"
@@ -8623,13 +8215,18 @@ const adminRoutes = [{
8623
8215
  id: "support-ticket-maintenance",
8624
8216
  label: "Support Ticket Maintenance",
8625
8217
  to: { name: "SupportTicketMaintenance" }
8218
+ },
8219
+ {
8220
+ id: "signup-requirements",
8221
+ label: "Signup Requirements",
8222
+ to: { name: "SignupRequirements" }
8626
8223
  }
8627
8224
  ] },
8628
8225
  children: [
8629
8226
  {
8630
8227
  path: "create-user",
8631
8228
  name: "CreateUser",
8632
- component: () => import("./CreateUserPage-BWIvFF-4.js"),
8229
+ component: () => import("./CreateUserPage-WruMs7WP.js"),
8633
8230
  meta: {
8634
8231
  title: "Create User",
8635
8232
  description: "Create User page for Category 5 App",
@@ -8642,7 +8239,7 @@ const adminRoutes = [{
8642
8239
  {
8643
8240
  path: "support-staff",
8644
8241
  name: "SupportStaff",
8645
- component: () => import("./SupportStaffPage-B05UR5LK.js"),
8242
+ component: () => import("./SupportStaffPage-KKugAnFm.js"),
8646
8243
  meta: {
8647
8244
  title: "Support Staff",
8648
8245
  description: "Manage users who can triage support tickets",
@@ -8655,7 +8252,7 @@ const adminRoutes = [{
8655
8252
  {
8656
8253
  path: "users",
8657
8254
  name: "UserManagement",
8658
- component: () => import("./UserListPage-CBwfXo15.js"),
8255
+ component: () => import("./UserListPage-BTLE4J0s.js"),
8659
8256
  meta: {
8660
8257
  title: "User Management",
8661
8258
  description: "View and manage all users",
@@ -8668,7 +8265,7 @@ const adminRoutes = [{
8668
8265
  {
8669
8266
  path: "users/:id/edit",
8670
8267
  name: "EditUser",
8671
- component: () => import("./EditUserPage-CsHl1h_g.js"),
8268
+ component: () => import("./EditUserPage-T4DQlKhf.js"),
8672
8269
  meta: {
8673
8270
  title: "Edit User",
8674
8271
  description: "Edit user role",
@@ -8691,7 +8288,7 @@ const adminRoutes = [{
8691
8288
  {
8692
8289
  path: "credit-management",
8693
8290
  name: "CreditManagement",
8694
- component: () => import("./CreditManagement-CyjrE1ep.js"),
8291
+ component: () => import("./CreditManagement-Ddvu9dMw.js"),
8695
8292
  meta: {
8696
8293
  title: "Credit Management",
8697
8294
  description: "Manage customer credits and allocations",
@@ -8704,7 +8301,7 @@ const adminRoutes = [{
8704
8301
  {
8705
8302
  path: "support-ticket-maintenance",
8706
8303
  name: "SupportTicketMaintenance",
8707
- component: () => import("./SupportTicketMaintenancePage-BoZpjcAF.js"),
8304
+ component: () => import("./SupportTicketMaintenancePage-smItdkrD.js"),
8708
8305
  meta: {
8709
8306
  title: "Support Ticket Maintenance",
8710
8307
  description: "Admin utilities for fixing support ticket data",
@@ -8713,6 +8310,19 @@ const adminRoutes = [{
8713
8310
  visible_to: ["super_admin"]
8714
8311
  }
8715
8312
  }
8313
+ },
8314
+ {
8315
+ path: "signup-requirements",
8316
+ name: "SignupRequirements",
8317
+ component: () => import("./SignupRequirementsPage-DfbYmpQD.js"),
8318
+ meta: {
8319
+ title: "Signup Requirements",
8320
+ description: "Configure consent checkboxes shown on signup and consent-required flows",
8321
+ side_bar: {
8322
+ section: " Admin",
8323
+ visible_to: ["super_admin"]
8324
+ }
8325
+ }
8716
8326
  }
8717
8327
  ]
8718
8328
  }];
@@ -8732,7 +8342,7 @@ const creditRoutes = [{
8732
8342
  children: [{
8733
8343
  path: creditPaths.credit_balance.path,
8734
8344
  name: creditPaths.credit_balance.name,
8735
- component: () => import("./CreditBalanceDashboard-BR-er7gs.js"),
8345
+ component: () => import("./CreditBalanceDashboard-CkcsrZ_e.js"),
8736
8346
  meta: {
8737
8347
  title: "Credit Balance",
8738
8348
  description: "View your current credit balance and history.",
@@ -9337,5 +8947,5 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
9337
8947
  var CreditManagement_default = _sfc_main;
9338
8948
 
9339
8949
  //#endregion
9340
- 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 };
9341
- //# sourceMappingURL=src-CkgUIye9.js.map
8950
+ 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 };
8951
+ //# sourceMappingURL=src-QZJyMfGX.js.map