@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.
- package/dist/AppLink-CHMMrSFI.js +54 -0
- package/dist/AppLink-CHMMrSFI.js.map +1 -0
- package/dist/Appearance-D5pwxuf4.js +3 -0
- package/dist/{Appearance-BfPdKMXw.js → Appearance-DxWTyx1M.js} +1 -1
- package/dist/{Appearance-BfPdKMXw.js.map → Appearance-DxWTyx1M.js.map} +1 -1
- package/dist/{ChangePasswordPage-DXzU3NI9.js → ChangePasswordPage--3XwluwE.js} +2 -2
- package/dist/{ChangePasswordPage-DXzU3NI9.js.map → ChangePasswordPage--3XwluwE.js.map} +1 -1
- package/dist/ChangePasswordPage-CpDPmEml.js +6 -0
- package/dist/ConsentRequired-C4IRMA0c.js +213 -0
- package/dist/ConsentRequired-C4IRMA0c.js.map +1 -0
- package/dist/CreateTeamForm-B4cIuYAf.js +35 -0
- package/dist/CreateTeamMemberForm-Chrw1y00.js +35 -0
- package/dist/{CreateUserPage-bwR6fq5C.js → CreateUserPage-DLwXeLAq.js} +2 -2
- package/dist/{CreateUserPage-bwR6fq5C.js.map → CreateUserPage-DLwXeLAq.js.map} +1 -1
- package/dist/CreateUserPage-WruMs7WP.js +6 -0
- package/dist/CreditBalanceDashboard-CkcsrZ_e.js +35 -0
- package/dist/CreditManagement-Ddvu9dMw.js +35 -0
- package/dist/CustomerCreateSupportTicketForm-BKperKGS.js +35 -0
- package/dist/{CustomerSupportTicketDetailPage-D_1t2EpN.js → CustomerSupportTicketDetailPage-BdyaKG1v.js} +9 -9
- package/dist/{CustomerSupportTicketDetailPage-D_1t2EpN.js.map → CustomerSupportTicketDetailPage-BdyaKG1v.js.map} +1 -1
- package/dist/CustomerSupportTicketList-DcbrjDa9.js +35 -0
- package/dist/CustomerSupportTicketParent-BeNzUwuP.js +7 -0
- package/dist/{CustomerSupportTicketParent-B09_iFpJ.js → CustomerSupportTicketParent-HIxwSVdu.js} +4 -4
- package/dist/{CustomerSupportTicketParent-B09_iFpJ.js.map → CustomerSupportTicketParent-HIxwSVdu.js.map} +1 -1
- package/dist/CustomerSupportTicketSuccess-CC967u3y.js +35 -0
- package/dist/EditTeamForm-B5Tee5wL.js +35 -0
- package/dist/{EditTeamMemberForm-DJW7yRQW.js → EditTeamMemberForm-CaS2GLjV.js} +2 -2
- package/dist/{EditTeamMemberForm-DJW7yRQW.js.map → EditTeamMemberForm-CaS2GLjV.js.map} +1 -1
- package/dist/EditTeamMemberForm-OtcS8QWt.js +6 -0
- package/dist/{EditUserPage-aDygGmfD.js → EditUserPage-DURc5rmi.js} +4 -4
- package/dist/{EditUserPage-aDygGmfD.js.map → EditUserPage-DURc5rmi.js.map} +1 -1
- package/dist/EditUserPage-T4DQlKhf.js +7 -0
- package/dist/ForgotPassword-CUifhmqP.js +7 -0
- package/dist/{ForgotPassword-CJjzm9GK.js → ForgotPassword-OjIPi9s9.js} +4 -3
- package/dist/{ForgotPassword-CJjzm9GK.js.map → ForgotPassword-OjIPi9s9.js.map} +1 -1
- package/dist/LoginForm-9UFnA-fO.js +118 -0
- package/dist/LoginForm-9UFnA-fO.js.map +1 -0
- package/dist/LoginForm-Bg7GoZEA.js +7 -0
- package/dist/Logout-Bs92csWH.js +7 -0
- package/dist/{Logout-Cm9kEzgH.js → Logout-YgTgOFUH.js} +5 -4
- package/dist/{Logout-Cm9kEzgH.js.map → Logout-YgTgOFUH.js.map} +1 -1
- package/dist/MfaSetup-BACX5XP-.js +8 -0
- package/dist/{MfaSetup-Ch0w-gTN.js → MfaSetup-RtFMY_dj.js} +5 -4
- package/dist/{MfaSetup-Ch0w-gTN.js.map → MfaSetup-RtFMY_dj.js.map} +1 -1
- package/dist/{MfaVerify-BwzjVrTj.js → MfaVerify-Cvhe8bEM.js} +6 -5
- package/dist/{MfaVerify-BwzjVrTj.js.map → MfaVerify-Cvhe8bEM.js.map} +1 -1
- package/dist/MfaVerify-ak4iSdQ2.js +8 -0
- package/dist/RecordVersionViewer-BWZ78vvE.js +490 -0
- package/dist/RecordVersionViewer-BWZ78vvE.js.map +1 -0
- package/dist/{ResetPassword-DuLuXaNp.js → ResetPassword-BE4mXK9q.js} +4 -3
- package/dist/{ResetPassword-DuLuXaNp.js.map → ResetPassword-BE4mXK9q.js.map} +1 -1
- package/dist/ResetPassword-pY1uhTdl.js +7 -0
- package/dist/{SavedFiltersPage-CawED9Oz.js → SavedFiltersPage-DQt6uc8m.js} +33 -30
- package/dist/{SavedFiltersPage-CawED9Oz.js.map → SavedFiltersPage-DQt6uc8m.js.map} +1 -1
- package/dist/Signup-9TjMMnU4.js +204 -0
- package/dist/Signup-9TjMMnU4.js.map +1 -0
- package/dist/Signup-Bq-G3D-s.js +9 -0
- package/dist/SignupConsentFlow-QUZGKjdB.js +269 -0
- package/dist/SignupConsentFlow-QUZGKjdB.js.map +1 -0
- package/dist/SignupRequirementsPage-DfbYmpQD.js +360 -0
- package/dist/SignupRequirementsPage-DfbYmpQD.js.map +1 -0
- package/dist/StaffCreateSupportTicketForm-D0ZuisDk.js +35 -0
- package/dist/{StaffSupportTicketDetailPage-DZZN3jmt.js → StaffSupportTicketDetailPage-DQdfh6H1.js} +11 -11
- package/dist/{StaffSupportTicketDetailPage-DZZN3jmt.js.map → StaffSupportTicketDetailPage-DQdfh6H1.js.map} +1 -1
- package/dist/StaffSupportTicketList-CiqC05XB.js +35 -0
- package/dist/{StaffSupportTicketParent-BYxQPuhI.js → StaffSupportTicketParent-CilR4RGM.js} +4 -4
- package/dist/{StaffSupportTicketParent-BYxQPuhI.js.map → StaffSupportTicketParent-CilR4RGM.js.map} +1 -1
- package/dist/StaffSupportTicketParent-DkV329NI.js +7 -0
- package/dist/StaffSupportTicketSuccess-CUYnimaI.js +35 -0
- package/dist/{SupportStaffPage-B05UR5LK.js → SupportStaffPage-KKugAnFm.js} +7 -7
- package/dist/{SupportStaffPage-B05UR5LK.js.map → SupportStaffPage-KKugAnFm.js.map} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-Ba-Rm6QW.js → SupportTicketDevLifecycleBadge-EMrQHfyG.js} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-Ba-Rm6QW.js.map → SupportTicketDevLifecycleBadge-EMrQHfyG.js.map} +1 -1
- package/dist/{SupportTicketMaintenancePage-BoZpjcAF.js → SupportTicketMaintenancePage-smItdkrD.js} +4 -4
- package/dist/{SupportTicketMaintenancePage-BoZpjcAF.js.map → SupportTicketMaintenancePage-smItdkrD.js.map} +1 -1
- package/dist/TeamAttachmentsTab-DUtCD1Yi.js +35 -0
- package/dist/TeamHistoryTab-BsUoH4VK.js +4 -0
- package/dist/{TeamHistoryTab-BrC6FFIw.js → TeamHistoryTab-D5biUPmq.js} +3 -3
- package/dist/{TeamHistoryTab-BrC6FFIw.js.map → TeamHistoryTab-D5biUPmq.js.map} +1 -1
- package/dist/TeamList-BkPIqZ8V.js +35 -0
- package/dist/TeamMemberList-1mxUGCNa.js +35 -0
- package/dist/TeamMemberParent-DzeBIElY.js +35 -0
- package/dist/{TeamNotesTab-B2eETkAz.js → TeamNotesTab-BzGZZ1h8.js} +5 -5
- package/dist/{TeamNotesTab-B2eETkAz.js.map → TeamNotesTab-BzGZZ1h8.js.map} +1 -1
- package/dist/TeamNotesTab-ClHl2nXd.js +7 -0
- package/dist/TeamParent-DJa9UZTP.js +35 -0
- package/dist/{TimelineNoteInput-C0a0WRQC.js → TimelineNoteInput-0p-M4Qie.js} +2 -2
- package/dist/{TimelineNoteInput-C0a0WRQC.js.map → TimelineNoteInput-0p-M4Qie.js.map} +1 -1
- package/dist/{TimelineSystemEvent-Dj2TMOF6.js → TimelineSystemEvent-BHzFr46C.js} +4 -4
- package/dist/{TimelineSystemEvent-Dj2TMOF6.js.map → TimelineSystemEvent-BHzFr46C.js.map} +1 -1
- package/dist/UserListPage-BTLE4J0s.js +4 -0
- package/dist/{UserListPage-QSdxrJT6.js → UserListPage-DUE5gJTo.js} +3 -3
- package/dist/{UserListPage-QSdxrJT6.js.map → UserListPage-DUE5gJTo.js.map} +1 -1
- package/dist/{UserProfilePage-X4z2lG-J.js → UserProfilePage-C3b93Keh.js} +4 -4
- package/dist/{UserProfilePage-X4z2lG-J.js.map → UserProfilePage-C3b93Keh.js.map} +1 -1
- package/dist/UserProfilePage-CVTORtSx.js +7 -0
- package/dist/VerifyEmail-DCP4DWIw.js +9 -0
- package/dist/VerifyEmail-DlOmWGG-.js +257 -0
- package/dist/VerifyEmail-DlOmWGG-.js.map +1 -0
- package/dist/ViewTeam-DVfnLMhV.js +35 -0
- package/dist/ViewTeamMember-L4v3gCIn.js +35 -0
- package/dist/{convertToLocalDateTime-DOSGtMn8.js → convertToLocalDateTime-CFhtN6PI.js} +12 -2
- package/dist/convertToLocalDateTime-CFhtN6PI.js.map +1 -0
- package/dist/{displayIdFormatter-B1ZKgofu.js → displayIdFormatter-Dz900Awr.js} +1 -1
- package/dist/{displayIdFormatter-B1ZKgofu.js.map → displayIdFormatter-Dz900Awr.js.map} +1 -1
- package/dist/{extractRpcErrorMessage-C_UbKgHL.js → extractRpcErrorMessage-Di8E8-Wh.js} +1 -1
- package/dist/{extractRpcErrorMessage-C_UbKgHL.js.map → extractRpcErrorMessage-Di8E8-Wh.js.map} +1 -1
- package/dist/index.d.ts +62 -17
- package/dist/index.js +37 -33
- package/dist/{mfaSchema-nfNCcEhM.js → mfaSchema-BnRWf0ma.js} +1 -1
- package/dist/{mfaSchema-nfNCcEhM.js.map → mfaSchema-BnRWf0ma.js.map} +1 -1
- package/dist/{src-CkgUIye9.js → src-QZJyMfGX.js} +422 -812
- package/dist/src-QZJyMfGX.js.map +1 -0
- package/dist/{useBreadcrumbs-DmgSucoe.js → useBreadcrumbs-qB6ghsAf.js} +1 -1
- package/dist/{useBreadcrumbs-DmgSucoe.js.map → useBreadcrumbs-qB6ghsAf.js.map} +1 -1
- package/dist/useEmailVerificationChannel-BNi926Ho.js +37 -0
- package/dist/useEmailVerificationChannel-BNi926Ho.js.map +1 -0
- package/dist/{useMutation-DbzXtqf1.js → useMutation-BTsyHKyn.js} +3 -3
- package/dist/{useMutation-DbzXtqf1.js.map → useMutation-BTsyHKyn.js.map} +1 -1
- package/dist/{useQuery-BKb5JXVS.js → useQuery-BggIE52P.js} +5 -5
- package/dist/useQuery-BggIE52P.js.map +1 -0
- package/dist/{useQueryCache-CHG4-HGF.js → useQueryCache-Bjm-S8v5.js} +2 -2
- package/dist/{useQueryCache-CHG4-HGF.js.map → useQueryCache-Bjm-S8v5.js.map} +1 -1
- package/dist/{useReturnUrl-Da8PpLb9.js → useReturnUrl-qFeazn-G.js} +2 -54
- package/dist/useReturnUrl-qFeazn-G.js.map +1 -0
- package/dist/{useRpcAuth-8Byr6SSI.js → useRpcAuth-rmHf7bYx.js} +42 -2
- package/dist/useRpcAuth-rmHf7bYx.js.map +1 -0
- package/dist/useSignupPendingData-BWHwUHhL.js +47 -0
- package/dist/useSignupPendingData-BWHwUHhL.js.map +1 -0
- package/package.json +5 -2
- package/src/daisyui.css +1 -0
- package/dist/Appearance-C3WguxT-.js +0 -3
- package/dist/ChangePasswordPage-BuVNYC_G.js +0 -6
- package/dist/CreateTeamForm-BuMrZ169.js +0 -32
- package/dist/CreateTeamMemberForm-D0xqR9me.js +0 -32
- package/dist/CreateUserPage-BWIvFF-4.js +0 -6
- package/dist/CreditBalanceDashboard-BR-er7gs.js +0 -32
- package/dist/CreditManagement-CyjrE1ep.js +0 -32
- package/dist/CustomerCreateSupportTicketForm-C9-CLRRQ.js +0 -32
- package/dist/CustomerSupportTicketList-B0dC7lgD.js +0 -32
- package/dist/CustomerSupportTicketParent-D0wLnKXf.js +0 -7
- package/dist/CustomerSupportTicketSuccess-BvuBglg8.js +0 -32
- package/dist/EditTeamForm-BJlOKEkI.js +0 -32
- package/dist/EditTeamMemberForm-CbDvTLXI.js +0 -6
- package/dist/EditUserPage-CsHl1h_g.js +0 -7
- package/dist/ForgotPassword-DJjmzU_m.js +0 -7
- package/dist/LoginForm-BeiI_y3E.js +0 -7
- package/dist/LoginForm-IEP-hEh0.js +0 -115
- package/dist/LoginForm-IEP-hEh0.js.map +0 -1
- package/dist/Logout-DmZTNQDP.js +0 -7
- package/dist/MfaSetup-BwkenBRD.js +0 -8
- package/dist/MfaVerify-BaUROEol.js +0 -8
- package/dist/ResetPassword-DEFj1pgV.js +0 -7
- package/dist/Signup-C94alv87.js +0 -166
- package/dist/Signup-C94alv87.js.map +0 -1
- package/dist/Signup-CFUbdrYs.js +0 -7
- package/dist/StaffCreateSupportTicketForm-AxprwWRv.js +0 -32
- package/dist/StaffSupportTicketList-DYKysNs3.js +0 -32
- package/dist/StaffSupportTicketParent-CT8oYFd6.js +0 -7
- package/dist/StaffSupportTicketSuccess-zWEagE4E.js +0 -32
- package/dist/TeamAttachmentsTab-BFRMbPlZ.js +0 -32
- package/dist/TeamHistoryTab-CYrt5KnE.js +0 -4
- package/dist/TeamList-CF5BQhfx.js +0 -32
- package/dist/TeamMemberList-Dfi2iKOH.js +0 -32
- package/dist/TeamMemberParent-DXcumR-Q.js +0 -32
- package/dist/TeamNotesTab-Bv_HPC6f.js +0 -7
- package/dist/TeamParent-DLoNn-mW.js +0 -32
- package/dist/UserListPage-CBwfXo15.js +0 -4
- package/dist/UserProfilePage-cTrZuwOT.js +0 -7
- package/dist/VerifyEmail-8bsvoDdM.js +0 -175
- package/dist/VerifyEmail-8bsvoDdM.js.map +0 -1
- package/dist/VerifyEmail-Cpc0umIu.js +0 -7
- package/dist/VerifyEmailRequired-CN1FU1AE.js +0 -74
- package/dist/VerifyEmailRequired-CN1FU1AE.js.map +0 -1
- package/dist/ViewTeam-DpjnoTwo.js +0 -32
- package/dist/ViewTeamMember-CRb2oBHG.js +0 -32
- package/dist/convertToLocalDateTime-DOSGtMn8.js.map +0 -1
- package/dist/src-CkgUIye9.js.map +0 -1
- package/dist/useQuery-BKb5JXVS.js.map +0 -1
- package/dist/useReturnUrl-Da8PpLb9.js.map +0 -1
- package/dist/useRpcAuth-8Byr6SSI.js.map +0 -1
- /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-
|
|
2
|
-
import { t as useMutation } from "./useMutation-
|
|
3
|
-
import { t as useQuery } from "./useQuery-
|
|
4
|
-
import {
|
|
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-
|
|
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
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { t as
|
|
13
|
-
import { t as
|
|
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$
|
|
53
|
-
const _hoisted_2$
|
|
54
|
-
const _hoisted_3$
|
|
55
|
-
const _hoisted_4$
|
|
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$
|
|
60
|
-
const _hoisted_6$
|
|
61
|
-
const _hoisted_7$
|
|
62
|
-
const _hoisted_8$
|
|
63
|
-
const _hoisted_9$
|
|
64
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
142
|
-
createElementVNode("div", _hoisted_7$
|
|
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$
|
|
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$
|
|
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$
|
|
165
|
+
var AppTabNavigation_default = _sfc_main$60;
|
|
164
166
|
|
|
165
167
|
//#endregion
|
|
166
168
|
//#region src/components/AppHeader.vue
|
|
167
|
-
const _hoisted_1$
|
|
168
|
-
const _hoisted_2$
|
|
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$
|
|
173
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
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$
|
|
205
|
+
var AppHeader_default = _sfc_main$59;
|
|
204
206
|
|
|
205
207
|
//#endregion
|
|
206
208
|
//#region src/components/BaseModal.vue
|
|
207
|
-
const _hoisted_1$
|
|
208
|
-
const _hoisted_2$
|
|
209
|
-
const _hoisted_3$
|
|
210
|
-
const _hoisted_4$
|
|
211
|
-
const _hoisted_5$
|
|
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$
|
|
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$
|
|
240
|
+
}, [createElementVNode("div", _hoisted_1$52, [
|
|
239
241
|
createCommentVNode(" Header with title and close button - fixed, not scrollable "),
|
|
240
|
-
createElementVNode("div", _hoisted_2$
|
|
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$
|
|
259
|
-
]), createElementVNode("form", _hoisted_5$
|
|
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$
|
|
268
|
+
var BaseModal_default = _sfc_main$58;
|
|
267
269
|
|
|
268
270
|
//#endregion
|
|
269
271
|
//#region src/components/InputModal.vue
|
|
270
|
-
const _hoisted_1$
|
|
271
|
-
const _hoisted_2$
|
|
272
|
-
const _hoisted_3$
|
|
273
|
-
const _hoisted_4$
|
|
274
|
-
const _hoisted_5$
|
|
275
|
-
const _hoisted_6$
|
|
276
|
-
const _hoisted_7$
|
|
277
|
-
const _hoisted_8$
|
|
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$
|
|
282
|
-
const _hoisted_10$
|
|
283
|
-
const _hoisted_11$
|
|
284
|
-
const _hoisted_12$
|
|
285
|
-
const _sfc_main$
|
|
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$
|
|
336
|
-
createElementVNode("h3", _hoisted_2$
|
|
337
|
-
createElementVNode("div", _hoisted_3$
|
|
338
|
-
createElementVNode("div", _hoisted_5$
|
|
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$
|
|
348
|
-
__props.error ? (openBlock(), createElementBlock("div", _hoisted_8$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
368
|
+
var InputModal_default = _sfc_main$57;
|
|
367
369
|
|
|
368
370
|
//#endregion
|
|
369
371
|
//#region src/components/LoginButton.vue
|
|
370
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
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$
|
|
393
|
+
var LogoPlaceholder_default = _sfc_main$55;
|
|
392
394
|
|
|
393
395
|
//#endregion
|
|
394
396
|
//#region src/components/Navbar.vue
|
|
395
|
-
const _hoisted_1$
|
|
396
|
-
const _hoisted_2$
|
|
397
|
-
const _hoisted_3$
|
|
398
|
-
const _hoisted_4$
|
|
399
|
-
const _hoisted_5$
|
|
400
|
-
const _hoisted_6$
|
|
401
|
-
const _hoisted_7$
|
|
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$
|
|
406
|
-
const _hoisted_9$
|
|
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$
|
|
411
|
-
const _hoisted_11$
|
|
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$
|
|
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$
|
|
420
|
-
const _hoisted_14$
|
|
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$
|
|
425
|
-
const _hoisted_16$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
528
|
+
var Navbar_default = _sfc_main$54;
|
|
527
529
|
|
|
528
530
|
//#endregion
|
|
529
531
|
//#region src/components/NotFound.vue
|
|
530
|
-
const _hoisted_1$
|
|
531
|
-
const _hoisted_2$
|
|
532
|
-
const _hoisted_3$
|
|
533
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
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$
|
|
562
|
+
var NotFound_default = _sfc_main$53;
|
|
561
563
|
|
|
562
564
|
//#endregion
|
|
563
565
|
//#region src/components/RightSidebar.vue
|
|
564
|
-
const _hoisted_1$
|
|
565
|
-
const _hoisted_2$
|
|
566
|
-
const _hoisted_3$
|
|
567
|
-
const _hoisted_4$
|
|
568
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
593
|
-
createElementVNode("div", _hoisted_3$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
721
|
-
const _hoisted_3$
|
|
722
|
-
const _hoisted_4$
|
|
723
|
-
const _hoisted_5$
|
|
724
|
-
const _hoisted_6$
|
|
725
|
-
const _hoisted_7$
|
|
726
|
-
const _hoisted_8$
|
|
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$
|
|
731
|
-
const _hoisted_10$
|
|
732
|
-
const _hoisted_11$
|
|
733
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
778
|
-
createElementVNode("div", _hoisted_5$
|
|
779
|
-
createElementVNode("div", _hoisted_6$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
854
|
+
const _hoisted_1$46 = {
|
|
853
855
|
key: 0,
|
|
854
|
-
class: "bg-warning
|
|
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$
|
|
857
|
-
const _hoisted_3$
|
|
858
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
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$
|
|
898
|
+
var UnverifiedEmailBanner_default = _sfc_main$50;
|
|
897
899
|
|
|
898
900
|
//#endregion
|
|
899
901
|
//#region src/layouts/Admin.vue
|
|
900
|
-
const _hoisted_1$
|
|
901
|
-
const _hoisted_2$
|
|
902
|
-
const _hoisted_3$
|
|
903
|
-
const _hoisted_4$
|
|
904
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
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$
|
|
930
|
+
var Admin_default = _sfc_main$49;
|
|
929
931
|
|
|
930
932
|
//#endregion
|
|
931
933
|
//#region src/layouts/Auth.vue
|
|
932
|
-
const _hoisted_1$
|
|
933
|
-
const _hoisted_2$
|
|
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$
|
|
938
|
-
const _hoisted_4$
|
|
939
|
-
const _hoisted_5$
|
|
940
|
-
const _hoisted_6$
|
|
941
|
-
const _sfc_main$
|
|
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$
|
|
960
|
-
hasBackLinks.value ? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
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$
|
|
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$
|
|
980
|
-
createElementVNode("div", _hoisted_6$
|
|
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$
|
|
989
|
+
var Auth_default = _sfc_main$48;
|
|
986
990
|
|
|
987
991
|
//#endregion
|
|
988
992
|
//#region src/layouts/Default.vue
|
|
989
|
-
const _hoisted_1$
|
|
990
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
1010
|
+
var Default_default = _sfc_main$47;
|
|
1007
1011
|
|
|
1008
1012
|
//#endregion
|
|
1009
1013
|
//#region src/layouts/InApp.vue
|
|
1010
|
-
const _hoisted_1$
|
|
1011
|
-
const _hoisted_2$
|
|
1012
|
-
const _hoisted_3$
|
|
1013
|
-
const _hoisted_4$
|
|
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$
|
|
1018
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1121
|
+
var InApp_default = _sfc_main$46;
|
|
1118
1122
|
|
|
1119
1123
|
//#endregion
|
|
1120
1124
|
//#region src/components/ui/FieldDisplay.vue
|
|
1121
|
-
const _hoisted_1$
|
|
1122
|
-
const _hoisted_2$
|
|
1123
|
-
const _hoisted_3$
|
|
1124
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
1141
|
+
var FieldDisplay_default = _sfc_main$45;
|
|
1138
1142
|
|
|
1139
1143
|
//#endregion
|
|
1140
1144
|
//#region src/components/ui/FieldGroup.vue
|
|
1141
|
-
const _hoisted_1$
|
|
1142
|
-
const _hoisted_2$
|
|
1143
|
-
const _hoisted_3$
|
|
1144
|
-
const _hoisted_4$
|
|
1145
|
-
const _sfc_main$
|
|
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$
|
|
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$
|
|
1158
|
+
var FieldGroup_default = _sfc_main$44;
|
|
1155
1159
|
|
|
1156
1160
|
//#endregion
|
|
1157
1161
|
//#region src/components/ui/FileManager.vue
|
|
1158
|
-
const _hoisted_1$
|
|
1159
|
-
const _hoisted_2$
|
|
1160
|
-
const _hoisted_3$
|
|
1161
|
-
const _hoisted_4$
|
|
1162
|
-
const _hoisted_5$
|
|
1163
|
-
const _hoisted_6$
|
|
1164
|
-
const _hoisted_7$
|
|
1165
|
-
const _hoisted_8$
|
|
1166
|
-
const _hoisted_9$
|
|
1167
|
-
const _hoisted_10$
|
|
1168
|
-
const _hoisted_11$
|
|
1169
|
-
const _hoisted_12$
|
|
1170
|
-
const _hoisted_13$
|
|
1171
|
-
const _hoisted_14$
|
|
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$
|
|
1179
|
+
const _hoisted_15$5 = {
|
|
1176
1180
|
key: 0,
|
|
1177
1181
|
class: "mb-4"
|
|
1178
1182
|
};
|
|
1179
|
-
const _hoisted_16$
|
|
1180
|
-
const _hoisted_17$
|
|
1181
|
-
const _hoisted_18$
|
|
1182
|
-
const _hoisted_19$
|
|
1183
|
-
const _hoisted_20$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1655
|
+
return openBlock(), createElementBlock("div", _hoisted_1$39, [
|
|
1652
1656
|
createCommentVNode(" File Manager Header "),
|
|
1653
|
-
createElementVNode("div", _hoisted_2$
|
|
1657
|
+
createElementVNode("div", _hoisted_2$35, [
|
|
1654
1658
|
createCommentVNode(" Mobile: Stacked layout "),
|
|
1655
|
-
createElementVNode("div", _hoisted_3$
|
|
1656
|
-
createElementVNode("h3", _hoisted_4$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1750
|
-
createElementVNode("p", _hoisted_13$
|
|
1751
|
-
config.value.acceptText ? (openBlock(), createElementBlock("p", _hoisted_14$
|
|
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$
|
|
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$
|
|
1763
|
-
createElementVNode("div", _hoisted_18$
|
|
1764
|
-
createElementVNode("div", _hoisted_19$
|
|
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$
|
|
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$
|
|
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$
|
|
1998
|
+
var FileManager_default = _sfc_main$43;
|
|
1995
1999
|
|
|
1996
2000
|
//#endregion
|
|
1997
2001
|
//#region src/components/ui/KeyValueEditor.vue
|
|
1998
|
-
const _hoisted_1$
|
|
1999
|
-
const _hoisted_2$
|
|
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$
|
|
2007
|
+
const _hoisted_3$31 = {
|
|
2004
2008
|
key: 0,
|
|
2005
2009
|
class: "label p-0"
|
|
2006
2010
|
};
|
|
2007
|
-
const _hoisted_4$
|
|
2008
|
-
const _hoisted_5$
|
|
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$
|
|
2016
|
+
const _hoisted_6$17 = {
|
|
2013
2017
|
key: 1,
|
|
2014
2018
|
class: "text-error text-sm mb-2"
|
|
2015
2019
|
};
|
|
2016
|
-
const _hoisted_7$
|
|
2017
|
-
const _hoisted_8$
|
|
2018
|
-
const _hoisted_9$
|
|
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$
|
|
2024
|
-
const _hoisted_11$
|
|
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$
|
|
2030
|
-
const _hoisted_13$
|
|
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$
|
|
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$
|
|
2114
|
-
__props.label || __props.helpText ? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
2115
|
-
__props.error ? (openBlock(), createElementBlock("div", _hoisted_6$
|
|
2116
|
-
createElementVNode("div", _hoisted_7$
|
|
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$
|
|
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$
|
|
2130
|
-
createElementVNode("div", _hoisted_10$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
8470
|
-
path: "
|
|
8471
|
-
full_path: "/auth/
|
|
8472
|
-
name: "
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|
|
8545
|
-
name: authPaths.
|
|
8546
|
-
component: () => import("./
|
|
8126
|
+
path: authPaths.consent_required.path,
|
|
8127
|
+
name: authPaths.consent_required.name,
|
|
8128
|
+
component: () => import("./ConsentRequired-C4IRMA0c.js"),
|
|
8547
8129
|
meta: {
|
|
8548
|
-
title: "
|
|
8549
|
-
description: "
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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 $,
|
|
9341
|
-
//# sourceMappingURL=src-
|
|
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
|