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