@dragonmastery/dragoncore-vue 0.0.14 → 0.0.15
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/{CreateTeamForm-Dqh6otGC.js → CreateTeamForm-Cm8DOOXF.js} +1 -1
- package/dist/{CreateTeamMemberForm-CcNZz5lm.js → CreateTeamMemberForm-CcdQys0C.js} +1 -1
- package/dist/{CreditBalanceDashboard-4TBlnrdL.js → CreditBalanceDashboard-RLAnIiVN.js} +1 -1
- package/dist/{CreditManagement-Dxx54Hgt.js → CreditManagement-DGLhDOO5.js} +1 -1
- package/dist/{CustomerCreateSupportTicketForm-C-rf61Zr.js → CustomerCreateSupportTicketForm-Dv0ZMYrw.js} +1 -1
- package/dist/{CustomerSupportTicketDetailPage-DZQCplSM.js → CustomerSupportTicketDetailPage-ryM1_h1-.js} +2 -2
- package/dist/{CustomerSupportTicketDetailPage-DZQCplSM.js.map → CustomerSupportTicketDetailPage-ryM1_h1-.js.map} +1 -1
- package/dist/CustomerSupportTicketList-Cfe8gqiX.js +27 -0
- package/dist/{CustomerSupportTicketSuccess-DH4nAjH6.js → CustomerSupportTicketSuccess-DnnRkxsI.js} +1 -1
- package/dist/{EditTeamForm-D5KvJw43.js → EditTeamForm-DzEAqBhc.js} +1 -1
- package/dist/{ResetPassword-DRSaVSck.js → ResetPassword-COmnbNlg.js} +1 -1
- package/dist/{SavedFiltersPage-DyItk8Bp.js → SavedFiltersPage-rG33pF5X.js} +2 -2
- package/dist/{SavedFiltersPage-DyItk8Bp.js.map → SavedFiltersPage-rG33pF5X.js.map} +1 -1
- package/dist/{StaffCreateSupportTicketForm-C0eHfAfg.js → StaffCreateSupportTicketForm-CIDdUNcs.js} +1 -1
- package/dist/{StaffSupportTicketDetailPage-DY07Ez0R.js → StaffSupportTicketDetailPage-_ZOQgWv0.js} +2 -2
- package/dist/{StaffSupportTicketDetailPage-DY07Ez0R.js.map → StaffSupportTicketDetailPage-_ZOQgWv0.js.map} +1 -1
- package/dist/StaffSupportTicketList-DPIu3W50.js +27 -0
- package/dist/StaffSupportTicketSuccess-8lYa8_Sm.js +27 -0
- package/dist/{TeamAttachmentsTab-DIGshfO9.js → TeamAttachmentsTab-VUrIDPW6.js} +1 -1
- package/dist/{ViewTeam-BB7x8H0t.js → TeamList-BOXFY4cO.js} +2 -2
- package/dist/{TeamMemberList-DrjbJGw1.js → TeamMemberList-BwqpVaNc.js} +1 -1
- package/dist/{TeamMemberParent-9R1FYywk.js → TeamMemberParent-DIxwJ6EP.js} +1 -1
- package/dist/{TeamParent-DKzg6jC5.js → TeamParent-pEhBNWqh.js} +1 -1
- package/dist/{TimelineNoteInput-BVqF4MtZ.js → TimelineNoteInput-CdfuzIeI.js} +2 -2
- package/dist/{TimelineNoteInput-BVqF4MtZ.js.map → TimelineNoteInput-CdfuzIeI.js.map} +1 -1
- package/dist/{TeamList-BPUsUsmN.js → ViewTeam-Cexcjy9c.js} +2 -2
- package/dist/{ViewTeamMember-CRv1hkxG.js → ViewTeamMember-DKBKSsAc.js} +1 -1
- package/dist/index.d.ts +34 -34
- package/dist/index.js +1 -1
- package/dist/{src-TZ7YfTtl.js → src-BUN-mdXa.js} +23 -23
- package/dist/{src-TZ7YfTtl.js.map → src-BUN-mdXa.js.map} +1 -1
- package/package.json +3 -3
- package/dist/CustomerSupportTicketList-BxrZ5bUX.js +0 -27
- package/dist/StaffSupportTicketList-DSL7Fdg5.js +0 -27
- package/dist/StaffSupportTicketSuccess-BXqidJUr.js +0 -27
|
@@ -0,0 +1,27 @@
|
|
|
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 { E as StaffSupportTicketList_default } from "./src-BUN-mdXa.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 { StaffSupportTicketList_default as default };
|
|
@@ -0,0 +1,27 @@
|
|
|
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 { T as StaffSupportTicketSuccess_default } from "./src-BUN-mdXa.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 { StaffSupportTicketSuccess_default as default };
|
|
@@ -2,7 +2,7 @@ import "./useRpcAuth-Dp2sec-X.js";
|
|
|
2
2
|
import "./useQueryCache-DqcDMsxb.js";
|
|
3
3
|
import "./useMutation-B4_S4Xoa.js";
|
|
4
4
|
import "./useQuery-B7ndu5_P.js";
|
|
5
|
-
import { mt as TeamAttachmentsTab_default } from "./src-
|
|
5
|
+
import { mt as TeamAttachmentsTab_default } from "./src-BUN-mdXa.js";
|
|
6
6
|
import "./AppLink-CHMMrSFI.js";
|
|
7
7
|
import "./TimelineSystemEvent-D58zN850.js";
|
|
8
8
|
import "./TeamMembersTab-4gmnP9sD.js";
|
|
@@ -2,7 +2,7 @@ import "./useRpcAuth-Dp2sec-X.js";
|
|
|
2
2
|
import "./useQueryCache-DqcDMsxb.js";
|
|
3
3
|
import "./useMutation-B4_S4Xoa.js";
|
|
4
4
|
import "./useQuery-B7ndu5_P.js";
|
|
5
|
-
import {
|
|
5
|
+
import { dt as TeamList_default } from "./src-BUN-mdXa.js";
|
|
6
6
|
import "./AppLink-CHMMrSFI.js";
|
|
7
7
|
import "./TimelineSystemEvent-D58zN850.js";
|
|
8
8
|
import "./TeamMembersTab-4gmnP9sD.js";
|
|
@@ -24,4 +24,4 @@ import "./UserListPage-OGYOLwlw.js";
|
|
|
24
24
|
import "./CreateUserPage-B8qeBZij.js";
|
|
25
25
|
import "./EditUserPage-XqF25iwz.js";
|
|
26
26
|
|
|
27
|
-
export {
|
|
27
|
+
export { TeamList_default as default };
|
|
@@ -2,7 +2,7 @@ import "./useRpcAuth-Dp2sec-X.js";
|
|
|
2
2
|
import "./useQueryCache-DqcDMsxb.js";
|
|
3
3
|
import "./useMutation-B4_S4Xoa.js";
|
|
4
4
|
import "./useQuery-B7ndu5_P.js";
|
|
5
|
-
import { at as TeamMemberList_default } from "./src-
|
|
5
|
+
import { at as TeamMemberList_default } from "./src-BUN-mdXa.js";
|
|
6
6
|
import "./AppLink-CHMMrSFI.js";
|
|
7
7
|
import "./TimelineSystemEvent-D58zN850.js";
|
|
8
8
|
import "./TeamMembersTab-4gmnP9sD.js";
|
|
@@ -2,7 +2,7 @@ import "./useRpcAuth-Dp2sec-X.js";
|
|
|
2
2
|
import "./useQueryCache-DqcDMsxb.js";
|
|
3
3
|
import "./useMutation-B4_S4Xoa.js";
|
|
4
4
|
import "./useQuery-B7ndu5_P.js";
|
|
5
|
-
import { it as TeamMemberParent_default } from "./src-
|
|
5
|
+
import { it as TeamMemberParent_default } from "./src-BUN-mdXa.js";
|
|
6
6
|
import "./AppLink-CHMMrSFI.js";
|
|
7
7
|
import "./TimelineSystemEvent-D58zN850.js";
|
|
8
8
|
import "./TeamMembersTab-4gmnP9sD.js";
|
|
@@ -2,7 +2,7 @@ import "./useRpcAuth-Dp2sec-X.js";
|
|
|
2
2
|
import "./useQueryCache-DqcDMsxb.js";
|
|
3
3
|
import "./useMutation-B4_S4Xoa.js";
|
|
4
4
|
import "./useQuery-B7ndu5_P.js";
|
|
5
|
-
import { ut as TeamParent_default } from "./src-
|
|
5
|
+
import { ut as TeamParent_default } from "./src-BUN-mdXa.js";
|
|
6
6
|
import "./AppLink-CHMMrSFI.js";
|
|
7
7
|
import "./TimelineSystemEvent-D58zN850.js";
|
|
8
8
|
import "./TeamMembersTab-4gmnP9sD.js";
|
|
@@ -419,7 +419,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
419
419
|
const props = __props;
|
|
420
420
|
const formWrapperRef = ref(null);
|
|
421
421
|
const emit = __emit;
|
|
422
|
-
const { form, zinia, ZiniaForm, ZiniaSubmitButton,
|
|
422
|
+
const { form, zinia, ZiniaForm, ZiniaSubmitButton, refreshFormData } = useForm(timelineNoteCreateMetadata, {
|
|
423
423
|
storeName: "timeline-note-input",
|
|
424
424
|
persistToLocalStorage: false,
|
|
425
425
|
renderStyle: "daisy_ui",
|
|
@@ -510,4 +510,4 @@ var TimelineNoteInput_default = _sfc_main;
|
|
|
510
510
|
|
|
511
511
|
//#endregion
|
|
512
512
|
export { SupportTicketAttachmentsCollapsible_default as a, parseRecordVersions as i, MetadataField_default as n, ActionBannerAlert_default as r, TimelineNoteInput_default as t };
|
|
513
|
-
//# sourceMappingURL=TimelineNoteInput-
|
|
513
|
+
//# sourceMappingURL=TimelineNoteInput-CdfuzIeI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimelineNoteInput-BVqF4MtZ.js","names":["events: SystemEvent[]","collectedChanges: Array<{\n action: string;\n oldValue: string | null;\n newValue: string | null;\n fieldName: string;\n }>","map: Record<AlertVariant, string>","copyTimeoutId: ReturnType<typeof setTimeout> | null"],"sources":["../src/slices/support_ticket/shared/SupportTicketAttachmentsCollapsible.vue","../src/slices/support_ticket/utils/parseRecordVersions.ts","../src/slices/support_ticket/shared/ActionBannerAlert.vue","../src/slices/support_ticket/shared/MetadataField.vue","../src/slices/support_ticket/shared/timelineNoteFormMetadata.ts","../src/slices/support_ticket/shared/TimelineNoteInput.vue"],"sourcesContent":["<template>\n <div v-if=\"recordId\" class=\"w-full\">\n <div class=\"collapse collapse-arrow bg-base-200\">\n <input type=\"checkbox\" v-model=\"attachmentsExpanded\" />\n <div class=\"collapse-title text-sm font-medium px-4 py-2 min-h-0\">\n <div class=\"flex items-center gap-2\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15.172 7l-6.586 6.586a2 2 0 102.828 2.828l6.414-6.586a4 4 0 00-5.656-5.656l-6.415 6.585a6 6 0 108.486 8.486L20.5 13\"\n />\n </svg>\n <span>Attachments ({{ attachmentsCount }})</span>\n </div>\n </div>\n <div class=\"collapse-content px-0\">\n <div class=\"px-4 pb-4\">\n <InlineAttachments\n :record-id=\"recordId\"\n :can-upload=\"editable && !locked\"\n :can-delete=\"editable && !locked\"\n @update:attachments-count=\"attachmentsCount = $event\"\n @uploaded=\"emit('uploaded')\"\n @deleted=\"emit('deleted')\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport InlineAttachments from './InlineAttachments.vue';\n\nconst attachmentsCount = ref(0);\n\ninterface Props {\n recordId: string;\n locked: boolean;\n editable: boolean;\n}\n\ndefineProps<Props>();\n\nconst emit = defineEmits<{ uploaded: []; deleted: [] }>();\n\nconst attachmentsExpanded = ref(false);\n</script>\n","import {\n supportTicketNumberToPriority,\n type RecordVersionReadDto,\n} from '@dragonmastery/dragoncore-shared';\nimport { formatTicketDate } from './formatTicketDate';\n\nexport interface SystemEventChange {\n action: string;\n oldValue: string | null;\n newValue: string | null;\n fieldName?: string;\n}\n\nexport interface SystemEvent {\n id: string;\n timestamp: string;\n author: string;\n message: string;\n /** When set, used for structured display: action (italic) + type (badge) + details */\n action?: string;\n type?: string | null;\n details?: string | null;\n oldValue?: string | null;\n newValue?: string | null;\n fieldName?: string; // Field name that changed (for filtering)\n /** When multiple fields changed in same record version, grouped changes */\n changes?: SystemEventChange[];\n}\n\nconst SKIP_FIELDS = new Set(['updated_at', 'updated_by', 'id', 'display_id']);\n\n/** Fields that store user IDs - display names from lookup instead of raw IDs */\nconst USER_ID_FIELDS = new Set([\n 'assigned_to',\n 'created_by',\n 'updated_by',\n 'archived_by',\n 'deleted_by',\n]);\n\nfunction truncate(value: string, maxLength: number = 50): string {\n if (value.length <= maxLength) return value;\n return value.substring(0, maxLength) + '...';\n}\n\nfunction formatEnumValue(value: string): string {\n return value\n .split('_')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n}\n\nfunction formatFieldValue(\n fieldName: string,\n value: unknown,\n truncateLong: boolean = false,\n displayMap?: Map<string, string>,\n): string {\n if (value === null || value === undefined) return '';\n if (typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(value)) {\n return formatTicketDate(value).formatted;\n }\n if (typeof value === 'boolean') return value ? 'Yes' : 'No';\n // User ID fields: display name from lookup when available\n if (typeof value === 'string' && USER_ID_FIELDS.has(fieldName) && displayMap) {\n return displayMap.get(value) ?? value;\n }\n // Priority: DB stores number (1-4), record_versions may have legacy string or new number\n if (fieldName === 'priority') {\n if (typeof value === 'number') {\n return formatEnumValue(supportTicketNumberToPriority(value));\n }\n if (typeof value === 'string') return formatEnumValue(value);\n }\n if (typeof value === 'string') {\n if (\n fieldName.includes('status') ||\n fieldName.includes('type') ||\n fieldName.includes('lifecycle')\n ) {\n return formatEnumValue(value);\n }\n // Truncate title and description\n if (truncateLong && (fieldName === 'title' || fieldName === 'description')) {\n return truncate(value);\n }\n }\n return String(value);\n}\n\nfunction generateActionMessage(\n fieldName: string,\n oldValue: unknown,\n newValue: unknown,\n): string {\n switch (fieldName) {\n case 'assigned_to':\n if (oldValue === null || oldValue === undefined) return 'assigned to';\n return 'reassigned to';\n case 'title':\n return 'changed the title';\n case 'description':\n return 'updated the description';\n case 'type':\n return 'changed type';\n case 'priority':\n return 'changed priority';\n case 'approval_status':\n return 'changed status';\n case 'dev_lifecycle':\n return 'moved';\n case 'credit_value':\n if (oldValue === null || oldValue === undefined) return 'set credits';\n return 'changed credits';\n case 'delivered_value':\n if (oldValue === null || oldValue === undefined) return 'set delivered value';\n return 'changed delivered value';\n case 'start_at':\n if (oldValue === null || oldValue === undefined) return 'set start date';\n if (newValue === null || newValue === undefined) return 'cleared start date';\n return 'changed start date';\n case 'target_at':\n if (oldValue === null || oldValue === undefined) return 'set target date';\n if (newValue === null || newValue === undefined) return 'cleared target date';\n return 'changed target date';\n case 'completed_at':\n if (oldValue === null || oldValue === undefined) return 'marked as completed';\n if (newValue === null || newValue === undefined) return 'cleared completed date';\n return 'changed completed date';\n case 'locked_approval_at':\n if (\n oldValue === null ||\n (oldValue === undefined && newValue !== null && newValue !== undefined)\n ) {\n return 'locked the ticket';\n }\n return 'changed lock status';\n case 'archived_at':\n if (\n oldValue === null ||\n (oldValue === undefined && newValue !== null && newValue !== undefined)\n ) {\n return 'archived the ticket';\n }\n if (\n oldValue !== null &&\n oldValue !== undefined &&\n (newValue === null || newValue === undefined)\n ) {\n return 'unarchived the ticket';\n }\n return 'changed archive status';\n case 'requester_email':\n return 'changed requester email';\n case 'requester_name':\n return 'changed requester name';\n case 'attachment_added':\n return 'added attachment';\n case 'attachment_removed':\n return 'removed attachment';\n default:\n return `updated ${fieldName.replace(/_/g, ' ')}`;\n }\n}\n\nfunction parseRecord(recordJson: string | null | undefined): Record<string, unknown> | null {\n if (!recordJson) return null;\n try {\n return JSON.parse(recordJson);\n } catch {\n return null;\n }\n}\n\nexport function parseRecordVersions(\n versions: RecordVersionReadDto[],\n displayMap?: Map<string, string>,\n): SystemEvent[] {\n const events: SystemEvent[] = [];\n\n for (const version of versions) {\n const author = version.auth_username || 'Unknown';\n const timestamp = version.recorded_at;\n\n if (version.operation === 'insert') {\n events.push({\n id: `${version.id}-insert`,\n timestamp,\n author,\n message: 'created this ticket',\n action: 'created',\n type: 'ticket',\n });\n continue;\n }\n\n if (version.operation === 'update') {\n const oldRecord = parseRecord(version.old_record);\n const newRecord = parseRecord(version.record);\n\n if (!oldRecord || !newRecord) continue;\n\n const collectedChanges: Array<{\n action: string;\n oldValue: string | null;\n newValue: string | null;\n fieldName: string;\n }> = [];\n\n for (const [fieldName, newValue] of Object.entries(newRecord)) {\n if (SKIP_FIELDS.has(fieldName)) continue;\n\n const oldValue = oldRecord[fieldName];\n\n if (oldValue !== newValue) {\n const oldFormatted =\n oldValue !== null && oldValue !== undefined\n ? formatFieldValue(fieldName, oldValue, true, displayMap)\n : null;\n const newFormatted =\n newValue !== null && newValue !== undefined\n ? formatFieldValue(fieldName, newValue, true, displayMap)\n : null;\n\n const actionMsg = generateActionMessage(fieldName, oldValue, newValue);\n\n collectedChanges.push({\n action: actionMsg,\n oldValue: oldFormatted || null,\n newValue: newFormatted || null,\n fieldName,\n });\n }\n }\n\n if (collectedChanges.length > 0) {\n const primaryChange = collectedChanges[0]!;\n const details =\n primaryChange.oldValue != null && primaryChange.newValue != null\n ? `${primaryChange.oldValue} → ${primaryChange.newValue}`\n : primaryChange.newValue ?? null;\n\n events.push({\n id: version.id,\n timestamp,\n author,\n message: primaryChange.action,\n action: collectedChanges.length === 1 ? primaryChange.action : 'updated',\n type: 'ticket',\n details: collectedChanges.length === 1 ? details : null,\n oldValue: collectedChanges.length === 1 ? primaryChange.oldValue : undefined,\n newValue: collectedChanges.length === 1 ? primaryChange.newValue : undefined,\n fieldName: collectedChanges.length === 1 ? primaryChange.fieldName : undefined,\n changes:\n collectedChanges.length > 1\n ? collectedChanges.map((c) => ({\n action: c.action,\n oldValue: c.oldValue,\n newValue: c.newValue,\n fieldName: c.fieldName,\n }))\n : undefined,\n });\n }\n }\n }\n\n events.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());\n return events;\n}\n","<template>\n <div\n role=\"alert\"\n :class=\"[\n 'py-3 px-4 w-full rounded-lg border border-base-300 border-l-4 bg-base-200/60',\n variantBorderClass,\n ]\"\n >\n <!-- Mobile-first: stack vertically on small screens, row on desktop -->\n <div\n class=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-3\"\n >\n <div class=\"flex items-start gap-3 min-w-0\">\n <component :is=\"iconComponent\" v-if=\"icon\" class=\"shrink-0 w-5 h-5 opacity-90 mt-0.5\" />\n <span class=\"flex-1 min-w-0\">\n <slot />\n </span>\n </div>\n <div\n v-if=\"hasActions\"\n class=\"grid grid-cols-2 gap-2 sm:flex sm:flex-row sm:flex-wrap sm:ml-auto sm:shrink-0 sm:[&>*]:w-auto\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots, h } from 'vue';\n\ntype AlertVariant = 'warning' | 'success' | 'error' | 'info' | 'neutral';\ntype IconType = 'lock' | 'clock' | 'info' | 'archive';\n\ninterface Props {\n variant: AlertVariant;\n icon?: IconType;\n}\n\nconst props = defineProps<Props>();\n\nconst slots = useSlots();\n\nconst variantBorderClass = computed(() => {\n const map: Record<AlertVariant, string> = {\n warning: 'border-l-warning',\n success: 'border-l-success',\n error: 'border-l-error',\n info: 'border-l-info',\n neutral: 'border-l-base-content/30',\n };\n return map[props.variant];\n});\n\nconst hasActions = computed(() => {\n const actionsSlot = slots.actions;\n if (!actionsSlot) return false;\n const vnodes = actionsSlot();\n return !!vnodes?.length;\n});\n\nconst iconComponent = computed(() => {\n if (!props.icon) return null;\n const icons = {\n lock: () =>\n h(\n 'svg',\n {\n xmlns: 'http://www.w3.org/2000/svg',\n fill: 'none',\n viewBox: '0 0 24 24',\n 'stroke-width': '1.5',\n stroke: 'currentColor',\n class: 'w-5 h-5',\n },\n [\n h('path', {\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n d: 'M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z',\n }),\n ],\n ),\n clock: () =>\n h(\n 'svg',\n {\n xmlns: 'http://www.w3.org/2000/svg',\n fill: 'none',\n viewBox: '0 0 24 24',\n 'stroke-width': '1.5',\n stroke: 'currentColor',\n class: 'w-5 h-5',\n },\n [\n h('path', {\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n d: 'M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z',\n }),\n ],\n ),\n info: () =>\n h(\n 'svg',\n {\n xmlns: 'http://www.w3.org/2000/svg',\n fill: 'none',\n viewBox: '0 0 24 24',\n 'stroke-width': '1.5',\n stroke: 'currentColor',\n class: 'w-5 h-5',\n },\n [\n h('path', {\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n d: 'M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z',\n }),\n ],\n ),\n archive: () =>\n h(\n 'svg',\n {\n xmlns: 'http://www.w3.org/2000/svg',\n fill: 'none',\n viewBox: '0 0 24 24',\n 'stroke-width': '1.5',\n stroke: 'currentColor',\n class: 'w-5 h-5',\n },\n [\n h('path', {\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n d: 'M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z',\n }),\n ],\n ),\n };\n return icons[props.icon] ?? null;\n});\n</script>\n","<template>\n <div class=\"flex flex-col\">\n <span class=\"text-xs font-semibold uppercase tracking-wide text-base-content/50 mb-0.5\">\n {{ label }}\n </span>\n <template v-if=\"hasContent\">\n <span\n v-if=\"copyable\"\n ref=\"valueRef\"\n role=\"button\"\n tabindex=\"0\"\n class=\"font-mono cursor-pointer select-all\"\n @click=\"handleCopy\"\n @keydown.enter=\"handleCopy\"\n @keydown.space.prevent=\"handleCopy\"\n >\n {{ copied ? 'Copied!' : undefined }}\n <template v-if=\"!copied\"><slot /></template>\n </span>\n <span v-else>\n <slot />\n </span>\n </template>\n <template v-else>\n <slot name=\"empty\">\n <span class=\"text-base-content/50 italic text-sm\">Not set</span>\n </slot>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { Comment } from 'vue';\nimport { ref, computed, useSlots } from 'vue';\n\ninterface Props {\n label: string;\n copyable?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n copyable: false,\n});\n\nconst slots = useSlots();\nconst valueRef = ref<HTMLSpanElement | null>(null);\nconst copied = ref(false);\nlet copyTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\nconst hasContent = computed(() => {\n const defaultSlot = slots.default;\n if (!defaultSlot) return false;\n const vnodes = defaultSlot();\n if (!vnodes || !Array.isArray(vnodes)) return false;\n return vnodes.some((v) => v.type !== Comment);\n});\n\nasync function handleCopy() {\n if (!props.copyable) return;\n const text = valueRef.value?.textContent?.trim();\n if (!text) return;\n try {\n await navigator.clipboard.writeText(text);\n copied.value = true;\n if (copyTimeoutId) clearTimeout(copyTimeoutId);\n copyTimeoutId = setTimeout(() => {\n copied.value = false;\n copyTimeoutId = null;\n }, 1500);\n } catch {\n // ignore clipboard errors\n }\n}\n</script>\n","import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { z } from 'zod';\n\n/** Schema for adding a comment/note on support ticket timeline. */\nconst TimelineNoteCreateSchema = z.object({\n body: z.string().min(1, 'Comment is required').trim(),\n is_internal: z.boolean().optional().default(false),\n});\n\nexport const timelineNoteCreateMetadata = withMetadata(\n TimelineNoteCreateSchema,\n 'timelineNoteCreateForm',\n {\n body: {\n label: 'Comment',\n placeholder: 'Add a comment...',\n inputType: 'textarea',\n },\n is_internal: {\n label: 'Internal Note',\n helpText: 'Internal notes are not visible to the customer',\n },\n },\n);\n\nexport type TimelineNoteCreateDto = z.infer<typeof TimelineNoteCreateSchema>;\n","<template>\n <div class=\"border-t border-base-200 pt-4 mt-4 w-full\">\n <template v-if=\"disabled\">\n <div class=\"bg-base-200/50 rounded-lg p-4 text-center\">\n <span class=\"text-base-content/50 text-sm inline-flex items-center gap-1.5\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"w-4 h-4\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z\"\n />\n </svg>\n This ticket has been locked. You can no longer add comments.\n </span>\n </div>\n </template>\n <ZiniaForm\n v-else\n @handle-submit=\"handleSubmit\"\n @success=\"handleSuccess\"\n @error=\"handleError\"\n title=\"\"\n subtitle=\"\"\n >\n <div ref=\"formWrapperRef\" class=\"grid grid-cols-1 gap-4 w-full\" @keydown=\"handleKeydown\">\n <p\n v-if=\"showTypeToggle\"\n class=\"col-span-full text-xs mb-1\"\n :class=\"form.values.is_internal ? 'text-warning' : 'text-info'\"\n >\n {{\n form.values.is_internal\n ? '🔒 Internal — not visible to customer'\n : 'Visible to customer'\n }}\n </p>\n <div class=\"col-span-full\">\n <zinia.BodyField class=\"textarea w-full\" />\n </div>\n <div class=\"col-span-full flex flex-wrap gap-2 justify-between items-center\">\n <div v-if=\"showTypeToggle\" class=\"join\">\n <button\n type=\"button\"\n :class=\"[\n 'btn btn-sm join-item',\n !form.values.is_internal ? 'btn-info btn-active' : '',\n ]\"\n :disabled=\"form.isSubmitting\"\n @click=\"form.setValue('is_internal', false)\"\n >\n Customer Note\n </button>\n <button\n type=\"button\"\n :class=\"[\n 'btn btn-sm join-item',\n form.values.is_internal ? 'btn-warning btn-active' : '',\n ]\"\n :disabled=\"form.isSubmitting\"\n @click=\"form.setValue('is_internal', true)\"\n >\n Internal Note\n </button>\n </div>\n <div v-else></div>\n <ZiniaSubmitButton submitText=\"Comment\" submittingText=\"Adding...\" />\n </div>\n </div>\n </ZiniaForm>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport { ref, watch } from 'vue';\nimport { timelineNoteCreateMetadata } from './timelineNoteFormMetadata';\n\ninterface Props {\n showTypeToggle: boolean;\n disabled: boolean;\n /** When provided, noteType is controlled (e.g. synced with URL query param) */\n noteType?: 'customer' | 'internal';\n /** Called when form submits with validated data. Must return a Promise. */\n onSubmit: (payload: { content: string; noteType: 'customer' | 'internal' }) => Promise<void>;\n}\n\nconst props = defineProps<Props>();\nconst formWrapperRef = ref<HTMLElement | null>(null);\n\nconst emit = defineEmits<{\n 'update:noteType': [value: 'customer' | 'internal'];\n}>();\n\nconst { form, zinia, ZiniaForm, ZiniaSubmitButton, ZiniaFormErrorsSummary, refreshFormData } =\n useForm(timelineNoteCreateMetadata, {\n storeName: 'timeline-note-input',\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n fetchData: async () => ({\n body: '',\n is_internal: props.noteType === 'internal',\n }),\n });\n\n// Sync form's is_internal when controlled noteType prop changes (e.g. from URL)\nwatch(\n () => props.noteType,\n (noteType) => {\n if (noteType !== undefined) {\n form.setValue('is_internal', noteType === 'internal');\n }\n },\n { immediate: true },\n);\n\n// Emit when user toggles note type (for URL sync in StaffTimeline)\nwatch(\n () => form.values.is_internal,\n (isInternal) => {\n if (props.showTypeToggle) {\n emit('update:noteType', isInternal ? 'internal' : 'customer');\n }\n },\n);\n\nfunction handleKeydown(e: KeyboardEvent) {\n if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {\n e.preventDefault();\n const form = formWrapperRef.value?.closest('form');\n form?.requestSubmit();\n }\n}\n\nasync function handleSubmit(formData: { body: string; is_internal: boolean }) {\n await props.onSubmit({\n content: (formData.body ?? '').trim(),\n noteType: props.showTypeToggle && formData.is_internal ? 'internal' : 'customer',\n });\n}\n\nfunction handleSuccess() {\n refreshFormData();\n (document.activeElement as HTMLElement)?.blur();\n}\n\nfunction handleError(_error: Error | unknown) {\n // Form displays errors via ZiniaFormErrorsSummary\n}\n\nfunction reset() {\n refreshFormData();\n}\n\ndefineExpose({ reset });\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,mBAAmB,IAAI,EAAE;EAU/B,MAAM,OAAO;EAEb,MAAM,sBAAsB,IAAI,MAAM;;UAtDzB,QAAA,YAAA,WAAA,EAAX,mBAmCM,OAnCN,cAmCM,CAlCJ,mBAiCM,OAjCN,cAiCM;mBAhCJ,mBAAuD,SAAA;KAAhD,MAAK;kEAAoB,oBAAmB,QAAA;qCAAnB,oBAAA,MAAmB,CAAA,CAAA;IACnD,mBAkBM,OAlBN,cAkBM,CAjBJ,mBAgBM,OAhBN,cAgBM,CAAA,OAAA,OAAA,OAAA,KAfJ,mBAaM,OAAA;KAZJ,OAAM;KACN,OAAM;KACN,MAAK;KACL,SAAQ;KACR,QAAO;QAEP,mBAKE,QAAA;KAJA,kBAAe;KACf,mBAAgB;KAChB,gBAAa;KACb,GAAE;eAGN,mBAAiD,QAAA,MAA3C,kBAAa,gBAAG,iBAAA,MAAgB,GAAG,KAAC,EAAA,CAAA,CAAA,CAAA,CAAA;IAG9C,mBAWM,OAXN,cAWM,CAVJ,mBASM,OATN,cASM,CARJ,YAOE,2BAAA;KANC,aAAW,QAAA;KACX,cAAY,QAAA,YAAQ,CAAK,QAAA;KACzB,cAAY,QAAA,YAAQ,CAAK,QAAA;KACzB,6BAAwB,OAAA,OAAA,OAAA,MAAA,WAAE,iBAAA,QAAmB;KAC7C,YAAQ,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,WAAA;KACd,WAAO,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,UAAA;;;;;;;;;;;;;;ACF1B,MAAM,cAAc,IAAI,IAAI;CAAC;CAAc;CAAc;CAAM;CAAa,CAAC;;AAG7E,MAAM,iBAAiB,IAAI,IAAI;CAC7B;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAS,SAAS,OAAe,YAAoB,IAAY;AAC/D,KAAI,MAAM,UAAU,UAAW,QAAO;AACtC,QAAO,MAAM,UAAU,GAAG,UAAU,GAAG;;AAGzC,SAAS,gBAAgB,OAAuB;AAC9C,QAAO,MACJ,MAAM,IAAI,CACV,KAAK,SAAS,KAAK,OAAO,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE,CAAC,aAAa,CAAC,CACzE,KAAK,IAAI;;AAGd,SAAS,iBACP,WACA,OACA,eAAwB,OACxB,YACQ;AACR,KAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,KAAI,OAAO,UAAU,YAAY,qBAAqB,KAAK,MAAM,CAC/D,QAAO,iBAAiB,MAAM,CAAC;AAEjC,KAAI,OAAO,UAAU,UAAW,QAAO,QAAQ,QAAQ;AAEvD,KAAI,OAAO,UAAU,YAAY,eAAe,IAAI,UAAU,IAAI,WAChE,QAAO,WAAW,IAAI,MAAM,IAAI;AAGlC,KAAI,cAAc,YAAY;AAC5B,MAAI,OAAO,UAAU,SACnB,QAAO,gBAAgB,8BAA8B,MAAM,CAAC;AAE9D,MAAI,OAAO,UAAU,SAAU,QAAO,gBAAgB,MAAM;;AAE9D,KAAI,OAAO,UAAU,UAAU;AAC7B,MACE,UAAU,SAAS,SAAS,IAC5B,UAAU,SAAS,OAAO,IAC1B,UAAU,SAAS,YAAY,CAE/B,QAAO,gBAAgB,MAAM;AAG/B,MAAI,iBAAiB,cAAc,WAAW,cAAc,eAC1D,QAAO,SAAS,MAAM;;AAG1B,QAAO,OAAO,MAAM;;AAGtB,SAAS,sBACP,WACA,UACA,UACQ;AACR,SAAQ,WAAR;EACE,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK,QACH,QAAO;EACT,KAAK,cACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,KAAK,WACH,QAAO;EACT,KAAK,kBACH,QAAO;EACT,KAAK,gBACH,QAAO;EACT,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK;AACH,OACE,aAAa,QACZ,aAAa,UAAa,aAAa,QAAQ,aAAa,OAE7D,QAAO;AAET,UAAO;EACT,KAAK;AACH,OACE,aAAa,QACZ,aAAa,UAAa,aAAa,QAAQ,aAAa,OAE7D,QAAO;AAET,OACE,aAAa,QACb,aAAa,WACZ,aAAa,QAAQ,aAAa,QAEnC,QAAO;AAET,UAAO;EACT,KAAK,kBACH,QAAO;EACT,KAAK,iBACH,QAAO;EACT,KAAK,mBACH,QAAO;EACT,KAAK,qBACH,QAAO;EACT,QACE,QAAO,WAAW,UAAU,QAAQ,MAAM,IAAI;;;AAIpD,SAAS,YAAY,YAAuE;AAC1F,KAAI,CAAC,WAAY,QAAO;AACxB,KAAI;AACF,SAAO,KAAK,MAAM,WAAW;SACvB;AACN,SAAO;;;AAIX,SAAgB,oBACd,UACA,YACe;CACf,MAAMA,SAAwB,EAAE;AAEhC,MAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,SAAS,QAAQ,iBAAiB;EACxC,MAAM,YAAY,QAAQ;AAE1B,MAAI,QAAQ,cAAc,UAAU;AAClC,UAAO,KAAK;IACV,IAAI,GAAG,QAAQ,GAAG;IAClB;IACA;IACA,SAAS;IACT,QAAQ;IACR,MAAM;IACP,CAAC;AACF;;AAGF,MAAI,QAAQ,cAAc,UAAU;GAClC,MAAM,YAAY,YAAY,QAAQ,WAAW;GACjD,MAAM,YAAY,YAAY,QAAQ,OAAO;AAE7C,OAAI,CAAC,aAAa,CAAC,UAAW;GAE9B,MAAMC,mBAKD,EAAE;AAEP,QAAK,MAAM,CAAC,WAAW,aAAa,OAAO,QAAQ,UAAU,EAAE;AAC7D,QAAI,YAAY,IAAI,UAAU,CAAE;IAEhC,MAAM,WAAW,UAAU;AAE3B,QAAI,aAAa,UAAU;KACzB,MAAM,eACJ,aAAa,QAAQ,aAAa,SAC9B,iBAAiB,WAAW,UAAU,MAAM,WAAW,GACvD;KACN,MAAM,eACJ,aAAa,QAAQ,aAAa,SAC9B,iBAAiB,WAAW,UAAU,MAAM,WAAW,GACvD;KAEN,MAAM,YAAY,sBAAsB,WAAW,UAAU,SAAS;AAEtE,sBAAiB,KAAK;MACpB,QAAQ;MACR,UAAU,gBAAgB;MAC1B,UAAU,gBAAgB;MAC1B;MACD,CAAC;;;AAIN,OAAI,iBAAiB,SAAS,GAAG;IAC/B,MAAM,gBAAgB,iBAAiB;IACvC,MAAM,UACJ,cAAc,YAAY,QAAQ,cAAc,YAAY,OACxD,GAAG,cAAc,SAAS,KAAK,cAAc,aAC7C,cAAc,YAAY;AAEhC,WAAO,KAAK;KACV,IAAI,QAAQ;KACZ;KACA;KACA,SAAS,cAAc;KACvB,QAAQ,iBAAiB,WAAW,IAAI,cAAc,SAAS;KAC/D,MAAM;KACN,SAAS,iBAAiB,WAAW,IAAI,UAAU;KACnD,UAAU,iBAAiB,WAAW,IAAI,cAAc,WAAW;KACnE,UAAU,iBAAiB,WAAW,IAAI,cAAc,WAAW;KACnE,WAAW,iBAAiB,WAAW,IAAI,cAAc,YAAY;KACrE,SACE,iBAAiB,SAAS,IACtB,iBAAiB,KAAK,OAAO;MAC3B,QAAQ,EAAE;MACV,UAAU,EAAE;MACZ,UAAU,EAAE;MACZ,WAAW,EAAE;MACd,EAAE,GACH;KACP,CAAC;;;;AAKR,QAAO,MAAM,GAAG,MAAM,IAAI,KAAK,EAAE,UAAU,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC;AACxF,QAAO;;;;;;;;;;;;;;;;;;;ECrOT,MAAM,QAAQ;EAEd,MAAM,QAAQ,UAAU;EAExB,MAAM,qBAAqB,eAAe;AAQxC,UAP0C;IACxC,SAAS;IACT,SAAS;IACT,OAAO;IACP,MAAM;IACN,SAAS;IACV,CACU,MAAM;IACjB;EAEF,MAAM,aAAa,eAAe;GAChC,MAAM,cAAc,MAAM;AAC1B,OAAI,CAAC,YAAa,QAAO;AAEzB,UAAO,CAAC,CADO,aAAa,EACX;IACjB;EAEF,MAAM,gBAAgB,eAAe;AACnC,OAAI,CAAC,MAAM,KAAM,QAAO;AA+ExB,UA9Ec;IACZ,YACE,EACE,OACA;KACE,OAAO;KACP,MAAM;KACN,SAAS;KACT,gBAAgB;KAChB,QAAQ;KACR,OAAO;KACR,EACD,CACE,EAAE,QAAQ;KACR,kBAAkB;KAClB,mBAAmB;KACnB,GAAG;KACJ,CAAC,CACH,CACF;IACH,aACE,EACE,OACA;KACE,OAAO;KACP,MAAM;KACN,SAAS;KACT,gBAAgB;KAChB,QAAQ;KACR,OAAO;KACR,EACD,CACE,EAAE,QAAQ;KACR,kBAAkB;KAClB,mBAAmB;KACnB,GAAG;KACJ,CAAC,CACH,CACF;IACH,YACE,EACE,OACA;KACE,OAAO;KACP,MAAM;KACN,SAAS;KACT,gBAAgB;KAChB,QAAQ;KACR,OAAO;KACR,EACD,CACE,EAAE,QAAQ;KACR,kBAAkB;KAClB,mBAAmB;KACnB,GAAG;KACJ,CAAC,CACH,CACF;IACH,eACE,EACE,OACA;KACE,OAAO;KACP,MAAM;KACN,SAAS;KACT,gBAAgB;KAChB,QAAQ;KACR,OAAO;KACR,EACD,CACE,EAAE,QAAQ;KACR,kBAAkB;KAClB,mBAAmB;KACnB,GAAG;KACJ,CAAC,CACH,CACF;IACJ,CACY,MAAM,SAAS;IAC5B;;uBA7IA,mBAwBM,OAAA;IAvBJ,MAAK;IACJ,OAAK,eAAA,CAAA,gFAAgG,mBAAA,MAAA,CAAA;OAKtG,mBAAA,oEAAwE,EACxE,mBAeM,OAfN,cAeM,CAZJ,mBAKM,OALN,cAKM,CAJiC,QAAA,QAAA,WAAA,EAArC,YAAwF,wBAAxE,cAAA,MAAa,EAAA;;IAAc,OAAM;2CACjD,mBAEO,QAFP,cAEO,CADL,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA,CAAA,CAAA,EAIJ,WAAA,SAAA,WAAA,EADR,mBAKM,OALN,cAKM,CADJ,WAAuB,KAAA,QAAA,UAAA,CAAA,CAAA,IAAA,mBAAA,QAAA,KAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;ECkB/B,MAAM,QAAQ;EAId,MAAM,QAAQ,UAAU;EACxB,MAAM,WAAW,IAA4B,KAAK;EAClD,MAAM,SAAS,IAAI,MAAM;EACzB,IAAIE,gBAAsD;EAE1D,MAAM,aAAa,eAAe;GAChC,MAAM,cAAc,MAAM;AAC1B,OAAI,CAAC,YAAa,QAAO;GACzB,MAAM,SAAS,aAAa;AAC5B,OAAI,CAAC,UAAU,CAAC,MAAM,QAAQ,OAAO,CAAE,QAAO;AAC9C,UAAO,OAAO,MAAM,MAAM,EAAE,SAAS,QAAQ;IAC7C;EAEF,eAAe,aAAa;AAC1B,OAAI,CAAC,MAAM,SAAU;GACrB,MAAM,OAAO,SAAS,OAAO,aAAa,MAAM;AAChD,OAAI,CAAC,KAAM;AACX,OAAI;AACF,UAAM,UAAU,UAAU,UAAU,KAAK;AACzC,WAAO,QAAQ;AACf,QAAI,cAAe,cAAa,cAAc;AAC9C,oBAAgB,iBAAiB;AAC/B,YAAO,QAAQ;AACf,qBAAgB;OACf,KAAK;WACF;;;uBApER,mBA2BM,OA3BN,cA2BM,CA1BJ,mBAEO,QAFP,cAEO,gBADF,QAAA,MAAK,EAAA,EAAA,EAEM,WAAA,SAAA,WAAA,EAAhB,mBAiBW,UAAA,EAAA,KAAA,GAAA,EAAA,CAfD,QAAA,YAAA,WAAA,EADR,mBAYO,QAAA;;aAVD;IAAJ,KAAI;IACJ,MAAK;IACL,UAAS;IACT,OAAM;IACL,SAAO;IACP,WAAO,CAAA,SAAQ,YAAU,CAAA,QAAA,CAAA,EAAA,SAAA,cACF,YAAU,CAAA,UAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA;uCAE/B,OAAA,QAAM,YAAe,OAAS,GAAG,KACpC,EAAA,EAAA,CAAiB,OAAA,QAAQ,WAAQ,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,GAAA,mBAAA,QAAA,KAAA,CAAA,EAAA,IAAA,aAAA,KAAA,WAAA,EAEnC,mBAEO,QAAA,cAAA,CADL,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA,EAAA,SAIV,WAEO,KAAA,QAAA,SAAA,EAAA,KAAA,GAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KADL,mBAAgE,QAAA,EAA1D,OAAM,uCAAqC,EAAC,WAAO,GAAA,EAAA,CAAA,CAAA,CAAA;;;;;;;;;ACrBjE,MAAM,2BAA2B,EAAE,OAAO;CACxC,MAAM,EAAE,QAAQ,CAAC,IAAI,GAAG,sBAAsB,CAAC,MAAM;CACrD,aAAa,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,MAAM;CACnD,CAAC;AAEF,MAAa,6BAA6B,aACxC,0BACA,0BACA;CACE,MAAM;EACJ,OAAO;EACP,aAAa;EACb,WAAW;EACZ;CACD,aAAa;EACX,OAAO;EACP,UAAU;EACX;CACF,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECsED,MAAM,QAAQ;EACd,MAAM,iBAAiB,IAAwB,KAAK;EAEpD,MAAM,OAAO;EAIb,MAAM,EAAE,MAAM,OAAO,WAAW,mBAAmB,wBAAwB,oBACzE,QAAQ,4BAA4B;GAClC,WAAW;GACX,uBAAuB;GACvB,aAAa;GACb,WAAW,aAAa;IACtB,MAAM;IACN,aAAa,MAAM,aAAa;IACjC;GACF,CAAC;AAGJ,cACQ,MAAM,WACX,aAAa;AACZ,OAAI,aAAa,OACf,MAAK,SAAS,eAAe,aAAa,WAAW;KAGzD,EAAE,WAAW,MAAM,CACpB;AAGD,cACQ,KAAK,OAAO,cACjB,eAAe;AACd,OAAI,MAAM,eACR,MAAK,mBAAmB,aAAa,aAAa,WAAW;IAGlE;EAED,SAAS,cAAc,GAAkB;AACvC,QAAK,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,SAAS;AACjD,MAAE,gBAAgB;AAElB,KADa,eAAe,OAAO,QAAQ,OAAO,GAC5C,eAAe;;;EAIzB,eAAe,aAAa,UAAkD;AAC5E,SAAM,MAAM,SAAS;IACnB,UAAU,SAAS,QAAQ,IAAI,MAAM;IACrC,UAAU,MAAM,kBAAkB,SAAS,cAAc,aAAa;IACvE,CAAC;;EAGJ,SAAS,gBAAgB;AACvB,oBAAiB;AAChB,YAAS,eAA+B,MAAM;;EAGjD,SAAS,YAAY,QAAyB;EAI9C,SAAS,QAAQ;AACf,oBAAiB;;AAGnB,WAAa,EAAE,OAAO,CAAC;;uBA/JrB,mBA2EM,OA3EN,YA2EM,CA1EY,QAAA,YAAA,WAAA,EACd,mBAkBM,OAlBN,YAkBM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAjBJ,mBAgBO,QAAA,EAhBD,OAAM,iEAA+D,EAAA,CACzE,mBAaM,OAAA;IAZJ,OAAM;IACN,MAAK;IACL,SAAQ;IACR,gBAAa;IACb,QAAO;IACP,OAAM;OAEN,mBAIE,QAAA;IAHA,kBAAe;IACf,mBAAgB;IAChB,GAAE;yBAEA,iEAER,CAAA,2BAGJ,YAoDY,MAAA,UAAA,EAAA;;IAlDT,gBAAe;IACf,WAAS;IACT,SAAO;IACR,OAAM;IACN,UAAS;;2BA6CH,CA3CN,mBA2CM,OAAA;cA3CG;KAAJ,KAAI;KAAiB,OAAM;KAAiC,WAAS;;KAEhE,QAAA,kBAAA,WAAA,EADR,mBAUI,KAAA;;MARF,OAAK,eAAA,CAAC,8BACE,MAAA,KAAI,CAAC,OAAO,cAAW,iBAAA,YAAA,CAAA;wBAG7B,MAAA,KAAI,CAAC,OAAO,cAAA,0CAAA,sBAAA;KAKhB,mBAEM,OAFN,YAEM,CADJ,YAA2C,MAAA,MAAA,CAAA,WAAA,EAA1B,OAAM,mBAAiB,CAAA,CAAA,CAAA;KAE1C,mBA2BM,OA3BN,YA2BM,CA1BO,QAAA,kBAAA,WAAA,EAAX,mBAuBM,OAvBN,YAuBM,CAtBJ,mBAUS,UAAA;MATP,MAAK;MACJ,OAAK,eAAA,CAAA,wBAAA,CAA6D,MAAA,KAAI,CAAC,OAAO,cAAW,wBAAA,GAAA,CAAA;MAIzF,UAAU,MAAA,KAAI,CAAC;MACf,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,KAAI,CAAC,SAAQ,eAAA,MAAA;QACtB,mBAED,IAAA,WAAA,EACA,mBAUS,UAAA;MATP,MAAK;MACJ,OAAK,eAAA,CAAA,wBAA4D,MAAA,KAAI,CAAC,OAAO,cAAW,2BAAA,GAAA,CAAA;MAIxF,UAAU,MAAA,KAAI,CAAC;MACf,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,KAAI,CAAC,SAAQ,eAAA,KAAA;QACtB,mBAED,IAAA,WAAA,CAAA,CAAA,KAAA,WAAA,EAEF,mBAAkB,OAAA,WAAA,GAClB,YAAqE,MAAA,kBAAA,EAAA;MAAlD,YAAW;MAAU,gBAAe"}
|
|
1
|
+
{"version":3,"file":"TimelineNoteInput-CdfuzIeI.js","names":["events: SystemEvent[]","collectedChanges: Array<{\n action: string;\n oldValue: string | null;\n newValue: string | null;\n fieldName: string;\n }>","map: Record<AlertVariant, string>","copyTimeoutId: ReturnType<typeof setTimeout> | null"],"sources":["../src/slices/support_ticket/shared/SupportTicketAttachmentsCollapsible.vue","../src/slices/support_ticket/utils/parseRecordVersions.ts","../src/slices/support_ticket/shared/ActionBannerAlert.vue","../src/slices/support_ticket/shared/MetadataField.vue","../src/slices/support_ticket/shared/timelineNoteFormMetadata.ts","../src/slices/support_ticket/shared/TimelineNoteInput.vue"],"sourcesContent":["<template>\n <div v-if=\"recordId\" class=\"w-full\">\n <div class=\"collapse collapse-arrow bg-base-200\">\n <input type=\"checkbox\" v-model=\"attachmentsExpanded\" />\n <div class=\"collapse-title text-sm font-medium px-4 py-2 min-h-0\">\n <div class=\"flex items-center gap-2\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15.172 7l-6.586 6.586a2 2 0 102.828 2.828l6.414-6.586a4 4 0 00-5.656-5.656l-6.415 6.585a6 6 0 108.486 8.486L20.5 13\"\n />\n </svg>\n <span>Attachments ({{ attachmentsCount }})</span>\n </div>\n </div>\n <div class=\"collapse-content px-0\">\n <div class=\"px-4 pb-4\">\n <InlineAttachments\n :record-id=\"recordId\"\n :can-upload=\"editable && !locked\"\n :can-delete=\"editable && !locked\"\n @update:attachments-count=\"attachmentsCount = $event\"\n @uploaded=\"emit('uploaded')\"\n @deleted=\"emit('deleted')\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport InlineAttachments from './InlineAttachments.vue';\n\nconst attachmentsCount = ref(0);\n\ninterface Props {\n recordId: string;\n locked: boolean;\n editable: boolean;\n}\n\ndefineProps<Props>();\n\nconst emit = defineEmits<{ uploaded: []; deleted: [] }>();\n\nconst attachmentsExpanded = ref(false);\n</script>\n","import {\n supportTicketNumberToPriority,\n type RecordVersionReadDto,\n} from '@dragonmastery/dragoncore-shared';\nimport { formatTicketDate } from './formatTicketDate';\n\nexport interface SystemEventChange {\n action: string;\n oldValue: string | null;\n newValue: string | null;\n fieldName?: string;\n}\n\nexport interface SystemEvent {\n id: string;\n timestamp: string;\n author: string;\n message: string;\n /** When set, used for structured display: action (italic) + type (badge) + details */\n action?: string;\n type?: string | null;\n details?: string | null;\n oldValue?: string | null;\n newValue?: string | null;\n fieldName?: string; // Field name that changed (for filtering)\n /** When multiple fields changed in same record version, grouped changes */\n changes?: SystemEventChange[];\n}\n\nconst SKIP_FIELDS = new Set(['updated_at', 'updated_by', 'id', 'display_id']);\n\n/** Fields that store user IDs - display names from lookup instead of raw IDs */\nconst USER_ID_FIELDS = new Set([\n 'assigned_to',\n 'created_by',\n 'updated_by',\n 'archived_by',\n 'deleted_by',\n]);\n\nfunction truncate(value: string, maxLength: number = 50): string {\n if (value.length <= maxLength) return value;\n return value.substring(0, maxLength) + '...';\n}\n\nfunction formatEnumValue(value: string): string {\n return value\n .split('_')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n}\n\nfunction formatFieldValue(\n fieldName: string,\n value: unknown,\n truncateLong: boolean = false,\n displayMap?: Map<string, string>,\n): string {\n if (value === null || value === undefined) return '';\n if (typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(value)) {\n return formatTicketDate(value).formatted;\n }\n if (typeof value === 'boolean') return value ? 'Yes' : 'No';\n // User ID fields: display name from lookup when available\n if (typeof value === 'string' && USER_ID_FIELDS.has(fieldName) && displayMap) {\n return displayMap.get(value) ?? value;\n }\n // Priority: DB stores number (1-4), record_versions may have legacy string or new number\n if (fieldName === 'priority') {\n if (typeof value === 'number') {\n return formatEnumValue(supportTicketNumberToPriority(value));\n }\n if (typeof value === 'string') return formatEnumValue(value);\n }\n if (typeof value === 'string') {\n if (\n fieldName.includes('status') ||\n fieldName.includes('type') ||\n fieldName.includes('lifecycle')\n ) {\n return formatEnumValue(value);\n }\n // Truncate title and description\n if (truncateLong && (fieldName === 'title' || fieldName === 'description')) {\n return truncate(value);\n }\n }\n return String(value);\n}\n\nfunction generateActionMessage(\n fieldName: string,\n oldValue: unknown,\n newValue: unknown,\n): string {\n switch (fieldName) {\n case 'assigned_to':\n if (oldValue === null || oldValue === undefined) return 'assigned to';\n return 'reassigned to';\n case 'title':\n return 'changed the title';\n case 'description':\n return 'updated the description';\n case 'type':\n return 'changed type';\n case 'priority':\n return 'changed priority';\n case 'approval_status':\n return 'changed status';\n case 'dev_lifecycle':\n return 'moved';\n case 'credit_value':\n if (oldValue === null || oldValue === undefined) return 'set credits';\n return 'changed credits';\n case 'delivered_value':\n if (oldValue === null || oldValue === undefined) return 'set delivered value';\n return 'changed delivered value';\n case 'start_at':\n if (oldValue === null || oldValue === undefined) return 'set start date';\n if (newValue === null || newValue === undefined) return 'cleared start date';\n return 'changed start date';\n case 'target_at':\n if (oldValue === null || oldValue === undefined) return 'set target date';\n if (newValue === null || newValue === undefined) return 'cleared target date';\n return 'changed target date';\n case 'completed_at':\n if (oldValue === null || oldValue === undefined) return 'marked as completed';\n if (newValue === null || newValue === undefined) return 'cleared completed date';\n return 'changed completed date';\n case 'locked_approval_at':\n if (\n oldValue === null ||\n (oldValue === undefined && newValue !== null && newValue !== undefined)\n ) {\n return 'locked the ticket';\n }\n return 'changed lock status';\n case 'archived_at':\n if (\n oldValue === null ||\n (oldValue === undefined && newValue !== null && newValue !== undefined)\n ) {\n return 'archived the ticket';\n }\n if (\n oldValue !== null &&\n oldValue !== undefined &&\n (newValue === null || newValue === undefined)\n ) {\n return 'unarchived the ticket';\n }\n return 'changed archive status';\n case 'requester_email':\n return 'changed requester email';\n case 'requester_name':\n return 'changed requester name';\n case 'attachment_added':\n return 'added attachment';\n case 'attachment_removed':\n return 'removed attachment';\n default:\n return `updated ${fieldName.replace(/_/g, ' ')}`;\n }\n}\n\nfunction parseRecord(recordJson: string | null | undefined): Record<string, unknown> | null {\n if (!recordJson) return null;\n try {\n return JSON.parse(recordJson);\n } catch {\n return null;\n }\n}\n\nexport function parseRecordVersions(\n versions: RecordVersionReadDto[],\n displayMap?: Map<string, string>,\n): SystemEvent[] {\n const events: SystemEvent[] = [];\n\n for (const version of versions) {\n const author = version.auth_username || 'Unknown';\n const timestamp = version.recorded_at;\n\n if (version.operation === 'insert') {\n events.push({\n id: `${version.id}-insert`,\n timestamp,\n author,\n message: 'created this ticket',\n action: 'created',\n type: 'ticket',\n });\n continue;\n }\n\n if (version.operation === 'update') {\n const oldRecord = parseRecord(version.old_record);\n const newRecord = parseRecord(version.record);\n\n if (!oldRecord || !newRecord) continue;\n\n const collectedChanges: Array<{\n action: string;\n oldValue: string | null;\n newValue: string | null;\n fieldName: string;\n }> = [];\n\n for (const [fieldName, newValue] of Object.entries(newRecord)) {\n if (SKIP_FIELDS.has(fieldName)) continue;\n\n const oldValue = oldRecord[fieldName];\n\n if (oldValue !== newValue) {\n const oldFormatted =\n oldValue !== null && oldValue !== undefined\n ? formatFieldValue(fieldName, oldValue, true, displayMap)\n : null;\n const newFormatted =\n newValue !== null && newValue !== undefined\n ? formatFieldValue(fieldName, newValue, true, displayMap)\n : null;\n\n const actionMsg = generateActionMessage(fieldName, oldValue, newValue);\n\n collectedChanges.push({\n action: actionMsg,\n oldValue: oldFormatted || null,\n newValue: newFormatted || null,\n fieldName,\n });\n }\n }\n\n if (collectedChanges.length > 0) {\n const primaryChange = collectedChanges[0]!;\n const details =\n primaryChange.oldValue != null && primaryChange.newValue != null\n ? `${primaryChange.oldValue} → ${primaryChange.newValue}`\n : primaryChange.newValue ?? null;\n\n events.push({\n id: version.id,\n timestamp,\n author,\n message: primaryChange.action,\n action: collectedChanges.length === 1 ? primaryChange.action : 'updated',\n type: 'ticket',\n details: collectedChanges.length === 1 ? details : null,\n oldValue: collectedChanges.length === 1 ? primaryChange.oldValue : undefined,\n newValue: collectedChanges.length === 1 ? primaryChange.newValue : undefined,\n fieldName: collectedChanges.length === 1 ? primaryChange.fieldName : undefined,\n changes:\n collectedChanges.length > 1\n ? collectedChanges.map((c) => ({\n action: c.action,\n oldValue: c.oldValue,\n newValue: c.newValue,\n fieldName: c.fieldName,\n }))\n : undefined,\n });\n }\n }\n }\n\n events.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());\n return events;\n}\n","<template>\n <div\n role=\"alert\"\n :class=\"[\n 'py-3 px-4 w-full rounded-lg border border-base-300 border-l-4 bg-base-200/60',\n variantBorderClass,\n ]\"\n >\n <!-- Mobile-first: stack vertically on small screens, row on desktop -->\n <div\n class=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-3\"\n >\n <div class=\"flex items-start gap-3 min-w-0\">\n <component :is=\"iconComponent\" v-if=\"icon\" class=\"shrink-0 w-5 h-5 opacity-90 mt-0.5\" />\n <span class=\"flex-1 min-w-0\">\n <slot />\n </span>\n </div>\n <div\n v-if=\"hasActions\"\n class=\"grid grid-cols-2 gap-2 sm:flex sm:flex-row sm:flex-wrap sm:ml-auto sm:shrink-0 sm:[&>*]:w-auto\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots, h } from 'vue';\n\ntype AlertVariant = 'warning' | 'success' | 'error' | 'info' | 'neutral';\ntype IconType = 'lock' | 'clock' | 'info' | 'archive';\n\ninterface Props {\n variant: AlertVariant;\n icon?: IconType;\n}\n\nconst props = defineProps<Props>();\n\nconst slots = useSlots();\n\nconst variantBorderClass = computed(() => {\n const map: Record<AlertVariant, string> = {\n warning: 'border-l-warning',\n success: 'border-l-success',\n error: 'border-l-error',\n info: 'border-l-info',\n neutral: 'border-l-base-content/30',\n };\n return map[props.variant];\n});\n\nconst hasActions = computed(() => {\n const actionsSlot = slots.actions;\n if (!actionsSlot) return false;\n const vnodes = actionsSlot();\n return !!vnodes?.length;\n});\n\nconst iconComponent = computed(() => {\n if (!props.icon) return null;\n const icons = {\n lock: () =>\n h(\n 'svg',\n {\n xmlns: 'http://www.w3.org/2000/svg',\n fill: 'none',\n viewBox: '0 0 24 24',\n 'stroke-width': '1.5',\n stroke: 'currentColor',\n class: 'w-5 h-5',\n },\n [\n h('path', {\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n d: 'M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z',\n }),\n ],\n ),\n clock: () =>\n h(\n 'svg',\n {\n xmlns: 'http://www.w3.org/2000/svg',\n fill: 'none',\n viewBox: '0 0 24 24',\n 'stroke-width': '1.5',\n stroke: 'currentColor',\n class: 'w-5 h-5',\n },\n [\n h('path', {\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n d: 'M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z',\n }),\n ],\n ),\n info: () =>\n h(\n 'svg',\n {\n xmlns: 'http://www.w3.org/2000/svg',\n fill: 'none',\n viewBox: '0 0 24 24',\n 'stroke-width': '1.5',\n stroke: 'currentColor',\n class: 'w-5 h-5',\n },\n [\n h('path', {\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n d: 'M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z',\n }),\n ],\n ),\n archive: () =>\n h(\n 'svg',\n {\n xmlns: 'http://www.w3.org/2000/svg',\n fill: 'none',\n viewBox: '0 0 24 24',\n 'stroke-width': '1.5',\n stroke: 'currentColor',\n class: 'w-5 h-5',\n },\n [\n h('path', {\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n d: 'M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z',\n }),\n ],\n ),\n };\n return icons[props.icon] ?? null;\n});\n</script>\n","<template>\n <div class=\"flex flex-col\">\n <span class=\"text-xs font-semibold uppercase tracking-wide text-base-content/50 mb-0.5\">\n {{ label }}\n </span>\n <template v-if=\"hasContent\">\n <span\n v-if=\"copyable\"\n ref=\"valueRef\"\n role=\"button\"\n tabindex=\"0\"\n class=\"font-mono cursor-pointer select-all\"\n @click=\"handleCopy\"\n @keydown.enter=\"handleCopy\"\n @keydown.space.prevent=\"handleCopy\"\n >\n {{ copied ? 'Copied!' : undefined }}\n <template v-if=\"!copied\"><slot /></template>\n </span>\n <span v-else>\n <slot />\n </span>\n </template>\n <template v-else>\n <slot name=\"empty\">\n <span class=\"text-base-content/50 italic text-sm\">Not set</span>\n </slot>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { Comment } from 'vue';\nimport { ref, computed, useSlots } from 'vue';\n\ninterface Props {\n label: string;\n copyable?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n copyable: false,\n});\n\nconst slots = useSlots();\nconst valueRef = ref<HTMLSpanElement | null>(null);\nconst copied = ref(false);\nlet copyTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\nconst hasContent = computed(() => {\n const defaultSlot = slots.default;\n if (!defaultSlot) return false;\n const vnodes = defaultSlot();\n if (!vnodes || !Array.isArray(vnodes)) return false;\n return vnodes.some((v) => v.type !== Comment);\n});\n\nasync function handleCopy() {\n if (!props.copyable) return;\n const text = valueRef.value?.textContent?.trim();\n if (!text) return;\n try {\n await navigator.clipboard.writeText(text);\n copied.value = true;\n if (copyTimeoutId) clearTimeout(copyTimeoutId);\n copyTimeoutId = setTimeout(() => {\n copied.value = false;\n copyTimeoutId = null;\n }, 1500);\n } catch {\n // ignore clipboard errors\n }\n}\n</script>\n","import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { z } from 'zod';\n\n/** Schema for adding a comment/note on support ticket timeline. */\nconst TimelineNoteCreateSchema = z.object({\n body: z.string().min(1, 'Comment is required').trim(),\n is_internal: z.boolean().optional().default(false),\n});\n\nexport const timelineNoteCreateMetadata = withMetadata(\n TimelineNoteCreateSchema,\n 'timelineNoteCreateForm',\n {\n body: {\n label: 'Comment',\n placeholder: 'Add a comment...',\n inputType: 'textarea',\n },\n is_internal: {\n label: 'Internal Note',\n helpText: 'Internal notes are not visible to the customer',\n },\n },\n);\n\nexport type TimelineNoteCreateDto = z.infer<typeof TimelineNoteCreateSchema>;\n","<template>\n <div class=\"border-t border-base-200 pt-4 mt-4 w-full\">\n <template v-if=\"disabled\">\n <div class=\"bg-base-200/50 rounded-lg p-4 text-center\">\n <span class=\"text-base-content/50 text-sm inline-flex items-center gap-1.5\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"w-4 h-4\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z\"\n />\n </svg>\n This ticket has been locked. You can no longer add comments.\n </span>\n </div>\n </template>\n <ZiniaForm\n v-else\n @handle-submit=\"handleSubmit\"\n @success=\"handleSuccess\"\n @error=\"handleError\"\n title=\"\"\n subtitle=\"\"\n >\n <div ref=\"formWrapperRef\" class=\"grid grid-cols-1 gap-4 w-full\" @keydown=\"handleKeydown\">\n <p\n v-if=\"showTypeToggle\"\n class=\"col-span-full text-xs mb-1\"\n :class=\"form.values.is_internal ? 'text-warning' : 'text-info'\"\n >\n {{\n form.values.is_internal\n ? '🔒 Internal — not visible to customer'\n : 'Visible to customer'\n }}\n </p>\n <div class=\"col-span-full\">\n <zinia.BodyField class=\"textarea w-full\" />\n </div>\n <div class=\"col-span-full flex flex-wrap gap-2 justify-between items-center\">\n <div v-if=\"showTypeToggle\" class=\"join\">\n <button\n type=\"button\"\n :class=\"[\n 'btn btn-sm join-item',\n !form.values.is_internal ? 'btn-info btn-active' : '',\n ]\"\n :disabled=\"form.isSubmitting\"\n @click=\"form.setValue('is_internal', false)\"\n >\n Customer Note\n </button>\n <button\n type=\"button\"\n :class=\"[\n 'btn btn-sm join-item',\n form.values.is_internal ? 'btn-warning btn-active' : '',\n ]\"\n :disabled=\"form.isSubmitting\"\n @click=\"form.setValue('is_internal', true)\"\n >\n Internal Note\n </button>\n </div>\n <div v-else></div>\n <ZiniaSubmitButton submitText=\"Comment\" submittingText=\"Adding...\" />\n </div>\n </div>\n </ZiniaForm>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport { ref, watch } from 'vue';\nimport { timelineNoteCreateMetadata } from './timelineNoteFormMetadata';\n\ninterface Props {\n showTypeToggle: boolean;\n disabled: boolean;\n /** When provided, noteType is controlled (e.g. synced with URL query param) */\n noteType?: 'customer' | 'internal';\n /** Called when form submits with validated data. Must return a Promise. */\n onSubmit: (payload: { content: string; noteType: 'customer' | 'internal' }) => Promise<void>;\n}\n\nconst props = defineProps<Props>();\nconst formWrapperRef = ref<HTMLElement | null>(null);\n\nconst emit = defineEmits<{\n 'update:noteType': [value: 'customer' | 'internal'];\n}>();\n\nconst { form, zinia, ZiniaForm, ZiniaSubmitButton, refreshFormData } = useForm(\n timelineNoteCreateMetadata,\n {\n storeName: 'timeline-note-input',\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n fetchData: async () => ({\n body: '',\n is_internal: props.noteType === 'internal',\n }),\n },\n);\n\n// Sync form's is_internal when controlled noteType prop changes (e.g. from URL)\nwatch(\n () => props.noteType,\n (noteType) => {\n if (noteType !== undefined) {\n form.setValue('is_internal', noteType === 'internal');\n }\n },\n { immediate: true },\n);\n\n// Emit when user toggles note type (for URL sync in StaffTimeline)\nwatch(\n () => form.values.is_internal,\n (isInternal) => {\n if (props.showTypeToggle) {\n emit('update:noteType', isInternal ? 'internal' : 'customer');\n }\n },\n);\n\nfunction handleKeydown(e: KeyboardEvent) {\n if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {\n e.preventDefault();\n const form = formWrapperRef.value?.closest('form');\n form?.requestSubmit();\n }\n}\n\nasync function handleSubmit(formData: { body: string; is_internal: boolean }) {\n await props.onSubmit({\n content: (formData.body ?? '').trim(),\n noteType: props.showTypeToggle && formData.is_internal ? 'internal' : 'customer',\n });\n}\n\nfunction handleSuccess() {\n refreshFormData();\n (document.activeElement as HTMLElement)?.blur();\n}\n\nfunction handleError(_error: Error | unknown) {\n // Form displays errors via ZiniaFormErrorsSummary\n}\n\nfunction reset() {\n refreshFormData();\n}\n\ndefineExpose({ reset });\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,mBAAmB,IAAI,EAAE;EAU/B,MAAM,OAAO;EAEb,MAAM,sBAAsB,IAAI,MAAM;;UAtDzB,QAAA,YAAA,WAAA,EAAX,mBAmCM,OAnCN,cAmCM,CAlCJ,mBAiCM,OAjCN,cAiCM;mBAhCJ,mBAAuD,SAAA;KAAhD,MAAK;kEAAoB,oBAAmB,QAAA;qCAAnB,oBAAA,MAAmB,CAAA,CAAA;IACnD,mBAkBM,OAlBN,cAkBM,CAjBJ,mBAgBM,OAhBN,cAgBM,CAAA,OAAA,OAAA,OAAA,KAfJ,mBAaM,OAAA;KAZJ,OAAM;KACN,OAAM;KACN,MAAK;KACL,SAAQ;KACR,QAAO;QAEP,mBAKE,QAAA;KAJA,kBAAe;KACf,mBAAgB;KAChB,gBAAa;KACb,GAAE;eAGN,mBAAiD,QAAA,MAA3C,kBAAa,gBAAG,iBAAA,MAAgB,GAAG,KAAC,EAAA,CAAA,CAAA,CAAA,CAAA;IAG9C,mBAWM,OAXN,cAWM,CAVJ,mBASM,OATN,cASM,CARJ,YAOE,2BAAA;KANC,aAAW,QAAA;KACX,cAAY,QAAA,YAAQ,CAAK,QAAA;KACzB,cAAY,QAAA,YAAQ,CAAK,QAAA;KACzB,6BAAwB,OAAA,OAAA,OAAA,MAAA,WAAE,iBAAA,QAAmB;KAC7C,YAAQ,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,WAAA;KACd,WAAO,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,UAAA;;;;;;;;;;;;;;ACF1B,MAAM,cAAc,IAAI,IAAI;CAAC;CAAc;CAAc;CAAM;CAAa,CAAC;;AAG7E,MAAM,iBAAiB,IAAI,IAAI;CAC7B;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAS,SAAS,OAAe,YAAoB,IAAY;AAC/D,KAAI,MAAM,UAAU,UAAW,QAAO;AACtC,QAAO,MAAM,UAAU,GAAG,UAAU,GAAG;;AAGzC,SAAS,gBAAgB,OAAuB;AAC9C,QAAO,MACJ,MAAM,IAAI,CACV,KAAK,SAAS,KAAK,OAAO,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE,CAAC,aAAa,CAAC,CACzE,KAAK,IAAI;;AAGd,SAAS,iBACP,WACA,OACA,eAAwB,OACxB,YACQ;AACR,KAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,KAAI,OAAO,UAAU,YAAY,qBAAqB,KAAK,MAAM,CAC/D,QAAO,iBAAiB,MAAM,CAAC;AAEjC,KAAI,OAAO,UAAU,UAAW,QAAO,QAAQ,QAAQ;AAEvD,KAAI,OAAO,UAAU,YAAY,eAAe,IAAI,UAAU,IAAI,WAChE,QAAO,WAAW,IAAI,MAAM,IAAI;AAGlC,KAAI,cAAc,YAAY;AAC5B,MAAI,OAAO,UAAU,SACnB,QAAO,gBAAgB,8BAA8B,MAAM,CAAC;AAE9D,MAAI,OAAO,UAAU,SAAU,QAAO,gBAAgB,MAAM;;AAE9D,KAAI,OAAO,UAAU,UAAU;AAC7B,MACE,UAAU,SAAS,SAAS,IAC5B,UAAU,SAAS,OAAO,IAC1B,UAAU,SAAS,YAAY,CAE/B,QAAO,gBAAgB,MAAM;AAG/B,MAAI,iBAAiB,cAAc,WAAW,cAAc,eAC1D,QAAO,SAAS,MAAM;;AAG1B,QAAO,OAAO,MAAM;;AAGtB,SAAS,sBACP,WACA,UACA,UACQ;AACR,SAAQ,WAAR;EACE,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK,QACH,QAAO;EACT,KAAK,cACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,KAAK,WACH,QAAO;EACT,KAAK,kBACH,QAAO;EACT,KAAK,gBACH,QAAO;EACT,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK;AACH,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,OAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AACxD,UAAO;EACT,KAAK;AACH,OACE,aAAa,QACZ,aAAa,UAAa,aAAa,QAAQ,aAAa,OAE7D,QAAO;AAET,UAAO;EACT,KAAK;AACH,OACE,aAAa,QACZ,aAAa,UAAa,aAAa,QAAQ,aAAa,OAE7D,QAAO;AAET,OACE,aAAa,QACb,aAAa,WACZ,aAAa,QAAQ,aAAa,QAEnC,QAAO;AAET,UAAO;EACT,KAAK,kBACH,QAAO;EACT,KAAK,iBACH,QAAO;EACT,KAAK,mBACH,QAAO;EACT,KAAK,qBACH,QAAO;EACT,QACE,QAAO,WAAW,UAAU,QAAQ,MAAM,IAAI;;;AAIpD,SAAS,YAAY,YAAuE;AAC1F,KAAI,CAAC,WAAY,QAAO;AACxB,KAAI;AACF,SAAO,KAAK,MAAM,WAAW;SACvB;AACN,SAAO;;;AAIX,SAAgB,oBACd,UACA,YACe;CACf,MAAMA,SAAwB,EAAE;AAEhC,MAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,SAAS,QAAQ,iBAAiB;EACxC,MAAM,YAAY,QAAQ;AAE1B,MAAI,QAAQ,cAAc,UAAU;AAClC,UAAO,KAAK;IACV,IAAI,GAAG,QAAQ,GAAG;IAClB;IACA;IACA,SAAS;IACT,QAAQ;IACR,MAAM;IACP,CAAC;AACF;;AAGF,MAAI,QAAQ,cAAc,UAAU;GAClC,MAAM,YAAY,YAAY,QAAQ,WAAW;GACjD,MAAM,YAAY,YAAY,QAAQ,OAAO;AAE7C,OAAI,CAAC,aAAa,CAAC,UAAW;GAE9B,MAAMC,mBAKD,EAAE;AAEP,QAAK,MAAM,CAAC,WAAW,aAAa,OAAO,QAAQ,UAAU,EAAE;AAC7D,QAAI,YAAY,IAAI,UAAU,CAAE;IAEhC,MAAM,WAAW,UAAU;AAE3B,QAAI,aAAa,UAAU;KACzB,MAAM,eACJ,aAAa,QAAQ,aAAa,SAC9B,iBAAiB,WAAW,UAAU,MAAM,WAAW,GACvD;KACN,MAAM,eACJ,aAAa,QAAQ,aAAa,SAC9B,iBAAiB,WAAW,UAAU,MAAM,WAAW,GACvD;KAEN,MAAM,YAAY,sBAAsB,WAAW,UAAU,SAAS;AAEtE,sBAAiB,KAAK;MACpB,QAAQ;MACR,UAAU,gBAAgB;MAC1B,UAAU,gBAAgB;MAC1B;MACD,CAAC;;;AAIN,OAAI,iBAAiB,SAAS,GAAG;IAC/B,MAAM,gBAAgB,iBAAiB;IACvC,MAAM,UACJ,cAAc,YAAY,QAAQ,cAAc,YAAY,OACxD,GAAG,cAAc,SAAS,KAAK,cAAc,aAC7C,cAAc,YAAY;AAEhC,WAAO,KAAK;KACV,IAAI,QAAQ;KACZ;KACA;KACA,SAAS,cAAc;KACvB,QAAQ,iBAAiB,WAAW,IAAI,cAAc,SAAS;KAC/D,MAAM;KACN,SAAS,iBAAiB,WAAW,IAAI,UAAU;KACnD,UAAU,iBAAiB,WAAW,IAAI,cAAc,WAAW;KACnE,UAAU,iBAAiB,WAAW,IAAI,cAAc,WAAW;KACnE,WAAW,iBAAiB,WAAW,IAAI,cAAc,YAAY;KACrE,SACE,iBAAiB,SAAS,IACtB,iBAAiB,KAAK,OAAO;MAC3B,QAAQ,EAAE;MACV,UAAU,EAAE;MACZ,UAAU,EAAE;MACZ,WAAW,EAAE;MACd,EAAE,GACH;KACP,CAAC;;;;AAKR,QAAO,MAAM,GAAG,MAAM,IAAI,KAAK,EAAE,UAAU,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC;AACxF,QAAO;;;;;;;;;;;;;;;;;;;ECrOT,MAAM,QAAQ;EAEd,MAAM,QAAQ,UAAU;EAExB,MAAM,qBAAqB,eAAe;AAQxC,UAP0C;IACxC,SAAS;IACT,SAAS;IACT,OAAO;IACP,MAAM;IACN,SAAS;IACV,CACU,MAAM;IACjB;EAEF,MAAM,aAAa,eAAe;GAChC,MAAM,cAAc,MAAM;AAC1B,OAAI,CAAC,YAAa,QAAO;AAEzB,UAAO,CAAC,CADO,aAAa,EACX;IACjB;EAEF,MAAM,gBAAgB,eAAe;AACnC,OAAI,CAAC,MAAM,KAAM,QAAO;AA+ExB,UA9Ec;IACZ,YACE,EACE,OACA;KACE,OAAO;KACP,MAAM;KACN,SAAS;KACT,gBAAgB;KAChB,QAAQ;KACR,OAAO;KACR,EACD,CACE,EAAE,QAAQ;KACR,kBAAkB;KAClB,mBAAmB;KACnB,GAAG;KACJ,CAAC,CACH,CACF;IACH,aACE,EACE,OACA;KACE,OAAO;KACP,MAAM;KACN,SAAS;KACT,gBAAgB;KAChB,QAAQ;KACR,OAAO;KACR,EACD,CACE,EAAE,QAAQ;KACR,kBAAkB;KAClB,mBAAmB;KACnB,GAAG;KACJ,CAAC,CACH,CACF;IACH,YACE,EACE,OACA;KACE,OAAO;KACP,MAAM;KACN,SAAS;KACT,gBAAgB;KAChB,QAAQ;KACR,OAAO;KACR,EACD,CACE,EAAE,QAAQ;KACR,kBAAkB;KAClB,mBAAmB;KACnB,GAAG;KACJ,CAAC,CACH,CACF;IACH,eACE,EACE,OACA;KACE,OAAO;KACP,MAAM;KACN,SAAS;KACT,gBAAgB;KAChB,QAAQ;KACR,OAAO;KACR,EACD,CACE,EAAE,QAAQ;KACR,kBAAkB;KAClB,mBAAmB;KACnB,GAAG;KACJ,CAAC,CACH,CACF;IACJ,CACY,MAAM,SAAS;IAC5B;;uBA7IA,mBAwBM,OAAA;IAvBJ,MAAK;IACJ,OAAK,eAAA,CAAA,gFAAgG,mBAAA,MAAA,CAAA;OAKtG,mBAAA,oEAAwE,EACxE,mBAeM,OAfN,cAeM,CAZJ,mBAKM,OALN,cAKM,CAJiC,QAAA,QAAA,WAAA,EAArC,YAAwF,wBAAxE,cAAA,MAAa,EAAA;;IAAc,OAAM;2CACjD,mBAEO,QAFP,cAEO,CADL,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA,CAAA,CAAA,EAIJ,WAAA,SAAA,WAAA,EADR,mBAKM,OALN,cAKM,CADJ,WAAuB,KAAA,QAAA,UAAA,CAAA,CAAA,IAAA,mBAAA,QAAA,KAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;ECkB/B,MAAM,QAAQ;EAId,MAAM,QAAQ,UAAU;EACxB,MAAM,WAAW,IAA4B,KAAK;EAClD,MAAM,SAAS,IAAI,MAAM;EACzB,IAAIE,gBAAsD;EAE1D,MAAM,aAAa,eAAe;GAChC,MAAM,cAAc,MAAM;AAC1B,OAAI,CAAC,YAAa,QAAO;GACzB,MAAM,SAAS,aAAa;AAC5B,OAAI,CAAC,UAAU,CAAC,MAAM,QAAQ,OAAO,CAAE,QAAO;AAC9C,UAAO,OAAO,MAAM,MAAM,EAAE,SAAS,QAAQ;IAC7C;EAEF,eAAe,aAAa;AAC1B,OAAI,CAAC,MAAM,SAAU;GACrB,MAAM,OAAO,SAAS,OAAO,aAAa,MAAM;AAChD,OAAI,CAAC,KAAM;AACX,OAAI;AACF,UAAM,UAAU,UAAU,UAAU,KAAK;AACzC,WAAO,QAAQ;AACf,QAAI,cAAe,cAAa,cAAc;AAC9C,oBAAgB,iBAAiB;AAC/B,YAAO,QAAQ;AACf,qBAAgB;OACf,KAAK;WACF;;;uBApER,mBA2BM,OA3BN,cA2BM,CA1BJ,mBAEO,QAFP,cAEO,gBADF,QAAA,MAAK,EAAA,EAAA,EAEM,WAAA,SAAA,WAAA,EAAhB,mBAiBW,UAAA,EAAA,KAAA,GAAA,EAAA,CAfD,QAAA,YAAA,WAAA,EADR,mBAYO,QAAA;;aAVD;IAAJ,KAAI;IACJ,MAAK;IACL,UAAS;IACT,OAAM;IACL,SAAO;IACP,WAAO,CAAA,SAAQ,YAAU,CAAA,QAAA,CAAA,EAAA,SAAA,cACF,YAAU,CAAA,UAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA;uCAE/B,OAAA,QAAM,YAAe,OAAS,GAAG,KACpC,EAAA,EAAA,CAAiB,OAAA,QAAQ,WAAQ,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,GAAA,mBAAA,QAAA,KAAA,CAAA,EAAA,IAAA,aAAA,KAAA,WAAA,EAEnC,mBAEO,QAAA,cAAA,CADL,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA,EAAA,SAIV,WAEO,KAAA,QAAA,SAAA,EAAA,KAAA,GAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KADL,mBAAgE,QAAA,EAA1D,OAAM,uCAAqC,EAAC,WAAO,GAAA,EAAA,CAAA,CAAA,CAAA;;;;;;;;;ACrBjE,MAAM,2BAA2B,EAAE,OAAO;CACxC,MAAM,EAAE,QAAQ,CAAC,IAAI,GAAG,sBAAsB,CAAC,MAAM;CACrD,aAAa,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,MAAM;CACnD,CAAC;AAEF,MAAa,6BAA6B,aACxC,0BACA,0BACA;CACE,MAAM;EACJ,OAAO;EACP,aAAa;EACb,WAAW;EACZ;CACD,aAAa;EACX,OAAO;EACP,UAAU;EACX;CACF,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECsED,MAAM,QAAQ;EACd,MAAM,iBAAiB,IAAwB,KAAK;EAEpD,MAAM,OAAO;EAIb,MAAM,EAAE,MAAM,OAAO,WAAW,mBAAmB,oBAAoB,QACrE,4BACA;GACE,WAAW;GACX,uBAAuB;GACvB,aAAa;GACb,WAAW,aAAa;IACtB,MAAM;IACN,aAAa,MAAM,aAAa;IACjC;GACF,CACF;AAGD,cACQ,MAAM,WACX,aAAa;AACZ,OAAI,aAAa,OACf,MAAK,SAAS,eAAe,aAAa,WAAW;KAGzD,EAAE,WAAW,MAAM,CACpB;AAGD,cACQ,KAAK,OAAO,cACjB,eAAe;AACd,OAAI,MAAM,eACR,MAAK,mBAAmB,aAAa,aAAa,WAAW;IAGlE;EAED,SAAS,cAAc,GAAkB;AACvC,QAAK,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,SAAS;AACjD,MAAE,gBAAgB;AAElB,KADa,eAAe,OAAO,QAAQ,OAAO,GAC5C,eAAe;;;EAIzB,eAAe,aAAa,UAAkD;AAC5E,SAAM,MAAM,SAAS;IACnB,UAAU,SAAS,QAAQ,IAAI,MAAM;IACrC,UAAU,MAAM,kBAAkB,SAAS,cAAc,aAAa;IACvE,CAAC;;EAGJ,SAAS,gBAAgB;AACvB,oBAAiB;AAChB,YAAS,eAA+B,MAAM;;EAGjD,SAAS,YAAY,QAAyB;EAI9C,SAAS,QAAQ;AACf,oBAAiB;;AAGnB,WAAa,EAAE,OAAO,CAAC;;uBAjKrB,mBA2EM,OA3EN,YA2EM,CA1EY,QAAA,YAAA,WAAA,EACd,mBAkBM,OAlBN,YAkBM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAjBJ,mBAgBO,QAAA,EAhBD,OAAM,iEAA+D,EAAA,CACzE,mBAaM,OAAA;IAZJ,OAAM;IACN,MAAK;IACL,SAAQ;IACR,gBAAa;IACb,QAAO;IACP,OAAM;OAEN,mBAIE,QAAA;IAHA,kBAAe;IACf,mBAAgB;IAChB,GAAE;yBAEA,iEAER,CAAA,2BAGJ,YAoDY,MAAA,UAAA,EAAA;;IAlDT,gBAAe;IACf,WAAS;IACT,SAAO;IACR,OAAM;IACN,UAAS;;2BA6CH,CA3CN,mBA2CM,OAAA;cA3CG;KAAJ,KAAI;KAAiB,OAAM;KAAiC,WAAS;;KAEhE,QAAA,kBAAA,WAAA,EADR,mBAUI,KAAA;;MARF,OAAK,eAAA,CAAC,8BACE,MAAA,KAAI,CAAC,OAAO,cAAW,iBAAA,YAAA,CAAA;wBAG7B,MAAA,KAAI,CAAC,OAAO,cAAA,0CAAA,sBAAA;KAKhB,mBAEM,OAFN,YAEM,CADJ,YAA2C,MAAA,MAAA,CAAA,WAAA,EAA1B,OAAM,mBAAiB,CAAA,CAAA,CAAA;KAE1C,mBA2BM,OA3BN,YA2BM,CA1BO,QAAA,kBAAA,WAAA,EAAX,mBAuBM,OAvBN,YAuBM,CAtBJ,mBAUS,UAAA;MATP,MAAK;MACJ,OAAK,eAAA,CAAA,wBAAA,CAA6D,MAAA,KAAI,CAAC,OAAO,cAAW,wBAAA,GAAA,CAAA;MAIzF,UAAU,MAAA,KAAI,CAAC;MACf,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,KAAI,CAAC,SAAQ,eAAA,MAAA;QACtB,mBAED,IAAA,WAAA,EACA,mBAUS,UAAA;MATP,MAAK;MACJ,OAAK,eAAA,CAAA,wBAA4D,MAAA,KAAI,CAAC,OAAO,cAAW,2BAAA,GAAA,CAAA;MAIxF,UAAU,MAAA,KAAI,CAAC;MACf,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,KAAI,CAAC,SAAQ,eAAA,KAAA;QACtB,mBAED,IAAA,WAAA,CAAA,CAAA,KAAA,WAAA,EAEF,mBAAkB,OAAA,WAAA,GAClB,YAAqE,MAAA,kBAAA,EAAA;MAAlD,YAAW;MAAU,gBAAe"}
|
|
@@ -2,7 +2,7 @@ import "./useRpcAuth-Dp2sec-X.js";
|
|
|
2
2
|
import "./useQueryCache-DqcDMsxb.js";
|
|
3
3
|
import "./useMutation-B4_S4Xoa.js";
|
|
4
4
|
import "./useQuery-B7ndu5_P.js";
|
|
5
|
-
import {
|
|
5
|
+
import { lt as ViewTeam_default } from "./src-BUN-mdXa.js";
|
|
6
6
|
import "./AppLink-CHMMrSFI.js";
|
|
7
7
|
import "./TimelineSystemEvent-D58zN850.js";
|
|
8
8
|
import "./TeamMembersTab-4gmnP9sD.js";
|
|
@@ -24,4 +24,4 @@ import "./UserListPage-OGYOLwlw.js";
|
|
|
24
24
|
import "./CreateUserPage-B8qeBZij.js";
|
|
25
25
|
import "./EditUserPage-XqF25iwz.js";
|
|
26
26
|
|
|
27
|
-
export {
|
|
27
|
+
export { ViewTeam_default as default };
|
|
@@ -2,7 +2,7 @@ import "./useRpcAuth-Dp2sec-X.js";
|
|
|
2
2
|
import "./useQueryCache-DqcDMsxb.js";
|
|
3
3
|
import "./useMutation-B4_S4Xoa.js";
|
|
4
4
|
import "./useQuery-B7ndu5_P.js";
|
|
5
|
-
import { rt as ViewTeamMember_default } from "./src-
|
|
5
|
+
import { rt as ViewTeamMember_default } from "./src-BUN-mdXa.js";
|
|
6
6
|
import "./AppLink-CHMMrSFI.js";
|
|
7
7
|
import "./TimelineSystemEvent-D58zN850.js";
|
|
8
8
|
import "./TeamMembersTab-4gmnP9sD.js";
|
package/dist/index.d.ts
CHANGED
|
@@ -4403,7 +4403,7 @@ declare const customerSupportTicketRowSchemaWithMetadata: zod39.ZodObject<{
|
|
|
4403
4403
|
}>>>;
|
|
4404
4404
|
}, "strip", zod39.ZodTypeAny, {
|
|
4405
4405
|
id: string;
|
|
4406
|
-
status: "PENDING" | "
|
|
4406
|
+
status: "PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED";
|
|
4407
4407
|
type: "IMPROVEMENT" | "BUG" | "FEATURE_REQUEST" | "OPERATIONAL";
|
|
4408
4408
|
title: string;
|
|
4409
4409
|
description: string;
|
|
@@ -4435,7 +4435,7 @@ declare const customerSupportTicketRowSchemaWithMetadata: zod39.ZodObject<{
|
|
|
4435
4435
|
} | null | undefined;
|
|
4436
4436
|
}, {
|
|
4437
4437
|
id: string;
|
|
4438
|
-
status: "PENDING" | "
|
|
4438
|
+
status: "PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED";
|
|
4439
4439
|
type: "IMPROVEMENT" | "BUG" | "FEATURE_REQUEST" | "OPERATIONAL";
|
|
4440
4440
|
title: string;
|
|
4441
4441
|
description: string;
|
|
@@ -4510,23 +4510,23 @@ declare const adminSupportTicketFiltersSchemaWithMetadata: zod39.ZodObject<{
|
|
|
4510
4510
|
values: zod39.ZodOptional<zod39.ZodArray<zod39.ZodEnum<["PENDING", "FOLLOWUP", "IN_PROGRESS", "VERIFICATION", "COMPLETED", "CANCELLED"]>, "many">>;
|
|
4511
4511
|
}, "strip", zod39.ZodTypeAny, {
|
|
4512
4512
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
4513
|
-
values?: ("PENDING" | "
|
|
4514
|
-
value?: "PENDING" | "
|
|
4513
|
+
values?: ("PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED")[] | undefined;
|
|
4514
|
+
value?: "PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED" | undefined;
|
|
4515
4515
|
caseSensitive?: boolean | undefined;
|
|
4516
4516
|
}, {
|
|
4517
4517
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
4518
|
-
values?: ("PENDING" | "
|
|
4519
|
-
value?: "PENDING" | "
|
|
4518
|
+
values?: ("PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED")[] | undefined;
|
|
4519
|
+
value?: "PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED" | undefined;
|
|
4520
4520
|
caseSensitive?: boolean | undefined;
|
|
4521
4521
|
}>, {
|
|
4522
4522
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
4523
|
-
values?: ("PENDING" | "
|
|
4524
|
-
value?: "PENDING" | "
|
|
4523
|
+
values?: ("PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED")[] | undefined;
|
|
4524
|
+
value?: "PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED" | undefined;
|
|
4525
4525
|
caseSensitive?: boolean | undefined;
|
|
4526
4526
|
}, {
|
|
4527
4527
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
4528
|
-
values?: ("PENDING" | "
|
|
4529
|
-
value?: "PENDING" | "
|
|
4528
|
+
values?: ("PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED")[] | undefined;
|
|
4529
|
+
value?: "PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED" | undefined;
|
|
4530
4530
|
caseSensitive?: boolean | undefined;
|
|
4531
4531
|
}>>;
|
|
4532
4532
|
approval_status: zod39.ZodOptional<zod39.ZodEffects<zod39.ZodObject<{
|
|
@@ -4601,23 +4601,23 @@ declare const adminSupportTicketFiltersSchemaWithMetadata: zod39.ZodObject<{
|
|
|
4601
4601
|
values: zod39.ZodOptional<zod39.ZodArray<zod39.ZodEnum<["PENDING", "BACKLOG", "PLANNING", "DEVELOPMENT", "CODE_REVIEW", "TESTING", "STAGING", "PO_APPROVAL", "VERIFICATION", "DEPLOYED", "CANCELLED"]>, "many">>;
|
|
4602
4602
|
}, "strip", zod39.ZodTypeAny, {
|
|
4603
4603
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
4604
|
-
values?: ("PENDING" | "
|
|
4605
|
-
value?: "PENDING" | "
|
|
4604
|
+
values?: ("PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED")[] | undefined;
|
|
4605
|
+
value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED" | undefined;
|
|
4606
4606
|
caseSensitive?: boolean | undefined;
|
|
4607
4607
|
}, {
|
|
4608
4608
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
4609
|
-
values?: ("PENDING" | "
|
|
4610
|
-
value?: "PENDING" | "
|
|
4609
|
+
values?: ("PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED")[] | undefined;
|
|
4610
|
+
value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED" | undefined;
|
|
4611
4611
|
caseSensitive?: boolean | undefined;
|
|
4612
4612
|
}>, {
|
|
4613
4613
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
4614
|
-
values?: ("PENDING" | "
|
|
4615
|
-
value?: "PENDING" | "
|
|
4614
|
+
values?: ("PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED")[] | undefined;
|
|
4615
|
+
value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED" | undefined;
|
|
4616
4616
|
caseSensitive?: boolean | undefined;
|
|
4617
4617
|
}, {
|
|
4618
4618
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
4619
|
-
values?: ("PENDING" | "
|
|
4620
|
-
value?: "PENDING" | "
|
|
4619
|
+
values?: ("PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED")[] | undefined;
|
|
4620
|
+
value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED" | undefined;
|
|
4621
4621
|
caseSensitive?: boolean | undefined;
|
|
4622
4622
|
}>>;
|
|
4623
4623
|
created_by: zod39.ZodOptional<zod39.ZodEffects<zod39.ZodObject<{} & {
|
|
@@ -5263,8 +5263,8 @@ declare const adminSupportTicketFiltersSchemaWithMetadata: zod39.ZodObject<{
|
|
|
5263
5263
|
} | undefined;
|
|
5264
5264
|
status?: {
|
|
5265
5265
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
5266
|
-
values?: ("PENDING" | "
|
|
5267
|
-
value?: "PENDING" | "
|
|
5266
|
+
values?: ("PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED")[] | undefined;
|
|
5267
|
+
value?: "PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED" | undefined;
|
|
5268
5268
|
caseSensitive?: boolean | undefined;
|
|
5269
5269
|
} | undefined;
|
|
5270
5270
|
type?: {
|
|
@@ -5390,8 +5390,8 @@ declare const adminSupportTicketFiltersSchemaWithMetadata: zod39.ZodObject<{
|
|
|
5390
5390
|
} | undefined;
|
|
5391
5391
|
dev_lifecycle?: {
|
|
5392
5392
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
5393
|
-
values?: ("PENDING" | "
|
|
5394
|
-
value?: "PENDING" | "
|
|
5393
|
+
values?: ("PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED")[] | undefined;
|
|
5394
|
+
value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED" | undefined;
|
|
5395
5395
|
caseSensitive?: boolean | undefined;
|
|
5396
5396
|
} | undefined;
|
|
5397
5397
|
delivered_value?: {
|
|
@@ -5419,8 +5419,8 @@ declare const adminSupportTicketFiltersSchemaWithMetadata: zod39.ZodObject<{
|
|
|
5419
5419
|
} | undefined;
|
|
5420
5420
|
status?: {
|
|
5421
5421
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
5422
|
-
values?: ("PENDING" | "
|
|
5423
|
-
value?: "PENDING" | "
|
|
5422
|
+
values?: ("PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED")[] | undefined;
|
|
5423
|
+
value?: "PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED" | undefined;
|
|
5424
5424
|
caseSensitive?: boolean | undefined;
|
|
5425
5425
|
} | undefined;
|
|
5426
5426
|
type?: {
|
|
@@ -5546,8 +5546,8 @@ declare const adminSupportTicketFiltersSchemaWithMetadata: zod39.ZodObject<{
|
|
|
5546
5546
|
} | undefined;
|
|
5547
5547
|
dev_lifecycle?: {
|
|
5548
5548
|
operator: "eq" | "ne" | "in" | "notIn";
|
|
5549
|
-
values?: ("PENDING" | "
|
|
5550
|
-
value?: "PENDING" | "
|
|
5549
|
+
values?: ("PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED")[] | undefined;
|
|
5550
|
+
value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED" | undefined;
|
|
5551
5551
|
caseSensitive?: boolean | undefined;
|
|
5552
5552
|
} | undefined;
|
|
5553
5553
|
delivered_value?: {
|
|
@@ -5583,7 +5583,7 @@ declare const adminSupportTicketCreateSchemaWithMetadata: zod39.ZodObject<{
|
|
|
5583
5583
|
start_at?: string | null | undefined;
|
|
5584
5584
|
target_at?: string | null | undefined;
|
|
5585
5585
|
completed_at?: string | null | undefined;
|
|
5586
|
-
dev_lifecycle?: "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" |
|
|
5586
|
+
dev_lifecycle?: "VERIFICATION" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | undefined;
|
|
5587
5587
|
delivered_value?: string | null | undefined;
|
|
5588
5588
|
assigned_to?: string | null | undefined;
|
|
5589
5589
|
}, {
|
|
@@ -5596,7 +5596,7 @@ declare const adminSupportTicketCreateSchemaWithMetadata: zod39.ZodObject<{
|
|
|
5596
5596
|
start_at?: string | null | undefined;
|
|
5597
5597
|
target_at?: string | null | undefined;
|
|
5598
5598
|
completed_at?: string | null | undefined;
|
|
5599
|
-
dev_lifecycle?: "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" |
|
|
5599
|
+
dev_lifecycle?: "VERIFICATION" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | undefined;
|
|
5600
5600
|
delivered_value?: string | null | undefined;
|
|
5601
5601
|
assigned_to?: string | null | undefined;
|
|
5602
5602
|
}>;
|
|
@@ -5624,7 +5624,7 @@ declare const adminSupportTicketUpdateSchemaWithMetadata: zod39.ZodObject<{
|
|
|
5624
5624
|
start_at?: string | null | undefined;
|
|
5625
5625
|
target_at?: string | null | undefined;
|
|
5626
5626
|
completed_at?: string | null | undefined;
|
|
5627
|
-
dev_lifecycle?: "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" |
|
|
5627
|
+
dev_lifecycle?: "VERIFICATION" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | undefined;
|
|
5628
5628
|
delivered_value?: string | null | undefined;
|
|
5629
5629
|
assigned_to?: string | null | undefined;
|
|
5630
5630
|
}, {
|
|
@@ -5637,7 +5637,7 @@ declare const adminSupportTicketUpdateSchemaWithMetadata: zod39.ZodObject<{
|
|
|
5637
5637
|
start_at?: string | null | undefined;
|
|
5638
5638
|
target_at?: string | null | undefined;
|
|
5639
5639
|
completed_at?: string | null | undefined;
|
|
5640
|
-
dev_lifecycle?: "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" |
|
|
5640
|
+
dev_lifecycle?: "VERIFICATION" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | undefined;
|
|
5641
5641
|
delivered_value?: string | null | undefined;
|
|
5642
5642
|
assigned_to?: string | null | undefined;
|
|
5643
5643
|
}>;
|
|
@@ -5678,7 +5678,7 @@ declare const adminSupportTicketRowSchemaWithMetadata: zod39.ZodObject<{
|
|
|
5678
5678
|
archived_by: zod39.ZodNullable<zod39.ZodOptional<zod39.ZodString>>;
|
|
5679
5679
|
}, "strip", zod39.ZodTypeAny, {
|
|
5680
5680
|
id: string;
|
|
5681
|
-
status: "PENDING" | "
|
|
5681
|
+
status: "PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED";
|
|
5682
5682
|
type: "IMPROVEMENT" | "BUG" | "FEATURE_REQUEST" | "OPERATIONAL";
|
|
5683
5683
|
title: string;
|
|
5684
5684
|
description: string;
|
|
@@ -5701,13 +5701,13 @@ declare const adminSupportTicketRowSchemaWithMetadata: zod39.ZodObject<{
|
|
|
5701
5701
|
target_at?: string | null | undefined;
|
|
5702
5702
|
completed_at?: string | null | undefined;
|
|
5703
5703
|
locked_approval_at?: string | null | undefined;
|
|
5704
|
-
dev_lifecycle?: "PENDING" | "
|
|
5704
|
+
dev_lifecycle?: "PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED" | null | undefined;
|
|
5705
5705
|
delivered_value?: string | null | undefined;
|
|
5706
5706
|
assigned_to?: string | null | undefined;
|
|
5707
5707
|
assigned_to_display_name?: string | null | undefined;
|
|
5708
5708
|
}, {
|
|
5709
5709
|
id: string;
|
|
5710
|
-
status: "PENDING" | "
|
|
5710
|
+
status: "PENDING" | "FOLLOWUP" | "IN_PROGRESS" | "VERIFICATION" | "COMPLETED" | "CANCELLED";
|
|
5711
5711
|
type: "IMPROVEMENT" | "BUG" | "FEATURE_REQUEST" | "OPERATIONAL";
|
|
5712
5712
|
title: string;
|
|
5713
5713
|
description: string;
|
|
@@ -5730,7 +5730,7 @@ declare const adminSupportTicketRowSchemaWithMetadata: zod39.ZodObject<{
|
|
|
5730
5730
|
target_at?: string | null | undefined;
|
|
5731
5731
|
completed_at?: string | null | undefined;
|
|
5732
5732
|
locked_approval_at?: string | null | undefined;
|
|
5733
|
-
dev_lifecycle?: "PENDING" | "
|
|
5733
|
+
dev_lifecycle?: "PENDING" | "VERIFICATION" | "CANCELLED" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "DEPLOYED" | null | undefined;
|
|
5734
5734
|
delivered_value?: string | null | undefined;
|
|
5735
5735
|
assigned_to?: string | null | undefined;
|
|
5736
5736
|
assigned_to_display_name?: string | null | undefined;
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { a as EnhancedRefreshTokenHandler, c as setRefreshTokenHandler, d as Log
|
|
|
2
2
|
import "./useQueryCache-DqcDMsxb.js";
|
|
3
3
|
import { t as useMutation } from "./useMutation-B4_S4Xoa.js";
|
|
4
4
|
import { t as useQuery } from "./useQuery-B7ndu5_P.js";
|
|
5
|
-
import { $ as savedFilterRoutes, $t as Sidebar_default, A as adminSupportTicketUpdateSchemaWithMetadata, At as staffOnly, B as customerSupportTicketRowSchemaWithMetadata, Bt as SummarySection_default, C as SupportTicketAttachments_default, Ct as userRoutes, D as adminSupportTicketRowSchemaWithMetadata, Dt as createSuperAdminOnlyGuard, E as StaffSupportTicketList_default, Et as createStaffOnlyGuard, F as CancelInternalTaskWorkflow_default, Ft as buildQueryWithFilters, G as SupportTicketTimeline_default, Gt as KeyValueEditor_default, H as CustomerCreateSupportTicketForm_default, Ht as RecordVersionList_default, I as ApproveRejectActions_default, It as deserializeFiltersFromQueryParams, J as customerSupportPaths, Jt as FieldDisplay_default, K as staffSupportPaths, Kt as FileManager_default, L as CustomerCreditBalance_default, Lt as extractFiltersFromQuery, M as ConvertToInternalWorkflow_default, Mt as userIsSuperAdmin, N as ConvertToCustomerWorkflow_default, Nt as userAlreadyLoggedIn, O as StaffCreateSupportTicketForm_default, Ot as createUserAuthorizedGuard, P as CompleteSupportTicketForm_default, Pt as timezones, Q as SaveFilterModal_default, Qt as Admin_default, R as CustomerSupportTicketSuccess_default, Rt as serializeFiltersToQueryParams, S as adminSupportTicketFiltersSchemaWithMetadata, St as teamUpdateSchemaWithMetadata, T as StaffSupportTicketSuccess_default, Tt as createLeadOrStaffOnlyGuard, U as customerSupportTicketCreateSchemaWithMetadata, Ut as RecordChangesSummary_default, V as SupportTicketStatusBadge_default, Vt as RecordVersionViewer_default, W as customerSupportTicketUpdateSchemaWithMetadata, Wt as LoadingErrorStates_default, X as SavedFilterPresets_default, Xt as Default_default, Y as customerSupportTicketRoutes, Yt as InApp_default, Z as ManagePresetsModal_default, Zt as Auth_default, _ as resetPasswordSchemaWithMetadata, _t as teamPaths, a as addCreditsSchemaWithMetadata, an as RightSidebar_default, at as TeamMemberList_default, b as useSupportTicketStatus, bt as teamMemberRoutes, c as CreditTransactionHistory_default, cn as LoginButton_default, ct as CreateTeamMemberForm_default, d as CreditBalanceOverview_default, dn as AppHeader_default, dt as TeamList_default, en as PINNED_PRESETS_KEY, et as useSavedFilters, f as creditPaths, fn as AppTabNavigation_default, ft as teamRowSchemaWithMetadata, g as ResetPassword_default, gt as CreateTeamForm_default, h as SocialLoginButtons_default, ht as EditTeamForm_default, i as AddCredits_default, in as useBuildTag, it as TeamMemberParent_default, j as ReactivateInternalTaskWorkflow_default, jt as userAuthenticated, k as adminSupportTicketCreateSchemaWithMetadata, kt as leadOrStaffOnly, l as CreditTransactionTypeBadge_default, ln as InputModal_default, lt as ViewTeam_default, m as adminRoutes, mt as TeamAttachmentsTab_default, n as SetMonthlyAllocation_default, nn as usePinnedPresets, nt as getLastUsedPresetRedirect, o as setMonthlyAllocationSchemaWithMetadata, on as NotFound_default, ot as teamMemberRowSchemaWithMetadata, p as creditRoutes, pn as DragoncoreVue, pt as teamFiltersSchemaWithMetadata, q as staffSupportTicketRoutes, qt as FieldGroup_default, r as ResetMonthlyBalance_default, rn as MS, rt as ViewTeamMember_default, s as CreditBalanceDashboard_default, sn as Navbar_default, st as teamMemberFiltersSchemaWithMetadata, t as CreditManagement_default, tn as useInjectedPinnedPresets, tt as createLastUsedPresetGuard, u as creditTransactionRowSchemaWithMetadata, un as BaseModal_default, ut as TeamParent_default, v as authPaths, vt as teamRoutes, w as CreditBalanceWidget_default, wt as createAuthenticatedGuard, x as useSupportTicketPermissions, xt as teamCreateSchemaWithMetadata, y as authRoutes, yt as teamMemberPaths, z as CustomerSupportTicketList_default, zt as useUserLookup } from "./src-
|
|
5
|
+
import { $ as savedFilterRoutes, $t as Sidebar_default, A as adminSupportTicketUpdateSchemaWithMetadata, At as staffOnly, B as customerSupportTicketRowSchemaWithMetadata, Bt as SummarySection_default, C as SupportTicketAttachments_default, Ct as userRoutes, D as adminSupportTicketRowSchemaWithMetadata, Dt as createSuperAdminOnlyGuard, E as StaffSupportTicketList_default, Et as createStaffOnlyGuard, F as CancelInternalTaskWorkflow_default, Ft as buildQueryWithFilters, G as SupportTicketTimeline_default, Gt as KeyValueEditor_default, H as CustomerCreateSupportTicketForm_default, Ht as RecordVersionList_default, I as ApproveRejectActions_default, It as deserializeFiltersFromQueryParams, J as customerSupportPaths, Jt as FieldDisplay_default, K as staffSupportPaths, Kt as FileManager_default, L as CustomerCreditBalance_default, Lt as extractFiltersFromQuery, M as ConvertToInternalWorkflow_default, Mt as userIsSuperAdmin, N as ConvertToCustomerWorkflow_default, Nt as userAlreadyLoggedIn, O as StaffCreateSupportTicketForm_default, Ot as createUserAuthorizedGuard, P as CompleteSupportTicketForm_default, Pt as timezones, Q as SaveFilterModal_default, Qt as Admin_default, R as CustomerSupportTicketSuccess_default, Rt as serializeFiltersToQueryParams, S as adminSupportTicketFiltersSchemaWithMetadata, St as teamUpdateSchemaWithMetadata, T as StaffSupportTicketSuccess_default, Tt as createLeadOrStaffOnlyGuard, U as customerSupportTicketCreateSchemaWithMetadata, Ut as RecordChangesSummary_default, V as SupportTicketStatusBadge_default, Vt as RecordVersionViewer_default, W as customerSupportTicketUpdateSchemaWithMetadata, Wt as LoadingErrorStates_default, X as SavedFilterPresets_default, Xt as Default_default, Y as customerSupportTicketRoutes, Yt as InApp_default, Z as ManagePresetsModal_default, Zt as Auth_default, _ as resetPasswordSchemaWithMetadata, _t as teamPaths, a as addCreditsSchemaWithMetadata, an as RightSidebar_default, at as TeamMemberList_default, b as useSupportTicketStatus, bt as teamMemberRoutes, c as CreditTransactionHistory_default, cn as LoginButton_default, ct as CreateTeamMemberForm_default, d as CreditBalanceOverview_default, dn as AppHeader_default, dt as TeamList_default, en as PINNED_PRESETS_KEY, et as useSavedFilters, f as creditPaths, fn as AppTabNavigation_default, ft as teamRowSchemaWithMetadata, g as ResetPassword_default, gt as CreateTeamForm_default, h as SocialLoginButtons_default, ht as EditTeamForm_default, i as AddCredits_default, in as useBuildTag, it as TeamMemberParent_default, j as ReactivateInternalTaskWorkflow_default, jt as userAuthenticated, k as adminSupportTicketCreateSchemaWithMetadata, kt as leadOrStaffOnly, l as CreditTransactionTypeBadge_default, ln as InputModal_default, lt as ViewTeam_default, m as adminRoutes, mt as TeamAttachmentsTab_default, n as SetMonthlyAllocation_default, nn as usePinnedPresets, nt as getLastUsedPresetRedirect, o as setMonthlyAllocationSchemaWithMetadata, on as NotFound_default, ot as teamMemberRowSchemaWithMetadata, p as creditRoutes, pn as DragoncoreVue, pt as teamFiltersSchemaWithMetadata, q as staffSupportTicketRoutes, qt as FieldGroup_default, r as ResetMonthlyBalance_default, rn as MS, rt as ViewTeamMember_default, s as CreditBalanceDashboard_default, sn as Navbar_default, st as teamMemberFiltersSchemaWithMetadata, t as CreditManagement_default, tn as useInjectedPinnedPresets, tt as createLastUsedPresetGuard, u as creditTransactionRowSchemaWithMetadata, un as BaseModal_default, ut as TeamParent_default, v as authPaths, vt as teamRoutes, w as CreditBalanceWidget_default, wt as createAuthenticatedGuard, x as useSupportTicketPermissions, xt as teamCreateSchemaWithMetadata, y as authRoutes, yt as teamMemberPaths, z as CustomerSupportTicketList_default, zt as useUserLookup } from "./src-BUN-mdXa.js";
|
|
6
6
|
import { t as AppLink_default } from "./AppLink-CHMMrSFI.js";
|
|
7
7
|
import { a as SupportTicketTypeBadge_default, c as formatCustomerCreditValue, d as ConfirmDialog_default, i as SupportTicketApprovalBadge_default, l as formatStaffCreditValue, n as TimelineItem_default, o as SupportTicketPriorityBadge_default, r as formatTicketDate, s as InlineAttachments_default, t as TimelineSystemEvent_default, u as ImageModal_default } from "./TimelineSystemEvent-D58zN850.js";
|
|
8
8
|
import { t as TeamMembersTab_default } from "./TeamMembersTab-4gmnP9sD.js";
|