@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.
Files changed (35) hide show
  1. package/dist/{CreateTeamForm-Dqh6otGC.js → CreateTeamForm-Cm8DOOXF.js} +1 -1
  2. package/dist/{CreateTeamMemberForm-CcNZz5lm.js → CreateTeamMemberForm-CcdQys0C.js} +1 -1
  3. package/dist/{CreditBalanceDashboard-4TBlnrdL.js → CreditBalanceDashboard-RLAnIiVN.js} +1 -1
  4. package/dist/{CreditManagement-Dxx54Hgt.js → CreditManagement-DGLhDOO5.js} +1 -1
  5. package/dist/{CustomerCreateSupportTicketForm-C-rf61Zr.js → CustomerCreateSupportTicketForm-Dv0ZMYrw.js} +1 -1
  6. package/dist/{CustomerSupportTicketDetailPage-DZQCplSM.js → CustomerSupportTicketDetailPage-ryM1_h1-.js} +2 -2
  7. package/dist/{CustomerSupportTicketDetailPage-DZQCplSM.js.map → CustomerSupportTicketDetailPage-ryM1_h1-.js.map} +1 -1
  8. package/dist/CustomerSupportTicketList-Cfe8gqiX.js +27 -0
  9. package/dist/{CustomerSupportTicketSuccess-DH4nAjH6.js → CustomerSupportTicketSuccess-DnnRkxsI.js} +1 -1
  10. package/dist/{EditTeamForm-D5KvJw43.js → EditTeamForm-DzEAqBhc.js} +1 -1
  11. package/dist/{ResetPassword-DRSaVSck.js → ResetPassword-COmnbNlg.js} +1 -1
  12. package/dist/{SavedFiltersPage-DyItk8Bp.js → SavedFiltersPage-rG33pF5X.js} +2 -2
  13. package/dist/{SavedFiltersPage-DyItk8Bp.js.map → SavedFiltersPage-rG33pF5X.js.map} +1 -1
  14. package/dist/{StaffCreateSupportTicketForm-C0eHfAfg.js → StaffCreateSupportTicketForm-CIDdUNcs.js} +1 -1
  15. package/dist/{StaffSupportTicketDetailPage-DY07Ez0R.js → StaffSupportTicketDetailPage-_ZOQgWv0.js} +2 -2
  16. package/dist/{StaffSupportTicketDetailPage-DY07Ez0R.js.map → StaffSupportTicketDetailPage-_ZOQgWv0.js.map} +1 -1
  17. package/dist/StaffSupportTicketList-DPIu3W50.js +27 -0
  18. package/dist/StaffSupportTicketSuccess-8lYa8_Sm.js +27 -0
  19. package/dist/{TeamAttachmentsTab-DIGshfO9.js → TeamAttachmentsTab-VUrIDPW6.js} +1 -1
  20. package/dist/{ViewTeam-BB7x8H0t.js → TeamList-BOXFY4cO.js} +2 -2
  21. package/dist/{TeamMemberList-DrjbJGw1.js → TeamMemberList-BwqpVaNc.js} +1 -1
  22. package/dist/{TeamMemberParent-9R1FYywk.js → TeamMemberParent-DIxwJ6EP.js} +1 -1
  23. package/dist/{TeamParent-DKzg6jC5.js → TeamParent-pEhBNWqh.js} +1 -1
  24. package/dist/{TimelineNoteInput-BVqF4MtZ.js → TimelineNoteInput-CdfuzIeI.js} +2 -2
  25. package/dist/{TimelineNoteInput-BVqF4MtZ.js.map → TimelineNoteInput-CdfuzIeI.js.map} +1 -1
  26. package/dist/{TeamList-BPUsUsmN.js → ViewTeam-Cexcjy9c.js} +2 -2
  27. package/dist/{ViewTeamMember-CRv1hkxG.js → ViewTeamMember-DKBKSsAc.js} +1 -1
  28. package/dist/index.d.ts +34 -34
  29. package/dist/index.js +1 -1
  30. package/dist/{src-TZ7YfTtl.js → src-BUN-mdXa.js} +23 -23
  31. package/dist/{src-TZ7YfTtl.js.map → src-BUN-mdXa.js.map} +1 -1
  32. package/package.json +3 -3
  33. package/dist/CustomerSupportTicketList-BxrZ5bUX.js +0 -27
  34. package/dist/StaffSupportTicketList-DSL7Fdg5.js +0 -27
  35. 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-TZ7YfTtl.js";
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 { lt as ViewTeam_default } from "./src-TZ7YfTtl.js";
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 { ViewTeam_default as default };
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-TZ7YfTtl.js";
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-TZ7YfTtl.js";
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-TZ7YfTtl.js";
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, ZiniaFormErrorsSummary, refreshFormData } = useForm(timelineNoteCreateMetadata, {
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-BVqF4MtZ.js.map
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":"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"}
@@ -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 { dt as TeamList_default } from "./src-TZ7YfTtl.js";
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 { TeamList_default as default };
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-TZ7YfTtl.js";
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" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED";
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" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED";
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" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED")[] | undefined;
4514
- value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED" | undefined;
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" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED")[] | undefined;
4519
- value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED" | undefined;
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" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED")[] | undefined;
4524
- value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED" | undefined;
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" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED")[] | undefined;
4529
- value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED" | undefined;
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" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED")[] | undefined;
4605
- value?: "PENDING" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED" | undefined;
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" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED")[] | undefined;
4610
- value?: "PENDING" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED" | undefined;
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" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED")[] | undefined;
4615
- value?: "PENDING" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED" | undefined;
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" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED")[] | undefined;
4620
- value?: "PENDING" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED" | undefined;
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" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED")[] | undefined;
5267
- value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED" | undefined;
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" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED")[] | undefined;
5394
- value?: "PENDING" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED" | undefined;
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" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED")[] | undefined;
5423
- value?: "PENDING" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED" | undefined;
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" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED")[] | undefined;
5550
- value?: "PENDING" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED" | undefined;
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" | "VERIFICATION" | undefined;
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" | "VERIFICATION" | undefined;
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" | "VERIFICATION" | undefined;
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" | "VERIFICATION" | undefined;
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" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED";
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" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED" | null | undefined;
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" | "VERIFICATION" | "CANCELLED" | "FOLLOWUP" | "IN_PROGRESS" | "COMPLETED";
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" | "BACKLOG" | "PLANNING" | "DEVELOPMENT" | "CODE_REVIEW" | "TESTING" | "STAGING" | "PO_APPROVAL" | "VERIFICATION" | "DEPLOYED" | "CANCELLED" | null | undefined;
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-TZ7YfTtl.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-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";