@dragonmastery/dragoncore-vue 0.0.19 → 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/AppLink-CHMMrSFI.js +54 -0
- package/dist/AppLink-CHMMrSFI.js.map +1 -0
- package/dist/Appearance-D5pwxuf4.js +3 -0
- package/dist/{Appearance-BfPdKMXw.js → Appearance-DxWTyx1M.js} +1 -1
- package/dist/{Appearance-BfPdKMXw.js.map → Appearance-DxWTyx1M.js.map} +1 -1
- package/dist/{ChangePasswordPage-DXzU3NI9.js → ChangePasswordPage-DBXchGfn.js} +2 -2
- package/dist/{ChangePasswordPage-DXzU3NI9.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-bwR6fq5C.js → CreateUserPage-B0iHLsm5.js} +2 -2
- package/dist/{CreateUserPage-bwR6fq5C.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-D_1t2EpN.js → CustomerSupportTicketDetailPage-DyJTKtLU.js} +9 -9
- package/dist/{CustomerSupportTicketDetailPage-D_1t2EpN.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-B09_iFpJ.js → CustomerSupportTicketParent-CldxkQ75.js} +4 -4
- package/dist/{CustomerSupportTicketParent-B09_iFpJ.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-DJW7yRQW.js → EditTeamMemberForm-CiNb4nNG.js} +2 -2
- package/dist/{EditTeamMemberForm-DJW7yRQW.js.map → EditTeamMemberForm-CiNb4nNG.js.map} +1 -1
- package/dist/EditUserPage-BWKrAKZZ.js +7 -0
- package/dist/{EditUserPage-aDygGmfD.js → EditUserPage-DpV3dm-c.js} +4 -4
- package/dist/{EditUserPage-aDygGmfD.js.map → EditUserPage-DpV3dm-c.js.map} +1 -1
- package/dist/ForgotPassword-D3OQqbrD.js +7 -0
- package/dist/{ForgotPassword-CJjzm9GK.js → ForgotPassword-roKwDfce.js} +4 -3
- package/dist/{ForgotPassword-CJjzm9GK.js.map → ForgotPassword-roKwDfce.js.map} +1 -1
- package/dist/{LoginForm-IEP-hEh0.js → LoginForm-BGDymDnO.js} +5 -4
- package/dist/{LoginForm-IEP-hEh0.js.map → LoginForm-BGDymDnO.js.map} +1 -1
- package/dist/LoginForm-C97dUsU3.js +7 -0
- package/dist/{Logout-Cm9kEzgH.js → Logout-Cbw1SacV.js} +5 -4
- package/dist/{Logout-Cm9kEzgH.js.map → Logout-Cbw1SacV.js.map} +1 -1
- package/dist/Logout-DY3iorah.js +7 -0
- package/dist/{MfaSetup-Ch0w-gTN.js → MfaSetup-CwYXnvgW.js} +5 -4
- package/dist/{MfaSetup-Ch0w-gTN.js.map → MfaSetup-CwYXnvgW.js.map} +1 -1
- package/dist/MfaSetup-DAQV8MhP.js +8 -0
- package/dist/{MfaVerify-BwzjVrTj.js → MfaVerify-CIlen2i5.js} +6 -5
- package/dist/{MfaVerify-BwzjVrTj.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-DuLuXaNp.js → ResetPassword-BgKyXQ4q.js} +4 -3
- package/dist/{ResetPassword-DuLuXaNp.js.map → ResetPassword-BgKyXQ4q.js.map} +1 -1
- package/dist/ResetPassword-CkPqUFbq.js +7 -0
- package/dist/{SavedFiltersPage-CawED9Oz.js → SavedFiltersPage-BlzfWkaj.js} +32 -30
- package/dist/{SavedFiltersPage-CawED9Oz.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-DZZN3jmt.js → StaffSupportTicketDetailPage-D0SjH36N.js} +11 -11
- package/dist/{StaffSupportTicketDetailPage-DZZN3jmt.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-BYxQPuhI.js → StaffSupportTicketParent-Dk6RFRMt.js} +4 -4
- package/dist/{StaffSupportTicketParent-BYxQPuhI.js.map → StaffSupportTicketParent-Dk6RFRMt.js.map} +1 -1
- package/dist/StaffSupportTicketSuccess-CTeMG_iK.js +34 -0
- package/dist/{SupportStaffPage-B05UR5LK.js → SupportStaffPage-DFcgP8iE.js} +7 -7
- package/dist/{SupportStaffPage-B05UR5LK.js.map → SupportStaffPage-DFcgP8iE.js.map} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-Ba-Rm6QW.js → SupportTicketDevLifecycleBadge-EMrQHfyG.js} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-Ba-Rm6QW.js.map → SupportTicketDevLifecycleBadge-EMrQHfyG.js.map} +1 -1
- package/dist/{SupportTicketMaintenancePage-BoZpjcAF.js → SupportTicketMaintenancePage-BCW0eZxV.js} +4 -4
- package/dist/{SupportTicketMaintenancePage-BoZpjcAF.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-BrC6FFIw.js → TeamHistoryTab-PVS8A-6K.js} +3 -3
- package/dist/{TeamHistoryTab-BrC6FFIw.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-B2eETkAz.js → TeamNotesTab-D7ELC1EW.js} +5 -5
- package/dist/{TeamNotesTab-B2eETkAz.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-C0a0WRQC.js → TimelineNoteInput-D-NjzUiF.js} +2 -2
- package/dist/{TimelineNoteInput-C0a0WRQC.js.map → TimelineNoteInput-D-NjzUiF.js.map} +1 -1
- package/dist/{TimelineSystemEvent-Dj2TMOF6.js → TimelineSystemEvent-Cc6HMeO3.js} +4 -4
- package/dist/{TimelineSystemEvent-Dj2TMOF6.js.map → TimelineSystemEvent-Cc6HMeO3.js.map} +1 -1
- package/dist/UserListPage-BjHbDpvC.js +4 -0
- package/dist/{UserListPage-QSdxrJT6.js → UserListPage-DdJFeLP1.js} +3 -3
- package/dist/{UserListPage-QSdxrJT6.js.map → UserListPage-DdJFeLP1.js.map} +1 -1
- package/dist/{UserProfilePage-X4z2lG-J.js → UserProfilePage-BhCxv0N9.js} +4 -4
- package/dist/{UserProfilePage-X4z2lG-J.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-8bsvoDdM.js → VerifyEmail-DXYcjCX4.js} +5 -4
- package/dist/{VerifyEmail-8bsvoDdM.js.map → VerifyEmail-DXYcjCX4.js.map} +1 -1
- package/dist/{VerifyEmailRequired-CN1FU1AE.js → VerifyEmailRequired-DeMYFS0I.js} +23 -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-DOSGtMn8.js → convertToLocalDateTime-CFhtN6PI.js} +12 -2
- package/dist/convertToLocalDateTime-CFhtN6PI.js.map +1 -0
- package/dist/{displayIdFormatter-B1ZKgofu.js → displayIdFormatter-Dz900Awr.js} +1 -1
- package/dist/{displayIdFormatter-B1ZKgofu.js.map → displayIdFormatter-Dz900Awr.js.map} +1 -1
- package/dist/{extractRpcErrorMessage-C_UbKgHL.js → extractRpcErrorMessage-Di8E8-Wh.js} +1 -1
- package/dist/{extractRpcErrorMessage-C_UbKgHL.js.map → extractRpcErrorMessage-Di8E8-Wh.js.map} +1 -1
- package/dist/index.d.ts +755 -708
- package/dist/index.js +36 -33
- package/dist/{mfaSchema-nfNCcEhM.js → mfaSchema-s-T8m-7-.js} +1 -1
- package/dist/{mfaSchema-nfNCcEhM.js.map → mfaSchema-s-T8m-7-.js.map} +1 -1
- package/dist/{src-CkgUIye9.js → src--FuqlDhU.js} +397 -802
- package/dist/src--FuqlDhU.js.map +1 -0
- package/dist/{useBreadcrumbs-DmgSucoe.js → useBreadcrumbs-qB6ghsAf.js} +1 -1
- package/dist/{useBreadcrumbs-DmgSucoe.js.map → useBreadcrumbs-qB6ghsAf.js.map} +1 -1
- package/dist/{useMutation-DbzXtqf1.js → useMutation-Dhx2gMgS.js} +3 -3
- package/dist/{useMutation-DbzXtqf1.js.map → useMutation-Dhx2gMgS.js.map} +1 -1
- package/dist/{useQuery-BKb5JXVS.js → useQuery-DxmMxM8z.js} +5 -5
- package/dist/useQuery-DxmMxM8z.js.map +1 -0
- package/dist/{useQueryCache-CHG4-HGF.js → useQueryCache-CJKZquh6.js} +2 -2
- package/dist/{useQueryCache-CHG4-HGF.js.map → useQueryCache-CJKZquh6.js.map} +1 -1
- package/dist/{useReturnUrl-Da8PpLb9.js → useReturnUrl-qFeazn-G.js} +2 -54
- package/dist/useReturnUrl-qFeazn-G.js.map +1 -0
- package/dist/{useRpcAuth-8Byr6SSI.js → useRpcAuth-Bse-lggK.js} +3 -2
- 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-C3WguxT-.js +0 -3
- package/dist/ChangePasswordPage-BuVNYC_G.js +0 -6
- package/dist/CreateTeamForm-BuMrZ169.js +0 -32
- package/dist/CreateTeamMemberForm-D0xqR9me.js +0 -32
- package/dist/CreateUserPage-BWIvFF-4.js +0 -6
- package/dist/CreditBalanceDashboard-BR-er7gs.js +0 -32
- package/dist/CreditManagement-CyjrE1ep.js +0 -32
- package/dist/CustomerCreateSupportTicketForm-C9-CLRRQ.js +0 -32
- package/dist/CustomerSupportTicketList-B0dC7lgD.js +0 -32
- package/dist/CustomerSupportTicketParent-D0wLnKXf.js +0 -7
- package/dist/CustomerSupportTicketSuccess-BvuBglg8.js +0 -32
- package/dist/EditTeamForm-BJlOKEkI.js +0 -32
- package/dist/EditTeamMemberForm-CbDvTLXI.js +0 -6
- package/dist/EditUserPage-CsHl1h_g.js +0 -7
- package/dist/ForgotPassword-DJjmzU_m.js +0 -7
- package/dist/LoginForm-BeiI_y3E.js +0 -7
- package/dist/Logout-DmZTNQDP.js +0 -7
- package/dist/MfaSetup-BwkenBRD.js +0 -8
- package/dist/MfaVerify-BaUROEol.js +0 -8
- package/dist/ResetPassword-DEFj1pgV.js +0 -7
- package/dist/Signup-C94alv87.js +0 -166
- package/dist/Signup-C94alv87.js.map +0 -1
- package/dist/Signup-CFUbdrYs.js +0 -7
- package/dist/StaffCreateSupportTicketForm-AxprwWRv.js +0 -32
- package/dist/StaffSupportTicketList-DYKysNs3.js +0 -32
- package/dist/StaffSupportTicketParent-CT8oYFd6.js +0 -7
- package/dist/StaffSupportTicketSuccess-zWEagE4E.js +0 -32
- package/dist/TeamAttachmentsTab-BFRMbPlZ.js +0 -32
- package/dist/TeamHistoryTab-CYrt5KnE.js +0 -4
- package/dist/TeamList-CF5BQhfx.js +0 -32
- package/dist/TeamMemberList-Dfi2iKOH.js +0 -32
- package/dist/TeamMemberParent-DXcumR-Q.js +0 -32
- package/dist/TeamNotesTab-Bv_HPC6f.js +0 -7
- package/dist/TeamParent-DLoNn-mW.js +0 -32
- package/dist/UserListPage-CBwfXo15.js +0 -4
- package/dist/UserProfilePage-cTrZuwOT.js +0 -7
- package/dist/VerifyEmail-Cpc0umIu.js +0 -7
- package/dist/VerifyEmailRequired-CN1FU1AE.js.map +0 -1
- package/dist/ViewTeam-DpjnoTwo.js +0 -32
- package/dist/ViewTeamMember-CRb2oBHG.js +0 -32
- package/dist/convertToLocalDateTime-DOSGtMn8.js.map +0 -1
- package/dist/src-CkgUIye9.js.map +0 -1
- package/dist/useQuery-BKb5JXVS.js.map +0 -1
- package/dist/useReturnUrl-Da8PpLb9.js.map +0 -1
- package/dist/useRpcAuth-8Byr6SSI.js.map +0 -1
- /package/dist/{TeamMembersTab-DTJxmb-M.js → TeamMembersTab-CBB2Yl_I.js} +0 -0
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import { c as setRefreshTokenHandler, i as setRouter, l as useUserSessionStore, m as useEnv, p as logger, r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-
|
|
2
|
-
import { t as useMutation } from "./useMutation-
|
|
3
|
-
import { t as useQuery } from "./useQuery-
|
|
4
|
-
import {
|
|
5
|
-
import { a as SupportTicketTypeBadge_default, c as formatCustomerCreditValue, d as ConfirmDialog_default, i as SupportTicketApprovalBadge_default, l as formatStaffCreditValue, o as SupportTicketPriorityBadge_default, s as InlineAttachments_default } from "./TimelineSystemEvent-
|
|
1
|
+
import { c as setRefreshTokenHandler, i as setRouter, l as useUserSessionStore, m as useEnv, p as logger, r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-Bse-lggK.js";
|
|
2
|
+
import { t as useMutation } from "./useMutation-Dhx2gMgS.js";
|
|
3
|
+
import { t as useQuery } from "./useQuery-DxmMxM8z.js";
|
|
4
|
+
import { t as AppLink_default } from "./AppLink-CHMMrSFI.js";
|
|
5
|
+
import { a as SupportTicketTypeBadge_default, c as formatCustomerCreditValue, d as ConfirmDialog_default, i as SupportTicketApprovalBadge_default, l as formatStaffCreditValue, o as SupportTicketPriorityBadge_default, s as InlineAttachments_default } from "./TimelineSystemEvent-Cc6HMeO3.js";
|
|
6
6
|
import { n as export_helper_default } from "./TeamMembersTab-4gmnP9sD.js";
|
|
7
|
-
import { n as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { t as
|
|
13
|
-
import { t as
|
|
7
|
+
import { n as getBackLinkFromRoute, o as withReturnUrl } 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";
|
|
14
16
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineComponent, inject, isRef, nextTick, normalizeClass, onMounted, openBlock, provide, readonly, ref, renderList, renderSlot, resolveComponent, toDisplayString, unref, vModelCheckbox, vModelText, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
|
|
15
17
|
import { RouterView, useRoute, useRouter } from "vue-router";
|
|
16
18
|
import { toast } from "vue3-toastify";
|
|
@@ -49,19 +51,19 @@ const DragoncoreVue = { install(_app, options) {
|
|
|
49
51
|
|
|
50
52
|
//#endregion
|
|
51
53
|
//#region src/components/AppTabNavigation.vue
|
|
52
|
-
const _hoisted_1$
|
|
53
|
-
const _hoisted_2$
|
|
54
|
-
const _hoisted_3$
|
|
55
|
-
const _hoisted_4$
|
|
54
|
+
const _hoisted_1$54 = { class: "w-full" };
|
|
55
|
+
const _hoisted_2$49 = { class: "md:hidden relative" };
|
|
56
|
+
const _hoisted_3$46 = { class: "font-medium" };
|
|
57
|
+
const _hoisted_4$39 = {
|
|
56
58
|
key: 0,
|
|
57
59
|
class: "absolute z-20 w-full bg-base-100 shadow-lg"
|
|
58
60
|
};
|
|
59
|
-
const _hoisted_5$
|
|
60
|
-
const _hoisted_6$
|
|
61
|
-
const _hoisted_7$
|
|
62
|
-
const _hoisted_8$
|
|
63
|
-
const _hoisted_9$
|
|
64
|
-
const _sfc_main$
|
|
61
|
+
const _hoisted_5$29 = ["onClick"];
|
|
62
|
+
const _hoisted_6$23 = { class: "hidden md:flex items-center overflow-x-auto" };
|
|
63
|
+
const _hoisted_7$19 = { class: "flex-1 flex" };
|
|
64
|
+
const _hoisted_8$19 = ["onClick"];
|
|
65
|
+
const _hoisted_9$18 = { class: "ml-auto shrink-0" };
|
|
66
|
+
const _sfc_main$60 = /* @__PURE__ */ defineComponent({
|
|
65
67
|
__name: "AppTabNavigation",
|
|
66
68
|
props: {
|
|
67
69
|
tabs: {},
|
|
@@ -102,13 +104,13 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
|
|
|
102
104
|
};
|
|
103
105
|
return (_ctx, _cache) => {
|
|
104
106
|
const _component_router_link = resolveComponent("router-link");
|
|
105
|
-
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Mobile-first tab navigation with responsive grid layout "), createElementVNode("div", _hoisted_1$
|
|
107
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Mobile-first tab navigation with responsive grid layout "), createElementVNode("div", _hoisted_1$54, [
|
|
106
108
|
createCommentVNode(" Mobile view: Show dropdown on small screens "),
|
|
107
|
-
createElementVNode("div", _hoisted_2$
|
|
109
|
+
createElementVNode("div", _hoisted_2$49, [
|
|
108
110
|
createElementVNode("button", {
|
|
109
111
|
onClick: _cache[0] || (_cache[0] = ($event) => isMenuOpen.value = !isMenuOpen.value),
|
|
110
112
|
class: "w-full flex items-center justify-between px-4 py-3 bg-base-100"
|
|
111
|
-
}, [createElementVNode("span", _hoisted_3$
|
|
113
|
+
}, [createElementVNode("span", _hoisted_3$46, toDisplayString(activeTabLabel.value), 1), _cache[2] || (_cache[2] = createElementVNode("svg", {
|
|
112
114
|
xmlns: "http://www.w3.org/2000/svg",
|
|
113
115
|
class: "h-5 w-5",
|
|
114
116
|
fill: "none",
|
|
@@ -121,7 +123,7 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
|
|
|
121
123
|
d: "M19 9l-7 7-7-7"
|
|
122
124
|
})], -1))]),
|
|
123
125
|
createCommentVNode(" Dropdown menu "),
|
|
124
|
-
isMenuOpen.value ? (openBlock(), createElementBlock("div", _hoisted_4$
|
|
126
|
+
isMenuOpen.value ? (openBlock(), createElementBlock("div", _hoisted_4$39, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab, index) => {
|
|
125
127
|
return openBlock(), createElementBlock(Fragment, { key: index }, [tab.to ? (openBlock(), createBlock(_component_router_link, {
|
|
126
128
|
key: 0,
|
|
127
129
|
to: tab.to,
|
|
@@ -134,12 +136,12 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
|
|
|
134
136
|
key: 1,
|
|
135
137
|
onClick: ($event) => handleTabClick(tab.id),
|
|
136
138
|
class: normalizeClass(["block w-full text-left px-4 py-3 hover:bg-base-200", [__props.activeTab === tab.id ? "text-primary font-medium" : "text-base-content/70"]])
|
|
137
|
-
}, toDisplayString(tab.label), 11, _hoisted_5$
|
|
139
|
+
}, toDisplayString(tab.label), 11, _hoisted_5$29))], 64);
|
|
138
140
|
}), 128))])) : createCommentVNode("v-if", true)
|
|
139
141
|
]),
|
|
140
142
|
createCommentVNode(" Desktop view: Show horizontal tabs on medium screens and up "),
|
|
141
|
-
createElementVNode("div", _hoisted_6$
|
|
142
|
-
createElementVNode("div", _hoisted_7$
|
|
143
|
+
createElementVNode("div", _hoisted_6$23, [
|
|
144
|
+
createElementVNode("div", _hoisted_7$19, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab, index) => {
|
|
143
145
|
return openBlock(), createElementBlock(Fragment, { key: index }, [tab.to ? (openBlock(), createBlock(_component_router_link, {
|
|
144
146
|
key: 0,
|
|
145
147
|
to: tab.to,
|
|
@@ -151,26 +153,26 @@ const _sfc_main$64 = /* @__PURE__ */ defineComponent({
|
|
|
151
153
|
key: 1,
|
|
152
154
|
onClick: ($event) => handleTabClick(tab.id),
|
|
153
155
|
class: normalizeClass(["px-4 py-3 border-b-2 whitespace-nowrap flex items-center", [__props.activeTab === tab.id ? "font-medium text-primary border-primary" : "border-transparent hover:border-base-300 text-base-content/70 hover:text-base-content"]])
|
|
154
|
-
}, [renderSlot(_ctx.$slots, `icon-${tab.id}`), createElementVNode("span", null, toDisplayString(tab.label), 1)], 10, _hoisted_8$
|
|
156
|
+
}, [renderSlot(_ctx.$slots, `icon-${tab.id}`), createElementVNode("span", null, toDisplayString(tab.label), 1)], 10, _hoisted_8$19))], 64);
|
|
155
157
|
}), 128))]),
|
|
156
158
|
createCommentVNode(" Optional slot for additional content "),
|
|
157
|
-
createElementVNode("div", _hoisted_9$
|
|
159
|
+
createElementVNode("div", _hoisted_9$18, [renderSlot(_ctx.$slots, "actions")])
|
|
158
160
|
])
|
|
159
161
|
])], 2112);
|
|
160
162
|
};
|
|
161
163
|
}
|
|
162
164
|
});
|
|
163
|
-
var AppTabNavigation_default = _sfc_main$
|
|
165
|
+
var AppTabNavigation_default = _sfc_main$60;
|
|
164
166
|
|
|
165
167
|
//#endregion
|
|
166
168
|
//#region src/components/AppHeader.vue
|
|
167
|
-
const _hoisted_1$
|
|
168
|
-
const _hoisted_2$
|
|
169
|
+
const _hoisted_1$53 = { class: "bg-base-100 border-b border-base-300 z-10 w-full" };
|
|
170
|
+
const _hoisted_2$48 = {
|
|
169
171
|
key: 0,
|
|
170
172
|
class: "w-full"
|
|
171
173
|
};
|
|
172
|
-
const _hoisted_3$
|
|
173
|
-
const _sfc_main$
|
|
174
|
+
const _hoisted_3$45 = { class: "max-w-7xl mx-auto px-3 sm:px-4 md:px-6" };
|
|
175
|
+
const _sfc_main$59 = /* @__PURE__ */ defineComponent({
|
|
174
176
|
__name: "AppHeader",
|
|
175
177
|
props: {
|
|
176
178
|
tabs: {},
|
|
@@ -179,9 +181,9 @@ const _sfc_main$63 = /* @__PURE__ */ defineComponent({
|
|
|
179
181
|
emits: ["tab-click"],
|
|
180
182
|
setup(__props) {
|
|
181
183
|
return (_ctx, _cache) => {
|
|
182
|
-
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Full-width background with constrained content "), createElementVNode("div", _hoisted_1$
|
|
184
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Full-width background with constrained content "), createElementVNode("div", _hoisted_1$53, [
|
|
183
185
|
createCommentVNode(" Tab navigation - only shown when tabs are provided "),
|
|
184
|
-
__props.tabs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
186
|
+
__props.tabs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$48, [createElementVNode("div", _hoisted_3$45, [createVNode(AppTabNavigation_default, {
|
|
185
187
|
tabs: __props.tabs,
|
|
186
188
|
"active-tab": __props.activeTab,
|
|
187
189
|
onTabClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("tab-click", $event))
|
|
@@ -200,19 +202,19 @@ const _sfc_main$63 = /* @__PURE__ */ defineComponent({
|
|
|
200
202
|
};
|
|
201
203
|
}
|
|
202
204
|
});
|
|
203
|
-
var AppHeader_default = _sfc_main$
|
|
205
|
+
var AppHeader_default = _sfc_main$59;
|
|
204
206
|
|
|
205
207
|
//#endregion
|
|
206
208
|
//#region src/components/BaseModal.vue
|
|
207
|
-
const _hoisted_1$
|
|
208
|
-
const _hoisted_2$
|
|
209
|
-
const _hoisted_3$
|
|
210
|
-
const _hoisted_4$
|
|
211
|
-
const _hoisted_5$
|
|
209
|
+
const _hoisted_1$52 = { class: "modal-box max-w-md w-full max-h-[90vh] flex flex-col p-0" };
|
|
210
|
+
const _hoisted_2$47 = { class: "flex justify-between items-center p-6 pb-4 border-b border-base-300 flex-shrink-0" };
|
|
211
|
+
const _hoisted_3$44 = { class: "font-bold text-lg" };
|
|
212
|
+
const _hoisted_4$38 = { class: "modal-content flex-1 overflow-y-auto p-6" };
|
|
213
|
+
const _hoisted_5$28 = {
|
|
212
214
|
method: "dialog",
|
|
213
215
|
class: "modal-backdrop"
|
|
214
216
|
};
|
|
215
|
-
const _sfc_main$
|
|
217
|
+
const _sfc_main$58 = /* @__PURE__ */ defineComponent({
|
|
216
218
|
__name: "BaseModal",
|
|
217
219
|
props: {
|
|
218
220
|
isOpen: { type: Boolean },
|
|
@@ -235,9 +237,9 @@ const _sfc_main$62 = /* @__PURE__ */ defineComponent({
|
|
|
235
237
|
ref_key: "modal",
|
|
236
238
|
ref: modal,
|
|
237
239
|
class: "modal"
|
|
238
|
-
}, [createElementVNode("div", _hoisted_1$
|
|
240
|
+
}, [createElementVNode("div", _hoisted_1$52, [
|
|
239
241
|
createCommentVNode(" Header with title and close button - fixed, not scrollable "),
|
|
240
|
-
createElementVNode("div", _hoisted_2$
|
|
242
|
+
createElementVNode("div", _hoisted_2$47, [createElementVNode("h3", _hoisted_3$44, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]), createElementVNode("button", {
|
|
241
243
|
type: "button",
|
|
242
244
|
class: "btn btn-sm btn-circle btn-ghost",
|
|
243
245
|
onClick: withModifiers(handleClose, ["prevent"]),
|
|
@@ -255,34 +257,34 @@ const _sfc_main$62 = /* @__PURE__ */ defineComponent({
|
|
|
255
257
|
d: "M6 18L18 6M6 6l12 12"
|
|
256
258
|
})], -1)])])]),
|
|
257
259
|
createCommentVNode(" Content slot - scrollable area "),
|
|
258
|
-
createElementVNode("div", _hoisted_4$
|
|
259
|
-
]), createElementVNode("form", _hoisted_5$
|
|
260
|
+
createElementVNode("div", _hoisted_4$38, [renderSlot(_ctx.$slots, "default")])
|
|
261
|
+
]), createElementVNode("form", _hoisted_5$28, [createElementVNode("button", {
|
|
260
262
|
type: "button",
|
|
261
263
|
onClick: withModifiers(handleClose, ["prevent"])
|
|
262
264
|
}, "close")])], 512);
|
|
263
265
|
};
|
|
264
266
|
}
|
|
265
267
|
});
|
|
266
|
-
var BaseModal_default = _sfc_main$
|
|
268
|
+
var BaseModal_default = _sfc_main$58;
|
|
267
269
|
|
|
268
270
|
//#endregion
|
|
269
271
|
//#region src/components/InputModal.vue
|
|
270
|
-
const _hoisted_1$
|
|
271
|
-
const _hoisted_2$
|
|
272
|
-
const _hoisted_3$
|
|
273
|
-
const _hoisted_4$
|
|
274
|
-
const _hoisted_5$
|
|
275
|
-
const _hoisted_6$
|
|
276
|
-
const _hoisted_7$
|
|
277
|
-
const _hoisted_8$
|
|
272
|
+
const _hoisted_1$51 = { class: "modal-box" };
|
|
273
|
+
const _hoisted_2$46 = { class: "font-bold text-lg" };
|
|
274
|
+
const _hoisted_3$43 = { class: "py-4" };
|
|
275
|
+
const _hoisted_4$37 = { class: "form-control w-full" };
|
|
276
|
+
const _hoisted_5$27 = { class: "label" };
|
|
277
|
+
const _hoisted_6$22 = { class: "label-text" };
|
|
278
|
+
const _hoisted_7$18 = ["placeholder"];
|
|
279
|
+
const _hoisted_8$18 = {
|
|
278
280
|
key: 0,
|
|
279
281
|
class: "label"
|
|
280
282
|
};
|
|
281
|
-
const _hoisted_9$
|
|
282
|
-
const _hoisted_10$
|
|
283
|
-
const _hoisted_11$
|
|
284
|
-
const _hoisted_12$
|
|
285
|
-
const _sfc_main$
|
|
283
|
+
const _hoisted_9$17 = { class: "label-text-alt text-error" };
|
|
284
|
+
const _hoisted_10$14 = { class: "modal-action" };
|
|
285
|
+
const _hoisted_11$13 = ["disabled"];
|
|
286
|
+
const _hoisted_12$11 = ["disabled"];
|
|
287
|
+
const _sfc_main$57 = /* @__PURE__ */ defineComponent({
|
|
286
288
|
__name: "InputModal",
|
|
287
289
|
props: {
|
|
288
290
|
modelValue: { type: Boolean },
|
|
@@ -332,10 +334,10 @@ const _sfc_main$61 = /* @__PURE__ */ defineComponent({
|
|
|
332
334
|
inputValue.value = "";
|
|
333
335
|
};
|
|
334
336
|
return (_ctx, _cache) => {
|
|
335
|
-
return openBlock(), createElementBlock("div", { class: normalizeClass(["modal", { "modal-open": __props.modelValue }]) }, [createElementVNode("div", _hoisted_1$
|
|
336
|
-
createElementVNode("h3", _hoisted_2$
|
|
337
|
-
createElementVNode("div", _hoisted_3$
|
|
338
|
-
createElementVNode("div", _hoisted_5$
|
|
337
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass(["modal", { "modal-open": __props.modelValue }]) }, [createElementVNode("div", _hoisted_1$51, [
|
|
338
|
+
createElementVNode("h3", _hoisted_2$46, toDisplayString(__props.title), 1),
|
|
339
|
+
createElementVNode("div", _hoisted_3$43, [createElementVNode("label", _hoisted_4$37, [
|
|
340
|
+
createElementVNode("div", _hoisted_5$27, [createElementVNode("span", _hoisted_6$22, toDisplayString(__props.label), 1)]),
|
|
339
341
|
withDirectives(createElementVNode("input", {
|
|
340
342
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => inputValue.value = $event),
|
|
341
343
|
type: "text",
|
|
@@ -344,18 +346,18 @@ const _sfc_main$61 = /* @__PURE__ */ defineComponent({
|
|
|
344
346
|
onKeyup: [withKeys(handleConfirm, ["enter"]), withKeys(handleCancel, ["escape"])],
|
|
345
347
|
ref_key: "inputRef",
|
|
346
348
|
ref: inputRef
|
|
347
|
-
}, null, 40, _hoisted_7$
|
|
348
|
-
__props.error ? (openBlock(), createElementBlock("div", _hoisted_8$
|
|
349
|
+
}, null, 40, _hoisted_7$18), [[vModelText, inputValue.value]]),
|
|
350
|
+
__props.error ? (openBlock(), createElementBlock("div", _hoisted_8$18, [createElementVNode("span", _hoisted_9$17, toDisplayString(__props.error), 1)])) : createCommentVNode("v-if", true)
|
|
349
351
|
])]),
|
|
350
|
-
createElementVNode("div", _hoisted_10$
|
|
352
|
+
createElementVNode("div", _hoisted_10$14, [createElementVNode("button", {
|
|
351
353
|
class: "btn",
|
|
352
354
|
onClick: handleCancel,
|
|
353
355
|
disabled: __props.isProcessing
|
|
354
|
-
}, toDisplayString(__props.cancelText), 9, _hoisted_11$
|
|
356
|
+
}, toDisplayString(__props.cancelText), 9, _hoisted_11$13), createElementVNode("button", {
|
|
355
357
|
class: normalizeClass(["btn", __props.confirmButtonClass]),
|
|
356
358
|
onClick: handleConfirm,
|
|
357
359
|
disabled: !inputValue.value || inputValue.value.trim() === "" || __props.isProcessing
|
|
358
|
-
}, toDisplayString(__props.isProcessing ? __props.processingText : __props.confirmText), 11, _hoisted_12$
|
|
360
|
+
}, toDisplayString(__props.isProcessing ? __props.processingText : __props.confirmText), 11, _hoisted_12$11)])
|
|
359
361
|
]), createElementVNode("div", {
|
|
360
362
|
class: "modal-backdrop",
|
|
361
363
|
onClick: handleCancel
|
|
@@ -363,11 +365,11 @@ const _sfc_main$61 = /* @__PURE__ */ defineComponent({
|
|
|
363
365
|
};
|
|
364
366
|
}
|
|
365
367
|
});
|
|
366
|
-
var InputModal_default = _sfc_main$
|
|
368
|
+
var InputModal_default = _sfc_main$57;
|
|
367
369
|
|
|
368
370
|
//#endregion
|
|
369
371
|
//#region src/components/LoginButton.vue
|
|
370
|
-
const _sfc_main$
|
|
372
|
+
const _sfc_main$56 = {};
|
|
371
373
|
function _sfc_render(_ctx, _cache) {
|
|
372
374
|
const _component_router_link = resolveComponent("router-link");
|
|
373
375
|
return openBlock(), createBlock(_component_router_link, { to: "/auth/login" }, {
|
|
@@ -375,11 +377,11 @@ function _sfc_render(_ctx, _cache) {
|
|
|
375
377
|
_: 1
|
|
376
378
|
});
|
|
377
379
|
}
|
|
378
|
-
var LoginButton_default = /* @__PURE__ */ export_helper_default(_sfc_main$
|
|
380
|
+
var LoginButton_default = /* @__PURE__ */ export_helper_default(_sfc_main$56, [["render", _sfc_render]]);
|
|
379
381
|
|
|
380
382
|
//#endregion
|
|
381
383
|
//#region src/components/ui/LogoPlaceholder.vue
|
|
382
|
-
const _sfc_main$
|
|
384
|
+
const _sfc_main$55 = /* @__PURE__ */ defineComponent({
|
|
383
385
|
__name: "LogoPlaceholder",
|
|
384
386
|
props: { size: { default: "md" } },
|
|
385
387
|
setup(__props) {
|
|
@@ -388,52 +390,52 @@ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
|
|
|
388
390
|
};
|
|
389
391
|
}
|
|
390
392
|
});
|
|
391
|
-
var LogoPlaceholder_default = _sfc_main$
|
|
393
|
+
var LogoPlaceholder_default = _sfc_main$55;
|
|
392
394
|
|
|
393
395
|
//#endregion
|
|
394
396
|
//#region src/components/Navbar.vue
|
|
395
|
-
const _hoisted_1$
|
|
396
|
-
const _hoisted_2$
|
|
397
|
-
const _hoisted_3$
|
|
398
|
-
const _hoisted_4$
|
|
399
|
-
const _hoisted_5$
|
|
400
|
-
const _hoisted_6$
|
|
401
|
-
const _hoisted_7$
|
|
397
|
+
const _hoisted_1$50 = { class: "sticky top-0 flex h-16 w-full justify-center border-b-2 border-solid border-b-base-300 bg-base-200 bg-opacity-90 text-base-content shadow-xs z-10" };
|
|
398
|
+
const _hoisted_2$45 = { class: "navbar w-full" };
|
|
399
|
+
const _hoisted_3$42 = { class: "flex flex-1 md:gap-1 lg:gap-2" };
|
|
400
|
+
const _hoisted_4$36 = { class: "items-center gap-2 flex" };
|
|
401
|
+
const _hoisted_5$26 = { class: "font-title inline-flex text-lg text-primary transition-all duration-200 md:text-3xl" };
|
|
402
|
+
const _hoisted_6$21 = ["src"];
|
|
403
|
+
const _hoisted_7$17 = {
|
|
402
404
|
key: 0,
|
|
403
405
|
class: "hidden md:flex items-center ml-4"
|
|
404
406
|
};
|
|
405
|
-
const _hoisted_8$
|
|
406
|
-
const _hoisted_9$
|
|
407
|
+
const _hoisted_8$17 = { class: "text-sm text-base-content/70 flex items-center gap-2" };
|
|
408
|
+
const _hoisted_9$16 = {
|
|
407
409
|
key: 0,
|
|
408
410
|
class: "loading loading-spinner loading-xs"
|
|
409
411
|
};
|
|
410
|
-
const _hoisted_10$
|
|
411
|
-
const _hoisted_11$
|
|
412
|
+
const _hoisted_10$13 = { class: "font-medium" };
|
|
413
|
+
const _hoisted_11$12 = {
|
|
412
414
|
key: 2,
|
|
413
415
|
class: "text-base-content/50"
|
|
414
416
|
};
|
|
415
|
-
const _hoisted_12$
|
|
417
|
+
const _hoisted_12$10 = {
|
|
416
418
|
key: 1,
|
|
417
419
|
class: "flex md:hidden flex-col justify-center ml-2 leading-tight"
|
|
418
420
|
};
|
|
419
|
-
const _hoisted_13$
|
|
420
|
-
const _hoisted_14$
|
|
421
|
+
const _hoisted_13$8 = { class: "font-medium text-sm truncate max-w-[150px]" };
|
|
422
|
+
const _hoisted_14$7 = {
|
|
421
423
|
key: 0,
|
|
422
424
|
class: "loading loading-spinner loading-xs"
|
|
423
425
|
};
|
|
424
|
-
const _hoisted_15$
|
|
425
|
-
const _hoisted_16$
|
|
426
|
+
const _hoisted_15$6 = { class: "flex-none gap-2" };
|
|
427
|
+
const _hoisted_16$6 = {
|
|
426
428
|
key: 0,
|
|
427
429
|
class: "loading btn-primary btn"
|
|
428
430
|
};
|
|
429
|
-
const _hoisted_17$
|
|
431
|
+
const _hoisted_17$5 = {
|
|
430
432
|
key: 1,
|
|
431
433
|
for: "my-drawer-4",
|
|
432
434
|
tabindex: "0",
|
|
433
435
|
class: "btn-ghost btn-circle avatar btn placeholder",
|
|
434
436
|
id: "right-nav-label"
|
|
435
437
|
};
|
|
436
|
-
const _sfc_main$
|
|
438
|
+
const _sfc_main$54 = /* @__PURE__ */ defineComponent({
|
|
437
439
|
__name: "Navbar",
|
|
438
440
|
props: {
|
|
439
441
|
breadcrumbs: {},
|
|
@@ -447,7 +449,7 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
|
|
|
447
449
|
loading.value = false;
|
|
448
450
|
return (_ctx, _cache) => {
|
|
449
451
|
const _component_router_link = resolveComponent("router-link");
|
|
450
|
-
return openBlock(), createElementBlock("header", _hoisted_1$
|
|
452
|
+
return openBlock(), createElementBlock("header", _hoisted_1$50, [createElementVNode("nav", _hoisted_2$45, [createElementVNode("div", _hoisted_3$42, [_cache[3] || (_cache[3] = createElementVNode("label", {
|
|
451
453
|
for: "drawer",
|
|
452
454
|
class: "btn-ghost drawer-button btn-square btn"
|
|
453
455
|
}, [createElementVNode("svg", {
|
|
@@ -461,13 +463,13 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
|
|
|
461
463
|
"stroke-linecap": "round",
|
|
462
464
|
"stroke-linejoin": "round",
|
|
463
465
|
d: "M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"
|
|
464
|
-
})])], -1)), createElementVNode("div", _hoisted_4$
|
|
466
|
+
})])], -1)), createElementVNode("div", _hoisted_4$36, [
|
|
465
467
|
createVNode(AppLink_default, {
|
|
466
468
|
to: "/",
|
|
467
469
|
"aria-current": "page",
|
|
468
470
|
"aria-label": "Homepage"
|
|
469
471
|
}, {
|
|
470
|
-
default: withCtx(() => [createElementVNode("div", _hoisted_5$
|
|
472
|
+
default: withCtx(() => [createElementVNode("div", _hoisted_5$26, [!__props.logoSrc || imageLoadFailed.value ? (openBlock(), createBlock(LogoPlaceholder_default, {
|
|
471
473
|
key: 0,
|
|
472
474
|
size: "xs"
|
|
473
475
|
})) : (openBlock(), createElementBlock("img", {
|
|
@@ -476,11 +478,11 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
|
|
|
476
478
|
alt: "logo",
|
|
477
479
|
class: "h-10 w-10 md:h-12 md:w-12",
|
|
478
480
|
onError: _cache[0] || (_cache[0] = ($event) => imageLoadFailed.value = true)
|
|
479
|
-
}, null, 40, _hoisted_6$
|
|
481
|
+
}, null, 40, _hoisted_6$21))])]),
|
|
480
482
|
_: 1
|
|
481
483
|
}),
|
|
482
484
|
createCommentVNode(" Breadcrumbs in navbar - Desktop view "),
|
|
483
|
-
__props.breadcrumbs && __props.breadcrumbs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_7$
|
|
485
|
+
__props.breadcrumbs && __props.breadcrumbs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_7$17, [createElementVNode("div", _hoisted_8$17, [
|
|
484
486
|
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.breadcrumbs, (crumb, index) => {
|
|
485
487
|
return openBlock(), createElementBlock(Fragment, { key: index }, [
|
|
486
488
|
createCommentVNode(" Link for all but the last item "),
|
|
@@ -494,17 +496,17 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
|
|
|
494
496
|
}, 1032, ["to"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
495
497
|
createCommentVNode(" Current page (not a link) "),
|
|
496
498
|
createCommentVNode(" Show loading spinner if explicitly loading "),
|
|
497
|
-
crumb.loading ? (openBlock(), createElementBlock("span", _hoisted_9$
|
|
499
|
+
crumb.loading ? (openBlock(), createElementBlock("span", _hoisted_9$16)) : crumb.label ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Show label if provided "), createElementVNode("span", _hoisted_10$13, toDisplayString(crumb.label), 1)], 2112)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [createCommentVNode(" Fallback if neither loading nor label "), _cache[1] || (_cache[1] = createElementVNode("span", { class: "font-medium text-base-content/50" }, "...", -1))], 2112))
|
|
498
500
|
], 64)),
|
|
499
501
|
createCommentVNode(" Separator between items "),
|
|
500
|
-
index < __props.breadcrumbs.length - 1 ? (openBlock(), createElementBlock("span", _hoisted_11$
|
|
502
|
+
index < __props.breadcrumbs.length - 1 ? (openBlock(), createElementBlock("span", _hoisted_11$12, "/")) : createCommentVNode("v-if", true)
|
|
501
503
|
], 64);
|
|
502
504
|
}), 128)),
|
|
503
505
|
createCommentVNode(" Optional status badge "),
|
|
504
506
|
renderSlot(_ctx.$slots, "status")
|
|
505
507
|
])])) : createCommentVNode("v-if", true),
|
|
506
508
|
createCommentVNode(" Breadcrumbs in navbar - Mobile view (GitHub style) "),
|
|
507
|
-
__props.breadcrumbs && __props.breadcrumbs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_12$
|
|
509
|
+
__props.breadcrumbs && __props.breadcrumbs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_12$10, [
|
|
508
510
|
createCommentVNode(" Parent/previous breadcrumb (if exists) "),
|
|
509
511
|
__props.breadcrumbs.length > 1 && __props.breadcrumbs[__props.breadcrumbs.length - 2] ? (openBlock(), createBlock(_component_router_link, {
|
|
510
512
|
key: 0,
|
|
@@ -515,22 +517,22 @@ const _sfc_main$58 = /* @__PURE__ */ defineComponent({
|
|
|
515
517
|
_: 1
|
|
516
518
|
}, 8, ["to"])) : createCommentVNode("v-if", true),
|
|
517
519
|
createCommentVNode(" Current page (last breadcrumb) "),
|
|
518
|
-
createElementVNode("div", _hoisted_13$
|
|
520
|
+
createElementVNode("div", _hoisted_13$8, [createCommentVNode(" Show loading spinner if explicitly loading "), __props.breadcrumbs[__props.breadcrumbs.length - 1]?.loading ? (openBlock(), createElementBlock("span", _hoisted_14$7)) : __props.breadcrumbs[__props.breadcrumbs.length - 1]?.label ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Show label if provided "), createTextVNode(toDisplayString(__props.breadcrumbs[__props.breadcrumbs.length - 1].label), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [createCommentVNode(" Fallback "), _cache[2] || (_cache[2] = createElementVNode("span", { class: "text-base-content/50" }, "...", -1))], 2112))]),
|
|
519
521
|
createCommentVNode(" Optional status badge "),
|
|
520
522
|
renderSlot(_ctx.$slots, "mobile-status")
|
|
521
523
|
])) : createCommentVNode("v-if", true)
|
|
522
|
-
])]), createElementVNode("div", _hoisted_15$
|
|
524
|
+
])]), createElementVNode("div", _hoisted_15$6, [_cache[5] || (_cache[5] = createElementVNode("div", { class: "form-control hidden sm:flex" }, [createCommentVNode(" <input\n type=\"text\"\n placeholder=\"Search\"\n class=\"input-bordered input input-sm\"\n /> ")], -1)), loading.value ? (openBlock(), createElementBlock("button", _hoisted_16$6)) : unref(user).currentSession ? (openBlock(), createElementBlock("label", _hoisted_17$5, [..._cache[4] || (_cache[4] = [createElementVNode("div", { class: "bg-neutral-focus text-neutral-content w-10 rounded-full" }, [createElementVNode("span", null, "U")], -1)])])) : (openBlock(), createBlock(LoginButton_default, { key: 2 }))])])]);
|
|
523
525
|
};
|
|
524
526
|
}
|
|
525
527
|
});
|
|
526
|
-
var Navbar_default = _sfc_main$
|
|
528
|
+
var Navbar_default = _sfc_main$54;
|
|
527
529
|
|
|
528
530
|
//#endregion
|
|
529
531
|
//#region src/components/NotFound.vue
|
|
530
|
-
const _hoisted_1$
|
|
531
|
-
const _hoisted_2$
|
|
532
|
-
const _hoisted_3$
|
|
533
|
-
const _sfc_main$
|
|
532
|
+
const _hoisted_1$49 = { class: "flex items-center justify-center bg-base-100 mt-4" };
|
|
533
|
+
const _hoisted_2$44 = { class: "max-w-md mx-auto text-center px-4" };
|
|
534
|
+
const _hoisted_3$41 = { class: "flex flex-col sm:flex-row gap-4 justify-center" };
|
|
535
|
+
const _sfc_main$53 = /* @__PURE__ */ defineComponent({
|
|
534
536
|
__name: "NotFound",
|
|
535
537
|
setup(__props) {
|
|
536
538
|
const router = useRouter();
|
|
@@ -540,11 +542,11 @@ const _sfc_main$57 = /* @__PURE__ */ defineComponent({
|
|
|
540
542
|
};
|
|
541
543
|
return (_ctx, _cache) => {
|
|
542
544
|
const _component_router_link = resolveComponent("router-link");
|
|
543
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
545
|
+
return openBlock(), createElementBlock("div", _hoisted_1$49, [createElementVNode("div", _hoisted_2$44, [_cache[1] || (_cache[1] = createElementVNode("div", { class: "mb-8" }, [
|
|
544
546
|
createElementVNode("h1", { class: "text-9xl font-bold text-primary mb-4" }, "404"),
|
|
545
547
|
createElementVNode("h2", { class: "text-3xl font-bold mb-4" }, "Page Not Found"),
|
|
546
548
|
createElementVNode("p", { class: "text-base-content/70 mb-8" }, " Sorry, we couldn't find the page you're looking for. The page may have been moved, deleted, or the URL might be incorrect. ")
|
|
547
|
-
], -1)), createElementVNode("div", _hoisted_3$
|
|
549
|
+
], -1)), createElementVNode("div", _hoisted_3$41, [createVNode(_component_router_link, {
|
|
548
550
|
to: { name: "Home" },
|
|
549
551
|
class: "btn btn-primary"
|
|
550
552
|
}, {
|
|
@@ -557,15 +559,15 @@ const _sfc_main$57 = /* @__PURE__ */ defineComponent({
|
|
|
557
559
|
};
|
|
558
560
|
}
|
|
559
561
|
});
|
|
560
|
-
var NotFound_default = _sfc_main$
|
|
562
|
+
var NotFound_default = _sfc_main$53;
|
|
561
563
|
|
|
562
564
|
//#endregion
|
|
563
565
|
//#region src/components/RightSidebar.vue
|
|
564
|
-
const _hoisted_1$
|
|
565
|
-
const _hoisted_2$
|
|
566
|
-
const _hoisted_3$
|
|
567
|
-
const _hoisted_4$
|
|
568
|
-
const _sfc_main$
|
|
566
|
+
const _hoisted_1$48 = { class: "drawer-side z-50" };
|
|
567
|
+
const _hoisted_2$43 = { class: "menu p-3 w-80 h-full bg-base-200 text-base-content" };
|
|
568
|
+
const _hoisted_3$40 = { class: "flex pb-2" };
|
|
569
|
+
const _hoisted_4$35 = { class: "pl-3" };
|
|
570
|
+
const _sfc_main$52 = /* @__PURE__ */ defineComponent({
|
|
569
571
|
__name: "RightSidebar",
|
|
570
572
|
props: { logoutReturnUrl: { default: "/" } },
|
|
571
573
|
setup(__props) {
|
|
@@ -586,13 +588,13 @@ const _sfc_main$56 = /* @__PURE__ */ defineComponent({
|
|
|
586
588
|
type: "checkbox",
|
|
587
589
|
class: "drawer-toggle",
|
|
588
590
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(checked) ? checked.value = $event : checked = $event)
|
|
589
|
-
}, null, 512), [[vModelCheckbox, unref(checked)]]), createElementVNode("div", _hoisted_1$
|
|
591
|
+
}, null, 512), [[vModelCheckbox, unref(checked)]]), createElementVNode("div", _hoisted_1$48, [_cache[7] || (_cache[7] = createElementVNode("label", {
|
|
590
592
|
for: "my-drawer-4",
|
|
591
593
|
class: "drawer-overlay"
|
|
592
|
-
}, null, -1)), createElementVNode("ul", _hoisted_2$
|
|
593
|
-
createElementVNode("div", _hoisted_3$
|
|
594
|
+
}, null, -1)), createElementVNode("ul", _hoisted_2$43, [
|
|
595
|
+
createElementVNode("div", _hoisted_3$40, [
|
|
594
596
|
_cache[1] || (_cache[1] = createElementVNode("div", { class: "avatar placeholder" }, [createElementVNode("div", { class: "bg-neutral-focus text-neutral-content w-10 h-10 rounded-full" }, [createElementVNode("span", null, "U")])], -1)),
|
|
595
|
-
createElementVNode("label", _hoisted_4$
|
|
597
|
+
createElementVNode("label", _hoisted_4$35, toDisplayString(unref(userSession).currentSession?.user?.username), 1),
|
|
596
598
|
_cache[2] || (_cache[2] = createElementVNode("div", { class: "grow" }, null, -1)),
|
|
597
599
|
_cache[3] || (_cache[3] = createElementVNode("label", {
|
|
598
600
|
for: "my-drawer-4",
|
|
@@ -612,7 +614,7 @@ const _sfc_main$56 = /* @__PURE__ */ defineComponent({
|
|
|
612
614
|
};
|
|
613
615
|
}
|
|
614
616
|
});
|
|
615
|
-
var RightSidebar_default = _sfc_main$
|
|
617
|
+
var RightSidebar_default = _sfc_main$52;
|
|
616
618
|
|
|
617
619
|
//#endregion
|
|
618
620
|
//#region src/composables/useBuildTag.ts
|
|
@@ -709,7 +711,7 @@ function useInjectedPinnedPresets() {
|
|
|
709
711
|
|
|
710
712
|
//#endregion
|
|
711
713
|
//#region src/components/Sidebar.vue
|
|
712
|
-
const _hoisted_1$
|
|
714
|
+
const _hoisted_1$47 = {
|
|
713
715
|
class: "drawer-side z-50",
|
|
714
716
|
style: {
|
|
715
717
|
"scroll-behavior": "smooth",
|
|
@@ -717,20 +719,20 @@ const _hoisted_1$51 = {
|
|
|
717
719
|
},
|
|
718
720
|
ref: "drawersidebar"
|
|
719
721
|
};
|
|
720
|
-
const _hoisted_2$
|
|
721
|
-
const _hoisted_3$
|
|
722
|
-
const _hoisted_4$
|
|
723
|
-
const _hoisted_5$
|
|
724
|
-
const _hoisted_6$
|
|
725
|
-
const _hoisted_7$
|
|
726
|
-
const _hoisted_8$
|
|
722
|
+
const _hoisted_2$42 = { class: "w-80 bg-base-200 h-full flex flex-col" };
|
|
723
|
+
const _hoisted_3$39 = { class: "flex-1 overflow-y-auto overflow-x-hidden min-h-0" };
|
|
724
|
+
const _hoisted_4$34 = { class: "menu p-3 w-full text-base-content" };
|
|
725
|
+
const _hoisted_5$25 = { class: "flex" };
|
|
726
|
+
const _hoisted_6$20 = { class: "font-title inline-flex text-2xl text-primary transition-all duration-200" };
|
|
727
|
+
const _hoisted_7$16 = ["src"];
|
|
728
|
+
const _hoisted_8$16 = {
|
|
727
729
|
key: 0,
|
|
728
730
|
class: "w-full"
|
|
729
731
|
};
|
|
730
|
-
const _hoisted_9$
|
|
731
|
-
const _hoisted_10$
|
|
732
|
-
const _hoisted_11$
|
|
733
|
-
const _sfc_main$
|
|
732
|
+
const _hoisted_9$15 = { class: "menu-title" };
|
|
733
|
+
const _hoisted_10$12 = { class: "flex flex-col items-center justify-center w-full h-16" };
|
|
734
|
+
const _hoisted_11$11 = { class: "text-xs text-neutral-500" };
|
|
735
|
+
const _sfc_main$51 = /* @__PURE__ */ defineComponent({
|
|
734
736
|
__name: "Sidebar",
|
|
735
737
|
props: { logoSrc: {} },
|
|
736
738
|
setup(__props) {
|
|
@@ -771,12 +773,12 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
|
|
|
771
773
|
}
|
|
772
774
|
return (_ctx, _cache) => {
|
|
773
775
|
const _component_router_link = resolveComponent("router-link");
|
|
774
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
776
|
+
return openBlock(), createElementBlock("div", _hoisted_1$47, [_cache[3] || (_cache[3] = createElementVNode("label", {
|
|
775
777
|
for: "drawer",
|
|
776
778
|
class: "drawer-overlay"
|
|
777
|
-
}, null, -1)), createElementVNode("aside", _hoisted_2$
|
|
778
|
-
createElementVNode("div", _hoisted_5$
|
|
779
|
-
createElementVNode("div", _hoisted_6$
|
|
779
|
+
}, null, -1)), createElementVNode("aside", _hoisted_2$42, [createElementVNode("div", _hoisted_3$39, [createElementVNode("ul", _hoisted_4$34, [
|
|
780
|
+
createElementVNode("div", _hoisted_5$25, [
|
|
781
|
+
createElementVNode("div", _hoisted_6$20, [renderSlot(_ctx.$slots, "logo", {}, () => [!__props.logoSrc || imageLoadFailed.value ? (openBlock(), createBlock(LogoPlaceholder_default, {
|
|
780
782
|
key: 0,
|
|
781
783
|
size: "sm"
|
|
782
784
|
})) : (openBlock(), createElementBlock("img", {
|
|
@@ -785,7 +787,7 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
|
|
|
785
787
|
alt: "logo",
|
|
786
788
|
class: "h-12",
|
|
787
789
|
onError: _cache[0] || (_cache[0] = ($event) => imageLoadFailed.value = true)
|
|
788
|
-
}, null, 40, _hoisted_7$
|
|
790
|
+
}, null, 40, _hoisted_7$16))])]),
|
|
789
791
|
_cache[1] || (_cache[1] = createElementVNode("div", { class: "grow" }, null, -1)),
|
|
790
792
|
createElementVNode("label", {
|
|
791
793
|
for: "drawer",
|
|
@@ -795,7 +797,7 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
|
|
|
795
797
|
}, " X ", 512)
|
|
796
798
|
]),
|
|
797
799
|
createCommentVNode(" Favorites section (pinned presets) at top "),
|
|
798
|
-
unref(pinnedPresets).pinned.value.length > 0 ? (openBlock(), createElementBlock("li", _hoisted_8$
|
|
800
|
+
unref(pinnedPresets).pinned.value.length > 0 ? (openBlock(), createElementBlock("li", _hoisted_8$16, [_cache[2] || (_cache[2] = createElementVNode("div", { class: "menu-title" }, [createElementVNode("span", null, "FAVORITES")], -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(pinnedPresets).pinned.value, (preset) => {
|
|
799
801
|
return openBlock(), createBlock(_component_router_link, {
|
|
800
802
|
key: preset.id,
|
|
801
803
|
to: unref(pinnedPresets).getPresetLink(preset),
|
|
@@ -810,7 +812,7 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
|
|
|
810
812
|
return openBlock(), createElementBlock("li", {
|
|
811
813
|
key: section,
|
|
812
814
|
class: "w-full"
|
|
813
|
-
}, [createElementVNode("div", _hoisted_9$
|
|
815
|
+
}, [createElementVNode("div", _hoisted_9$15, [createElementVNode("span", null, toDisplayString(capitalizeSection(section)), 1)]), (openBlock(true), createElementBlock(Fragment, null, renderList(routes, (route) => {
|
|
814
816
|
return openBlock(), createBlock(AppLink_default, {
|
|
815
817
|
key: route.path,
|
|
816
818
|
to: getRouteLink(route),
|
|
@@ -822,11 +824,11 @@ const _sfc_main$55 = /* @__PURE__ */ defineComponent({
|
|
|
822
824
|
}, 1032, ["to"]);
|
|
823
825
|
}), 128))]);
|
|
824
826
|
}), 128))
|
|
825
|
-
])]), createElementVNode("div", _hoisted_10$
|
|
827
|
+
])]), createElementVNode("div", _hoisted_10$12, [createElementVNode("div", _hoisted_11$11, "Version: " + toDisplayString(unref(tag).build_tag), 1)])])], 512);
|
|
826
828
|
};
|
|
827
829
|
}
|
|
828
830
|
});
|
|
829
|
-
var Sidebar_default = _sfc_main$
|
|
831
|
+
var Sidebar_default = _sfc_main$51;
|
|
830
832
|
|
|
831
833
|
//#endregion
|
|
832
834
|
//#region src/composables/useEmailVerificationGuard.ts
|
|
@@ -849,13 +851,13 @@ function useEmailVerificationGuard() {
|
|
|
849
851
|
|
|
850
852
|
//#endregion
|
|
851
853
|
//#region src/components/UnverifiedEmailBanner.vue
|
|
852
|
-
const _hoisted_1$
|
|
854
|
+
const _hoisted_1$46 = {
|
|
853
855
|
key: 0,
|
|
854
856
|
class: "bg-warning/20 border border-warning/50 text-warning-content px-4 py-2 flex items-center justify-between gap-4"
|
|
855
857
|
};
|
|
856
|
-
const _hoisted_2$
|
|
857
|
-
const _hoisted_3$
|
|
858
|
-
const _sfc_main$
|
|
858
|
+
const _hoisted_2$41 = { class: "text-sm" };
|
|
859
|
+
const _hoisted_3$38 = ["disabled"];
|
|
860
|
+
const _sfc_main$50 = /* @__PURE__ */ defineComponent({
|
|
859
861
|
__name: "UnverifiedEmailBanner",
|
|
860
862
|
setup(__props) {
|
|
861
863
|
const { showVerificationPrompt } = useEmailVerificationGuard();
|
|
@@ -880,28 +882,28 @@ const _sfc_main$54 = /* @__PURE__ */ defineComponent({
|
|
|
880
882
|
}
|
|
881
883
|
};
|
|
882
884
|
return (_ctx, _cache) => {
|
|
883
|
-
return unref(showVerificationPrompt) ? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
885
|
+
return unref(showVerificationPrompt) ? (openBlock(), createElementBlock("div", _hoisted_1$46, [createElementVNode("p", _hoisted_2$41, [
|
|
884
886
|
_cache[0] || (_cache[0] = createTextVNode(" Please verify your email. Check your inbox or ", -1)),
|
|
885
887
|
createElementVNode("button", {
|
|
886
888
|
type: "button",
|
|
887
889
|
class: "link link-hover font-medium underline",
|
|
888
890
|
disabled: resendLoading.value,
|
|
889
891
|
onClick: resendVerification
|
|
890
|
-
}, toDisplayString(resendLoading.value ? "Sending..." : "resend verification email"), 9, _hoisted_3$
|
|
892
|
+
}, toDisplayString(resendLoading.value ? "Sending..." : "resend verification email"), 9, _hoisted_3$38),
|
|
891
893
|
_cache[1] || (_cache[1] = createTextVNode(". ", -1))
|
|
892
894
|
])])) : createCommentVNode("v-if", true);
|
|
893
895
|
};
|
|
894
896
|
}
|
|
895
897
|
});
|
|
896
|
-
var UnverifiedEmailBanner_default = _sfc_main$
|
|
898
|
+
var UnverifiedEmailBanner_default = _sfc_main$50;
|
|
897
899
|
|
|
898
900
|
//#endregion
|
|
899
901
|
//#region src/layouts/Admin.vue
|
|
900
|
-
const _hoisted_1$
|
|
901
|
-
const _hoisted_2$
|
|
902
|
-
const _hoisted_3$
|
|
903
|
-
const _hoisted_4$
|
|
904
|
-
const _sfc_main$
|
|
902
|
+
const _hoisted_1$45 = { class: "drawer drawer-end" };
|
|
903
|
+
const _hoisted_2$40 = { class: "drawer h-[calc(100vh_-_64px_-_64px)] bg-base-100" };
|
|
904
|
+
const _hoisted_3$37 = { class: "drawer-content" };
|
|
905
|
+
const _hoisted_4$33 = { class: "pr-1 pl-1 md:pr-4 md:pl-4" };
|
|
906
|
+
const _sfc_main$49 = /* @__PURE__ */ defineComponent({
|
|
905
907
|
__name: "Admin",
|
|
906
908
|
props: {
|
|
907
909
|
logoSrc: {},
|
|
@@ -909,13 +911,13 @@ const _sfc_main$53 = /* @__PURE__ */ defineComponent({
|
|
|
909
911
|
},
|
|
910
912
|
setup(__props) {
|
|
911
913
|
return (_ctx, _cache) => {
|
|
912
|
-
return openBlock(), createElementBlock(Fragment, null, [createElementVNode("div", _hoisted_1$
|
|
914
|
+
return openBlock(), createElementBlock(Fragment, null, [createElementVNode("div", _hoisted_1$45, [createVNode(RightSidebar_default)]), createElementVNode("div", _hoisted_2$40, [
|
|
913
915
|
_cache[0] || (_cache[0] = createElementVNode("input", {
|
|
914
916
|
id: "my-drawer-4",
|
|
915
917
|
type: "checkbox",
|
|
916
918
|
class: "drawer-toggle"
|
|
917
919
|
}, null, -1)),
|
|
918
|
-
createElementVNode("div", _hoisted_3$
|
|
920
|
+
createElementVNode("div", _hoisted_3$37, [createVNode(Navbar_default, { logoSrc: __props.navbarLogoSrc }, null, 8, ["logoSrc"]), createElementVNode("div", _hoisted_4$33, [createVNode(unref(RouterView))])]),
|
|
919
921
|
createVNode(Sidebar_default, { logoSrc: __props.logoSrc }, createSlots({ _: 2 }, [_ctx.$slots.sidebarLogo ? {
|
|
920
922
|
name: "logo",
|
|
921
923
|
fn: withCtx(() => [renderSlot(_ctx.$slots, "sidebarLogo")]),
|
|
@@ -925,27 +927,29 @@ const _sfc_main$53 = /* @__PURE__ */ defineComponent({
|
|
|
925
927
|
};
|
|
926
928
|
}
|
|
927
929
|
});
|
|
928
|
-
var Admin_default = _sfc_main$
|
|
930
|
+
var Admin_default = _sfc_main$49;
|
|
929
931
|
|
|
930
932
|
//#endregion
|
|
931
933
|
//#region src/layouts/Auth.vue
|
|
932
|
-
const _hoisted_1$
|
|
933
|
-
const _hoisted_2$
|
|
934
|
+
const _hoisted_1$44 = { class: "m-4" };
|
|
935
|
+
const _hoisted_2$39 = {
|
|
934
936
|
key: 0,
|
|
935
937
|
class: "flex justify-center mb-2"
|
|
936
938
|
};
|
|
937
|
-
const _hoisted_3$
|
|
938
|
-
const _hoisted_4$
|
|
939
|
-
const _hoisted_5$
|
|
940
|
-
const _hoisted_6$
|
|
941
|
-
const _sfc_main$
|
|
939
|
+
const _hoisted_3$36 = { class: "flex flex-wrap gap-4 text-sm" };
|
|
940
|
+
const _hoisted_4$32 = { class: "flex justify-center mb-6" };
|
|
941
|
+
const _hoisted_5$24 = ["src"];
|
|
942
|
+
const _hoisted_6$19 = { class: "min-h-screen bg-base-100 flex flex-col" };
|
|
943
|
+
const _sfc_main$48 = /* @__PURE__ */ defineComponent({
|
|
942
944
|
__name: "Auth",
|
|
943
945
|
props: {
|
|
944
946
|
logoSrc: {},
|
|
945
|
-
backLinks: {}
|
|
947
|
+
backLinks: {},
|
|
948
|
+
signupRequirements: {}
|
|
946
949
|
},
|
|
947
950
|
setup(__props) {
|
|
948
951
|
const props = __props;
|
|
952
|
+
if (props.signupRequirements !== void 0) provide(SIGNUP_REQUIREMENTS_KEY, props.signupRequirements);
|
|
949
953
|
const route = useRoute();
|
|
950
954
|
const imageLoadFailed = ref(false);
|
|
951
955
|
const backLinks = computed(() => {
|
|
@@ -956,8 +960,8 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
|
|
|
956
960
|
});
|
|
957
961
|
const hasBackLinks = computed(() => backLinks.value.length > 0);
|
|
958
962
|
return (_ctx, _cache) => {
|
|
959
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
960
|
-
hasBackLinks.value ? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
963
|
+
return openBlock(), createElementBlock("div", _hoisted_1$44, [
|
|
964
|
+
hasBackLinks.value ? (openBlock(), createElementBlock("div", _hoisted_2$39, [createElementVNode("nav", _hoisted_3$36, [(openBlock(true), createElementBlock(Fragment, null, renderList(backLinks.value, (link, i) => {
|
|
961
965
|
return openBlock(), createBlock(AppLink_default, {
|
|
962
966
|
key: i,
|
|
963
967
|
to: link.to,
|
|
@@ -967,7 +971,7 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
|
|
|
967
971
|
_: 2
|
|
968
972
|
}, 1032, ["to"]);
|
|
969
973
|
}), 128))])])) : createCommentVNode("v-if", true),
|
|
970
|
-
createElementVNode("div", _hoisted_4$
|
|
974
|
+
createElementVNode("div", _hoisted_4$32, [renderSlot(_ctx.$slots, "logo", {}, () => [!__props.logoSrc || imageLoadFailed.value ? (openBlock(), createBlock(LogoPlaceholder_default, {
|
|
971
975
|
key: 0,
|
|
972
976
|
size: "md"
|
|
973
977
|
})) : (openBlock(), createElementBlock("img", {
|
|
@@ -976,22 +980,22 @@ const _sfc_main$52 = /* @__PURE__ */ defineComponent({
|
|
|
976
980
|
alt: "logo",
|
|
977
981
|
class: "h-24",
|
|
978
982
|
onError: _cache[0] || (_cache[0] = ($event) => imageLoadFailed.value = true)
|
|
979
|
-
}, null, 40, _hoisted_5$
|
|
980
|
-
createElementVNode("div", _hoisted_6$
|
|
983
|
+
}, null, 40, _hoisted_5$24))])]),
|
|
984
|
+
createElementVNode("div", _hoisted_6$19, [createVNode(unref(RouterView))])
|
|
981
985
|
]);
|
|
982
986
|
};
|
|
983
987
|
}
|
|
984
988
|
});
|
|
985
|
-
var Auth_default = _sfc_main$
|
|
989
|
+
var Auth_default = _sfc_main$48;
|
|
986
990
|
|
|
987
991
|
//#endregion
|
|
988
992
|
//#region src/layouts/Default.vue
|
|
989
|
-
const _hoisted_1$
|
|
990
|
-
const _sfc_main$
|
|
993
|
+
const _hoisted_1$43 = { class: "m-4" };
|
|
994
|
+
const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
991
995
|
__name: "Default",
|
|
992
996
|
setup(__props) {
|
|
993
997
|
return (_ctx, _cache) => {
|
|
994
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
998
|
+
return openBlock(), createElementBlock("div", _hoisted_1$43, [createVNode(AppLink_default, {
|
|
995
999
|
to: "/auth/login",
|
|
996
1000
|
"aria-current": "page",
|
|
997
1001
|
"aria-label": "Homepage",
|
|
@@ -1003,19 +1007,19 @@ const _sfc_main$51 = /* @__PURE__ */ defineComponent({
|
|
|
1003
1007
|
};
|
|
1004
1008
|
}
|
|
1005
1009
|
});
|
|
1006
|
-
var Default_default = _sfc_main$
|
|
1010
|
+
var Default_default = _sfc_main$47;
|
|
1007
1011
|
|
|
1008
1012
|
//#endregion
|
|
1009
1013
|
//#region src/layouts/InApp.vue
|
|
1010
|
-
const _hoisted_1$
|
|
1011
|
-
const _hoisted_2$
|
|
1012
|
-
const _hoisted_3$
|
|
1013
|
-
const _hoisted_4$
|
|
1014
|
+
const _hoisted_1$42 = { class: "drawer drawer-end" };
|
|
1015
|
+
const _hoisted_2$38 = { class: "drawer h-[calc(100vh_)]" };
|
|
1016
|
+
const _hoisted_3$35 = { class: "drawer-content flex flex-col" };
|
|
1017
|
+
const _hoisted_4$31 = {
|
|
1014
1018
|
key: 0,
|
|
1015
1019
|
class: "z-20"
|
|
1016
1020
|
};
|
|
1017
|
-
const _hoisted_5$
|
|
1018
|
-
const _sfc_main$
|
|
1021
|
+
const _hoisted_5$23 = { class: "flex-1 px-3 sm:px-4 md:px-6 pb-4" };
|
|
1022
|
+
const _sfc_main$46 = /* @__PURE__ */ defineComponent({
|
|
1019
1023
|
__name: "InApp",
|
|
1020
1024
|
props: {
|
|
1021
1025
|
logoSrc: {},
|
|
@@ -1078,16 +1082,16 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
|
|
|
1078
1082
|
return route.meta.currentTab || "";
|
|
1079
1083
|
});
|
|
1080
1084
|
return (_ctx, _cache) => {
|
|
1081
|
-
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Right sidebar drawer "), createElementVNode("div", _hoisted_1$
|
|
1085
|
+
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Right sidebar drawer "), createElementVNode("div", _hoisted_1$42, [
|
|
1082
1086
|
createVNode(RightSidebar_default),
|
|
1083
1087
|
createCommentVNode(" Left sidebar drawer "),
|
|
1084
|
-
createElementVNode("div", _hoisted_2$
|
|
1088
|
+
createElementVNode("div", _hoisted_2$38, [
|
|
1085
1089
|
_cache[0] || (_cache[0] = createElementVNode("input", {
|
|
1086
1090
|
id: "drawer",
|
|
1087
1091
|
type: "checkbox",
|
|
1088
1092
|
class: "drawer-toggle"
|
|
1089
1093
|
}, null, -1)),
|
|
1090
|
-
createElementVNode("div", _hoisted_3$
|
|
1094
|
+
createElementVNode("div", _hoisted_3$35, [
|
|
1091
1095
|
createCommentVNode(" Fixed navbar at top with breadcrumbs "),
|
|
1092
1096
|
createVNode(Navbar_default, {
|
|
1093
1097
|
class: "sticky top-0 z-30",
|
|
@@ -1096,12 +1100,12 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
|
|
|
1096
1100
|
}, null, 8, ["breadcrumbs", "logoSrc"]),
|
|
1097
1101
|
createVNode(UnverifiedEmailBanner_default),
|
|
1098
1102
|
createCommentVNode(" Unified navigation with AppHeader (only shown when needed) "),
|
|
1099
|
-
shouldShowAppHeader.value ? (openBlock(), createElementBlock("div", _hoisted_4$
|
|
1103
|
+
shouldShowAppHeader.value ? (openBlock(), createElementBlock("div", _hoisted_4$31, [createVNode(AppHeader_default, {
|
|
1100
1104
|
tabs: currentSectionTabs.value,
|
|
1101
1105
|
"active-tab": currentActiveTab.value
|
|
1102
1106
|
}, null, 8, ["tabs", "active-tab"])])) : createCommentVNode("v-if", true),
|
|
1103
1107
|
createCommentVNode(" Main content "),
|
|
1104
|
-
createElementVNode("div", _hoisted_5$
|
|
1108
|
+
createElementVNode("div", _hoisted_5$23, [createVNode(unref(RouterView))])
|
|
1105
1109
|
]),
|
|
1106
1110
|
createCommentVNode(" Left sidebar "),
|
|
1107
1111
|
createVNode(Sidebar_default, { logoSrc: __props.logoSrc }, createSlots({ _: 2 }, [_ctx.$slots.sidebarLogo ? {
|
|
@@ -1114,14 +1118,14 @@ const _sfc_main$50 = /* @__PURE__ */ defineComponent({
|
|
|
1114
1118
|
};
|
|
1115
1119
|
}
|
|
1116
1120
|
});
|
|
1117
|
-
var InApp_default = _sfc_main$
|
|
1121
|
+
var InApp_default = _sfc_main$46;
|
|
1118
1122
|
|
|
1119
1123
|
//#endregion
|
|
1120
1124
|
//#region src/components/ui/FieldDisplay.vue
|
|
1121
|
-
const _hoisted_1$
|
|
1122
|
-
const _hoisted_2$
|
|
1123
|
-
const _hoisted_3$
|
|
1124
|
-
const _sfc_main$
|
|
1125
|
+
const _hoisted_1$41 = { class: "label" };
|
|
1126
|
+
const _hoisted_2$37 = { class: "label-text font-medium" };
|
|
1127
|
+
const _hoisted_3$34 = { class: "text-base-content" };
|
|
1128
|
+
const _sfc_main$45 = /* @__PURE__ */ defineComponent({
|
|
1125
1129
|
__name: "FieldDisplay",
|
|
1126
1130
|
props: {
|
|
1127
1131
|
label: {},
|
|
@@ -1130,61 +1134,61 @@ const _sfc_main$49 = /* @__PURE__ */ defineComponent({
|
|
|
1130
1134
|
},
|
|
1131
1135
|
setup(__props) {
|
|
1132
1136
|
return (_ctx, _cache) => {
|
|
1133
|
-
return openBlock(), createElementBlock("div", { class: normalizeClass(["form-control", { "md:col-span-2": __props.fullWidth }]) }, [createElementVNode("label", _hoisted_1$
|
|
1137
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass(["form-control", { "md:col-span-2": __props.fullWidth }]) }, [createElementVNode("label", _hoisted_1$41, [createElementVNode("span", _hoisted_2$37, toDisplayString(__props.label), 1)]), createElementVNode("div", _hoisted_3$34, toDisplayString(__props.value ?? "-"), 1)], 2);
|
|
1134
1138
|
};
|
|
1135
1139
|
}
|
|
1136
1140
|
});
|
|
1137
|
-
var FieldDisplay_default = _sfc_main$
|
|
1141
|
+
var FieldDisplay_default = _sfc_main$45;
|
|
1138
1142
|
|
|
1139
1143
|
//#endregion
|
|
1140
1144
|
//#region src/components/ui/FieldGroup.vue
|
|
1141
|
-
const _hoisted_1$
|
|
1142
|
-
const _hoisted_2$
|
|
1143
|
-
const _hoisted_3$
|
|
1144
|
-
const _hoisted_4$
|
|
1145
|
-
const _sfc_main$
|
|
1145
|
+
const _hoisted_1$40 = { class: "card bg-base-100 shadow-sm" };
|
|
1146
|
+
const _hoisted_2$36 = { class: "card-body" };
|
|
1147
|
+
const _hoisted_3$33 = { class: "card-title text-lg mb-4" };
|
|
1148
|
+
const _hoisted_4$30 = { class: "grid grid-cols-1 md:grid-cols-2 gap-4" };
|
|
1149
|
+
const _sfc_main$44 = /* @__PURE__ */ defineComponent({
|
|
1146
1150
|
__name: "FieldGroup",
|
|
1147
1151
|
props: { title: {} },
|
|
1148
1152
|
setup(__props) {
|
|
1149
1153
|
return (_ctx, _cache) => {
|
|
1150
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
1154
|
+
return openBlock(), createElementBlock("div", _hoisted_1$40, [createElementVNode("div", _hoisted_2$36, [createElementVNode("h2", _hoisted_3$33, toDisplayString(__props.title), 1), createElementVNode("div", _hoisted_4$30, [renderSlot(_ctx.$slots, "default")])])]);
|
|
1151
1155
|
};
|
|
1152
1156
|
}
|
|
1153
1157
|
});
|
|
1154
|
-
var FieldGroup_default = _sfc_main$
|
|
1158
|
+
var FieldGroup_default = _sfc_main$44;
|
|
1155
1159
|
|
|
1156
1160
|
//#endregion
|
|
1157
1161
|
//#region src/components/ui/FileManager.vue
|
|
1158
|
-
const _hoisted_1$
|
|
1159
|
-
const _hoisted_2$
|
|
1160
|
-
const _hoisted_3$
|
|
1161
|
-
const _hoisted_4$
|
|
1162
|
-
const _hoisted_5$
|
|
1163
|
-
const _hoisted_6$
|
|
1164
|
-
const _hoisted_7$
|
|
1165
|
-
const _hoisted_8$
|
|
1166
|
-
const _hoisted_9$
|
|
1167
|
-
const _hoisted_10$
|
|
1168
|
-
const _hoisted_11$
|
|
1169
|
-
const _hoisted_12$
|
|
1170
|
-
const _hoisted_13$
|
|
1171
|
-
const _hoisted_14$
|
|
1162
|
+
const _hoisted_1$39 = { class: "w-full px-2 sm:px-0" };
|
|
1163
|
+
const _hoisted_2$35 = { class: "mb-4" };
|
|
1164
|
+
const _hoisted_3$32 = { class: "flex flex-col sm:flex-row sm:justify-between sm:items-center gap-3 mb-3" };
|
|
1165
|
+
const _hoisted_4$29 = { class: "text-lg font-medium" };
|
|
1166
|
+
const _hoisted_5$22 = { class: "flex gap-2 sm:hidden" };
|
|
1167
|
+
const _hoisted_6$18 = ["disabled"];
|
|
1168
|
+
const _hoisted_7$15 = { class: "breadcrumbs text-xs sm:text-sm overflow-x-auto -mx-2 px-2" };
|
|
1169
|
+
const _hoisted_8$15 = { class: "min-w-max" };
|
|
1170
|
+
const _hoisted_9$14 = ["onClick", "title"];
|
|
1171
|
+
const _hoisted_10$11 = ["accept"];
|
|
1172
|
+
const _hoisted_11$10 = { class: "flex flex-col items-center justify-center py-4" };
|
|
1173
|
+
const _hoisted_12$9 = { class: "text-lg font-medium" };
|
|
1174
|
+
const _hoisted_13$7 = { class: "text-sm text-base-content/70 mt-1" };
|
|
1175
|
+
const _hoisted_14$6 = {
|
|
1172
1176
|
key: 0,
|
|
1173
1177
|
class: "text-xs text-base-content/50 mt-3"
|
|
1174
1178
|
};
|
|
1175
|
-
const _hoisted_15$
|
|
1179
|
+
const _hoisted_15$5 = {
|
|
1176
1180
|
key: 0,
|
|
1177
1181
|
class: "mb-4"
|
|
1178
1182
|
};
|
|
1179
|
-
const _hoisted_16$
|
|
1180
|
-
const _hoisted_17$
|
|
1181
|
-
const _hoisted_18$
|
|
1182
|
-
const _hoisted_19$
|
|
1183
|
-
const _hoisted_20$
|
|
1183
|
+
const _hoisted_16$5 = { class: "space-y-3" };
|
|
1184
|
+
const _hoisted_17$4 = { class: "flex justify-between items-start mb-2" };
|
|
1185
|
+
const _hoisted_18$4 = { class: "flex-1" };
|
|
1186
|
+
const _hoisted_19$4 = { class: "flex items-center gap-2" };
|
|
1187
|
+
const _hoisted_20$4 = {
|
|
1184
1188
|
key: 0,
|
|
1185
1189
|
class: "loading loading-spinner loading-xs text-primary"
|
|
1186
1190
|
};
|
|
1187
|
-
const _hoisted_21$
|
|
1191
|
+
const _hoisted_21$3 = {
|
|
1188
1192
|
key: 1,
|
|
1189
1193
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1190
1194
|
class: "h-4 w-4 text-success",
|
|
@@ -1192,7 +1196,7 @@ const _hoisted_21$4 = {
|
|
|
1192
1196
|
viewBox: "0 0 24 24",
|
|
1193
1197
|
stroke: "currentColor"
|
|
1194
1198
|
};
|
|
1195
|
-
const _hoisted_22$
|
|
1199
|
+
const _hoisted_22$3 = {
|
|
1196
1200
|
key: 2,
|
|
1197
1201
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1198
1202
|
class: "h-4 w-4 text-error",
|
|
@@ -1276,7 +1280,7 @@ const _hoisted_68 = { class: "flex items-center gap-2" };
|
|
|
1276
1280
|
const _hoisted_69 = { class: "font-medium" };
|
|
1277
1281
|
const _hoisted_70 = { class: "text-base-content/70" };
|
|
1278
1282
|
const DEFAULT_MAX_FILE_SIZE = 50 * 1024 * 1024;
|
|
1279
|
-
const _sfc_main$
|
|
1283
|
+
const _sfc_main$43 = /* @__PURE__ */ defineComponent({
|
|
1280
1284
|
__name: "FileManager",
|
|
1281
1285
|
props: {
|
|
1282
1286
|
recordId: {},
|
|
@@ -1648,14 +1652,14 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
|
1648
1652
|
return "badge-neutral";
|
|
1649
1653
|
};
|
|
1650
1654
|
return (_ctx, _cache) => {
|
|
1651
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
1655
|
+
return openBlock(), createElementBlock("div", _hoisted_1$39, [
|
|
1652
1656
|
createCommentVNode(" File Manager Header "),
|
|
1653
|
-
createElementVNode("div", _hoisted_2$
|
|
1657
|
+
createElementVNode("div", _hoisted_2$35, [
|
|
1654
1658
|
createCommentVNode(" Mobile: Stacked layout "),
|
|
1655
|
-
createElementVNode("div", _hoisted_3$
|
|
1656
|
-
createElementVNode("h3", _hoisted_4$
|
|
1659
|
+
createElementVNode("div", _hoisted_3$32, [
|
|
1660
|
+
createElementVNode("h3", _hoisted_4$29, toDisplayString(config.value.title || "Attachments"), 1),
|
|
1657
1661
|
createCommentVNode(" Mobile: Action buttons "),
|
|
1658
|
-
createElementVNode("div", _hoisted_5$
|
|
1662
|
+
createElementVNode("div", _hoisted_5$22, [createElementVNode("button", {
|
|
1659
1663
|
class: "btn btn-sm btn-primary flex-1",
|
|
1660
1664
|
onClick: openFileSelector,
|
|
1661
1665
|
disabled: isUploading.value
|
|
@@ -1670,7 +1674,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
|
1670
1674
|
"stroke-linejoin": "round",
|
|
1671
1675
|
"stroke-width": "2",
|
|
1672
1676
|
d: "M12 4v16m8-8H4"
|
|
1673
|
-
})], -1)), createTextVNode(" " + toDisplayString(config.value.addButtonText || "Add Files"), 1)], 8, _hoisted_6$
|
|
1677
|
+
})], -1)), createTextVNode(" " + toDisplayString(config.value.addButtonText || "Add Files"), 1)], 8, _hoisted_6$18), createElementVNode("button", {
|
|
1674
1678
|
class: "btn btn-sm btn-info flex-1",
|
|
1675
1679
|
onClick: createFolder
|
|
1676
1680
|
}, [..._cache[6] || (_cache[6] = [createElementVNode("svg", {
|
|
@@ -1692,7 +1696,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
|
1692
1696
|
}, "New Folder")])
|
|
1693
1697
|
]),
|
|
1694
1698
|
createCommentVNode(" Breadcrumb Navigation - Mobile optimized "),
|
|
1695
|
-
createElementVNode("div", _hoisted_7$
|
|
1699
|
+
createElementVNode("div", _hoisted_7$15, [createElementVNode("ul", _hoisted_8$15, [createElementVNode("li", null, [createElementVNode("button", {
|
|
1696
1700
|
class: normalizeClass(["btn btn-sm sm:btn-xs btn-ghost min-h-[2.5rem] sm:min-h-0 py-2 sm:py-1", { "btn-active": !currentFolderId.value }]),
|
|
1697
1701
|
onClick: _cache[0] || (_cache[0] = ($event) => navigateToFolder(null))
|
|
1698
1702
|
}, [..._cache[7] || (_cache[7] = [createElementVNode("svg", {
|
|
@@ -1711,7 +1715,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
|
1711
1715
|
class: normalizeClass(["btn btn-sm sm:btn-xs btn-ghost min-h-[2.5rem] sm:min-h-0 py-2 sm:py-1 max-w-[8rem] sm:max-w-none truncate", { "btn-active": index === folderPath.value.length - 1 }]),
|
|
1712
1716
|
onClick: ($event) => navigateToFolder(folder.id),
|
|
1713
1717
|
title: folder.name
|
|
1714
|
-
}, toDisplayString(folder.name), 11, _hoisted_9$
|
|
1718
|
+
}, toDisplayString(folder.name), 11, _hoisted_9$14)]);
|
|
1715
1719
|
}), 128))])])
|
|
1716
1720
|
]),
|
|
1717
1721
|
createElementVNode("input", {
|
|
@@ -1722,7 +1726,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
|
1722
1726
|
onChange: handleFileChange,
|
|
1723
1727
|
multiple: "",
|
|
1724
1728
|
accept: config.value.acceptedTypes
|
|
1725
|
-
}, null, 40, _hoisted_10$
|
|
1729
|
+
}, null, 40, _hoisted_10$11),
|
|
1726
1730
|
createCommentVNode(" Drag & Drop Zone (hidden on mobile) "),
|
|
1727
1731
|
createElementVNode("div", {
|
|
1728
1732
|
class: normalizeClass(["hidden sm:block border-2 border-dashed rounded-lg p-6 text-center mb-4 transition-colors", {
|
|
@@ -1733,7 +1737,7 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
|
1733
1737
|
onDragleave: _cache[2] || (_cache[2] = withModifiers(($event) => isDragging.value = false, ["prevent"])),
|
|
1734
1738
|
onDrop: withModifiers(handleFileDrop, ["prevent"]),
|
|
1735
1739
|
onClick: openFileSelector
|
|
1736
|
-
}, [createElementVNode("div", _hoisted_11$
|
|
1740
|
+
}, [createElementVNode("div", _hoisted_11$10, [
|
|
1737
1741
|
_cache[8] || (_cache[8] = createElementVNode("svg", {
|
|
1738
1742
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1739
1743
|
class: "h-12 w-12 mb-2 text-primary",
|
|
@@ -1746,12 +1750,12 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
|
1746
1750
|
"stroke-width": "2",
|
|
1747
1751
|
d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"
|
|
1748
1752
|
})], -1)),
|
|
1749
|
-
createElementVNode("p", _hoisted_12$
|
|
1750
|
-
createElementVNode("p", _hoisted_13$
|
|
1751
|
-
config.value.acceptText ? (openBlock(), createElementBlock("p", _hoisted_14$
|
|
1753
|
+
createElementVNode("p", _hoisted_12$9, toDisplayString(config.value.dropText || "Drag and drop files here"), 1),
|
|
1754
|
+
createElementVNode("p", _hoisted_13$7, toDisplayString(config.value.browseText || "or click to browse files"), 1),
|
|
1755
|
+
config.value.acceptText ? (openBlock(), createElementBlock("p", _hoisted_14$6, toDisplayString(config.value.acceptText), 1)) : createCommentVNode("v-if", true)
|
|
1752
1756
|
])], 34),
|
|
1753
1757
|
createCommentVNode(" Upload Queue "),
|
|
1754
|
-
uploadQueue.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_15$
|
|
1758
|
+
uploadQueue.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_15$5, [_cache[12] || (_cache[12] = createElementVNode("div", { class: "text-sm font-medium mb-2" }, "File uploads", -1)), createElementVNode("div", _hoisted_16$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(uploadQueue.value, (item) => {
|
|
1755
1759
|
return openBlock(), createElementBlock("div", {
|
|
1756
1760
|
key: item.id,
|
|
1757
1761
|
class: normalizeClass(["border border-base-200 rounded-lg p-3", {
|
|
@@ -1759,16 +1763,16 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
|
1759
1763
|
"bg-error/5 border-error/30": item.status === "error"
|
|
1760
1764
|
}])
|
|
1761
1765
|
}, [
|
|
1762
|
-
createElementVNode("div", _hoisted_17$
|
|
1763
|
-
createElementVNode("div", _hoisted_18$
|
|
1764
|
-
createElementVNode("div", _hoisted_19$
|
|
1766
|
+
createElementVNode("div", _hoisted_17$4, [
|
|
1767
|
+
createElementVNode("div", _hoisted_18$4, [
|
|
1768
|
+
createElementVNode("div", _hoisted_19$4, [
|
|
1765
1769
|
createCommentVNode(" Status Icon "),
|
|
1766
|
-
item.status === "uploading" ? (openBlock(), createElementBlock("div", _hoisted_20$
|
|
1770
|
+
item.status === "uploading" ? (openBlock(), createElementBlock("div", _hoisted_20$4)) : item.status === "success" ? (openBlock(), createElementBlock("svg", _hoisted_21$3, [..._cache[9] || (_cache[9] = [createElementVNode("path", {
|
|
1767
1771
|
"stroke-linecap": "round",
|
|
1768
1772
|
"stroke-linejoin": "round",
|
|
1769
1773
|
"stroke-width": "2",
|
|
1770
1774
|
d: "M5 13l4 4L19 7"
|
|
1771
|
-
}, null, -1)])])) : item.status === "error" ? (openBlock(), createElementBlock("svg", _hoisted_22$
|
|
1775
|
+
}, null, -1)])])) : item.status === "error" ? (openBlock(), createElementBlock("svg", _hoisted_22$3, [..._cache[10] || (_cache[10] = [createElementVNode("path", {
|
|
1772
1776
|
"stroke-linecap": "round",
|
|
1773
1777
|
"stroke-linejoin": "round",
|
|
1774
1778
|
"stroke-width": "2",
|
|
@@ -1991,47 +1995,47 @@ const _sfc_main$47 = /* @__PURE__ */ defineComponent({
|
|
|
1991
1995
|
};
|
|
1992
1996
|
}
|
|
1993
1997
|
});
|
|
1994
|
-
var FileManager_default = _sfc_main$
|
|
1998
|
+
var FileManager_default = _sfc_main$43;
|
|
1995
1999
|
|
|
1996
2000
|
//#endregion
|
|
1997
2001
|
//#region src/components/ui/KeyValueEditor.vue
|
|
1998
|
-
const _hoisted_1$
|
|
1999
|
-
const _hoisted_2$
|
|
2002
|
+
const _hoisted_1$38 = { class: "key-value-editor col-span-full" };
|
|
2003
|
+
const _hoisted_2$34 = {
|
|
2000
2004
|
key: 0,
|
|
2001
2005
|
class: "mb-2"
|
|
2002
2006
|
};
|
|
2003
|
-
const _hoisted_3$
|
|
2007
|
+
const _hoisted_3$31 = {
|
|
2004
2008
|
key: 0,
|
|
2005
2009
|
class: "label p-0"
|
|
2006
2010
|
};
|
|
2007
|
-
const _hoisted_4$
|
|
2008
|
-
const _hoisted_5$
|
|
2011
|
+
const _hoisted_4$28 = { class: "label-text" };
|
|
2012
|
+
const _hoisted_5$21 = {
|
|
2009
2013
|
key: 1,
|
|
2010
2014
|
class: "text-xs text-base-content/60 mt-1"
|
|
2011
2015
|
};
|
|
2012
|
-
const _hoisted_6$
|
|
2016
|
+
const _hoisted_6$17 = {
|
|
2013
2017
|
key: 1,
|
|
2014
2018
|
class: "text-error text-sm mb-2"
|
|
2015
2019
|
};
|
|
2016
|
-
const _hoisted_7$
|
|
2017
|
-
const _hoisted_8$
|
|
2018
|
-
const _hoisted_9$
|
|
2020
|
+
const _hoisted_7$14 = { class: "space-y-3" };
|
|
2021
|
+
const _hoisted_8$14 = { class: "flex-1" };
|
|
2022
|
+
const _hoisted_9$13 = [
|
|
2019
2023
|
"onUpdate:modelValue",
|
|
2020
2024
|
"placeholder",
|
|
2021
2025
|
"onInput"
|
|
2022
2026
|
];
|
|
2023
|
-
const _hoisted_10$
|
|
2024
|
-
const _hoisted_11$
|
|
2027
|
+
const _hoisted_10$10 = { class: "flex-1" };
|
|
2028
|
+
const _hoisted_11$9 = [
|
|
2025
2029
|
"onUpdate:modelValue",
|
|
2026
2030
|
"placeholder",
|
|
2027
2031
|
"onInput"
|
|
2028
2032
|
];
|
|
2029
|
-
const _hoisted_12$
|
|
2030
|
-
const _hoisted_13$
|
|
2033
|
+
const _hoisted_12$8 = ["onClick", "disabled"];
|
|
2034
|
+
const _hoisted_13$6 = {
|
|
2031
2035
|
key: 2,
|
|
2032
2036
|
class: "text-center py-4 text-base-content/60"
|
|
2033
2037
|
};
|
|
2034
|
-
const _sfc_main$
|
|
2038
|
+
const _sfc_main$42 = /* @__PURE__ */ defineComponent({
|
|
2035
2039
|
__name: "KeyValueEditor",
|
|
2036
2040
|
props: {
|
|
2037
2041
|
modelValue: { default: null },
|
|
@@ -2110,30 +2114,30 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
|
|
|
2110
2114
|
pair[field] = value;
|
|
2111
2115
|
};
|
|
2112
2116
|
return (_ctx, _cache) => {
|
|
2113
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
2114
|
-
__props.label || __props.helpText ? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
2115
|
-
__props.error ? (openBlock(), createElementBlock("div", _hoisted_6$
|
|
2116
|
-
createElementVNode("div", _hoisted_7$
|
|
2117
|
+
return openBlock(), createElementBlock("div", _hoisted_1$38, [
|
|
2118
|
+
__props.label || __props.helpText ? (openBlock(), createElementBlock("div", _hoisted_2$34, [__props.label ? (openBlock(), createElementBlock("label", _hoisted_3$31, [createElementVNode("span", _hoisted_4$28, toDisplayString(__props.label), 1)])) : createCommentVNode("v-if", true), __props.helpText ? (openBlock(), createElementBlock("p", _hoisted_5$21, toDisplayString(__props.helpText), 1)) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true),
|
|
2119
|
+
__props.error ? (openBlock(), createElementBlock("div", _hoisted_6$17, toDisplayString(__props.error), 1)) : createCommentVNode("v-if", true),
|
|
2120
|
+
createElementVNode("div", _hoisted_7$14, [
|
|
2117
2121
|
createCommentVNode(" Key-Value Pairs List "),
|
|
2118
2122
|
(openBlock(true), createElementBlock(Fragment, null, renderList(pairs.value, (pair, index) => {
|
|
2119
2123
|
return openBlock(), createElementBlock("div", {
|
|
2120
2124
|
key: index,
|
|
2121
2125
|
class: "flex gap-2 items-start"
|
|
2122
2126
|
}, [
|
|
2123
|
-
createElementVNode("div", _hoisted_8$
|
|
2127
|
+
createElementVNode("div", _hoisted_8$14, [withDirectives(createElementVNode("input", {
|
|
2124
2128
|
"onUpdate:modelValue": ($event) => pair.key = $event,
|
|
2125
2129
|
type: "text",
|
|
2126
2130
|
placeholder: __props.keyPlaceholder,
|
|
2127
2131
|
class: "input input-bordered w-full",
|
|
2128
2132
|
onInput: ($event) => updatePair(index, "key", $event.target.value)
|
|
2129
|
-
}, null, 40, _hoisted_9$
|
|
2130
|
-
createElementVNode("div", _hoisted_10$
|
|
2133
|
+
}, null, 40, _hoisted_9$13), [[vModelText, pair.key]])]),
|
|
2134
|
+
createElementVNode("div", _hoisted_10$10, [withDirectives(createElementVNode("input", {
|
|
2131
2135
|
"onUpdate:modelValue": ($event) => pair.value = $event,
|
|
2132
2136
|
type: "text",
|
|
2133
2137
|
placeholder: __props.valuePlaceholder,
|
|
2134
2138
|
class: "input input-bordered w-full",
|
|
2135
2139
|
onInput: ($event) => updatePair(index, "value", $event.target.value)
|
|
2136
|
-
}, null, 40, _hoisted_11$
|
|
2140
|
+
}, null, 40, _hoisted_11$9), [[vModelText, pair.value]])]),
|
|
2137
2141
|
createElementVNode("button", {
|
|
2138
2142
|
type: "button",
|
|
2139
2143
|
class: "btn btn-error btn-sm",
|
|
@@ -2150,7 +2154,7 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
|
|
|
2150
2154
|
"stroke-linejoin": "round",
|
|
2151
2155
|
"stroke-width": "2",
|
|
2152
2156
|
d: "M6 18L18 6M6 6l12 12"
|
|
2153
|
-
})], -1)])], 8, _hoisted_12$
|
|
2157
|
+
})], -1)])], 8, _hoisted_12$8)
|
|
2154
2158
|
]);
|
|
2155
2159
|
}), 128)),
|
|
2156
2160
|
createCommentVNode(" Add New Pair Button "),
|
|
@@ -2172,498 +2176,12 @@ const _sfc_main$46 = /* @__PURE__ */ defineComponent({
|
|
|
2172
2176
|
})], -1), createTextVNode(" Add Key-Value Pair ", -1)])])
|
|
2173
2177
|
]),
|
|
2174
2178
|
createCommentVNode(" Empty State "),
|
|
2175
|
-
pairs.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_13$
|
|
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)
|
|
2176
2180
|
]);
|
|
2177
2181
|
};
|
|
2178
2182
|
}
|
|
2179
2183
|
});
|
|
2180
|
-
var KeyValueEditor_default = /* @__PURE__ */ export_helper_default(_sfc_main$
|
|
2181
|
-
|
|
2182
|
-
//#endregion
|
|
2183
|
-
//#region src/components/ui/LoadingErrorStates.vue
|
|
2184
|
-
const _hoisted_1$41 = {
|
|
2185
|
-
key: 0,
|
|
2186
|
-
class: "text-center py-8"
|
|
2187
|
-
};
|
|
2188
|
-
const _hoisted_2$37 = { class: "text-base-content/70 mt-2" };
|
|
2189
|
-
const _hoisted_3$34 = { class: "text-center py-8" };
|
|
2190
|
-
const _hoisted_4$31 = { class: "alert alert-error max-w-md mx-auto" };
|
|
2191
|
-
const _hoisted_5$24 = { class: "font-bold" };
|
|
2192
|
-
const _hoisted_6$20 = { class: "text-sm" };
|
|
2193
|
-
const _sfc_main$45 = /* @__PURE__ */ defineComponent({
|
|
2194
|
-
__name: "LoadingErrorStates",
|
|
2195
|
-
props: {
|
|
2196
|
-
isLoading: { type: Boolean },
|
|
2197
|
-
error: {},
|
|
2198
|
-
config: {}
|
|
2199
|
-
},
|
|
2200
|
-
emits: ["retry"],
|
|
2201
|
-
setup(__props, { emit: __emit }) {
|
|
2202
|
-
const props = __props;
|
|
2203
|
-
const emit = __emit;
|
|
2204
|
-
const config = computed(() => props.config || {});
|
|
2205
|
-
function getErrorMessage(error) {
|
|
2206
|
-
if (config.value.customErrorMessage) return config.value.customErrorMessage(error);
|
|
2207
|
-
return error.message || "An unexpected error occurred";
|
|
2208
|
-
}
|
|
2209
|
-
function handleRetry() {
|
|
2210
|
-
emit("retry");
|
|
2211
|
-
}
|
|
2212
|
-
return (_ctx, _cache) => {
|
|
2213
|
-
return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" Loading State "), __props.isLoading ? (openBlock(), createElementBlock("div", _hoisted_1$41, [renderSlot(_ctx.$slots, "loading", {}, () => [_cache[0] || (_cache[0] = createElementVNode("div", { class: "flex justify-center" }, [createElementVNode("span", { class: "loading loading-spinner loading-lg" })], -1)), createElementVNode("p", _hoisted_2$37, toDisplayString(config.value.loadingText || "Loading..."), 1)])])) : __props.error ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Error State "), createElementVNode("div", _hoisted_3$34, [renderSlot(_ctx.$slots, "error", {
|
|
2214
|
-
error: __props.error,
|
|
2215
|
-
retry: handleRetry
|
|
2216
|
-
}, () => [createElementVNode("div", _hoisted_4$31, [_cache[1] || (_cache[1] = createElementVNode("svg", {
|
|
2217
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
2218
|
-
class: "stroke-current shrink-0 h-6 w-6",
|
|
2219
|
-
fill: "none",
|
|
2220
|
-
viewBox: "0 0 24 24"
|
|
2221
|
-
}, [createElementVNode("path", {
|
|
2222
|
-
"stroke-linecap": "round",
|
|
2223
|
-
"stroke-linejoin": "round",
|
|
2224
|
-
"stroke-width": "2",
|
|
2225
|
-
d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
2226
|
-
})], -1)), createElementVNode("div", null, [
|
|
2227
|
-
createElementVNode("h3", _hoisted_5$24, toDisplayString(config.value.errorTitle || "Error"), 1),
|
|
2228
|
-
createElementVNode("div", _hoisted_6$20, toDisplayString(getErrorMessage(__props.error)), 1),
|
|
2229
|
-
config.value.showRetry !== false ? (openBlock(), createElementBlock("button", {
|
|
2230
|
-
key: 0,
|
|
2231
|
-
class: "btn btn-sm btn-outline mt-2",
|
|
2232
|
-
onClick: handleRetry
|
|
2233
|
-
}, toDisplayString(config.value.retryText || "Try Again"), 1)) : createCommentVNode("v-if", true)
|
|
2234
|
-
])])])])], 2112)) : createCommentVNode("v-if", true)], 2112);
|
|
2235
|
-
};
|
|
2236
|
-
}
|
|
2237
|
-
});
|
|
2238
|
-
var LoadingErrorStates_default = _sfc_main$45;
|
|
2239
|
-
|
|
2240
|
-
//#endregion
|
|
2241
|
-
//#region src/components/ui/RecordChangesSummary.vue
|
|
2242
|
-
const _hoisted_1$40 = {
|
|
2243
|
-
key: 0,
|
|
2244
|
-
class: "card bg-base-100 shadow-sm mb-4"
|
|
2245
|
-
};
|
|
2246
|
-
const _hoisted_2$36 = { class: "card-body p-3 sm:p-5" };
|
|
2247
|
-
const _hoisted_3$33 = { class: "flex justify-between items-center" };
|
|
2248
|
-
const _hoisted_4$30 = { class: "card-title text-base sm:text-lg" };
|
|
2249
|
-
const _hoisted_5$23 = { key: 0 };
|
|
2250
|
-
const _hoisted_6$19 = { class: "hidden md:block overflow-x-auto mt-4" };
|
|
2251
|
-
const _hoisted_7$16 = { class: "table table-zebra table-sm" };
|
|
2252
|
-
const _hoisted_8$16 = { class: "font-mono text-xs" };
|
|
2253
|
-
const _hoisted_9$15 = { class: "md:hidden space-y-4 mt-4" };
|
|
2254
|
-
const _hoisted_10$12 = { class: "mb-2" };
|
|
2255
|
-
const _hoisted_11$11 = { class: "font-mono text-xs font-bold" };
|
|
2256
|
-
const _hoisted_12$10 = { class: "grid grid-cols-2 gap-2" };
|
|
2257
|
-
const _hoisted_13$8 = { class: "text-xs text-base-content/70 mb-1" };
|
|
2258
|
-
const _hoisted_14$8 = { class: "text-sm break-words" };
|
|
2259
|
-
const _hoisted_15$7 = { class: "text-xs text-base-content/70 mb-1" };
|
|
2260
|
-
const _hoisted_16$7 = { class: "text-sm break-words" };
|
|
2261
|
-
const _hoisted_17$6 = {
|
|
2262
|
-
key: 1,
|
|
2263
|
-
class: "mt-2 text-sm text-base-content/70"
|
|
2264
|
-
};
|
|
2265
|
-
const _sfc_main$44 = /* @__PURE__ */ defineComponent({
|
|
2266
|
-
__name: "RecordChangesSummary",
|
|
2267
|
-
props: {
|
|
2268
|
-
changedFields: {},
|
|
2269
|
-
config: {}
|
|
2270
|
-
},
|
|
2271
|
-
setup(__props) {
|
|
2272
|
-
const props = __props;
|
|
2273
|
-
const config = computed(() => props.config || {});
|
|
2274
|
-
const showChanges = ref(false);
|
|
2275
|
-
function defaultFieldNameFormatter(path) {
|
|
2276
|
-
if (config.value.customFieldLabels?.[path]) return config.value.customFieldLabels[path];
|
|
2277
|
-
return path.split(".").map((segment) => segment.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase()).trim()).join(" → ");
|
|
2278
|
-
}
|
|
2279
|
-
function formatFieldName(path) {
|
|
2280
|
-
if (config.value.fieldNameFormatter) return config.value.fieldNameFormatter(path);
|
|
2281
|
-
return defaultFieldNameFormatter(path);
|
|
2282
|
-
}
|
|
2283
|
-
function defaultValueFormatter(value) {
|
|
2284
|
-
if (value === null || value === void 0) return "N/A";
|
|
2285
|
-
if (typeof value === "object") {
|
|
2286
|
-
if (Array.isArray(value)) return value.length === 0 ? "Empty array" : `Array (${value.length} items)`;
|
|
2287
|
-
return JSON.stringify(value, null, 2);
|
|
2288
|
-
}
|
|
2289
|
-
if (typeof value === "boolean") return value ? "Yes" : "No";
|
|
2290
|
-
if (typeof value === "number") {
|
|
2291
|
-
if (value > 0 && (value % 1 === 0 || value.toString().includes("."))) return value.toLocaleString("en-US", {
|
|
2292
|
-
minimumFractionDigits: 2,
|
|
2293
|
-
maximumFractionDigits: 2
|
|
2294
|
-
});
|
|
2295
|
-
return value.toString();
|
|
2296
|
-
}
|
|
2297
|
-
return String(value);
|
|
2298
|
-
}
|
|
2299
|
-
function formatValue(value, path) {
|
|
2300
|
-
if (config.value.valueFormatter) return config.value.valueFormatter(value, path || "");
|
|
2301
|
-
return defaultValueFormatter(value);
|
|
2302
|
-
}
|
|
2303
|
-
return (_ctx, _cache) => {
|
|
2304
|
-
return __props.changedFields.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$40, [createElementVNode("div", _hoisted_2$36, [createElementVNode("div", _hoisted_3$33, [createElementVNode("h2", _hoisted_4$30, toDisplayString(config.value.title || "Changes in This Version"), 1), createElementVNode("button", {
|
|
2305
|
-
onClick: _cache[0] || (_cache[0] = ($event) => showChanges.value = !showChanges.value),
|
|
2306
|
-
class: "btn btn-sm btn-info"
|
|
2307
|
-
}, toDisplayString(showChanges.value ? config.value.hideText || "Hide Changes" : config.value.showText || "Show Changes"), 1)]), showChanges.value ? (openBlock(), createElementBlock("div", _hoisted_5$23, [
|
|
2308
|
-
createCommentVNode(" Desktop view - table format "),
|
|
2309
|
-
createElementVNode("div", _hoisted_6$19, [createElementVNode("table", _hoisted_7$16, [createElementVNode("thead", null, [createElementVNode("tr", null, [
|
|
2310
|
-
createElementVNode("th", null, toDisplayString(config.value.fieldColumnHeader || "Field"), 1),
|
|
2311
|
-
createElementVNode("th", null, toDisplayString(config.value.previousColumnHeader || "Previous Value"), 1),
|
|
2312
|
-
createElementVNode("th", null, toDisplayString(config.value.newColumnHeader || "New Value"), 1)
|
|
2313
|
-
])]), createElementVNode("tbody", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.changedFields, (change, index) => {
|
|
2314
|
-
return openBlock(), createElementBlock("tr", { key: index }, [
|
|
2315
|
-
createElementVNode("td", _hoisted_8$16, toDisplayString(formatFieldName(change.path)), 1),
|
|
2316
|
-
createElementVNode("td", null, toDisplayString(formatValue(change.oldValue)), 1),
|
|
2317
|
-
createElementVNode("td", null, toDisplayString(formatValue(change.newValue)), 1)
|
|
2318
|
-
]);
|
|
2319
|
-
}), 128))])])]),
|
|
2320
|
-
createCommentVNode(" Mobile view - card format "),
|
|
2321
|
-
createElementVNode("div", _hoisted_9$15, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.changedFields, (change, index) => {
|
|
2322
|
-
return openBlock(), createElementBlock("div", {
|
|
2323
|
-
key: index,
|
|
2324
|
-
class: "border border-base-300 rounded-lg p-3"
|
|
2325
|
-
}, [createElementVNode("div", _hoisted_10$12, [createElementVNode("span", _hoisted_11$11, toDisplayString(formatFieldName(change.path)), 1)]), createElementVNode("div", _hoisted_12$10, [createElementVNode("div", null, [createElementVNode("div", _hoisted_13$8, toDisplayString(config.value.previousLabel || "Previous:"), 1), createElementVNode("div", _hoisted_14$8, toDisplayString(formatValue(change.oldValue)), 1)]), createElementVNode("div", null, [createElementVNode("div", _hoisted_15$7, toDisplayString(config.value.newLabel || "New:"), 1), createElementVNode("div", _hoisted_16$7, toDisplayString(formatValue(change.newValue)), 1)])])]);
|
|
2326
|
-
}), 128))])
|
|
2327
|
-
])) : (openBlock(), createElementBlock("div", _hoisted_17$6, toDisplayString(__props.changedFields.length) + " " + toDisplayString(__props.changedFields.length === 1 ? config.value.fieldSingular || "field" : config.value.fieldPlural || "fields") + " changed ", 1))])])) : createCommentVNode("v-if", true);
|
|
2328
|
-
};
|
|
2329
|
-
}
|
|
2330
|
-
});
|
|
2331
|
-
var RecordChangesSummary_default = _sfc_main$44;
|
|
2332
|
-
|
|
2333
|
-
//#endregion
|
|
2334
|
-
//#region src/components/ui/RecordVersionList.vue
|
|
2335
|
-
const _hoisted_1$39 = { class: "space-y-4" };
|
|
2336
|
-
const _hoisted_2$35 = {
|
|
2337
|
-
key: 0,
|
|
2338
|
-
class: "space-y-4"
|
|
2339
|
-
};
|
|
2340
|
-
const _hoisted_3$32 = { class: "alert alert-error shadow-lg text-sm" };
|
|
2341
|
-
const _hoisted_4$29 = { class: "font-bold" };
|
|
2342
|
-
const _hoisted_5$22 = { class: "text-sm" };
|
|
2343
|
-
const _hoisted_6$18 = { class: "alert alert-info shadow-lg text-sm" };
|
|
2344
|
-
const _hoisted_7$15 = { class: "space-y-3 max-w-4xl mx-auto" };
|
|
2345
|
-
const _hoisted_8$15 = { class: "card-body p-4" };
|
|
2346
|
-
const _hoisted_9$14 = { class: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2" };
|
|
2347
|
-
const _hoisted_10$11 = { class: "font-medium text-sm" };
|
|
2348
|
-
const _hoisted_11$10 = { class: "flex items-center gap-2 text-xs text-base-content/70" };
|
|
2349
|
-
const _hoisted_12$9 = {
|
|
2350
|
-
key: 0,
|
|
2351
|
-
class: "mt-1"
|
|
2352
|
-
};
|
|
2353
|
-
const _hoisted_13$7 = { class: "flex gap-2" };
|
|
2354
|
-
const _hoisted_14$7 = ["onClick"];
|
|
2355
|
-
const _hoisted_15$6 = {
|
|
2356
|
-
key: 0,
|
|
2357
|
-
class: "text-center py-4"
|
|
2358
|
-
};
|
|
2359
|
-
const _hoisted_16$6 = {
|
|
2360
|
-
key: 1,
|
|
2361
|
-
class: "text-center py-4"
|
|
2362
|
-
};
|
|
2363
|
-
const _hoisted_17$5 = ["disabled"];
|
|
2364
|
-
const _sfc_main$43 = /* @__PURE__ */ defineComponent({
|
|
2365
|
-
__name: "RecordVersionList",
|
|
2366
|
-
props: {
|
|
2367
|
-
versions: {},
|
|
2368
|
-
loading: { type: Boolean },
|
|
2369
|
-
error: {},
|
|
2370
|
-
hasNextPage: { type: Boolean },
|
|
2371
|
-
loadingMore: { type: Boolean },
|
|
2372
|
-
config: {},
|
|
2373
|
-
excludeLatest: { type: Boolean }
|
|
2374
|
-
},
|
|
2375
|
-
emits: ["retry", "load-more"],
|
|
2376
|
-
setup(__props) {
|
|
2377
|
-
const props = __props;
|
|
2378
|
-
const config = computed(() => props.config || {});
|
|
2379
|
-
const filteredVersions = computed(() => {
|
|
2380
|
-
if (!props.excludeLatest) return props.versions;
|
|
2381
|
-
if (props.versions.length <= 1) return [];
|
|
2382
|
-
return props.versions.slice(1);
|
|
2383
|
-
});
|
|
2384
|
-
const defaultOperationLabels = {
|
|
2385
|
-
insert: "Created",
|
|
2386
|
-
update: "Updated",
|
|
2387
|
-
delete: "Deleted"
|
|
2388
|
-
};
|
|
2389
|
-
const defaultOperationBadgeClasses = {
|
|
2390
|
-
insert: "badge-success",
|
|
2391
|
-
update: "badge-warning",
|
|
2392
|
-
delete: "badge-error"
|
|
2393
|
-
};
|
|
2394
|
-
/**
|
|
2395
|
-
* Format a date string to a readable format
|
|
2396
|
-
*/
|
|
2397
|
-
function formatDate(dateString) {
|
|
2398
|
-
if (!dateString) return "Unknown date";
|
|
2399
|
-
try {
|
|
2400
|
-
const date = new Date(dateString);
|
|
2401
|
-
return new Intl.DateTimeFormat("en-US", {
|
|
2402
|
-
year: "numeric",
|
|
2403
|
-
month: "short",
|
|
2404
|
-
day: "numeric",
|
|
2405
|
-
hour: "2-digit",
|
|
2406
|
-
minute: "2-digit"
|
|
2407
|
-
}).format(date);
|
|
2408
|
-
} catch (e) {
|
|
2409
|
-
return "Invalid date";
|
|
2410
|
-
}
|
|
2411
|
-
}
|
|
2412
|
-
/**
|
|
2413
|
-
* Format the operation type for display
|
|
2414
|
-
*/
|
|
2415
|
-
function formatOperation(operation) {
|
|
2416
|
-
if (!operation) return "Unknown";
|
|
2417
|
-
return {
|
|
2418
|
-
...defaultOperationLabels,
|
|
2419
|
-
...config.value.operationLabels
|
|
2420
|
-
}[operation] || operation;
|
|
2421
|
-
}
|
|
2422
|
-
/**
|
|
2423
|
-
* Get CSS class for operation badge
|
|
2424
|
-
*/
|
|
2425
|
-
function getOperationBadgeClass(operation) {
|
|
2426
|
-
if (!operation) return "badge-neutral";
|
|
2427
|
-
return {
|
|
2428
|
-
...defaultOperationBadgeClasses,
|
|
2429
|
-
...config.value.operationBadgeClasses
|
|
2430
|
-
}[operation] || "badge-neutral";
|
|
2431
|
-
}
|
|
2432
|
-
return (_ctx, _cache) => {
|
|
2433
|
-
return openBlock(), createElementBlock("div", _hoisted_1$39, [createCommentVNode(" Loading State "), __props.loading ? (openBlock(), createElementBlock("div", _hoisted_2$35, [(openBlock(), createElementBlock(Fragment, null, renderList(3, (i) => {
|
|
2434
|
-
return createElementVNode("div", {
|
|
2435
|
-
key: i,
|
|
2436
|
-
class: "card bg-base-100 shadow-xs animate-pulse"
|
|
2437
|
-
}, [..._cache[2] || (_cache[2] = [createElementVNode("div", { class: "card-body p-4" }, [createElementVNode("div", { class: "h-4 bg-base-300 rounded-sm w-1/4 mb-2" }), createElementVNode("div", { class: "h-3 bg-base-300 rounded-sm w-1/3" })], -1)])]);
|
|
2438
|
-
}), 64))])) : __props.error ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Error State "), createElementVNode("div", _hoisted_3$32, [
|
|
2439
|
-
_cache[3] || (_cache[3] = createElementVNode("svg", {
|
|
2440
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
2441
|
-
class: "stroke-current shrink-0 h-5 w-5",
|
|
2442
|
-
fill: "none",
|
|
2443
|
-
viewBox: "0 0 24 24"
|
|
2444
|
-
}, [createElementVNode("path", {
|
|
2445
|
-
"stroke-linecap": "round",
|
|
2446
|
-
"stroke-linejoin": "round",
|
|
2447
|
-
"stroke-width": "2",
|
|
2448
|
-
d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
2449
|
-
})], -1)),
|
|
2450
|
-
createElementVNode("div", null, [createElementVNode("h3", _hoisted_4$29, toDisplayString(config.value.errorTitle || "Error Loading Version History"), 1), createElementVNode("div", _hoisted_5$22, toDisplayString(__props.error.message), 1)]),
|
|
2451
|
-
createElementVNode("button", {
|
|
2452
|
-
class: "btn btn-xs",
|
|
2453
|
-
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("retry"))
|
|
2454
|
-
}, toDisplayString(config.value.retryText || "Retry"), 1)
|
|
2455
|
-
])], 2112)) : !filteredVersions.value.length ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createCommentVNode(" No Versions "), createElementVNode("div", _hoisted_6$18, [_cache[4] || (_cache[4] = createElementVNode("svg", {
|
|
2456
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
2457
|
-
fill: "none",
|
|
2458
|
-
viewBox: "0 0 24 24",
|
|
2459
|
-
class: "stroke-current shrink-0 w-5 h-5"
|
|
2460
|
-
}, [createElementVNode("path", {
|
|
2461
|
-
"stroke-linecap": "round",
|
|
2462
|
-
"stroke-linejoin": "round",
|
|
2463
|
-
"stroke-width": "2",
|
|
2464
|
-
d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
2465
|
-
})], -1)), createElementVNode("span", null, toDisplayString(config.value.noVersionsText || `No previous versions available for this ${config.value.recordDisplayName || "record"}.`), 1)])], 2112)) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [createCommentVNode(" Version List "), createElementVNode("div", _hoisted_7$15, [
|
|
2466
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(filteredVersions.value, (version) => {
|
|
2467
|
-
return openBlock(), createElementBlock("div", {
|
|
2468
|
-
key: version.id,
|
|
2469
|
-
class: "card bg-base-100 shadow-xs hover:shadow-md transition-shadow duration-200"
|
|
2470
|
-
}, [createElementVNode("div", _hoisted_8$15, [createElementVNode("div", _hoisted_9$14, [createElementVNode("div", null, [
|
|
2471
|
-
createElementVNode("h3", _hoisted_10$11, toDisplayString(config.value.versionLabelFormat ? config.value.versionLabelFormat(version) : `Version from ${formatDate(version.recorded_at)}`), 1),
|
|
2472
|
-
createElementVNode("div", _hoisted_11$10, [createElementVNode("span", { class: normalizeClass(["badge badge-xs", getOperationBadgeClass(version.operation)]) }, toDisplayString(formatOperation(version.operation)), 3), createElementVNode("span", null, "by " + toDisplayString(version.auth_username || "Unknown"), 1)]),
|
|
2473
|
-
createCommentVNode(" Custom metadata slot "),
|
|
2474
|
-
_ctx.$slots.versionMetadata ? (openBlock(), createElementBlock("div", _hoisted_12$9, [renderSlot(_ctx.$slots, "versionMetadata", { version })])) : createCommentVNode("v-if", true)
|
|
2475
|
-
]), createElementVNode("div", _hoisted_13$7, [createCommentVNode(" Custom actions slot "), renderSlot(_ctx.$slots, "versionActions", { version }, () => [createCommentVNode(" Default view action "), config.value.viewAction ? (openBlock(), createElementBlock("button", {
|
|
2476
|
-
key: 0,
|
|
2477
|
-
class: "btn btn-primary btn-xs",
|
|
2478
|
-
onClick: ($event) => config.value.viewAction(version)
|
|
2479
|
-
}, toDisplayString(config.value.viewActionText || "View Version"), 9, _hoisted_14$7)) : createCommentVNode("v-if", true)])])])])]);
|
|
2480
|
-
}), 128)),
|
|
2481
|
-
createCommentVNode(" Pagination "),
|
|
2482
|
-
__props.loadingMore ? (openBlock(), createElementBlock("div", _hoisted_15$6, [..._cache[5] || (_cache[5] = [createElementVNode("span", { class: "loading loading-spinner loading-md" }, null, -1)])])) : createCommentVNode("v-if", true),
|
|
2483
|
-
__props.hasNextPage ? (openBlock(), createElementBlock("div", _hoisted_16$6, [createElementVNode("button", {
|
|
2484
|
-
class: "btn btn-sm btn-neutral",
|
|
2485
|
-
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("load-more")),
|
|
2486
|
-
disabled: __props.loadingMore
|
|
2487
|
-
}, toDisplayString(config.value.loadMoreText || "Load More"), 9, _hoisted_17$5)])) : createCommentVNode("v-if", true)
|
|
2488
|
-
])], 2112))]);
|
|
2489
|
-
};
|
|
2490
|
-
}
|
|
2491
|
-
});
|
|
2492
|
-
var RecordVersionList_default = _sfc_main$43;
|
|
2493
|
-
|
|
2494
|
-
//#endregion
|
|
2495
|
-
//#region src/components/ui/RecordVersionViewer.vue
|
|
2496
|
-
const _hoisted_1$38 = { class: "sticky top-0 z-10 bg-base-100 shadow-sm" };
|
|
2497
|
-
const _hoisted_2$34 = { class: "flex justify-between items-center p-4 border-b" };
|
|
2498
|
-
const _hoisted_3$31 = { class: "text-lg font-semibold" };
|
|
2499
|
-
const _hoisted_4$28 = {
|
|
2500
|
-
key: 0,
|
|
2501
|
-
class: "text-sm text-base-content/70"
|
|
2502
|
-
};
|
|
2503
|
-
const _hoisted_5$21 = { class: "flex gap-2" };
|
|
2504
|
-
const _hoisted_6$17 = ["disabled"];
|
|
2505
|
-
const _hoisted_7$14 = {
|
|
2506
|
-
key: 0,
|
|
2507
|
-
class: "loading loading-spinner loading-sm mr-1"
|
|
2508
|
-
};
|
|
2509
|
-
const _hoisted_8$14 = {
|
|
2510
|
-
key: 0,
|
|
2511
|
-
class: "max-w-4xl mx-auto p-2 md:p-4 bg-base-200 rounded-lg shadow-sm"
|
|
2512
|
-
};
|
|
2513
|
-
const _hoisted_9$13 = {
|
|
2514
|
-
key: 0,
|
|
2515
|
-
class: "mb-4"
|
|
2516
|
-
};
|
|
2517
|
-
const _hoisted_10$10 = {
|
|
2518
|
-
key: 1,
|
|
2519
|
-
class: "mb-4"
|
|
2520
|
-
};
|
|
2521
|
-
const _hoisted_11$9 = { class: "alert alert-warning" };
|
|
2522
|
-
const _hoisted_12$8 = { class: "font-bold" };
|
|
2523
|
-
const _hoisted_13$6 = { class: "text-sm" };
|
|
2524
|
-
const _hoisted_14$6 = { class: "mb-4 p-3 bg-base-100 rounded-lg shadow-sm" };
|
|
2525
|
-
const _hoisted_15$5 = { class: "font-semibold mb-2" };
|
|
2526
|
-
const _hoisted_16$5 = { class: "grid grid-cols-1 md:grid-cols-2 gap-4 text-sm" };
|
|
2527
|
-
const _hoisted_17$4 = { class: "text-base-content/70" };
|
|
2528
|
-
const _hoisted_18$4 = { class: "ml-2" };
|
|
2529
|
-
const _hoisted_19$4 = { class: "space-y-4" };
|
|
2530
|
-
const _hoisted_20$4 = { class: "p-4 bg-base-100 rounded-lg shadow-sm" };
|
|
2531
|
-
const _hoisted_21$3 = { class: "font-semibold mb-2" };
|
|
2532
|
-
const _hoisted_22$3 = { class: "text-xs bg-base-200 p-3 rounded overflow-auto max-h-96" };
|
|
2533
|
-
const _sfc_main$42 = /* @__PURE__ */ defineComponent({
|
|
2534
|
-
__name: "RecordVersionViewer",
|
|
2535
|
-
props: {
|
|
2536
|
-
version: {},
|
|
2537
|
-
recordData: {},
|
|
2538
|
-
changedFields: { default: () => [] },
|
|
2539
|
-
isLoading: { type: Boolean },
|
|
2540
|
-
isRestoring: { type: Boolean },
|
|
2541
|
-
error: {},
|
|
2542
|
-
config: {}
|
|
2543
|
-
},
|
|
2544
|
-
setup(__props) {
|
|
2545
|
-
const props = __props;
|
|
2546
|
-
const config = computed(() => props.config || {});
|
|
2547
|
-
const shouldShowChanges = computed(() => {
|
|
2548
|
-
return props.changedFields && props.changedFields.length > 0 && props.version?.operation === "update";
|
|
2549
|
-
});
|
|
2550
|
-
const filteredRecordData = computed(() => {
|
|
2551
|
-
if (!props.recordData) return {};
|
|
2552
|
-
const excludeFields = new Set([
|
|
2553
|
-
"id",
|
|
2554
|
-
"created_at",
|
|
2555
|
-
"updated_at",
|
|
2556
|
-
"created_by",
|
|
2557
|
-
"updated_by",
|
|
2558
|
-
"__typename",
|
|
2559
|
-
...config.value.excludeFields || []
|
|
2560
|
-
]);
|
|
2561
|
-
return Object.entries(props.recordData).filter(([key]) => !excludeFields.has(key)).reduce((acc, [key, value]) => {
|
|
2562
|
-
acc[key] = value;
|
|
2563
|
-
return acc;
|
|
2564
|
-
}, {});
|
|
2565
|
-
});
|
|
2566
|
-
function formatVersionInfo(version) {
|
|
2567
|
-
const date = new Date(version.recorded_at).toLocaleString();
|
|
2568
|
-
return `${version.operation.charAt(0).toUpperCase() + version.operation.slice(1)} on ${date} by ${version.auth_username || "Unknown"}`;
|
|
2569
|
-
}
|
|
2570
|
-
function formatFieldName(field) {
|
|
2571
|
-
if (config.value.formatFieldName) return config.value.formatFieldName(field);
|
|
2572
|
-
return field.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase()).trim();
|
|
2573
|
-
}
|
|
2574
|
-
function formatValue(value) {
|
|
2575
|
-
if (config.value.formatValue) return config.value.formatValue(value);
|
|
2576
|
-
if (value === null || value === void 0) return "N/A";
|
|
2577
|
-
if (typeof value === "boolean") return value ? "Yes" : "No";
|
|
2578
|
-
if (typeof value === "object") return JSON.stringify(value);
|
|
2579
|
-
return String(value);
|
|
2580
|
-
}
|
|
2581
|
-
async function handleRestore() {
|
|
2582
|
-
if (config.value.onRestore && props.version) await config.value.onRestore(props.version);
|
|
2583
|
-
}
|
|
2584
|
-
return (_ctx, _cache) => {
|
|
2585
|
-
return openBlock(), createElementBlock("div", null, [
|
|
2586
|
-
createCommentVNode(" Version Header - sticky on mobile "),
|
|
2587
|
-
createElementVNode("div", _hoisted_1$38, [renderSlot(_ctx.$slots, "header", {
|
|
2588
|
-
version: __props.version,
|
|
2589
|
-
isLoading: __props.isLoading,
|
|
2590
|
-
isRestoring: __props.isRestoring
|
|
2591
|
-
}, () => [createCommentVNode(" Default header "), createElementVNode("div", _hoisted_2$34, [createElementVNode("div", null, [createElementVNode("h1", _hoisted_3$31, toDisplayString(config.value.title || `View ${config.value.recordDisplayName || "Record"} Version`), 1), __props.version ? (openBlock(), createElementBlock("div", _hoisted_4$28, toDisplayString(formatVersionInfo(__props.version)), 1)) : createCommentVNode("v-if", true)]), createElementVNode("div", _hoisted_5$21, [
|
|
2592
|
-
createCommentVNode(" Back button "),
|
|
2593
|
-
config.value.onBack ? (openBlock(), createElementBlock("button", {
|
|
2594
|
-
key: 0,
|
|
2595
|
-
onClick: _cache[0] || (_cache[0] = (...args) => config.value.onBack && config.value.onBack(...args)),
|
|
2596
|
-
class: "btn btn-ghost btn-sm"
|
|
2597
|
-
}, [_cache[1] || (_cache[1] = createElementVNode("svg", {
|
|
2598
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
2599
|
-
class: "h-4 w-4 mr-1",
|
|
2600
|
-
fill: "none",
|
|
2601
|
-
viewBox: "0 0 24 24",
|
|
2602
|
-
stroke: "currentColor"
|
|
2603
|
-
}, [createElementVNode("path", {
|
|
2604
|
-
"stroke-linecap": "round",
|
|
2605
|
-
"stroke-linejoin": "round",
|
|
2606
|
-
"stroke-width": "2",
|
|
2607
|
-
d: "M10 19l-7-7m0 0l7-7m-7 7h18"
|
|
2608
|
-
})], -1)), createTextVNode(" " + toDisplayString(config.value.backText || "Back"), 1)])) : createCommentVNode("v-if", true),
|
|
2609
|
-
createCommentVNode(" Restore button "),
|
|
2610
|
-
config.value.onRestore && __props.version && __props.version.operation !== "delete" ? (openBlock(), createElementBlock("button", {
|
|
2611
|
-
key: 1,
|
|
2612
|
-
onClick: handleRestore,
|
|
2613
|
-
disabled: __props.isRestoring,
|
|
2614
|
-
class: "btn btn-primary btn-sm"
|
|
2615
|
-
}, [__props.isRestoring ? (openBlock(), createElementBlock("span", _hoisted_7$14)) : createCommentVNode("v-if", true), createTextVNode(" " + toDisplayString(config.value.restoreText || "Restore Version"), 1)], 8, _hoisted_6$17)) : createCommentVNode("v-if", true)
|
|
2616
|
-
])])])]),
|
|
2617
|
-
createCommentVNode(" Loading and Error States "),
|
|
2618
|
-
createVNode(LoadingErrorStates_default, {
|
|
2619
|
-
"is-loading": __props.isLoading,
|
|
2620
|
-
error: __props.error
|
|
2621
|
-
}, null, 8, ["is-loading", "error"]),
|
|
2622
|
-
createCommentVNode(" Main content area "),
|
|
2623
|
-
!__props.isLoading && !__props.error && __props.recordData ? (openBlock(), createElementBlock("div", _hoisted_8$14, [
|
|
2624
|
-
createCommentVNode(" Changes Summary - Only show for update operations "),
|
|
2625
|
-
shouldShowChanges.value ? (openBlock(), createElementBlock("div", _hoisted_9$13, [renderSlot(_ctx.$slots, "changes", {
|
|
2626
|
-
changedFields: __props.changedFields,
|
|
2627
|
-
version: __props.version
|
|
2628
|
-
}, () => [createVNode(RecordChangesSummary_default, {
|
|
2629
|
-
"changed-fields": __props.changedFields,
|
|
2630
|
-
config: config.value.changesSummaryConfig
|
|
2631
|
-
}, null, 8, ["changed-fields", "config"])])])) : createCommentVNode("v-if", true),
|
|
2632
|
-
createCommentVNode(" Deletion Notice "),
|
|
2633
|
-
__props.version?.operation === "delete" ? (openBlock(), createElementBlock("div", _hoisted_10$10, [renderSlot(_ctx.$slots, "deletion-notice", { version: __props.version }, () => [createElementVNode("div", _hoisted_11$9, [_cache[2] || (_cache[2] = createElementVNode("svg", {
|
|
2634
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
2635
|
-
class: "stroke-current shrink-0 h-6 w-6",
|
|
2636
|
-
fill: "none",
|
|
2637
|
-
viewBox: "0 0 24 24"
|
|
2638
|
-
}, [createElementVNode("path", {
|
|
2639
|
-
"stroke-linecap": "round",
|
|
2640
|
-
"stroke-linejoin": "round",
|
|
2641
|
-
"stroke-width": "2",
|
|
2642
|
-
d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z"
|
|
2643
|
-
})], -1)), createElementVNode("div", null, [createElementVNode("h3", _hoisted_12$8, toDisplayString(config.value.deletionNoticeTitle || "Record Was Deleted"), 1), createElementVNode("div", _hoisted_13$6, toDisplayString(config.value.deletionNoticeText || "This version shows the state of the record before it was deleted."), 1)])])])])) : createCommentVNode("v-if", true),
|
|
2644
|
-
createCommentVNode(" Record Information "),
|
|
2645
|
-
createElementVNode("div", _hoisted_14$6, [renderSlot(_ctx.$slots, "record-info", {
|
|
2646
|
-
recordData: __props.recordData,
|
|
2647
|
-
version: __props.version
|
|
2648
|
-
}, () => [
|
|
2649
|
-
createCommentVNode(" Default record info display "),
|
|
2650
|
-
createElementVNode("h3", _hoisted_15$5, toDisplayString(config.value.recordInfoTitle || "Record Information"), 1),
|
|
2651
|
-
createElementVNode("div", _hoisted_16$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(filteredRecordData.value, (value, key) => {
|
|
2652
|
-
return openBlock(), createElementBlock("div", { key }, [createElementVNode("strong", _hoisted_17$4, toDisplayString(formatFieldName(key)) + ":", 1), createElementVNode("span", _hoisted_18$4, toDisplayString(formatValue(value)), 1)]);
|
|
2653
|
-
}), 128))])
|
|
2654
|
-
])]),
|
|
2655
|
-
createCommentVNode(" Custom Content Area "),
|
|
2656
|
-
createElementVNode("div", _hoisted_19$4, [renderSlot(_ctx.$slots, "content", {
|
|
2657
|
-
recordData: __props.recordData,
|
|
2658
|
-
version: __props.version,
|
|
2659
|
-
changedFields: __props.changedFields
|
|
2660
|
-
}, () => [createCommentVNode(" Fallback content if no slot provided "), createElementVNode("div", _hoisted_20$4, [createElementVNode("h3", _hoisted_21$3, toDisplayString(config.value.rawDataTitle || "Raw Data"), 1), createElementVNode("pre", _hoisted_22$3, toDisplayString(JSON.stringify(__props.recordData, null, 2)), 1)])])])
|
|
2661
|
-
])) : createCommentVNode("v-if", true)
|
|
2662
|
-
]);
|
|
2663
|
-
};
|
|
2664
|
-
}
|
|
2665
|
-
});
|
|
2666
|
-
var RecordVersionViewer_default = _sfc_main$42;
|
|
2184
|
+
var KeyValueEditor_default = /* @__PURE__ */ export_helper_default(_sfc_main$42, [["__scopeId", "data-v-010818ef"]]);
|
|
2667
2185
|
|
|
2668
2186
|
//#endregion
|
|
2669
2187
|
//#region src/components/ui/SummarySection.vue
|
|
@@ -3003,6 +2521,7 @@ function createUserAuthorizedGuard(options) {
|
|
|
3003
2521
|
const { allowedUserTypes, redirectTo = { name: "Home" }, loginPath = "/auth/login", requireAuth = true } = options;
|
|
3004
2522
|
return async (to, _from, next) => {
|
|
3005
2523
|
const userSession = useUserSessionStore();
|
|
2524
|
+
const env = useEnv();
|
|
3006
2525
|
if (requireAuth) if (!!userSession.accessToken) {
|
|
3007
2526
|
const { accessTokenExpired, refreshTokenExpired } = userSession.isTokenExpired();
|
|
3008
2527
|
if (!accessTokenExpired) {} else if (refreshTokenExpired) {
|
|
@@ -3040,6 +2559,16 @@ function createUserAuthorizedGuard(options) {
|
|
|
3040
2559
|
return;
|
|
3041
2560
|
}
|
|
3042
2561
|
}
|
|
2562
|
+
if (to.path !== "/auth/consent-required" && env.requireConsentForExistingUsers) {
|
|
2563
|
+
if (userSession.currentSession?.user?.consents_complete === false) {
|
|
2564
|
+
logger.debug("[UserAuthorized] Consents incomplete, redirecting to consent-required");
|
|
2565
|
+
next({
|
|
2566
|
+
path: "/auth/consent-required",
|
|
2567
|
+
query: to.query
|
|
2568
|
+
});
|
|
2569
|
+
return;
|
|
2570
|
+
}
|
|
2571
|
+
}
|
|
3043
2572
|
const userType = userSession.currentSession?.user.user_type;
|
|
3044
2573
|
if (!userType) {
|
|
3045
2574
|
logger.warn("[UserAuthorized] No user type found, redirecting");
|
|
@@ -3160,7 +2689,7 @@ const userRoutes = [{
|
|
|
3160
2689
|
{
|
|
3161
2690
|
path: "appearance",
|
|
3162
2691
|
name: "Appearance",
|
|
3163
|
-
component: () => import("./Appearance-
|
|
2692
|
+
component: () => import("./Appearance-D5pwxuf4.js"),
|
|
3164
2693
|
meta: {
|
|
3165
2694
|
title: "Appearance",
|
|
3166
2695
|
description: "Appearance page for Category 5 App"
|
|
@@ -3169,7 +2698,7 @@ const userRoutes = [{
|
|
|
3169
2698
|
{
|
|
3170
2699
|
path: "profile",
|
|
3171
2700
|
name: "Profile",
|
|
3172
|
-
component: () => import("./UserProfilePage-
|
|
2701
|
+
component: () => import("./UserProfilePage-BxIMig4s.js"),
|
|
3173
2702
|
meta: {
|
|
3174
2703
|
title: "Profile",
|
|
3175
2704
|
description: "Profile page for Category 5 App"
|
|
@@ -3178,7 +2707,7 @@ const userRoutes = [{
|
|
|
3178
2707
|
{
|
|
3179
2708
|
path: "password",
|
|
3180
2709
|
name: "Password",
|
|
3181
|
-
component: () => import("./ChangePasswordPage-
|
|
2710
|
+
component: () => import("./ChangePasswordPage-Re323roR.js"),
|
|
3182
2711
|
meta: {
|
|
3183
2712
|
title: "Password",
|
|
3184
2713
|
description: "Password page for Category 5 App"
|
|
@@ -3262,7 +2791,7 @@ const teamMemberRoutes = [
|
|
|
3262
2791
|
{
|
|
3263
2792
|
path: teamMemberPaths.list.path,
|
|
3264
2793
|
name: teamMemberPaths.list.name,
|
|
3265
|
-
component: () => import("./TeamMemberList-
|
|
2794
|
+
component: () => import("./TeamMemberList-DJKYxfsx.js"),
|
|
3266
2795
|
beforeEnter: [userAuthenticated],
|
|
3267
2796
|
meta: {
|
|
3268
2797
|
title: "Team Members",
|
|
@@ -3272,7 +2801,7 @@ const teamMemberRoutes = [
|
|
|
3272
2801
|
{
|
|
3273
2802
|
path: teamMemberPaths.create.path,
|
|
3274
2803
|
name: teamMemberPaths.create.name,
|
|
3275
|
-
component: () => import("./CreateTeamMemberForm-
|
|
2804
|
+
component: () => import("./CreateTeamMemberForm-CLHT1HN_.js"),
|
|
3276
2805
|
beforeEnter: [userAuthenticated],
|
|
3277
2806
|
meta: {
|
|
3278
2807
|
title: "Create Team Member",
|
|
@@ -3281,7 +2810,7 @@ const teamMemberRoutes = [
|
|
|
3281
2810
|
},
|
|
3282
2811
|
{
|
|
3283
2812
|
path: teamMemberPaths.view.path,
|
|
3284
|
-
component: () => import("./TeamMemberParent-
|
|
2813
|
+
component: () => import("./TeamMemberParent-Bk6dqXsh.js"),
|
|
3285
2814
|
beforeEnter: [userAuthenticated],
|
|
3286
2815
|
meta: { sectionTabs: [{
|
|
3287
2816
|
id: "view",
|
|
@@ -3295,7 +2824,7 @@ const teamMemberRoutes = [
|
|
|
3295
2824
|
children: [{
|
|
3296
2825
|
path: "",
|
|
3297
2826
|
name: teamMemberPaths.view.name,
|
|
3298
|
-
component: () => import("./ViewTeamMember-
|
|
2827
|
+
component: () => import("./ViewTeamMember-DIaIqfbX.js"),
|
|
3299
2828
|
meta: {
|
|
3300
2829
|
title: "View Team Member",
|
|
3301
2830
|
description: "View team member details",
|
|
@@ -3304,7 +2833,7 @@ const teamMemberRoutes = [
|
|
|
3304
2833
|
}, {
|
|
3305
2834
|
path: teamMemberPaths.edit.path,
|
|
3306
2835
|
name: teamMemberPaths.edit.name,
|
|
3307
|
-
component: () => import("./EditTeamMemberForm-
|
|
2836
|
+
component: () => import("./EditTeamMemberForm-CBxFLoIy.js"),
|
|
3308
2837
|
meta: {
|
|
3309
2838
|
title: "Edit Team Member",
|
|
3310
2839
|
description: "Edit team member details",
|
|
@@ -3368,7 +2897,7 @@ const teamRoutes = [{
|
|
|
3368
2897
|
{
|
|
3369
2898
|
path: teamPaths.list.path,
|
|
3370
2899
|
name: teamPaths.list.name,
|
|
3371
|
-
component: () => import("./TeamList-
|
|
2900
|
+
component: () => import("./TeamList-BNo_ime8.js"),
|
|
3372
2901
|
meta: {
|
|
3373
2902
|
title: "Teams",
|
|
3374
2903
|
description: "Manage teams",
|
|
@@ -3386,7 +2915,7 @@ const teamRoutes = [{
|
|
|
3386
2915
|
{
|
|
3387
2916
|
path: teamPaths.create.path,
|
|
3388
2917
|
name: teamPaths.create.name,
|
|
3389
|
-
component: () => import("./CreateTeamForm-
|
|
2918
|
+
component: () => import("./CreateTeamForm-DXN1hoJh.js"),
|
|
3390
2919
|
meta: {
|
|
3391
2920
|
title: "Create Team",
|
|
3392
2921
|
description: "Create new team",
|
|
@@ -3401,7 +2930,7 @@ const teamRoutes = [{
|
|
|
3401
2930
|
},
|
|
3402
2931
|
{
|
|
3403
2932
|
path: teamPaths.view.path,
|
|
3404
|
-
component: () => import("./TeamParent-
|
|
2933
|
+
component: () => import("./TeamParent-TSWT_0bK.js"),
|
|
3405
2934
|
meta: { sectionTabs: [
|
|
3406
2935
|
{
|
|
3407
2936
|
id: "view",
|
|
@@ -3438,7 +2967,7 @@ const teamRoutes = [{
|
|
|
3438
2967
|
{
|
|
3439
2968
|
path: "",
|
|
3440
2969
|
name: teamPaths.view.name,
|
|
3441
|
-
component: () => import("./ViewTeam-
|
|
2970
|
+
component: () => import("./ViewTeam-DIxy437n.js"),
|
|
3442
2971
|
meta: {
|
|
3443
2972
|
title: "View Team",
|
|
3444
2973
|
description: "View team details",
|
|
@@ -3448,7 +2977,7 @@ const teamRoutes = [{
|
|
|
3448
2977
|
{
|
|
3449
2978
|
path: teamPaths.edit.path,
|
|
3450
2979
|
name: teamPaths.edit.name,
|
|
3451
|
-
component: () => import("./EditTeamForm-
|
|
2980
|
+
component: () => import("./EditTeamForm-BDQkhBbx.js"),
|
|
3452
2981
|
meta: {
|
|
3453
2982
|
title: "Edit Team",
|
|
3454
2983
|
description: "Edit team details",
|
|
@@ -3458,7 +2987,7 @@ const teamRoutes = [{
|
|
|
3458
2987
|
{
|
|
3459
2988
|
path: teamPaths.notes.path,
|
|
3460
2989
|
name: teamPaths.notes.name,
|
|
3461
|
-
component: () => import("./TeamNotesTab-
|
|
2990
|
+
component: () => import("./TeamNotesTab-JRWYpqRJ.js"),
|
|
3462
2991
|
meta: {
|
|
3463
2992
|
title: "Team Notes",
|
|
3464
2993
|
description: "View and manage notes",
|
|
@@ -3468,7 +2997,7 @@ const teamRoutes = [{
|
|
|
3468
2997
|
{
|
|
3469
2998
|
path: teamPaths.attachments.path,
|
|
3470
2999
|
name: teamPaths.attachments.name,
|
|
3471
|
-
component: () => import("./TeamAttachmentsTab-
|
|
3000
|
+
component: () => import("./TeamAttachmentsTab-IaRtuF55.js"),
|
|
3472
3001
|
meta: {
|
|
3473
3002
|
title: "Team Attachments",
|
|
3474
3003
|
description: "View and manage attachments",
|
|
@@ -3478,7 +3007,7 @@ const teamRoutes = [{
|
|
|
3478
3007
|
{
|
|
3479
3008
|
path: teamPaths.history.path,
|
|
3480
3009
|
name: teamPaths.history.name,
|
|
3481
|
-
component: () => import("./TeamHistoryTab-
|
|
3010
|
+
component: () => import("./TeamHistoryTab-DWcVhkwC.js"),
|
|
3482
3011
|
meta: {
|
|
3483
3012
|
title: "Team History",
|
|
3484
3013
|
description: "View audit trail and changes",
|
|
@@ -3488,7 +3017,7 @@ const teamRoutes = [{
|
|
|
3488
3017
|
{
|
|
3489
3018
|
path: teamPaths.members.path,
|
|
3490
3019
|
name: teamPaths.members.name,
|
|
3491
|
-
component: () => import("./TeamMembersTab-
|
|
3020
|
+
component: () => import("./TeamMembersTab-CBB2Yl_I.js"),
|
|
3492
3021
|
meta: {
|
|
3493
3022
|
title: "Team Members",
|
|
3494
3023
|
description: "View and manage team members",
|
|
@@ -5014,7 +4543,7 @@ function useSavedFilters(config) {
|
|
|
5014
4543
|
const savedFilterRoutes = [{
|
|
5015
4544
|
path: "/saved-filters",
|
|
5016
4545
|
name: "SavedFilters",
|
|
5017
|
-
component: () => import("./SavedFiltersPage-
|
|
4546
|
+
component: () => import("./SavedFiltersPage-BlzfWkaj.js"),
|
|
5018
4547
|
beforeEnter: [userAuthenticated],
|
|
5019
4548
|
meta: {
|
|
5020
4549
|
title: "Saved Filters",
|
|
@@ -5731,7 +5260,7 @@ const customerSupportTicketRoutes = [{
|
|
|
5731
5260
|
{
|
|
5732
5261
|
path: customerSupportPaths.customer_list.path,
|
|
5733
5262
|
name: customerSupportPaths.customer_list.name,
|
|
5734
|
-
component: () => import("./CustomerSupportTicketList-
|
|
5263
|
+
component: () => import("./CustomerSupportTicketList-DR-UfcGr.js"),
|
|
5735
5264
|
beforeEnter: (to) => customerListPresetGuard(to),
|
|
5736
5265
|
meta: {
|
|
5737
5266
|
title: "Tickets",
|
|
@@ -5750,7 +5279,7 @@ const customerSupportTicketRoutes = [{
|
|
|
5750
5279
|
{
|
|
5751
5280
|
path: customerSupportPaths.customer_create.path,
|
|
5752
5281
|
name: customerSupportPaths.customer_create.name,
|
|
5753
|
-
component: () => import("./CustomerCreateSupportTicketForm-
|
|
5282
|
+
component: () => import("./CustomerCreateSupportTicketForm-B8JQNC1I.js"),
|
|
5754
5283
|
meta: {
|
|
5755
5284
|
title: "Create Support Ticket",
|
|
5756
5285
|
description: "Create new support ticket",
|
|
@@ -5766,7 +5295,7 @@ const customerSupportTicketRoutes = [{
|
|
|
5766
5295
|
{
|
|
5767
5296
|
path: customerSupportPaths.customer_create_success.path,
|
|
5768
5297
|
name: customerSupportPaths.customer_create_success.name,
|
|
5769
|
-
component: () => import("./CustomerSupportTicketSuccess-
|
|
5298
|
+
component: () => import("./CustomerSupportTicketSuccess-SBdIcS-_.js"),
|
|
5770
5299
|
meta: {
|
|
5771
5300
|
title: "Support Ticket Submitted",
|
|
5772
5301
|
description: "Support ticket submitted successfully",
|
|
@@ -5788,7 +5317,7 @@ const customerSupportTicketRoutes = [{
|
|
|
5788
5317
|
},
|
|
5789
5318
|
{
|
|
5790
5319
|
path: customerSupportPaths.customer_view.path,
|
|
5791
|
-
component: () => import("./CustomerSupportTicketParent-
|
|
5320
|
+
component: () => import("./CustomerSupportTicketParent-C-KzT4qQ.js"),
|
|
5792
5321
|
meta: {
|
|
5793
5322
|
title: "View Support Ticket",
|
|
5794
5323
|
description: "View support ticket details"
|
|
@@ -5796,7 +5325,7 @@ const customerSupportTicketRoutes = [{
|
|
|
5796
5325
|
children: [{
|
|
5797
5326
|
path: "",
|
|
5798
5327
|
name: customerSupportPaths.customer_view.name,
|
|
5799
|
-
component: () => import("./CustomerSupportTicketDetailPage-
|
|
5328
|
+
component: () => import("./CustomerSupportTicketDetailPage-DyJTKtLU.js"),
|
|
5800
5329
|
meta: {
|
|
5801
5330
|
title: "View Support Ticket",
|
|
5802
5331
|
description: "View support ticket details"
|
|
@@ -5873,7 +5402,7 @@ const staffSupportTicketRoutes = [{
|
|
|
5873
5402
|
{
|
|
5874
5403
|
path: staffSupportPaths.staff_list.path,
|
|
5875
5404
|
name: staffSupportPaths.staff_list.name,
|
|
5876
|
-
component: () => import("./StaffSupportTicketList-
|
|
5405
|
+
component: () => import("./StaffSupportTicketList-HA4NlkKE.js"),
|
|
5877
5406
|
beforeEnter: (to) => staffListPresetGuard(to),
|
|
5878
5407
|
meta: {
|
|
5879
5408
|
title: "Manage Support",
|
|
@@ -5887,7 +5416,7 @@ const staffSupportTicketRoutes = [{
|
|
|
5887
5416
|
{
|
|
5888
5417
|
path: staffSupportPaths.staff_create.path,
|
|
5889
5418
|
name: staffSupportPaths.staff_create.name,
|
|
5890
|
-
component: () => import("./StaffCreateSupportTicketForm-
|
|
5419
|
+
component: () => import("./StaffCreateSupportTicketForm-BrGB7tqD.js"),
|
|
5891
5420
|
meta: {
|
|
5892
5421
|
title: "Create Support Ticket",
|
|
5893
5422
|
description: "Create new support ticket item",
|
|
@@ -5903,7 +5432,7 @@ const staffSupportTicketRoutes = [{
|
|
|
5903
5432
|
{
|
|
5904
5433
|
path: staffSupportPaths.staff_create_success.path,
|
|
5905
5434
|
name: staffSupportPaths.staff_create_success.name,
|
|
5906
|
-
component: () => import("./StaffSupportTicketSuccess-
|
|
5435
|
+
component: () => import("./StaffSupportTicketSuccess-CTeMG_iK.js"),
|
|
5907
5436
|
meta: {
|
|
5908
5437
|
title: "Support Ticket Created",
|
|
5909
5438
|
description: "Support ticket created successfully",
|
|
@@ -5925,7 +5454,7 @@ const staffSupportTicketRoutes = [{
|
|
|
5925
5454
|
},
|
|
5926
5455
|
{
|
|
5927
5456
|
path: staffSupportPaths.staff_edit.path,
|
|
5928
|
-
component: () => import("./StaffSupportTicketParent-
|
|
5457
|
+
component: () => import("./StaffSupportTicketParent-BTbpNdfc.js"),
|
|
5929
5458
|
meta: {
|
|
5930
5459
|
title: "View Support Ticket",
|
|
5931
5460
|
description: "View support ticket details"
|
|
@@ -5933,7 +5462,7 @@ const staffSupportTicketRoutes = [{
|
|
|
5933
5462
|
children: [{
|
|
5934
5463
|
path: "",
|
|
5935
5464
|
name: staffSupportPaths.staff_edit.name,
|
|
5936
|
-
component: () => import("./StaffSupportTicketDetailPage-
|
|
5465
|
+
component: () => import("./StaffSupportTicketDetailPage-D0SjH36N.js"),
|
|
5937
5466
|
meta: {
|
|
5938
5467
|
title: "View Support Ticket",
|
|
5939
5468
|
description: "View support ticket details"
|
|
@@ -8423,6 +7952,25 @@ function useSupportTicketStatus() {
|
|
|
8423
7952
|
};
|
|
8424
7953
|
}
|
|
8425
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
|
+
|
|
8426
7974
|
//#endregion
|
|
8427
7975
|
//#region src/slices/auth/authRoutes.ts
|
|
8428
7976
|
const authPaths = {
|
|
@@ -8470,6 +8018,16 @@ const authPaths = {
|
|
|
8470
8018
|
path: "verify-email-required",
|
|
8471
8019
|
full_path: "/auth/verify-email-required",
|
|
8472
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"
|
|
8473
8031
|
}
|
|
8474
8032
|
};
|
|
8475
8033
|
const { allowUserSignup } = useEnv();
|
|
@@ -8477,7 +8035,7 @@ const baseRoutes = [
|
|
|
8477
8035
|
{
|
|
8478
8036
|
path: authPaths.login.path,
|
|
8479
8037
|
name: authPaths.login.name,
|
|
8480
|
-
component: () => import("./LoginForm-
|
|
8038
|
+
component: () => import("./LoginForm-C97dUsU3.js"),
|
|
8481
8039
|
meta: {
|
|
8482
8040
|
title: "Login",
|
|
8483
8041
|
description: "Login page for Category 5 App"
|
|
@@ -8487,7 +8045,7 @@ const baseRoutes = [
|
|
|
8487
8045
|
{
|
|
8488
8046
|
path: authPaths.forgot_password.path,
|
|
8489
8047
|
name: authPaths.forgot_password.name,
|
|
8490
|
-
component: () => import("./ForgotPassword-
|
|
8048
|
+
component: () => import("./ForgotPassword-D3OQqbrD.js"),
|
|
8491
8049
|
meta: {
|
|
8492
8050
|
title: "Forgot Password",
|
|
8493
8051
|
description: "Forgot Password page for Category 5 App"
|
|
@@ -8497,7 +8055,7 @@ const baseRoutes = [
|
|
|
8497
8055
|
{
|
|
8498
8056
|
path: authPaths.reset_password.path,
|
|
8499
8057
|
name: authPaths.reset_password.name,
|
|
8500
|
-
component: () => import("./ResetPassword-
|
|
8058
|
+
component: () => import("./ResetPassword-CkPqUFbq.js"),
|
|
8501
8059
|
meta: {
|
|
8502
8060
|
title: "Reset Password",
|
|
8503
8061
|
description: "Reset Password page for Category 5 App"
|
|
@@ -8507,7 +8065,7 @@ const baseRoutes = [
|
|
|
8507
8065
|
{
|
|
8508
8066
|
path: authPaths.logout.path,
|
|
8509
8067
|
name: authPaths.logout.name,
|
|
8510
|
-
component: () => import("./Logout-
|
|
8068
|
+
component: () => import("./Logout-DY3iorah.js"),
|
|
8511
8069
|
meta: {
|
|
8512
8070
|
title: "Logout",
|
|
8513
8071
|
description: "Logout page for Category 5 App"
|
|
@@ -8516,7 +8074,7 @@ const baseRoutes = [
|
|
|
8516
8074
|
{
|
|
8517
8075
|
path: authPaths.mfa_setup.path,
|
|
8518
8076
|
name: authPaths.mfa_setup.name,
|
|
8519
|
-
component: () => import("./MfaSetup-
|
|
8077
|
+
component: () => import("./MfaSetup-DAQV8MhP.js"),
|
|
8520
8078
|
meta: {
|
|
8521
8079
|
title: "Set Up Two-Factor Authentication",
|
|
8522
8080
|
description: "Enable MFA for your account"
|
|
@@ -8525,7 +8083,7 @@ const baseRoutes = [
|
|
|
8525
8083
|
{
|
|
8526
8084
|
path: authPaths.mfa_verify.path,
|
|
8527
8085
|
name: authPaths.mfa_verify.name,
|
|
8528
|
-
component: () => import("./MfaVerify-
|
|
8086
|
+
component: () => import("./MfaVerify-D-_oX6gL.js"),
|
|
8529
8087
|
meta: {
|
|
8530
8088
|
title: "Verify Two-Factor Authentication",
|
|
8531
8089
|
description: "Enter your MFA code to complete sign in"
|
|
@@ -8534,7 +8092,7 @@ const baseRoutes = [
|
|
|
8534
8092
|
{
|
|
8535
8093
|
path: authPaths.verify_email.path,
|
|
8536
8094
|
name: authPaths.verify_email.name,
|
|
8537
|
-
component: () => import("./VerifyEmail-
|
|
8095
|
+
component: () => import("./VerifyEmail-BYSYk5ef.js"),
|
|
8538
8096
|
meta: {
|
|
8539
8097
|
title: "Verify Email",
|
|
8540
8098
|
description: "Verify your email address"
|
|
@@ -8543,17 +8101,36 @@ const baseRoutes = [
|
|
|
8543
8101
|
{
|
|
8544
8102
|
path: authPaths.verify_email_required.path,
|
|
8545
8103
|
name: authPaths.verify_email_required.name,
|
|
8546
|
-
component: () => import("./VerifyEmailRequired-
|
|
8104
|
+
component: () => import("./VerifyEmailRequired-DeMYFS0I.js"),
|
|
8547
8105
|
meta: {
|
|
8548
8106
|
title: "Verify Email",
|
|
8549
8107
|
description: "Check your email to verify your account"
|
|
8550
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]
|
|
8551
8128
|
}
|
|
8552
8129
|
];
|
|
8553
8130
|
if (allowUserSignup) baseRoutes.splice(1, 0, {
|
|
8554
8131
|
path: authPaths.register.path,
|
|
8555
8132
|
name: authPaths.register.name,
|
|
8556
|
-
component: () => import("./Signup-
|
|
8133
|
+
component: () => import("./Signup-C2FshPnc.js"),
|
|
8557
8134
|
meta: {
|
|
8558
8135
|
title: "Register",
|
|
8559
8136
|
description: "Register page for Category 5 App"
|
|
@@ -8623,13 +8200,18 @@ const adminRoutes = [{
|
|
|
8623
8200
|
id: "support-ticket-maintenance",
|
|
8624
8201
|
label: "Support Ticket Maintenance",
|
|
8625
8202
|
to: { name: "SupportTicketMaintenance" }
|
|
8203
|
+
},
|
|
8204
|
+
{
|
|
8205
|
+
id: "signup-requirements",
|
|
8206
|
+
label: "Signup Requirements",
|
|
8207
|
+
to: { name: "SignupRequirements" }
|
|
8626
8208
|
}
|
|
8627
8209
|
] },
|
|
8628
8210
|
children: [
|
|
8629
8211
|
{
|
|
8630
8212
|
path: "create-user",
|
|
8631
8213
|
name: "CreateUser",
|
|
8632
|
-
component: () => import("./CreateUserPage-
|
|
8214
|
+
component: () => import("./CreateUserPage-C8107z_O.js"),
|
|
8633
8215
|
meta: {
|
|
8634
8216
|
title: "Create User",
|
|
8635
8217
|
description: "Create User page for Category 5 App",
|
|
@@ -8642,7 +8224,7 @@ const adminRoutes = [{
|
|
|
8642
8224
|
{
|
|
8643
8225
|
path: "support-staff",
|
|
8644
8226
|
name: "SupportStaff",
|
|
8645
|
-
component: () => import("./SupportStaffPage-
|
|
8227
|
+
component: () => import("./SupportStaffPage-DFcgP8iE.js"),
|
|
8646
8228
|
meta: {
|
|
8647
8229
|
title: "Support Staff",
|
|
8648
8230
|
description: "Manage users who can triage support tickets",
|
|
@@ -8655,7 +8237,7 @@ const adminRoutes = [{
|
|
|
8655
8237
|
{
|
|
8656
8238
|
path: "users",
|
|
8657
8239
|
name: "UserManagement",
|
|
8658
|
-
component: () => import("./UserListPage-
|
|
8240
|
+
component: () => import("./UserListPage-BjHbDpvC.js"),
|
|
8659
8241
|
meta: {
|
|
8660
8242
|
title: "User Management",
|
|
8661
8243
|
description: "View and manage all users",
|
|
@@ -8668,7 +8250,7 @@ const adminRoutes = [{
|
|
|
8668
8250
|
{
|
|
8669
8251
|
path: "users/:id/edit",
|
|
8670
8252
|
name: "EditUser",
|
|
8671
|
-
component: () => import("./EditUserPage-
|
|
8253
|
+
component: () => import("./EditUserPage-BWKrAKZZ.js"),
|
|
8672
8254
|
meta: {
|
|
8673
8255
|
title: "Edit User",
|
|
8674
8256
|
description: "Edit user role",
|
|
@@ -8691,7 +8273,7 @@ const adminRoutes = [{
|
|
|
8691
8273
|
{
|
|
8692
8274
|
path: "credit-management",
|
|
8693
8275
|
name: "CreditManagement",
|
|
8694
|
-
component: () => import("./CreditManagement-
|
|
8276
|
+
component: () => import("./CreditManagement-A8hVPoSp.js"),
|
|
8695
8277
|
meta: {
|
|
8696
8278
|
title: "Credit Management",
|
|
8697
8279
|
description: "Manage customer credits and allocations",
|
|
@@ -8704,7 +8286,7 @@ const adminRoutes = [{
|
|
|
8704
8286
|
{
|
|
8705
8287
|
path: "support-ticket-maintenance",
|
|
8706
8288
|
name: "SupportTicketMaintenance",
|
|
8707
|
-
component: () => import("./SupportTicketMaintenancePage-
|
|
8289
|
+
component: () => import("./SupportTicketMaintenancePage-BCW0eZxV.js"),
|
|
8708
8290
|
meta: {
|
|
8709
8291
|
title: "Support Ticket Maintenance",
|
|
8710
8292
|
description: "Admin utilities for fixing support ticket data",
|
|
@@ -8713,6 +8295,19 @@ const adminRoutes = [{
|
|
|
8713
8295
|
visible_to: ["super_admin"]
|
|
8714
8296
|
}
|
|
8715
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
|
+
}
|
|
8716
8311
|
}
|
|
8717
8312
|
]
|
|
8718
8313
|
}];
|
|
@@ -8732,7 +8327,7 @@ const creditRoutes = [{
|
|
|
8732
8327
|
children: [{
|
|
8733
8328
|
path: creditPaths.credit_balance.path,
|
|
8734
8329
|
name: creditPaths.credit_balance.name,
|
|
8735
|
-
component: () => import("./CreditBalanceDashboard-
|
|
8330
|
+
component: () => import("./CreditBalanceDashboard-D7MFKfh6.js"),
|
|
8736
8331
|
meta: {
|
|
8737
8332
|
title: "Credit Balance",
|
|
8738
8333
|
description: "View your current credit balance and history.",
|
|
@@ -9337,5 +8932,5 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
9337
8932
|
var CreditManagement_default = _sfc_main;
|
|
9338
8933
|
|
|
9339
8934
|
//#endregion
|
|
9340
|
-
export { createLastUsedPresetGuard as $,
|
|
9341
|
-
//# 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
|