@dragonmastery/dragoncore-vue 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/package.json +4 -13
  2. package/dist/AppLink-CHMMrSFI.js +0 -54
  3. package/dist/AppLink-CHMMrSFI.js.map +0 -1
  4. package/dist/Appearance-BfPdKMXw.js +0 -70
  5. package/dist/Appearance-BfPdKMXw.js.map +0 -1
  6. package/dist/Appearance-C3WguxT-.js +0 -3
  7. package/dist/ChangePasswordPage-DCews8GU.js +0 -86
  8. package/dist/ChangePasswordPage-DCews8GU.js.map +0 -1
  9. package/dist/ChangePasswordPage-Dm5vW0nl.js +0 -6
  10. package/dist/CreateTeamForm-Cg4sD65k.js +0 -27
  11. package/dist/CreateTeamMemberForm-CiG-fCJD.js +0 -27
  12. package/dist/CreateUserPage-B8qeBZij.js +0 -76
  13. package/dist/CreateUserPage-B8qeBZij.js.map +0 -1
  14. package/dist/CreateUserPage-WjYDkwpb.js +0 -6
  15. package/dist/CreditBalanceDashboard-BUdKWieE.js +0 -27
  16. package/dist/CreditManagement-BcyUY_J0.js +0 -27
  17. package/dist/CustomerCreateSupportTicketForm-BplS0xSi.js +0 -27
  18. package/dist/CustomerSupportTicketDetailPage-DZQCplSM.js +0 -717
  19. package/dist/CustomerSupportTicketDetailPage-DZQCplSM.js.map +0 -1
  20. package/dist/CustomerSupportTicketList-DGwy4Wje.js +0 -27
  21. package/dist/CustomerSupportTicketParent-BnmTFigo.js +0 -7
  22. package/dist/CustomerSupportTicketParent-BzY4pmBk.js +0 -66
  23. package/dist/CustomerSupportTicketParent-BzY4pmBk.js.map +0 -1
  24. package/dist/CustomerSupportTicketSuccess-DC1jJG1E.js +0 -27
  25. package/dist/EditTeamForm-BnPwhv5B.js +0 -27
  26. package/dist/EditTeamMemberForm-B8-pI6Xm.js +0 -6
  27. package/dist/EditTeamMemberForm-CKbKomrL.js +0 -191
  28. package/dist/EditTeamMemberForm-CKbKomrL.js.map +0 -1
  29. package/dist/EditUserPage-BG-Fkx_c.js +0 -7
  30. package/dist/EditUserPage-XqF25iwz.js +0 -112
  31. package/dist/EditUserPage-XqF25iwz.js.map +0 -1
  32. package/dist/ForgotPassword-CjWv2V7p.js +0 -7
  33. package/dist/ForgotPassword-D3bjL48L.js +0 -73
  34. package/dist/ForgotPassword-D3bjL48L.js.map +0 -1
  35. package/dist/LoginForm--br4Il85.js +0 -7
  36. package/dist/LoginForm-C85U2E2r.js +0 -116
  37. package/dist/LoginForm-C85U2E2r.js.map +0 -1
  38. package/dist/Logout-DHT-5Qz3.js +0 -6
  39. package/dist/Logout-DZuWLh0O.js +0 -38
  40. package/dist/Logout-DZuWLh0O.js.map +0 -1
  41. package/dist/ResetPassword-M6mvTS24.js +0 -27
  42. package/dist/SavedFiltersPage-D3vJrfzt.js +0 -419
  43. package/dist/SavedFiltersPage-D3vJrfzt.js.map +0 -1
  44. package/dist/Signup-VZa7U-Ur.js +0 -7
  45. package/dist/Signup-hpV8J5cM.js +0 -106
  46. package/dist/Signup-hpV8J5cM.js.map +0 -1
  47. package/dist/StaffCreateSupportTicketForm-Bc7UnK0Q.js +0 -27
  48. package/dist/StaffSupportTicketDetailPage-DY07Ez0R.js +0 -1928
  49. package/dist/StaffSupportTicketDetailPage-DY07Ez0R.js.map +0 -1
  50. package/dist/StaffSupportTicketList-ChJP_67k.js +0 -27
  51. package/dist/StaffSupportTicketParent-CWWhaM37.js +0 -66
  52. package/dist/StaffSupportTicketParent-CWWhaM37.js.map +0 -1
  53. package/dist/StaffSupportTicketParent-Dp1G85wc.js +0 -7
  54. package/dist/StaffSupportTicketSuccess-B6X_dP4f.js +0 -27
  55. package/dist/SupportStaffPage-nd0HowtH.js +0 -156
  56. package/dist/SupportStaffPage-nd0HowtH.js.map +0 -1
  57. package/dist/SupportTicketDevLifecycleBadge-Ba-Rm6QW.js +0 -116
  58. package/dist/SupportTicketDevLifecycleBadge-Ba-Rm6QW.js.map +0 -1
  59. package/dist/SupportTicketMaintenancePage-rcJ7EfDj.js +0 -56
  60. package/dist/SupportTicketMaintenancePage-rcJ7EfDj.js.map +0 -1
  61. package/dist/TeamAttachmentsTab-Dk_Bnk-1.js +0 -27
  62. package/dist/TeamHistoryTab-CNelXR3Q.js +0 -232
  63. package/dist/TeamHistoryTab-CNelXR3Q.js.map +0 -1
  64. package/dist/TeamHistoryTab-siesF93u.js +0 -4
  65. package/dist/TeamList-BtLzbjls.js +0 -27
  66. package/dist/TeamMemberList-EoDXIr0w.js +0 -27
  67. package/dist/TeamMemberParent-DZ5YVyi6.js +0 -27
  68. package/dist/TeamMembersTab-4gmnP9sD.js +0 -21
  69. package/dist/TeamMembersTab-4gmnP9sD.js.map +0 -1
  70. package/dist/TeamMembersTab-DTJxmb-M.js +0 -3
  71. package/dist/TeamNotesTab-BhVRLG8h.js +0 -458
  72. package/dist/TeamNotesTab-BhVRLG8h.js.map +0 -1
  73. package/dist/TeamNotesTab-Crp-afAe.js +0 -7
  74. package/dist/TeamParent-CbrXXzAr.js +0 -27
  75. package/dist/TimelineNoteInput-BVqF4MtZ.js +0 -513
  76. package/dist/TimelineNoteInput-BVqF4MtZ.js.map +0 -1
  77. package/dist/TimelineSystemEvent-D58zN850.js +0 -1897
  78. package/dist/TimelineSystemEvent-D58zN850.js.map +0 -1
  79. package/dist/UserListPage-D68AjrjM.js +0 -4
  80. package/dist/UserListPage-OGYOLwlw.js +0 -153
  81. package/dist/UserListPage-OGYOLwlw.js.map +0 -1
  82. package/dist/UserProfilePage-Q68NAGQQ.js +0 -7
  83. package/dist/UserProfilePage-uAIfC_NW.js +0 -125
  84. package/dist/UserProfilePage-uAIfC_NW.js.map +0 -1
  85. package/dist/ViewTeam-DpE_NfRq.js +0 -27
  86. package/dist/ViewTeamMember-BdBwkuXC.js +0 -27
  87. package/dist/convertToLocalDateTime-DOSGtMn8.js +0 -121
  88. package/dist/convertToLocalDateTime-DOSGtMn8.js.map +0 -1
  89. package/dist/displayIdFormatter-B1ZKgofu.js +0 -13
  90. package/dist/displayIdFormatter-B1ZKgofu.js.map +0 -1
  91. package/dist/extractRpcErrorMessage-C_UbKgHL.js +0 -20
  92. package/dist/extractRpcErrorMessage-C_UbKgHL.js.map +0 -1
  93. package/dist/index.d.ts +0 -6366
  94. package/dist/index.js +0 -30
  95. package/dist/src-CEBiyg_f.css +0 -13
  96. package/dist/src-CEBiyg_f.css.map +0 -1
  97. package/dist/src-CHw8DdkR.js +0 -9200
  98. package/dist/src-CHw8DdkR.js.map +0 -1
  99. package/dist/useBreadcrumbs-DmgSucoe.js +0 -41
  100. package/dist/useBreadcrumbs-DmgSucoe.js.map +0 -1
  101. package/dist/useMutation-B4_S4Xoa.js +0 -50
  102. package/dist/useMutation-B4_S4Xoa.js.map +0 -1
  103. package/dist/useQuery-B7ndu5_P.js +0 -107
  104. package/dist/useQuery-B7ndu5_P.js.map +0 -1
  105. package/dist/useQueryCache-DqcDMsxb.js +0 -254
  106. package/dist/useQueryCache-DqcDMsxb.js.map +0 -1
  107. package/dist/useRpcAuth-Dp2sec-X.js +0 -731
  108. package/dist/useRpcAuth-Dp2sec-X.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"SupportStaffPage-nd0HowtH.js","names":[],"sources":["../src/slices/admin/features/support_staff/SupportStaffPage.vue"],"sourcesContent":["<template>\n <div class=\"mt-2\">\n <div class=\"flex justify-between items-center mb-4\">\n <h1 class=\"text-2xl font-bold\">Support Staff</h1>\n </div>\n\n <p class=\"text-base-content/70 mb-4\">\n Users who can triage support tickets. They receive round-robin assignment when new tickets are created.\n </p>\n\n <!-- Add support staff -->\n <div class=\"card bg-base-200 mb-6\">\n <div class=\"card-body\">\n <h2 class=\"card-title text-lg\">Add Support Staff</h2>\n <div class=\"flex flex-wrap items-end gap-4\">\n <div class=\"form-control flex-1 min-w-[200px]\">\n <label class=\"label\">\n <span class=\"label-text\">User</span>\n </label>\n <select\n v-model=\"selectedUserId\"\n class=\"select select-bordered w-full\"\n :disabled=\"isAdding || !addableUsers.length\"\n >\n <option value=\"\">Select a user...</option>\n <option\n v-for=\"u in addableUsers\"\n :key=\"u.id\"\n :value=\"u.id\"\n >\n {{ u.email }} ({{ u.user_type }})\n </option>\n </select>\n <p v-if=\"!addableUsers.length && !isLoading\" class=\"text-sm text-base-content/50 mt-1\">\n All staff users are already support staff.\n </p>\n </div>\n <button\n class=\"btn btn-primary\"\n :disabled=\"!selectedUserId || isAdding\"\n @click=\"handleAdd\"\n >\n <span v-if=\"isAdding\" class=\"loading loading-spinner loading-sm\"></span>\n {{ isAdding ? 'Adding...' : 'Add' }}\n </button>\n </div>\n <p v-if=\"addError\" class=\"text-sm text-error mt-2\">{{ addError }}</p>\n </div>\n </div>\n\n <!-- List -->\n <div v-if=\"isLoading\" class=\"flex justify-center py-8\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n\n <div v-else-if=\"!(supportStaffPageData?.members ?? []).length\" class=\"alert alert-info\">\n <span>No support staff yet. Add users above to enable triage assignment.</span>\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>Email</th>\n <th>Added</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"m in (supportStaffPageData?.members ?? [])\" :key=\"m.id\">\n <td>{{ m.email }}</td>\n <td>{{ formatDate(m.created_at) }}</td>\n <td>\n <button\n class=\"btn btn-sm btn-ghost text-error\"\n :disabled=\"isRemoving === m.user_id\"\n @click=\"handleRemove(m.user_id)\"\n >\n <span v-if=\"isRemoving === m.user_id\" class=\"loading loading-spinner loading-xs\"></span>\n {{ isRemoving === m.user_id ? 'Removing...' : 'Remove' }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport { toast } from 'vue3-toastify';\nimport { BATCH_MODE } from '../../../../composables/useRpcAuth';\nimport { executeWithAuth } from '../../../../composables/useRpcAuth';\nimport { getRefreshTokenHandler } from '../../../../utils/EnhancedRefreshTokenHandler';\nimport { formatSystemTimestamp } from '../../../../utils/convertToLocalDateTime';\nimport { useQuery } from '../../../../composables/useQuery';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { extractRpcErrorMessage } from '../../../../utils/extractRpcErrorMessage';\n\nconst STAFF_TYPES = ['staff', 'super_admin'] as const;\n\nconst {\n data: supportStaffPageData,\n loading: isLoading,\n refetch,\n} = useQuery(\n async (api) => {\n const [members, allUsers] = await Promise.all([\n api.supportStaff.listSupportStaff(),\n api.users.listUsers(),\n ]);\n return { members, allUsers };\n },\n {\n cacheKey: 'support-staff-page',\n staleTime: 30 * 1000,\n batchMode: BATCH_MODE.batch,\n trackedSegment: 'support-staff-page',\n },\n);\n\nconst addableUsers = computed(() => {\n const users = supportStaffPageData.value?.allUsers ?? [];\n const staffIds = new Set((supportStaffPageData.value?.members ?? []).map((m) => m.user_id));\n return users.filter(\n (u) =>\n STAFF_TYPES.includes(u.user_type as (typeof STAFF_TYPES)[number]) &&\n !staffIds.has(u.id),\n );\n});\n\nconst selectedUserId = ref('');\nwatch(addableUsers, (users) => {\n if (!selectedUserId.value || !users.some((u) => u.id === selectedUserId.value)) {\n selectedUserId.value = '';\n }\n});\n\nconst { mutate: addSupportStaff, loading: isAdding } = useMutation(\n (api, userId: string) => api.supportStaff.addSupportStaff(userId),\n { invalidate: /support-staff|triage-users/ },\n);\n\nconst addError = ref<string | null>(null);\n\nasync function handleAdd() {\n if (!selectedUserId.value) return;\n addError.value = null;\n try {\n await addSupportStaff(selectedUserId.value);\n toast.success('Support staff added');\n selectedUserId.value = '';\n await refetch();\n } catch (e) {\n addError.value = extractRpcErrorMessage(e, 'Failed to add support staff');\n toast.error(addError.value);\n }\n}\n\nconst isRemoving = ref<string | null>(null);\n\nasync function handleRemove(userId: string) {\n isRemoving.value = userId;\n try {\n await executeWithAuth(\n async (api) => api.supportStaff.removeSupportStaff(userId),\n { refreshTokenHandler: getRefreshTokenHandler() },\n );\n toast.success('Support staff removed');\n await refetch();\n } catch (e) {\n toast.error(extractRpcErrorMessage(e, 'Failed to remove support staff'));\n } finally {\n isRemoving.value = null;\n }\n}\n\nfunction formatDate(s: string) {\n return formatSystemTimestamp(s);\n}\n</script>\n"],"mappings":"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"}
@@ -1,116 +0,0 @@
1
- import { computed, createElementBlock, defineComponent, normalizeClass, openBlock, toDisplayString } from "vue";
2
-
3
- //#region src/slices/support_ticket/shared/SupportTicketDevLifecycleBadge.vue
4
- const _hoisted_1 = ["aria-label"];
5
- const _sfc_main = /* @__PURE__ */ defineComponent({
6
- __name: "SupportTicketDevLifecycleBadge",
7
- props: {
8
- devLifecycle: {},
9
- size: { default: "md" },
10
- variant: { default: "default" }
11
- },
12
- setup(__props) {
13
- /**
14
- * SupportTicketDevLifecycleBadge - A reusable Vue component for displaying support ticket dev lifecycle
15
- * as color-coded badges with consistent DaisyUI styling and accessibility features.
16
- *
17
- * @example
18
- * <SupportTicketDevLifecycleBadge :devLifecycle="'DEVELOPMENT'" size="md" />
19
- * <SupportTicketDevLifecycleBadge :devLifecycle="'TESTING'" size="sm" variant="outline" />
20
- */
21
- const props = __props;
22
- /**
23
- * Configuration for each dev lifecycle badge
24
- */
25
- const devLifecycleConfig = {
26
- PENDING: {
27
- color: "badge-neutral",
28
- text: "Pending",
29
- ariaLabel: "Dev Stage: Pending"
30
- },
31
- BACKLOG: {
32
- color: "badge-info",
33
- text: "Backlog",
34
- ariaLabel: "Dev Stage: In backlog"
35
- },
36
- PLANNING: {
37
- color: "badge-info",
38
- text: "Planning",
39
- ariaLabel: "Dev Stage: Planning phase"
40
- },
41
- DEVELOPMENT: {
42
- color: "badge-secondary",
43
- text: "Dev",
44
- ariaLabel: "Dev Stage: In development"
45
- },
46
- CODE_REVIEW: {
47
- color: "badge-secondary",
48
- text: "Review",
49
- ariaLabel: "Dev Stage: Code review"
50
- },
51
- TESTING: {
52
- color: "badge-warning",
53
- text: "Testing",
54
- ariaLabel: "Dev Stage: Testing phase"
55
- },
56
- STAGING: {
57
- color: "badge-warning",
58
- text: "Staging",
59
- ariaLabel: "Dev Stage: On staging"
60
- },
61
- PO_APPROVAL: {
62
- color: "badge-warning",
63
- text: "PO Review",
64
- ariaLabel: "Dev Stage: Awaiting PO approval"
65
- },
66
- VERIFICATION: {
67
- color: "badge-warning",
68
- text: "Verification",
69
- ariaLabel: "Dev Stage: Awaiting customer verification and comment"
70
- },
71
- DEPLOYED: {
72
- color: "badge-success",
73
- text: "Live",
74
- ariaLabel: "Dev Stage: Deployed to production"
75
- },
76
- CANCELLED: {
77
- color: "badge-error",
78
- text: "Cancelled",
79
- ariaLabel: "Dev Stage: Cancelled"
80
- }
81
- };
82
- const getDevLifecycleConfig = (devLifecycle) => {
83
- const config$1 = devLifecycleConfig[devLifecycle];
84
- if (!config$1) return {
85
- color: "badge-neutral",
86
- text: devLifecycle || "Unknown",
87
- ariaLabel: `Dev Stage: ${devLifecycle || "Unknown stage"}`
88
- };
89
- return config$1;
90
- };
91
- const config = computed(() => getDevLifecycleConfig(props.devLifecycle));
92
- const badgeClasses = computed(() => {
93
- const baseClasses = ["badge", "text-xs"];
94
- baseClasses.push(config.value.color);
95
- if (props.size === "sm") baseClasses.push("badge-sm", "text-xs");
96
- else if (props.size === "lg") baseClasses.push("badge-lg", "text-sm");
97
- else baseClasses.push("text-xs", "sm:text-sm");
98
- if (props.variant === "outline") baseClasses.push("badge-outline");
99
- return baseClasses.join(" ");
100
- });
101
- const displayText = computed(() => config.value.text);
102
- const ariaLabel = computed(() => config.value.ariaLabel);
103
- return (_ctx, _cache) => {
104
- return openBlock(), createElementBlock("div", {
105
- class: normalizeClass(badgeClasses.value),
106
- "aria-label": ariaLabel.value,
107
- role: "status"
108
- }, toDisplayString(displayText.value), 11, _hoisted_1);
109
- };
110
- }
111
- });
112
- var SupportTicketDevLifecycleBadge_default = _sfc_main;
113
-
114
- //#endregion
115
- export { SupportTicketDevLifecycleBadge_default as t };
116
- //# sourceMappingURL=SupportTicketDevLifecycleBadge-Ba-Rm6QW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SupportTicketDevLifecycleBadge-Ba-Rm6QW.js","names":["devLifecycleConfig: Record<SupportTicketDevLifecycle, DevLifecycleBadgeConfig>"],"sources":["../src/slices/support_ticket/shared/SupportTicketDevLifecycleBadge.vue"],"sourcesContent":["<template>\n <div :class=\"badgeClasses\" :aria-label=\"ariaLabel\" role=\"status\">\n {{ displayText }}\n </div>\n</template>\n\n<script setup lang=\"ts\">\n/**\n * SupportTicketDevLifecycleBadge - A reusable Vue component for displaying support ticket dev lifecycle\n * as color-coded badges with consistent DaisyUI styling and accessibility features.\n *\n * @example\n * <SupportTicketDevLifecycleBadge :devLifecycle=\"'DEVELOPMENT'\" size=\"md\" />\n * <SupportTicketDevLifecycleBadge :devLifecycle=\"'TESTING'\" size=\"sm\" variant=\"outline\" />\n */\nimport type { SupportTicketDevLifecycle } from '@dragonmastery/dragoncore-shared';\nimport { computed } from 'vue';\n\n/**\n * Props for the SupportTicketDevLifecycleBadge component\n */\ninterface Props {\n /** The support ticket dev lifecycle to display */\n devLifecycle: SupportTicketDevLifecycle;\n /** Size of the badge - defaults to 'md' */\n size?: 'sm' | 'md' | 'lg';\n /** Visual variant of the badge - defaults to 'default' */\n variant?: 'default' | 'outline';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n size: 'md',\n variant: 'default',\n});\n\n/**\n * Configuration for each dev lifecycle badge\n */\ninterface DevLifecycleBadgeConfig {\n /** DaisyUI badge color class */\n color: string;\n /** Display text for the badge */\n text: string;\n /** Accessibility label for screen readers */\n ariaLabel: string;\n}\n\nconst devLifecycleConfig: Record<SupportTicketDevLifecycle, DevLifecycleBadgeConfig> = {\n PENDING: {\n color: 'badge-neutral',\n text: 'Pending',\n ariaLabel: 'Dev Stage: Pending',\n },\n BACKLOG: {\n color: 'badge-info',\n text: 'Backlog',\n ariaLabel: 'Dev Stage: In backlog',\n },\n PLANNING: {\n color: 'badge-info',\n text: 'Planning',\n ariaLabel: 'Dev Stage: Planning phase',\n },\n DEVELOPMENT: {\n color: 'badge-secondary',\n text: 'Dev',\n ariaLabel: 'Dev Stage: In development',\n },\n CODE_REVIEW: {\n color: 'badge-secondary',\n text: 'Review',\n ariaLabel: 'Dev Stage: Code review',\n },\n TESTING: {\n color: 'badge-warning',\n text: 'Testing',\n ariaLabel: 'Dev Stage: Testing phase',\n },\n STAGING: {\n color: 'badge-warning',\n text: 'Staging',\n ariaLabel: 'Dev Stage: On staging',\n },\n PO_APPROVAL: {\n color: 'badge-warning',\n text: 'PO Review',\n ariaLabel: 'Dev Stage: Awaiting PO approval',\n },\n VERIFICATION: {\n color: 'badge-warning',\n text: 'Verification',\n ariaLabel: 'Dev Stage: Awaiting customer verification and comment',\n },\n DEPLOYED: {\n color: 'badge-success',\n text: 'Live',\n ariaLabel: 'Dev Stage: Deployed to production',\n },\n CANCELLED: {\n color: 'badge-error',\n text: 'Cancelled',\n ariaLabel: 'Dev Stage: Cancelled',\n },\n};\n\nconst getDevLifecycleConfig = (\n devLifecycle: SupportTicketDevLifecycle,\n): DevLifecycleBadgeConfig => {\n const config = devLifecycleConfig[devLifecycle];\n if (!config) {\n return {\n color: 'badge-neutral',\n text: devLifecycle || 'Unknown',\n ariaLabel: `Dev Stage: ${devLifecycle || 'Unknown stage'}`,\n };\n }\n return config;\n};\n\nconst config = computed(() => getDevLifecycleConfig(props.devLifecycle));\n\nconst badgeClasses = computed(() => {\n const baseClasses = ['badge', 'text-xs'];\n\n // Add color class\n baseClasses.push(config.value.color);\n\n // Add size class with responsive text sizing\n if (props.size === 'sm') {\n baseClasses.push('badge-sm', 'text-xs');\n } else if (props.size === 'lg') {\n baseClasses.push('badge-lg', 'text-sm');\n } else {\n // md size - responsive text\n baseClasses.push('text-xs', 'sm:text-sm');\n }\n\n // Add variant class\n if (props.variant === 'outline') {\n baseClasses.push('badge-outline');\n }\n\n return baseClasses.join(' ');\n});\n\nconst displayText = computed(() => config.value.text);\nconst ariaLabel = computed(() => config.value.ariaLabel);\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EA8BA,MAAM,QAAQ;;;;EAiBd,MAAMA,qBAAiF;GACrF,SAAS;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,SAAS;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,UAAU;IACR,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,aAAa;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,aAAa;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,SAAS;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,SAAS;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,aAAa;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,cAAc;IACZ,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,UAAU;IACR,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,WAAW;IACT,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACF;EAED,MAAM,yBACJ,iBAC4B;GAC5B,MAAM,WAAS,mBAAmB;AAClC,OAAI,CAAC,SACH,QAAO;IACL,OAAO;IACP,MAAM,gBAAgB;IACtB,WAAW,cAAc,gBAAgB;IAC1C;AAEH,UAAO;;EAGT,MAAM,SAAS,eAAe,sBAAsB,MAAM,aAAa,CAAC;EAExE,MAAM,eAAe,eAAe;GAClC,MAAM,cAAc,CAAC,SAAS,UAAU;AAGxC,eAAY,KAAK,OAAO,MAAM,MAAM;AAGpC,OAAI,MAAM,SAAS,KACjB,aAAY,KAAK,YAAY,UAAU;YAC9B,MAAM,SAAS,KACxB,aAAY,KAAK,YAAY,UAAU;OAGvC,aAAY,KAAK,WAAW,aAAa;AAI3C,OAAI,MAAM,YAAY,UACpB,aAAY,KAAK,gBAAgB;AAGnC,UAAO,YAAY,KAAK,IAAI;IAC5B;EAEF,MAAM,cAAc,eAAe,OAAO,MAAM,KAAK;EACrD,MAAM,YAAY,eAAe,OAAO,MAAM,UAAU;;uBAjJtD,mBAEM,OAAA;IAFA,OAAK,eAAE,aAAA,MAAY;IAAG,cAAY,UAAA;IAAW,MAAK;sBACnD,YAAA,MAAW,EAAA,IAAA,WAAA"}
@@ -1,56 +0,0 @@
1
- import "./useRpcAuth-Dp2sec-X.js";
2
- import "./useQueryCache-DqcDMsxb.js";
3
- import { t as useMutation } from "./useMutation-B4_S4Xoa.js";
4
- import { createElementBlock, createElementVNode, defineComponent, openBlock, unref } from "vue";
5
- import { toast } from "vue3-toastify";
6
-
7
- //#region src/slices/admin/features/support_ticket_maintenance/SupportTicketMaintenancePage.vue
8
- const _hoisted_1 = { class: "mt-2" };
9
- const _hoisted_2 = { class: "card bg-base-200" };
10
- const _hoisted_3 = { class: "card-body" };
11
- const _hoisted_4 = ["disabled"];
12
- const _hoisted_5 = {
13
- key: 0,
14
- class: "loading loading-spinner loading-sm"
15
- };
16
- const _hoisted_6 = { key: 1 };
17
- const _sfc_main = /* @__PURE__ */ defineComponent({
18
- __name: "SupportTicketMaintenancePage",
19
- setup(__props) {
20
- const { mutate: fixUserIds, loading: isFixingUserIds } = useMutation((api) => api.supportTickets.staffFixSupportTicketUserIds(), {
21
- invalidate: /^support-ticket/,
22
- onSuccess: (result) => {
23
- toast.success(`Fixed ${result.ticketsFixed} ticket(s). Scanned: ${result.ticketsScanned}, skipped (no match): ${result.ticketsSkipped}`);
24
- },
25
- onError: (err) => {
26
- toast.error(err?.message ?? "Failed to fix user IDs");
27
- }
28
- });
29
- async function handleFixUserIds() {
30
- try {
31
- await fixUserIds(void 0);
32
- } catch {}
33
- }
34
- return (_ctx, _cache) => {
35
- return openBlock(), createElementBlock("div", _hoisted_1, [
36
- _cache[2] || (_cache[2] = createElementVNode("div", { class: "flex justify-between items-center mb-4" }, [createElementVNode("h1", { class: "text-2xl font-bold" }, "Support Ticket Maintenance")], -1)),
37
- _cache[3] || (_cache[3] = createElementVNode("p", { class: "text-base-content/70 mb-4" }, " Admin utilities for fixing support ticket data issues. ", -1)),
38
- createElementVNode("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [
39
- _cache[0] || (_cache[0] = createElementVNode("h2", { class: "card-title text-lg" }, "Fix User IDs", -1)),
40
- _cache[1] || (_cache[1] = createElementVNode("p", { class: "text-sm text-base-content/70 mb-4" }, " Some support tickets may have email addresses stored in user ID fields (e.g. updated_by, created_by) instead of user IDs. This tool scans for such tickets and replaces emails with the correct user IDs where a matching user exists. ", -1)),
41
- createElementVNode("button", {
42
- type: "button",
43
- class: "btn btn-primary btn-sm w-fit",
44
- disabled: unref(isFixingUserIds),
45
- onClick: handleFixUserIds
46
- }, [unref(isFixingUserIds) ? (openBlock(), createElementBlock("span", _hoisted_5)) : (openBlock(), createElementBlock("span", _hoisted_6, "Fix User IDs"))], 8, _hoisted_4)
47
- ])])
48
- ]);
49
- };
50
- }
51
- });
52
- var SupportTicketMaintenancePage_default = _sfc_main;
53
-
54
- //#endregion
55
- export { SupportTicketMaintenancePage_default as default };
56
- //# sourceMappingURL=SupportTicketMaintenancePage-rcJ7EfDj.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SupportTicketMaintenancePage-rcJ7EfDj.js","names":[],"sources":["../src/slices/admin/features/support_ticket_maintenance/SupportTicketMaintenancePage.vue"],"sourcesContent":["<template>\n <div class=\"mt-2\">\n <div class=\"flex justify-between items-center mb-4\">\n <h1 class=\"text-2xl font-bold\">Support Ticket Maintenance</h1>\n </div>\n\n <p class=\"text-base-content/70 mb-4\">\n Admin utilities for fixing support ticket data issues.\n </p>\n\n <div class=\"card bg-base-200\">\n <div class=\"card-body\">\n <h2 class=\"card-title text-lg\">Fix User IDs</h2>\n <p class=\"text-sm text-base-content/70 mb-4\">\n Some support tickets may have email addresses stored in user ID fields (e.g. updated_by, created_by)\n instead of user IDs. This tool scans for such tickets and replaces emails with the correct user IDs\n where a matching user exists.\n </p>\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm w-fit\"\n :disabled=\"isFixingUserIds\"\n @click=\"handleFixUserIds\"\n >\n <span v-if=\"isFixingUserIds\" class=\"loading loading-spinner loading-sm\"></span>\n <span v-else>Fix User IDs</span>\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useMutation } from '../../../../composables/useMutation';\nimport { toast } from 'vue3-toastify';\n\nconst { mutate: fixUserIds, loading: isFixingUserIds } = useMutation(\n (api) => api.supportTickets.staffFixSupportTicketUserIds(),\n {\n invalidate: /^support-ticket/,\n onSuccess: (result) => {\n toast.success(\n `Fixed ${result.ticketsFixed} ticket(s). Scanned: ${result.ticketsScanned}, skipped (no match): ${result.ticketsSkipped}`,\n );\n },\n onError: (err) => {\n toast.error(err?.message ?? 'Failed to fix user IDs');\n },\n },\n);\n\nasync function handleFixUserIds() {\n try {\n await fixUserIds(undefined);\n } catch {\n // Error handled by onError\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAoCA,MAAM,EAAE,QAAQ,YAAY,SAAS,oBAAoB,aACtD,QAAQ,IAAI,eAAe,8BAA8B,EAC1D;GACE,YAAY;GACZ,YAAY,WAAW;AACrB,UAAM,QACJ,SAAS,OAAO,aAAa,uBAAuB,OAAO,eAAe,wBAAwB,OAAO,iBAC1G;;GAEH,UAAU,QAAQ;AAChB,UAAM,MAAM,KAAK,WAAW,yBAAyB;;GAExD,CACF;EAED,eAAe,mBAAmB;AAChC,OAAI;AACF,UAAM,WAAW,OAAU;WACrB;;;uBArDR,mBA4BM,OA5BN,YA4BM;8BA3BJ,mBAEM,OAAA,EAFD,OAAM,0CAAwC,EAAA,CACjD,mBAA8D,MAAA,EAA1D,OAAM,sBAAoB,EAAC,6BAA0B,CAAA;8BAG3D,mBAEI,KAAA,EAFD,OAAM,6BAA2B,EAAC,4DAErC,GAAA;IAEA,mBAkBM,OAlBN,YAkBM,CAjBJ,mBAgBM,OAhBN,YAgBM;+BAfJ,mBAAgD,MAAA,EAA5C,OAAM,sBAAoB,EAAC,gBAAY,GAAA;+BAC3C,mBAII,KAAA,EAJD,OAAM,qCAAmC,EAAC,4OAI7C,GAAA;KACA,mBAQS,UAAA;MAPP,MAAK;MACL,OAAM;MACL,UAAU,MAAA,gBAAe;MACzB,SAAO;SAEI,MAAA,gBAAe,IAAA,WAAA,EAA3B,mBAA+E,QAA/E,WAA+E,KAAA,WAAA,EAC/E,mBAAgC,QAAA,YAAnB,eAAY,EAAA,EAAA,GAAA,WAAA"}
@@ -1,27 +0,0 @@
1
- import "./useRpcAuth-Dp2sec-X.js";
2
- import "./useQueryCache-DqcDMsxb.js";
3
- import "./useMutation-B4_S4Xoa.js";
4
- import "./useQuery-B7ndu5_P.js";
5
- import { mt as TeamAttachmentsTab_default } from "./src-CHw8DdkR.js";
6
- import "./AppLink-CHMMrSFI.js";
7
- import "./TimelineSystemEvent-D58zN850.js";
8
- import "./TeamMembersTab-4gmnP9sD.js";
9
- import "./Appearance-BfPdKMXw.js";
10
- import "./useBreadcrumbs-DmgSucoe.js";
11
- import "./EditTeamMemberForm-CKbKomrL.js";
12
- import "./TeamHistoryTab-CNelXR3Q.js";
13
- import "./UserProfilePage-uAIfC_NW.js";
14
- import "./ChangePasswordPage-DCews8GU.js";
15
- import "./TeamNotesTab-BhVRLG8h.js";
16
- import "./CustomerSupportTicketParent-BzY4pmBk.js";
17
- import "./SupportTicketDevLifecycleBadge-Ba-Rm6QW.js";
18
- import "./StaffSupportTicketParent-CWWhaM37.js";
19
- import "./LoginForm-C85U2E2r.js";
20
- import "./Signup-hpV8J5cM.js";
21
- import "./ForgotPassword-D3bjL48L.js";
22
- import "./Logout-DZuWLh0O.js";
23
- import "./UserListPage-OGYOLwlw.js";
24
- import "./CreateUserPage-B8qeBZij.js";
25
- import "./EditUserPage-XqF25iwz.js";
26
-
27
- export { TeamAttachmentsTab_default as default };
@@ -1,232 +0,0 @@
1
- import { r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-Dp2sec-X.js";
2
- import { t as formatSystemTimestamp } from "./convertToLocalDateTime-DOSGtMn8.js";
3
- import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, unref, withCtx } from "vue";
4
- import { useRoute } from "vue-router";
5
- import { recordVersionSchema } from "@dragonmastery/dragoncore-shared";
6
- import { useCursorDataTable, withMetadata } from "@dragonmastery/zinia-forms-core";
7
-
8
- //#region src/components/ui/ZiniaContainer.vue
9
- const _hoisted_1$1 = { class: "p-0 md:p-4 max-w-4xl mx-auto bg-base-200 card" };
10
- const _hoisted_2$1 = { class: "card-body p-4" };
11
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
12
- __name: "ZiniaContainer",
13
- setup(__props) {
14
- return (_ctx, _cache) => {
15
- return openBlock(), createElementBlock("div", _hoisted_1$1, [createElementVNode("div", _hoisted_2$1, [renderSlot(_ctx.$slots, "default")])]);
16
- };
17
- }
18
- });
19
- var ZiniaContainer_default = _sfc_main$2;
20
-
21
- //#endregion
22
- //#region src/slices/team/recordVersionRowSchema.ts
23
- const recordVersionRowSchemaWithMetadata = withMetadata(recordVersionSchema, "recordVersionRowSchema", {});
24
-
25
- //#endregion
26
- //#region src/slices/team/components/TeamHistoryTab.vue
27
- const _hoisted_1 = { class: "mt-2" };
28
- const _hoisted_2 = { class: "space-y-3" };
29
- const _hoisted_3 = { class: "flex flex-col sm:flex-row sm:items-center gap-2" };
30
- const _hoisted_4 = { class: "flex items-center gap-2" };
31
- const _hoisted_5 = { class: "flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-2 text-xs" };
32
- const _hoisted_6 = { class: "text-base-content/70" };
33
- const _hoisted_7 = { class: "text-base-content/60" };
34
- const _hoisted_8 = ["onClick"];
35
- const _hoisted_9 = {
36
- key: 0,
37
- class: "mt-3"
38
- };
39
- const _hoisted_10 = { key: 0 };
40
- const _hoisted_11 = { class: "bg-base-200 rounded-lg p-3 text-sm" };
41
- const _hoisted_12 = { class: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-2" };
42
- const _hoisted_13 = { class: "text-xs font-medium text-base-content/70 mb-1" };
43
- const _hoisted_14 = { class: "text-xs font-mono text-base-content" };
44
- const _hoisted_15 = {
45
- key: 0,
46
- class: "text-base-content/50 italic"
47
- };
48
- const _hoisted_16 = { key: 1 };
49
- const _hoisted_17 = { key: 1 };
50
- const _hoisted_18 = { class: "space-y-2" };
51
- const _hoisted_19 = { class: "flex items-center justify-between mb-1" };
52
- const _hoisted_20 = { class: "font-medium text-xs text-base-content" };
53
- const _hoisted_21 = { class: "grid grid-cols-1 md:grid-cols-2 gap-2" };
54
- const _hoisted_22 = { class: "bg-error/10 border border-error/20 rounded p-1 text-xs" };
55
- const _hoisted_23 = {
56
- key: 0,
57
- class: "text-base-content/50 italic"
58
- };
59
- const _hoisted_24 = {
60
- key: 1,
61
- class: "font-mono"
62
- };
63
- const _hoisted_25 = { class: "bg-success/10 border border-success/20 rounded p-1 text-xs" };
64
- const _hoisted_26 = {
65
- key: 0,
66
- class: "text-base-content/50 italic"
67
- };
68
- const _hoisted_27 = {
69
- key: 1,
70
- class: "font-mono"
71
- };
72
- const _hoisted_28 = { key: 2 };
73
- const _hoisted_29 = { class: "bg-error/10 rounded p-2 text-xs font-mono" };
74
- const _hoisted_30 = { class: "whitespace-pre-wrap" };
75
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
76
- __name: "TeamHistoryTab",
77
- setup(__props) {
78
- const team_id = useRoute().params.id;
79
- const expandedItems = ref(/* @__PURE__ */ new Set());
80
- const { ZiniaDataTable } = useCursorDataTable(recordVersionRowSchemaWithMetadata, {
81
- fetchData: async ({ cursor, pageSize, sort, filters }) => {
82
- const input = {
83
- record_id: team_id,
84
- record_type: "team",
85
- filters: {
86
- first: pageSize,
87
- ...cursor ? { after: cursor } : {},
88
- sortBy: sort?.field || "recorded_at",
89
- sortDirection: sort?.direction || "desc",
90
- ...filters
91
- }
92
- };
93
- const result = await executeWithAuth(async (api) => {
94
- return await api.recordVersions.listRecordVersionsPaginated(input.record_id, input.record_type, input.filters);
95
- }, { refreshTokenHandler: getRefreshTokenHandler() });
96
- return {
97
- data: result.items || [],
98
- hasNextPage: result.pageInfo?.hasNextPage ?? false,
99
- hasPreviousPage: result.pageInfo?.hasPreviousPage ?? false,
100
- prevPageCursor: result.pageInfo?.prevPageCursor ?? void 0,
101
- nextPageCursor: result.pageInfo?.nextPageCursor ?? void 0
102
- };
103
- },
104
- columns: { operation: {
105
- label: "",
106
- field: "operation"
107
- } },
108
- pagination: { pageSize: 25 }
109
- });
110
- const toggleDetails = (itemId) => {
111
- if (expandedItems.value.has(itemId)) expandedItems.value.delete(itemId);
112
- else expandedItems.value.add(itemId);
113
- };
114
- const formatOperation = (operation) => {
115
- switch (operation) {
116
- case "insert": return "Created";
117
- case "update": return "Updated";
118
- case "delete": return "Deleted";
119
- default: return operation;
120
- }
121
- };
122
- const formatRecordData = (recordData) => {
123
- if (!recordData) return "No data";
124
- try {
125
- return JSON.stringify(JSON.parse(recordData), null, 2);
126
- } catch {
127
- return recordData;
128
- }
129
- };
130
- function getCreatedFields(record) {
131
- if (!record) return [];
132
- try {
133
- const createdData = JSON.parse(record);
134
- const fields = [];
135
- for (const [name, value] of Object.entries(createdData)) fields.push({
136
- name,
137
- value
138
- });
139
- return fields;
140
- } catch (error) {
141
- console.error("Error parsing record data:", error);
142
- return [];
143
- }
144
- }
145
- function getChangedFields(record, oldRecord) {
146
- if (!record || !oldRecord) return [];
147
- try {
148
- const changedFields = JSON.parse(record);
149
- const oldData = JSON.parse(oldRecord);
150
- const changes = [];
151
- for (const [field, newValue] of Object.entries(changedFields)) {
152
- const oldValue = oldData[field];
153
- changes.push({
154
- field,
155
- oldValue,
156
- newValue
157
- });
158
- }
159
- return changes;
160
- } catch (error) {
161
- console.error("Error parsing record data:", error);
162
- return [];
163
- }
164
- }
165
- function formatFieldName(fieldName) {
166
- return fieldName.split("_").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
167
- }
168
- function formatFieldValue(fieldName, value) {
169
- if (value === null || value === void 0) return "No value";
170
- if (fieldName.includes("_at") || fieldName.includes("At")) try {
171
- return formatSystemTimestamp(value);
172
- } catch {
173
- return String(value);
174
- }
175
- if (typeof value === "boolean") return value ? "Yes" : "No";
176
- if (fieldName.includes("status") || fieldName.includes("Status")) return String(value).replace(/_/g, " ").toUpperCase();
177
- return String(value);
178
- }
179
- return (_ctx, _cache) => {
180
- return openBlock(), createElementBlock("div", _hoisted_1, [createVNode(ZiniaContainer_default, null, {
181
- default: withCtx(() => [createVNode(unref(ZiniaDataTable), null, {
182
- "cell-operation": withCtx(({ row }) => [createElementVNode("div", _hoisted_2, [
183
- createCommentVNode(" Operation Badge "),
184
- createElementVNode("div", _hoisted_3, [createElementVNode("div", _hoisted_4, [createElementVNode("span", { class: normalizeClass(["badge badge-xs", {
185
- "badge-success": row.operation === "insert",
186
- "badge-warning": row.operation === "update",
187
- "badge-error": row.operation === "delete"
188
- }]) }, toDisplayString(formatOperation(row.operation)), 3)]), createElementVNode("div", _hoisted_5, [
189
- createElementVNode("span", _hoisted_6, toDisplayString(unref(formatSystemTimestamp)(row.recorded_at)), 1),
190
- createElementVNode("span", _hoisted_7, " by " + toDisplayString(row.auth_username || "Unknown"), 1),
191
- createElementVNode("button", {
192
- class: "btn btn-primary btn-xs",
193
- onClick: ($event) => toggleDetails(row.id)
194
- }, toDisplayString(expandedItems.value.has(row.id) ? "Hide Details" : "View Details"), 9, _hoisted_8)
195
- ])]),
196
- createCommentVNode(" Details based on operation type "),
197
- expandedItems.value.has(row.id) ? (openBlock(), createElementBlock("div", _hoisted_9, [row.operation === "insert" ? (openBlock(), createElementBlock("div", _hoisted_10, [_cache[0] || (_cache[0] = createElementVNode("h4", { class: "font-medium text-sm text-base-content/80 mb-2" }, "Created Record", -1)), createElementVNode("div", _hoisted_11, [createElementVNode("div", _hoisted_12, [(openBlock(true), createElementBlock(Fragment, null, renderList(getCreatedFields(row.record), (field) => {
198
- return openBlock(), createElementBlock("div", {
199
- key: field.name,
200
- class: "flex flex-col"
201
- }, [createElementVNode("span", _hoisted_13, toDisplayString(formatFieldName(field.name)), 1), createElementVNode("span", _hoisted_14, [field.value === null || field.value === void 0 ? (openBlock(), createElementBlock("span", _hoisted_15, "No value")) : (openBlock(), createElementBlock("span", _hoisted_16, toDisplayString(formatFieldValue(field.name, field.value)), 1))])]);
202
- }), 128))])])])) : row.operation === "update" ? (openBlock(), createElementBlock("div", _hoisted_17, [_cache[4] || (_cache[4] = createElementVNode("h4", { class: "font-medium text-sm text-base-content/80 mb-2" }, "Changes Made", -1)), createElementVNode("div", _hoisted_18, [(openBlock(true), createElementBlock(Fragment, null, renderList(getChangedFields(row.record, row.old_record), (change) => {
203
- return openBlock(), createElementBlock("div", {
204
- key: change.field,
205
- class: "border border-base-300 rounded p-2 bg-base-50"
206
- }, [createElementVNode("div", _hoisted_19, [createElementVNode("h5", _hoisted_20, toDisplayString(formatFieldName(change.field)), 1), _cache[1] || (_cache[1] = createElementVNode("span", { class: "badge badge-xs badge-warning" }, "Updated", -1))]), createElementVNode("div", _hoisted_21, [createElementVNode("div", null, [_cache[2] || (_cache[2] = createElementVNode("div", { class: "text-xs font-medium text-base-content/70 mb-1" }, " Previous ", -1)), createElementVNode("div", _hoisted_22, [change.oldValue === null ? (openBlock(), createElementBlock("span", _hoisted_23, "No value")) : (openBlock(), createElementBlock("span", _hoisted_24, toDisplayString(formatFieldValue(change.field, change.oldValue)), 1))])]), createElementVNode("div", null, [_cache[3] || (_cache[3] = createElementVNode("div", { class: "text-xs font-medium text-base-content/70 mb-1" }, "New", -1)), createElementVNode("div", _hoisted_25, [change.newValue === null ? (openBlock(), createElementBlock("span", _hoisted_26, "No value")) : (openBlock(), createElementBlock("span", _hoisted_27, toDisplayString(formatFieldValue(change.field, change.newValue)), 1))])])])]);
207
- }), 128))])])) : row.operation === "delete" ? (openBlock(), createElementBlock("div", _hoisted_28, [_cache[5] || (_cache[5] = createElementVNode("h4", { class: "font-medium text-sm text-base-content/80 mb-2" }, "Deleted Record", -1)), createElementVNode("div", _hoisted_29, [createElementVNode("pre", _hoisted_30, toDisplayString(formatRecordData(row.old_record)), 1)])])) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true)
208
- ])]),
209
- _: 1
210
- })]),
211
- _: 1
212
- })]);
213
- };
214
- }
215
- });
216
- var TeamHistoryTab_default$1 = _sfc_main$1;
217
-
218
- //#endregion
219
- //#region src/slices/team/TeamHistoryTab.vue
220
- const _sfc_main = /* @__PURE__ */ defineComponent({
221
- __name: "TeamHistoryTab",
222
- setup(__props) {
223
- return (_ctx, _cache) => {
224
- return openBlock(), createBlock(TeamHistoryTab_default$1);
225
- };
226
- }
227
- });
228
- var TeamHistoryTab_default = _sfc_main;
229
-
230
- //#endregion
231
- export { recordVersionRowSchemaWithMetadata as n, ZiniaContainer_default as r, TeamHistoryTab_default as t };
232
- //# sourceMappingURL=TeamHistoryTab-CNelXR3Q.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamHistoryTab-CNelXR3Q.js","names":["fields: Array<{ name: string; value: any }>","changes: Array<{ field: string; oldValue: any; newValue: any }>"],"sources":["../src/components/ui/ZiniaContainer.vue","../src/slices/team/recordVersionRowSchema.ts","../src/slices/team/components/TeamHistoryTab.vue","../src/slices/team/TeamHistoryTab.vue"],"sourcesContent":["<template>\n <div class=\"p-0 md:p-4 max-w-4xl mx-auto bg-base-200 card\">\n <div class=\"card-body p-4\">\n <slot />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n// Reusable container that matches ZiniaForm styling\n// Use this for cards/sections that should visually match forms\n</script>\n","import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { recordVersionSchema } from '@dragonmastery/dragoncore-shared';\nimport { z } from 'zod';\n\nexport const recordVersionRowSchemaWithMetadata = withMetadata(\n recordVersionSchema,\n 'recordVersionRowSchema',\n {},\n);\n\nexport type RecordVersionRow = z.infer<typeof recordVersionSchema>;\n","<template>\n <div class=\"mt-2\">\n <ZiniaContainer>\n <ZiniaDataTable>\n <!-- Custom cell templates -->\n <template #cell-operation=\"{ row }\">\n <div class=\"space-y-3\">\n <!-- Operation Badge -->\n <div class=\"flex flex-col sm:flex-row sm:items-center gap-2\">\n <div class=\"flex items-center gap-2\">\n <span\n class=\"badge badge-xs\"\n :class=\"{\n 'badge-success': row.operation === 'insert',\n 'badge-warning': row.operation === 'update',\n 'badge-error': row.operation === 'delete',\n }\"\n >\n {{ formatOperation(row.operation) }}\n </span>\n </div>\n <div class=\"flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-2 text-xs\">\n <span class=\"text-base-content/70\">\n {{ formatSystemTimestamp(row.recorded_at) }}\n </span>\n <span class=\"text-base-content/60\">\n by {{ row.auth_username || 'Unknown' }}\n </span>\n <button class=\"btn btn-primary btn-xs\" @click=\"toggleDetails(row.id)\">\n {{ expandedItems.has(row.id) ? 'Hide Details' : 'View Details' }}\n </button>\n </div>\n </div>\n\n <!-- Details based on operation type -->\n <div v-if=\"expandedItems.has(row.id)\" class=\"mt-3\">\n <div v-if=\"row.operation === 'insert'\">\n <h4 class=\"font-medium text-sm text-base-content/80 mb-2\">Created Record</h4>\n <div class=\"bg-base-200 rounded-lg p-3 text-sm\">\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-2\">\n <div\n v-for=\"field in getCreatedFields(row.record)\"\n :key=\"field.name\"\n class=\"flex flex-col\"\n >\n <span class=\"text-xs font-medium text-base-content/70 mb-1\">\n {{ formatFieldName(field.name) }}\n </span>\n <span class=\"text-xs font-mono text-base-content\">\n <span\n v-if=\"field.value === null || field.value === undefined\"\n class=\"text-base-content/50 italic\"\n >No value</span\n >\n <span v-else>{{ formatFieldValue(field.name, field.value) }}</span>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div v-else-if=\"row.operation === 'update'\">\n <h4 class=\"font-medium text-sm text-base-content/80 mb-2\">Changes Made</h4>\n <div class=\"space-y-2\">\n <div\n v-for=\"change in getChangedFields(row.record, row.old_record)\"\n :key=\"change.field\"\n class=\"border border-base-300 rounded p-2 bg-base-50\"\n >\n <div class=\"flex items-center justify-between mb-1\">\n <h5 class=\"font-medium text-xs text-base-content\">\n {{ formatFieldName(change.field) }}\n </h5>\n <span class=\"badge badge-xs badge-warning\">Updated</span>\n </div>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-2\">\n <div>\n <div class=\"text-xs font-medium text-base-content/70 mb-1\">\n Previous\n </div>\n <div class=\"bg-error/10 border border-error/20 rounded p-1 text-xs\">\n <span\n v-if=\"change.oldValue === null\"\n class=\"text-base-content/50 italic\"\n >No value</span\n >\n <span v-else class=\"font-mono\">{{\n formatFieldValue(change.field, change.oldValue)\n }}</span>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-base-content/70 mb-1\">New</div>\n <div\n class=\"bg-success/10 border border-success/20 rounded p-1 text-xs\"\n >\n <span\n v-if=\"change.newValue === null\"\n class=\"text-base-content/50 italic\"\n >No value</span\n >\n <span v-else class=\"font-mono\">{{\n formatFieldValue(change.field, change.newValue)\n }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div v-else-if=\"row.operation === 'delete'\">\n <h4 class=\"font-medium text-sm text-base-content/80 mb-2\">Deleted Record</h4>\n <div class=\"bg-error/10 rounded p-2 text-xs font-mono\">\n <pre class=\"whitespace-pre-wrap\">{{ formatRecordData(row.old_record) }}</pre>\n </div>\n </div>\n </div>\n </div>\n </template>\n </ZiniaDataTable>\n </ZiniaContainer>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useCursorDataTable } from '@dragonmastery/zinia-forms-core';\nimport { ref } from 'vue';\nimport { useRoute } from 'vue-router';\nimport ZiniaContainer from '../../../components/ui/ZiniaContainer.vue';\nimport { executeWithAuth } from '../../../composables/useRpcAuth';\nimport { getRefreshTokenHandler } from '../../../utils/EnhancedRefreshTokenHandler';\nimport { formatSystemTimestamp } from '../../../utils/convertToLocalDateTime';\nimport { recordVersionRowSchemaWithMetadata } from '../recordVersionRowSchema';\n\n// Get team ID from route\nconst route = useRoute();\nconst team_id = route.params.id as string;\n\n// Expanded items state\nconst expandedItems = ref(new Set<string>());\n\n// Data table configuration\nconst { ZiniaDataTable } = useCursorDataTable(recordVersionRowSchemaWithMetadata, {\n fetchData: async ({ cursor, pageSize, sort, filters }) => {\n // Build query variables for breadcrumb pagination\n const input = {\n record_id: team_id,\n record_type: 'team' as const,\n filters: {\n first: pageSize,\n ...(cursor ? { after: cursor } : {}),\n sortBy: sort?.field || 'recorded_at',\n sortDirection: (sort?.direction || 'desc') as 'asc' | 'desc',\n ...filters,\n },\n };\n\n // Call RPC endpoint\n const result = await executeWithAuth(\n async (api) => {\n return await api.recordVersions.listRecordVersionsPaginated(\n input.record_id,\n input.record_type,\n input.filters,\n );\n },\n { refreshTokenHandler: getRefreshTokenHandler() },\n );\n\n // Return paginated data with bidirectional navigation\n return {\n data: result.items || [],\n hasNextPage: result.pageInfo?.hasNextPage ?? false,\n hasPreviousPage: result.pageInfo?.hasPreviousPage ?? false,\n prevPageCursor: result.pageInfo?.prevPageCursor ?? undefined,\n nextPageCursor: result.pageInfo?.nextPageCursor ?? undefined,\n };\n },\n\n // Column configuration - only show operation column since everything is consolidated there\n columns: {\n operation: {\n label: '',\n field: 'operation',\n },\n },\n\n // Pagination settings\n pagination: {\n pageSize: 25,\n },\n});\n\n// Methods\nconst toggleDetails = (itemId: string) => {\n if (expandedItems.value.has(itemId)) {\n expandedItems.value.delete(itemId);\n } else {\n expandedItems.value.add(itemId);\n }\n};\n\nconst formatOperation = (operation: string) => {\n switch (operation) {\n case 'insert':\n return 'Created';\n case 'update':\n return 'Updated';\n case 'delete':\n return 'Deleted';\n default:\n return operation;\n }\n};\n\nconst formatRecordData = (recordData: string | null | undefined) => {\n if (!recordData) return 'No data';\n try {\n return JSON.stringify(JSON.parse(recordData), null, 2);\n } catch {\n return recordData;\n }\n};\n\nfunction getCreatedFields(record: string | null | undefined) {\n if (!record) return [];\n\n try {\n const createdData = JSON.parse(record);\n const fields: Array<{ name: string; value: any }> = [];\n\n for (const [name, value] of Object.entries(createdData)) {\n fields.push({ name, value });\n }\n\n return fields;\n } catch (error) {\n console.error('Error parsing record data:', error);\n return [];\n }\n}\n\nfunction getChangedFields(\n record: string | null | undefined,\n oldRecord: string | null | undefined,\n) {\n if (!record || !oldRecord) return [];\n\n try {\n const changedFields = JSON.parse(record);\n const oldData = JSON.parse(oldRecord);\n\n const changes: Array<{ field: string; oldValue: any; newValue: any }> = [];\n\n for (const [field, newValue] of Object.entries(changedFields)) {\n const oldValue = oldData[field];\n changes.push({ field, oldValue, newValue });\n }\n\n return changes;\n } catch (error) {\n console.error('Error parsing record data:', error);\n return [];\n }\n}\n\nfunction formatFieldName(fieldName: string): string {\n // Convert snake_case to Title Case\n return fieldName\n .split('_')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\nfunction formatFieldValue(fieldName: string, value: any): string {\n if (value === null || value === undefined) {\n return 'No value';\n }\n\n // Format dates\n if (fieldName.includes('_at') || fieldName.includes('At')) {\n try {\n return formatSystemTimestamp(value);\n } catch {\n return String(value);\n }\n }\n\n // Format booleans\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No';\n }\n\n // Format enums/status fields\n if (fieldName.includes('status') || fieldName.includes('Status')) {\n return String(value).replace(/_/g, ' ').toUpperCase();\n }\n\n return String(value);\n}\n</script>\n","<template>\n <TeamHistoryTabComponent />\n</template>\n\n<script setup lang=\"ts\">\nimport TeamHistoryTabComponent from './components/TeamHistoryTab.vue';\n</script>\n"],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import "./useRpcAuth-Dp2sec-X.js";
2
- import { t as TeamHistoryTab_default } from "./TeamHistoryTab-CNelXR3Q.js";
3
-
4
- export { TeamHistoryTab_default as default };
@@ -1,27 +0,0 @@
1
- import "./useRpcAuth-Dp2sec-X.js";
2
- import "./useQueryCache-DqcDMsxb.js";
3
- import "./useMutation-B4_S4Xoa.js";
4
- import "./useQuery-B7ndu5_P.js";
5
- import { dt as TeamList_default } from "./src-CHw8DdkR.js";
6
- import "./AppLink-CHMMrSFI.js";
7
- import "./TimelineSystemEvent-D58zN850.js";
8
- import "./TeamMembersTab-4gmnP9sD.js";
9
- import "./Appearance-BfPdKMXw.js";
10
- import "./useBreadcrumbs-DmgSucoe.js";
11
- import "./EditTeamMemberForm-CKbKomrL.js";
12
- import "./TeamHistoryTab-CNelXR3Q.js";
13
- import "./UserProfilePage-uAIfC_NW.js";
14
- import "./ChangePasswordPage-DCews8GU.js";
15
- import "./TeamNotesTab-BhVRLG8h.js";
16
- import "./CustomerSupportTicketParent-BzY4pmBk.js";
17
- import "./SupportTicketDevLifecycleBadge-Ba-Rm6QW.js";
18
- import "./StaffSupportTicketParent-CWWhaM37.js";
19
- import "./LoginForm-C85U2E2r.js";
20
- import "./Signup-hpV8J5cM.js";
21
- import "./ForgotPassword-D3bjL48L.js";
22
- import "./Logout-DZuWLh0O.js";
23
- import "./UserListPage-OGYOLwlw.js";
24
- import "./CreateUserPage-B8qeBZij.js";
25
- import "./EditUserPage-XqF25iwz.js";
26
-
27
- export { TeamList_default as default };
@@ -1,27 +0,0 @@
1
- import "./useRpcAuth-Dp2sec-X.js";
2
- import "./useQueryCache-DqcDMsxb.js";
3
- import "./useMutation-B4_S4Xoa.js";
4
- import "./useQuery-B7ndu5_P.js";
5
- import { at as TeamMemberList_default } from "./src-CHw8DdkR.js";
6
- import "./AppLink-CHMMrSFI.js";
7
- import "./TimelineSystemEvent-D58zN850.js";
8
- import "./TeamMembersTab-4gmnP9sD.js";
9
- import "./Appearance-BfPdKMXw.js";
10
- import "./useBreadcrumbs-DmgSucoe.js";
11
- import "./EditTeamMemberForm-CKbKomrL.js";
12
- import "./TeamHistoryTab-CNelXR3Q.js";
13
- import "./UserProfilePage-uAIfC_NW.js";
14
- import "./ChangePasswordPage-DCews8GU.js";
15
- import "./TeamNotesTab-BhVRLG8h.js";
16
- import "./CustomerSupportTicketParent-BzY4pmBk.js";
17
- import "./SupportTicketDevLifecycleBadge-Ba-Rm6QW.js";
18
- import "./StaffSupportTicketParent-CWWhaM37.js";
19
- import "./LoginForm-C85U2E2r.js";
20
- import "./Signup-hpV8J5cM.js";
21
- import "./ForgotPassword-D3bjL48L.js";
22
- import "./Logout-DZuWLh0O.js";
23
- import "./UserListPage-OGYOLwlw.js";
24
- import "./CreateUserPage-B8qeBZij.js";
25
- import "./EditUserPage-XqF25iwz.js";
26
-
27
- export { TeamMemberList_default as default };
@@ -1,27 +0,0 @@
1
- import "./useRpcAuth-Dp2sec-X.js";
2
- import "./useQueryCache-DqcDMsxb.js";
3
- import "./useMutation-B4_S4Xoa.js";
4
- import "./useQuery-B7ndu5_P.js";
5
- import { it as TeamMemberParent_default } from "./src-CHw8DdkR.js";
6
- import "./AppLink-CHMMrSFI.js";
7
- import "./TimelineSystemEvent-D58zN850.js";
8
- import "./TeamMembersTab-4gmnP9sD.js";
9
- import "./Appearance-BfPdKMXw.js";
10
- import "./useBreadcrumbs-DmgSucoe.js";
11
- import "./EditTeamMemberForm-CKbKomrL.js";
12
- import "./TeamHistoryTab-CNelXR3Q.js";
13
- import "./UserProfilePage-uAIfC_NW.js";
14
- import "./ChangePasswordPage-DCews8GU.js";
15
- import "./TeamNotesTab-BhVRLG8h.js";
16
- import "./CustomerSupportTicketParent-BzY4pmBk.js";
17
- import "./SupportTicketDevLifecycleBadge-Ba-Rm6QW.js";
18
- import "./StaffSupportTicketParent-CWWhaM37.js";
19
- import "./LoginForm-C85U2E2r.js";
20
- import "./Signup-hpV8J5cM.js";
21
- import "./ForgotPassword-D3bjL48L.js";
22
- import "./Logout-DZuWLh0O.js";
23
- import "./UserListPage-OGYOLwlw.js";
24
- import "./CreateUserPage-B8qeBZij.js";
25
- import "./EditUserPage-XqF25iwz.js";
26
-
27
- export { TeamMemberParent_default as default };
@@ -1,21 +0,0 @@
1
- import { createBlock, openBlock, resolveComponent } from "vue";
2
-
3
- //#region \0/plugin-vue/export-helper
4
- var export_helper_default = (sfc, props) => {
5
- const target = sfc.__vccOpts || sfc;
6
- for (const [key, val] of props) target[key] = val;
7
- return target;
8
- };
9
-
10
- //#endregion
11
- //#region src/slices/team/TeamMembersTab.vue
12
- const _sfc_main = {};
13
- function _sfc_render(_ctx, _cache) {
14
- const _component_RouterView = resolveComponent("RouterView");
15
- return openBlock(), createBlock(_component_RouterView);
16
- }
17
- var TeamMembersTab_default = /* @__PURE__ */ export_helper_default(_sfc_main, [["render", _sfc_render]]);
18
-
19
- //#endregion
20
- export { export_helper_default as n, TeamMembersTab_default as t };
21
- //# sourceMappingURL=TeamMembersTab-4gmnP9sD.js.map