@dragonmastery/dragoncore-vue 0.0.32 → 0.0.34

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 (62) hide show
  1. package/dist/{CreateTeamForm-BQewI0Gn.js → CreateTeamForm-ClisfzsU.js} +2 -2
  2. package/dist/{CreateTeamForm-BQewI0Gn.js.map → CreateTeamForm-ClisfzsU.js.map} +1 -1
  3. package/dist/{CreateTeamForm-BK8PJeXz.js → CreateTeamForm-DWAeq_Xd.js} +2 -2
  4. package/dist/{CreditBalanceDashboard-CRHrhlSZ.js → CreditBalanceDashboard-CJr1yOjW.js} +2 -2
  5. package/dist/{CreditBalanceDashboard-CRHrhlSZ.js.map → CreditBalanceDashboard-CJr1yOjW.js.map} +1 -1
  6. package/dist/{CreditBalanceDashboard-C2QnVfjU.js → CreditBalanceDashboard-D370HlpF.js} +4 -4
  7. package/dist/{CreditManagement-CAaf_rVj.js → CreditManagement-B4aHJfOo.js} +4 -4
  8. package/dist/{CreditManagement-7xiygPYj.js → CreditManagement-BbDEviZx.js} +2 -2
  9. package/dist/{CreditManagement-7xiygPYj.js.map → CreditManagement-BbDEviZx.js.map} +1 -1
  10. package/dist/{CreditTransactionHistory-CP7ufh7Z.js → CreditTransactionHistory-mz-QIKUG.js} +2 -2
  11. package/dist/{CreditTransactionHistory-CP7ufh7Z.js.map → CreditTransactionHistory-mz-QIKUG.js.map} +1 -1
  12. package/dist/{CustomerCreateSupportTicketForm-Cd3ijzWy.js → CustomerCreateSupportTicketForm-Cul4aVjB.js} +3 -3
  13. package/dist/{CustomerCreateSupportTicketForm-Cd3ijzWy.js.map → CustomerCreateSupportTicketForm-Cul4aVjB.js.map} +1 -1
  14. package/dist/{CustomerCreateSupportTicketForm-C3DSzhJR.js → CustomerCreateSupportTicketForm-DCPjvzyF.js} +4 -4
  15. package/dist/{CustomerSupportTicketDetailPage-DwpkxpYV.js → CustomerSupportTicketDetailPage-DflGaKvk.js} +3 -3
  16. package/dist/{CustomerSupportTicketDetailPage-DwpkxpYV.js.map → CustomerSupportTicketDetailPage-DflGaKvk.js.map} +1 -1
  17. package/dist/{CustomerSupportTicketList-BrTX8SUV.js → CustomerSupportTicketList-BPWQ8WjH.js} +18 -18
  18. package/dist/{CustomerSupportTicketSuccess-k3DX9NhV.js → CustomerSupportTicketSuccess-B4WR8Zfn.js} +2 -2
  19. package/dist/{CustomerSupportTicketSuccess-k3DX9NhV.js.map → CustomerSupportTicketSuccess-B4WR8Zfn.js.map} +1 -1
  20. package/dist/{CustomerSupportTicketSuccess-BLSMAjQN.js → CustomerSupportTicketSuccess-Bsp1d0oF.js} +3 -3
  21. package/dist/{EditTeamForm-CETmPEZ7.js → EditTeamForm-B4p-C-8i.js} +2 -2
  22. package/dist/{EditTeamForm-CETmPEZ7.js.map → EditTeamForm-B4p-C-8i.js.map} +1 -1
  23. package/dist/{EditTeamForm-DiZXp6vh.js → EditTeamForm-ucwkw2eL.js} +2 -2
  24. package/dist/{InlineAttachments-Ywf9r3jd.js → InlineAttachments-DvqCOd6U.js} +19 -9
  25. package/dist/InlineAttachments-DvqCOd6U.js.map +1 -0
  26. package/dist/{SavedFiltersPage-CTLpYU2c.js → SavedFiltersPage-Y1T18UAH.js} +19 -19
  27. package/dist/{SavedFiltersPage-CTLpYU2c.js.map → SavedFiltersPage-Y1T18UAH.js.map} +1 -1
  28. package/dist/{StaffCreateSupportTicketForm-gPZizMKW.js → StaffCreateSupportTicketForm-B1YioWlS.js} +3 -3
  29. package/dist/{StaffCreateSupportTicketForm-gPZizMKW.js.map → StaffCreateSupportTicketForm-B1YioWlS.js.map} +1 -1
  30. package/dist/{StaffCreateSupportTicketForm-BnpxlQaG.js → StaffCreateSupportTicketForm-UkE9YVWE.js} +4 -4
  31. package/dist/{StaffSupportTicketDetailPage-DUqLTHVT.js → StaffSupportTicketDetailPage-CMxsVxjf.js} +3 -3
  32. package/dist/{StaffSupportTicketDetailPage-DUqLTHVT.js.map → StaffSupportTicketDetailPage-CMxsVxjf.js.map} +1 -1
  33. package/dist/{StaffSupportTicketList-Qp0vQw8X.js → StaffSupportTicketList-BlGTtE1R.js} +18 -18
  34. package/dist/{StaffSupportTicketSuccess-BvwrpoAb.js → StaffSupportTicketSuccess-CzS9uS2h.js} +3 -3
  35. package/dist/{StaffSupportTicketSuccess-C9vqsC51.js → StaffSupportTicketSuccess-DTMToAq2.js} +2 -2
  36. package/dist/{StaffSupportTicketSuccess-C9vqsC51.js.map → StaffSupportTicketSuccess-DTMToAq2.js.map} +1 -1
  37. package/dist/{TeamAttachmentsTab-CnAvlIbn.js → TeamAttachmentsTab-BgtXRohH.js} +18 -18
  38. package/dist/{TeamList-Fb6EfybL.js → TeamList-D3NqS5DL.js} +2 -2
  39. package/dist/{TeamList-C0Mbkbja.js → TeamList-P7rVlBuQ.js} +2 -2
  40. package/dist/{TeamList-C0Mbkbja.js.map → TeamList-P7rVlBuQ.js.map} +1 -1
  41. package/dist/{TeamParent-XgBD3twV.js → TeamParent-CuoVw7Yk.js} +2 -2
  42. package/dist/{TeamParent-COSOJ-ZZ.js → TeamParent-D35VUiio.js} +2 -2
  43. package/dist/{TeamParent-COSOJ-ZZ.js.map → TeamParent-D35VUiio.js.map} +1 -1
  44. package/dist/{TimelineNoteInput-CrivEMUP.js → TimelineNoteInput-D6AbJMx5.js} +2 -2
  45. package/dist/{TimelineNoteInput-CrivEMUP.js.map → TimelineNoteInput-D6AbJMx5.js.map} +1 -1
  46. package/dist/{ViewTeam-BXSq4M0V.js → ViewTeam-7YvvwcXd.js} +2 -2
  47. package/dist/{ViewTeam-DGaNNd8N.js → ViewTeam-BbsTsjAy.js} +2 -2
  48. package/dist/{ViewTeam-DGaNNd8N.js.map → ViewTeam-BbsTsjAy.js.map} +1 -1
  49. package/dist/{customerSupportTicketRoutes-BjqjQc9A.js → customerSupportTicketRoutes-38JuLJGP.js} +6 -6
  50. package/dist/{customerSupportTicketRoutes-BjqjQc9A.js.map → customerSupportTicketRoutes-38JuLJGP.js.map} +1 -1
  51. package/dist/index.js +18 -18
  52. package/dist/{saved_filter-DXWnU4Zb.js → saved_filter-YIncsdws.js} +2 -2
  53. package/dist/{saved_filter-DXWnU4Zb.js.map → saved_filter-YIncsdws.js.map} +1 -1
  54. package/dist/{src-B7oHTH_y.js → src-BXO0PrFd.js} +276 -145
  55. package/dist/src-BXO0PrFd.js.map +1 -0
  56. package/dist/{staffSupportTicketRoutes-CeuduGmG.js → staffSupportTicketRoutes-BZrj4aMG.js} +6 -6
  57. package/dist/{staffSupportTicketRoutes-CeuduGmG.js.map → staffSupportTicketRoutes-BZrj4aMG.js.map} +1 -1
  58. package/dist/{teamRoutes-A7plQKi0.js → teamRoutes-Aa9aBVCa.js} +7 -7
  59. package/dist/{teamRoutes-A7plQKi0.js.map → teamRoutes-Aa9aBVCa.js.map} +1 -1
  60. package/package.json +2 -2
  61. package/dist/InlineAttachments-Ywf9r3jd.js.map +0 -1
  62. package/dist/src-B7oHTH_y.js.map +0 -1
@@ -3,7 +3,7 @@ import { i as setRefreshTokenHandler, r as getRefreshTokenHandler } from "./Enha
3
3
  import { t as useMutation } from "./useMutation-BXSu7_-s.js";
4
4
  import { t as useQuery } from "./useQuery-DownvLRA.js";
5
5
  import { t as AppLink_default } from "./AppLink-FcNGKgvG.js";
6
- import { a as useSavedFilters, c as buildQueryWithFilters, f as PINNED_PRESETS_KEY, m as usePinnedPresets, p as useInjectedPinnedPresets, t as SavedFilterPresets_default, u as extractFiltersFromQuery } from "./saved_filter-DXWnU4Zb.js";
6
+ import { a as useSavedFilters, c as buildQueryWithFilters, f as PINNED_PRESETS_KEY, m as usePinnedPresets, p as useInjectedPinnedPresets, t as SavedFilterPresets_default, u as extractFiltersFromQuery } from "./saved_filter-YIncsdws.js";
7
7
  import { t as ConfirmDialog_default } from "./ConfirmDialog-DjthOYU6.js";
8
8
  import { n as export_helper_default } from "./TeamMembersTab-BigqpBDH.js";
9
9
  import { a as withReturnUrl, n as getBackLinkFromRoute, r as getValidReturnUrl } from "./useReturnUrl-DnezAxBA.js";
@@ -13,7 +13,7 @@ import { t as ZiniaContainer_default } from "./ZiniaContainer-BPIfQOc7.js";
13
13
  import { i as formatUserDate, t as formatSystemTimestamp } from "./convertToLocalDateTime-BKBxm2Rc.js";
14
14
  import { t as extractRpcErrorMessage } from "./extractRpcErrorMessage-Df8-CJGV.js";
15
15
  import { c as userAuthenticated, l as userIsSuperAdmin, o as leadOrStaffOnly } from "./userAuthorized-qmzUYDa-.js";
16
- import { t as staffSupportPaths } from "./staffSupportTicketRoutes-CeuduGmG.js";
16
+ import { t as staffSupportPaths } from "./staffSupportTicketRoutes-BZrj4aMG.js";
17
17
  import { a as SupportTicketTypeBadge_default, c as formatStaffCreditValue, i as SupportTicketApprovalBadge_default, o as SupportTicketPriorityBadge_default, s as formatCustomerCreditValue } from "./TimelineSystemEvent-D5fkhkZT.js";
18
18
  import { t as formatTicketDisplayId } from "./displayIdFormatter-Ca4Al9iB.js";
19
19
  import { t as SupportTicketDevLifecycleBadge_default } from "./SupportTicketDevLifecycleBadge-D8-Cv1Np.js";
@@ -1128,72 +1128,95 @@ const _hoisted_25$1 = { class: "font-medium text-sm break-all" };
1128
1128
  const _hoisted_26$1 = { class: "text-xs text-base-content/70 mt-1 ml-6" };
1129
1129
  const _hoisted_27$1 = {
1130
1130
  key: 0,
1131
+ class: "mt-2 ml-6 space-y-1"
1132
+ };
1133
+ const _hoisted_28$1 = ["onUpdate:modelValue"];
1134
+ const _hoisted_29$1 = ["onUpdate:modelValue"];
1135
+ const _hoisted_30$1 = {
1136
+ key: 1,
1131
1137
  class: "text-xs text-error mt-1 ml-6"
1132
1138
  };
1133
- const _hoisted_28$1 = ["onClick"];
1134
- const _hoisted_29$1 = { key: 0 };
1135
- const _hoisted_30$1 = { class: "flex justify-between text-xs mb-1" };
1136
- const _hoisted_31$1 = { key: 0 };
1137
- const _hoisted_32$1 = ["value"];
1138
- const _hoisted_33$1 = {
1139
+ const _hoisted_31$1 = ["onClick"];
1140
+ const _hoisted_32$1 = { key: 0 };
1141
+ const _hoisted_33$1 = { class: "flex justify-between text-xs mb-1" };
1142
+ const _hoisted_34$1 = { key: 0 };
1143
+ const _hoisted_35$1 = ["value"];
1144
+ const _hoisted_36 = {
1139
1145
  key: 1,
1140
1146
  class: "text-xs text-success mt-1"
1141
1147
  };
1142
- const _hoisted_34$1 = {
1148
+ const _hoisted_37 = {
1143
1149
  key: 2,
1144
1150
  class: "text-xs text-error mt-1"
1145
1151
  };
1146
- const _hoisted_35$1 = {
1152
+ const _hoisted_38 = {
1147
1153
  key: 1,
1148
1154
  class: "block sm:hidden mb-4"
1149
1155
  };
1150
- const _hoisted_36 = ["onClick"];
1151
- const _hoisted_37 = { class: "card-body py-4" };
1152
- const _hoisted_38 = { class: "flex items-center gap-3" };
1153
- const _hoisted_39 = { class: "card-title text-base break-words flex-1" };
1154
- const _hoisted_40 = {
1156
+ const _hoisted_39 = ["onClick"];
1157
+ const _hoisted_40 = { class: "card-body py-4" };
1158
+ const _hoisted_41 = { class: "flex items-center gap-3" };
1159
+ const _hoisted_42 = { class: "card-title text-base break-words flex-1" };
1160
+ const _hoisted_43 = {
1155
1161
  key: 2,
1156
1162
  class: "block sm:hidden"
1157
1163
  };
1158
- const _hoisted_41 = { class: "card-body" };
1159
- const _hoisted_42 = { class: "flex items-center gap-2 mb-2" };
1160
- const _hoisted_43 = { class: "card-title text-base break-all" };
1161
- const _hoisted_44 = { class: "grid grid-cols-2 text-sm mb-3" };
1162
- const _hoisted_45 = { class: "card-actions justify-between mt-3 gap-2" };
1163
- const _hoisted_46 = ["onClick"];
1164
- const _hoisted_47 = ["onClick"];
1165
- const _hoisted_48 = {
1166
- key: 3,
1167
- class: "hidden sm:block overflow-x-auto"
1164
+ const _hoisted_44 = { class: "card-body" };
1165
+ const _hoisted_45 = { class: "flex items-center gap-2 mb-2" };
1166
+ const _hoisted_46 = { class: "card-title text-base break-all" };
1167
+ const _hoisted_47 = {
1168
+ key: 0,
1169
+ class: "text-sm text-base-content/70 mt-1"
1168
1170
  };
1169
- const _hoisted_49 = { class: "table table-zebra w-full" };
1171
+ const _hoisted_48 = { class: "grid grid-cols-2 text-sm mb-3" };
1172
+ const _hoisted_49 = { class: "card-actions justify-between mt-3 gap-2" };
1170
1173
  const _hoisted_50 = ["onClick"];
1171
- const _hoisted_51 = { class: "flex items-center gap-3" };
1172
- const _hoisted_52 = { class: "font-medium break-all max-w-[200px] md:max-w-[500px]" };
1174
+ const _hoisted_51 = ["onClick"];
1175
+ const _hoisted_52 = ["onClick"];
1173
1176
  const _hoisted_53 = {
1177
+ key: 3,
1178
+ class: "hidden sm:block overflow-x-auto"
1179
+ };
1180
+ const _hoisted_54 = { class: "table table-zebra w-full" };
1181
+ const _hoisted_55 = ["onClick"];
1182
+ const _hoisted_56 = { class: "flex items-center gap-3" };
1183
+ const _hoisted_57 = { class: "font-medium break-all max-w-[200px] md:max-w-[500px]" };
1184
+ const _hoisted_58 = {
1174
1185
  key: 0,
1175
1186
  class: "text-xs text-base-content/60 ml-2"
1176
1187
  };
1177
- const _hoisted_54 = { class: "flex items-center gap-3" };
1178
- const _hoisted_55 = { class: "font-medium break-all max-w-[200px] md:max-w-[500px]" };
1179
- const _hoisted_56 = { class: "flex gap-2" };
1180
- const _hoisted_57 = ["onClick"];
1181
- const _hoisted_58 = ["onClick"];
1182
- const _hoisted_59 = { class: "text-center py-8" };
1183
- const _hoisted_60 = { class: "text-base-content/70 mt-2" };
1184
- const _hoisted_61 = { class: "text-center py-8" };
1185
- const _hoisted_62 = { class: "text-base-content/70" };
1186
- const _hoisted_63 = { class: "hidden sm:block text-sm text-base-content/70 mt-2" };
1187
- const _hoisted_64 = { class: "text-center py-8" };
1188
- const _hoisted_65 = { class: "text-error" };
1189
- const _hoisted_66 = { class: "mb-4" };
1190
- const _hoisted_67 = {
1188
+ const _hoisted_59 = { class: "flex items-center gap-3" };
1189
+ const _hoisted_60 = { class: "font-medium break-all max-w-[200px] md:max-w-[500px]" };
1190
+ const _hoisted_61 = {
1191
+ key: 0,
1192
+ class: "text-xs text-base-content/60 truncate max-w-[200px] md:max-w-[500px]"
1193
+ };
1194
+ const _hoisted_62 = { class: "flex gap-2" };
1195
+ const _hoisted_63 = ["onClick"];
1196
+ const _hoisted_64 = ["onClick"];
1197
+ const _hoisted_65 = ["onClick"];
1198
+ const _hoisted_66 = { class: "text-center py-8" };
1199
+ const _hoisted_67 = { class: "text-base-content/70 mt-2" };
1200
+ const _hoisted_68 = { class: "text-center py-8" };
1201
+ const _hoisted_69 = { class: "text-base-content/70" };
1202
+ const _hoisted_70 = { class: "hidden sm:block text-sm text-base-content/70 mt-2" };
1203
+ const _hoisted_71 = { class: "text-center py-8" };
1204
+ const _hoisted_72 = { class: "text-error" };
1205
+ const _hoisted_73 = { class: "modal-box" };
1206
+ const _hoisted_74 = { class: "py-4 space-y-4" };
1207
+ const _hoisted_75 = { class: "form-control w-full" };
1208
+ const _hoisted_76 = { class: "form-control w-full" };
1209
+ const _hoisted_77 = { class: "modal-action" };
1210
+ const _hoisted_78 = ["disabled"];
1211
+ const _hoisted_79 = ["disabled"];
1212
+ const _hoisted_80 = { class: "mb-4" };
1213
+ const _hoisted_81 = {
1191
1214
  key: 0,
1192
1215
  class: "bg-base-200 rounded-lg p-3 space-y-1 text-sm"
1193
1216
  };
1194
- const _hoisted_68 = { class: "flex items-center gap-2" };
1195
- const _hoisted_69 = { class: "font-medium" };
1196
- const _hoisted_70 = { class: "text-base-content/70" };
1217
+ const _hoisted_82 = { class: "flex items-center gap-2" };
1218
+ const _hoisted_83 = { class: "font-medium" };
1219
+ const _hoisted_84 = { class: "text-base-content/70" };
1197
1220
  const DEFAULT_MAX_FILE_SIZE = 50 * 1024 * 1024;
1198
1221
  const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1199
1222
  __name: "FileManager",
@@ -1220,8 +1243,13 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1220
1243
  const folderPath = ref([]);
1221
1244
  const showDeleteModal = ref(false);
1222
1245
  const showCreateFolderModal = ref(false);
1246
+ const showEditModal = ref(false);
1223
1247
  const fileToDelete = ref(null);
1248
+ const fileToEdit = ref(null);
1249
+ const editTitle = ref("");
1250
+ const editDescription = ref("");
1224
1251
  const { mutate: deleteAttachment } = useMutation((api, input) => api.attachments.deleteAttachment(input.id), { invalidate: /^attachments?:/ });
1252
+ const { mutate: updateAttachment, loading: isUpdatingAttachment } = useMutation((api, input) => api.attachments.updateAttachment(input), { invalidate: /^attachments?:/ });
1225
1253
  const { mutate: createFolderMutation } = useMutation((api, input) => api.attachments.createFolder(input), { invalidate: /^attachments?:/ });
1226
1254
  const { data: attachmentsData, loading: fetchingAttachments, error: attachmentsError, refetch: refetchAttachments } = useQuery(async (api) => {
1227
1255
  const filters = {
@@ -1265,6 +1293,8 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1265
1293
  for (const item of fileItems) files.push({
1266
1294
  id: item.id,
1267
1295
  name: item.original_name,
1296
+ title: item.title ?? null,
1297
+ description: item.description ?? null,
1268
1298
  size: parseInt(item.file_size || "0"),
1269
1299
  type: item.content_type || "",
1270
1300
  uploadedAt: new Date(item.created_at)
@@ -1455,6 +1485,8 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1455
1485
  formData.append("record_id", props.recordId);
1456
1486
  formData.append("record_type", props.recordType);
1457
1487
  if (currentFolderId.value) formData.append("folder_id", currentFolderId.value);
1488
+ if (item.title) formData.append("title", item.title);
1489
+ if (item.description) formData.append("description", item.description);
1458
1490
  const response = await fetch(`${env$1.restApiClient.apiUrl}/attachments/${props.recordType}/${props.recordId}`, {
1459
1491
  method: "POST",
1460
1492
  headers: { Authorization: `Bearer ${userStore.accessToken}` },
@@ -1518,6 +1550,32 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1518
1550
  a.remove();
1519
1551
  URL.revokeObjectURL(url);
1520
1552
  };
1553
+ const openEditModal = (file) => {
1554
+ fileToEdit.value = file;
1555
+ editTitle.value = file.title ?? "";
1556
+ editDescription.value = file.description ?? "";
1557
+ showEditModal.value = true;
1558
+ };
1559
+ const closeEditModal = () => {
1560
+ showEditModal.value = false;
1561
+ fileToEdit.value = null;
1562
+ editTitle.value = "";
1563
+ editDescription.value = "";
1564
+ };
1565
+ const saveEditAttachment = async () => {
1566
+ if (!fileToEdit.value) return;
1567
+ try {
1568
+ await updateAttachment({
1569
+ id: fileToEdit.value.id,
1570
+ title: editTitle.value.trim() || null,
1571
+ description: editDescription.value.trim() || null
1572
+ });
1573
+ refreshAttachments();
1574
+ closeEditModal();
1575
+ } catch (error) {
1576
+ console.error("Update failed:", error);
1577
+ }
1578
+ };
1521
1579
  const confirmDeleteFile = (file) => {
1522
1580
  fileToDelete.value = file;
1523
1581
  showDeleteModal.value = true;
@@ -1578,7 +1636,7 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1578
1636
  class: "btn btn-sm btn-primary flex-1",
1579
1637
  onClick: openFileSelector,
1580
1638
  disabled: isUploading.value
1581
- }, [_cache[5] || (_cache[5] = createElementVNode("svg", {
1639
+ }, [_cache[7] || (_cache[7] = createElementVNode("svg", {
1582
1640
  xmlns: "http://www.w3.org/2000/svg",
1583
1641
  class: "h-4 w-4 mr-1",
1584
1642
  fill: "none",
@@ -1592,7 +1650,7 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1592
1650
  })], -1)), createTextVNode(" " + toDisplayString(config.value.addButtonText || "Add Files"), 1)], 8, _hoisted_6$10), createElementVNode("button", {
1593
1651
  class: "btn btn-sm btn-info flex-1",
1594
1652
  onClick: createFolder
1595
- }, [..._cache[6] || (_cache[6] = [createElementVNode("svg", {
1653
+ }, [..._cache[8] || (_cache[8] = [createElementVNode("svg", {
1596
1654
  xmlns: "http://www.w3.org/2000/svg",
1597
1655
  class: "h-4 w-4 mr-1",
1598
1656
  fill: "none",
@@ -1614,7 +1672,7 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1614
1672
  createElementVNode("div", _hoisted_7$9, [createElementVNode("ul", _hoisted_8$9, [createElementVNode("li", null, [createElementVNode("button", {
1615
1673
  class: normalizeClass(["btn btn-sm sm:btn-xs btn-ghost min-h-[2.5rem] sm:min-h-0 py-2 sm:py-1", { "btn-active": !currentFolderId.value }]),
1616
1674
  onClick: _cache[0] || (_cache[0] = ($event) => navigateToFolder(null))
1617
- }, [..._cache[7] || (_cache[7] = [createElementVNode("svg", {
1675
+ }, [..._cache[9] || (_cache[9] = [createElementVNode("svg", {
1618
1676
  xmlns: "http://www.w3.org/2000/svg",
1619
1677
  class: "h-4 w-4 sm:mr-1",
1620
1678
  fill: "none",
@@ -1653,7 +1711,7 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1653
1711
  onDrop: withModifiers(handleFileDrop, ["prevent"]),
1654
1712
  onClick: openFileSelector
1655
1713
  }, [createElementVNode("div", _hoisted_11$5, [
1656
- _cache[8] || (_cache[8] = createElementVNode("svg", {
1714
+ _cache[10] || (_cache[10] = createElementVNode("svg", {
1657
1715
  xmlns: "http://www.w3.org/2000/svg",
1658
1716
  class: "h-12 w-12 mb-2 text-primary",
1659
1717
  fill: "none",
@@ -1670,7 +1728,7 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1670
1728
  config.value.acceptText ? (openBlock(), createElementBlock("p", _hoisted_14$3, toDisplayString(config.value.acceptText), 1)) : createCommentVNode("v-if", true)
1671
1729
  ])], 34),
1672
1730
  createCommentVNode(" Upload Queue "),
1673
- uploadQueue.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_15$2, [_cache[12] || (_cache[12] = createElementVNode("div", { class: "text-sm font-medium mb-2" }, "File uploads", -1)), createElementVNode("div", _hoisted_16$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(uploadQueue.value, (item) => {
1731
+ uploadQueue.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_15$2, [_cache[14] || (_cache[14] = createElementVNode("div", { class: "text-sm font-medium mb-2" }, "File uploads", -1)), createElementVNode("div", _hoisted_16$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(uploadQueue.value, (item) => {
1674
1732
  return openBlock(), createElementBlock("div", {
1675
1733
  key: item.id,
1676
1734
  class: normalizeClass(["border border-base-200 rounded-lg p-3", {
@@ -1682,12 +1740,12 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1682
1740
  createElementVNode("div", _hoisted_18$1, [
1683
1741
  createElementVNode("div", _hoisted_19$1, [
1684
1742
  createCommentVNode(" Status Icon "),
1685
- item.status === "uploading" ? (openBlock(), createElementBlock("div", _hoisted_20$1)) : item.status === "success" ? (openBlock(), createElementBlock("svg", _hoisted_21$1, [..._cache[9] || (_cache[9] = [createElementVNode("path", {
1743
+ item.status === "uploading" ? (openBlock(), createElementBlock("div", _hoisted_20$1)) : item.status === "success" ? (openBlock(), createElementBlock("svg", _hoisted_21$1, [..._cache[11] || (_cache[11] = [createElementVNode("path", {
1686
1744
  "stroke-linecap": "round",
1687
1745
  "stroke-linejoin": "round",
1688
1746
  "stroke-width": "2",
1689
1747
  d: "M5 13l4 4L19 7"
1690
- }, null, -1)])])) : item.status === "error" ? (openBlock(), createElementBlock("svg", _hoisted_22$1, [..._cache[10] || (_cache[10] = [createElementVNode("path", {
1748
+ }, null, -1)])])) : item.status === "error" ? (openBlock(), createElementBlock("svg", _hoisted_22$1, [..._cache[12] || (_cache[12] = [createElementVNode("path", {
1691
1749
  "stroke-linecap": "round",
1692
1750
  "stroke-linejoin": "round",
1693
1751
  "stroke-width": "2",
@@ -1697,7 +1755,18 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1697
1755
  createElementVNode("div", _hoisted_24$1, [createElementVNode("div", _hoisted_25$1, toDisplayString(item.file.name), 1)])
1698
1756
  ]),
1699
1757
  createElementVNode("div", _hoisted_26$1, toDisplayString(formatFileSize(item.file.size)), 1),
1700
- item.status === "error" && item.errorMessage ? (openBlock(), createElementBlock("div", _hoisted_27$1, toDisplayString(item.errorMessage), 1)) : createCommentVNode("v-if", true)
1758
+ item.status === "pending" || item.status === "uploading" ? (openBlock(), createElementBlock("div", _hoisted_27$1, [withDirectives(createElementVNode("input", {
1759
+ "onUpdate:modelValue": ($event) => item.title = $event,
1760
+ type: "text",
1761
+ placeholder: "Title (optional)",
1762
+ class: "input input-xs input-bordered w-full max-w-xs"
1763
+ }, null, 8, _hoisted_28$1), [[vModelText, item.title]]), withDirectives(createElementVNode("input", {
1764
+ "onUpdate:modelValue": ($event) => item.description = $event,
1765
+ type: "text",
1766
+ placeholder: "Description (optional)",
1767
+ class: "input input-xs input-bordered w-full max-w-xs block mt-1"
1768
+ }, null, 8, _hoisted_29$1), [[vModelText, item.description]])])) : createCommentVNode("v-if", true),
1769
+ item.status === "error" && item.errorMessage ? (openBlock(), createElementBlock("div", _hoisted_30$1, toDisplayString(item.errorMessage), 1)) : createCommentVNode("v-if", true)
1701
1770
  ]),
1702
1771
  createCommentVNode(" Dismiss Button (X) "),
1703
1772
  item.status === "success" || item.status === "error" ? (openBlock(), createElementBlock("button", {
@@ -1705,7 +1774,7 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1705
1774
  class: "btn btn-xs btn-ghost btn-circle",
1706
1775
  onClick: ($event) => removeFromQueue(item.id),
1707
1776
  "aria-label": "Dismiss notification"
1708
- }, [..._cache[11] || (_cache[11] = [createElementVNode("svg", {
1777
+ }, [..._cache[13] || (_cache[13] = [createElementVNode("svg", {
1709
1778
  xmlns: "http://www.w3.org/2000/svg",
1710
1779
  class: "h-4 w-4",
1711
1780
  fill: "none",
@@ -1716,32 +1785,32 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1716
1785
  "stroke-linejoin": "round",
1717
1786
  "stroke-width": "2",
1718
1787
  d: "M6 18L18 6M6 6l12 12"
1719
- })], -1)])], 8, _hoisted_28$1)) : createCommentVNode("v-if", true)
1788
+ })], -1)])], 8, _hoisted_31$1)) : createCommentVNode("v-if", true)
1720
1789
  ]),
1721
1790
  createCommentVNode(" Progress Bar "),
1722
- item.status === "uploading" || item.status === "pending" ? (openBlock(), createElementBlock("div", _hoisted_29$1, [createElementVNode("div", _hoisted_30$1, [createElementVNode("span", null, toDisplayString(item.status === "uploading" ? "Uploading..." : "Waiting..."), 1), item.status === "uploading" ? (openBlock(), createElementBlock("span", _hoisted_31$1, toDisplayString(item.progress.toFixed(2)) + "%", 1)) : createCommentVNode("v-if", true)]), createElementVNode("progress", {
1791
+ item.status === "uploading" || item.status === "pending" ? (openBlock(), createElementBlock("div", _hoisted_32$1, [createElementVNode("div", _hoisted_33$1, [createElementVNode("span", null, toDisplayString(item.status === "uploading" ? "Uploading..." : "Waiting..."), 1), item.status === "uploading" ? (openBlock(), createElementBlock("span", _hoisted_34$1, toDisplayString(item.progress.toFixed(2)) + "%", 1)) : createCommentVNode("v-if", true)]), createElementVNode("progress", {
1723
1792
  class: normalizeClass(["progress w-full", {
1724
1793
  "progress-primary": item.status === "uploading",
1725
1794
  "progress-secondary opacity-50": item.status === "pending"
1726
1795
  }]),
1727
1796
  value: item.status === "uploading" ? item.progress : 0,
1728
1797
  max: "100"
1729
- }, null, 10, _hoisted_32$1)])) : createCommentVNode("v-if", true),
1798
+ }, null, 10, _hoisted_35$1)])) : createCommentVNode("v-if", true),
1730
1799
  createCommentVNode(" Success/Error Message "),
1731
- item.status === "success" ? (openBlock(), createElementBlock("div", _hoisted_33$1, " Upload complete ")) : createCommentVNode("v-if", true),
1732
- item.status === "error" ? (openBlock(), createElementBlock("div", _hoisted_34$1, " Upload failed - dismiss and try again ")) : createCommentVNode("v-if", true)
1800
+ item.status === "success" ? (openBlock(), createElementBlock("div", _hoisted_36, " Upload complete ")) : createCommentVNode("v-if", true),
1801
+ item.status === "error" ? (openBlock(), createElementBlock("div", _hoisted_37, " Upload failed - dismiss and try again ")) : createCommentVNode("v-if", true)
1733
1802
  ], 2);
1734
1803
  }), 128))])])) : createCommentVNode("v-if", true),
1735
1804
  createCommentVNode(" Folder list (mobile) "),
1736
- folders.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_35$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(folders.value, (folder) => {
1805
+ folders.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_38, [(openBlock(true), createElementBlock(Fragment, null, renderList(folders.value, (folder) => {
1737
1806
  return openBlock(), createElementBlock("div", {
1738
1807
  key: folder.id,
1739
1808
  class: "card card-compact bg-base-100 shadow-sm mb-3 border border-base-200 active:scale-[0.98] transition-transform",
1740
1809
  onClick: ($event) => enterFolder(folder.id)
1741
- }, [createElementVNode("div", _hoisted_37, [createElementVNode("div", _hoisted_38, [
1742
- _cache[13] || (_cache[13] = createElementVNode("div", { class: "badge badge-secondary badge-lg" }, "FOLDER", -1)),
1743
- createElementVNode("h3", _hoisted_39, toDisplayString(folder.name), 1),
1744
- _cache[14] || (_cache[14] = createElementVNode("svg", {
1810
+ }, [createElementVNode("div", _hoisted_40, [createElementVNode("div", _hoisted_41, [
1811
+ _cache[15] || (_cache[15] = createElementVNode("div", { class: "badge badge-secondary badge-lg" }, "FOLDER", -1)),
1812
+ createElementVNode("h3", _hoisted_42, toDisplayString(folder.name), 1),
1813
+ _cache[16] || (_cache[16] = createElementVNode("svg", {
1745
1814
  xmlns: "http://www.w3.org/2000/svg",
1746
1815
  class: "h-5 w-5 text-base-content/50",
1747
1816
  fill: "none",
@@ -1753,49 +1822,61 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1753
1822
  "stroke-width": "2",
1754
1823
  d: "M9 5l7 7-7 7"
1755
1824
  })], -1))
1756
- ])])], 8, _hoisted_36);
1825
+ ])])], 8, _hoisted_39);
1757
1826
  }), 128))])) : createCommentVNode("v-if", true),
1758
1827
  createCommentVNode(" File List for Mobile "),
1759
- attachments.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_40, [(openBlock(true), createElementBlock(Fragment, null, renderList(attachments.value, (file, index) => {
1828
+ attachments.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_43, [(openBlock(true), createElementBlock(Fragment, null, renderList(attachments.value, (file, index) => {
1760
1829
  return openBlock(), createElementBlock("div", {
1761
1830
  key: index,
1762
1831
  class: "card card-compact bg-base-100 shadow-sm mb-3 border border-base-200"
1763
- }, [createElementVNode("div", _hoisted_41, [
1764
- createElementVNode("div", _hoisted_42, [createElementVNode("div", { class: normalizeClass(["badge", getFileTypeBadgeClass(file.type)]) }, toDisplayString(getFileTypeLabel(file.type)), 3), createElementVNode("h3", _hoisted_43, toDisplayString(file.name), 1)]),
1765
- createElementVNode("div", _hoisted_44, [createElementVNode("div", null, [_cache[15] || (_cache[15] = createElementVNode("span", { class: "text-base-content/70" }, "Size:", -1)), createTextVNode(" " + toDisplayString(formatFileSize(file.size)), 1)]), createElementVNode("div", null, [_cache[16] || (_cache[16] = createElementVNode("span", { class: "text-base-content/70" }, "Uploaded:", -1)), createTextVNode(" " + toDisplayString(formatDate(file.uploadedAt)), 1)])]),
1766
- createElementVNode("div", _hoisted_45, [createElementVNode("button", {
1767
- class: "btn btn-sm flex-1 min-h-[2.75rem]",
1768
- onClick: ($event) => downloadFile(file)
1769
- }, [..._cache[17] || (_cache[17] = [createElementVNode("svg", {
1770
- xmlns: "http://www.w3.org/2000/svg",
1771
- class: "h-4 w-4 mr-1",
1772
- fill: "none",
1773
- viewBox: "0 0 24 24",
1774
- stroke: "currentColor"
1775
- }, [createElementVNode("path", {
1776
- "stroke-linecap": "round",
1777
- "stroke-linejoin": "round",
1778
- "stroke-width": "2",
1779
- d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
1780
- })], -1), createTextVNode(" Download ", -1)])], 8, _hoisted_46), createElementVNode("button", {
1781
- class: "btn btn-sm btn-outline btn-error flex-1 min-h-[2.75rem]",
1782
- onClick: ($event) => confirmDeleteFile(file)
1783
- }, [..._cache[18] || (_cache[18] = [createElementVNode("svg", {
1784
- xmlns: "http://www.w3.org/2000/svg",
1785
- class: "h-4 w-4 mr-1",
1786
- fill: "none",
1787
- viewBox: "0 0 24 24",
1788
- stroke: "currentColor"
1789
- }, [createElementVNode("path", {
1790
- "stroke-linecap": "round",
1791
- "stroke-linejoin": "round",
1792
- "stroke-width": "2",
1793
- d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
1794
- })], -1), createTextVNode(" Delete ", -1)])], 8, _hoisted_47)])
1832
+ }, [createElementVNode("div", _hoisted_44, [
1833
+ createElementVNode("div", _hoisted_45, [
1834
+ createElementVNode("div", { class: normalizeClass(["badge", getFileTypeBadgeClass(file.type)]) }, toDisplayString(getFileTypeLabel(file.type)), 3),
1835
+ createElementVNode("h3", _hoisted_46, toDisplayString(file.title || file.name), 1),
1836
+ file.description ? (openBlock(), createElementBlock("p", _hoisted_47, toDisplayString(file.description), 1)) : createCommentVNode("v-if", true)
1837
+ ]),
1838
+ createElementVNode("div", _hoisted_48, [createElementVNode("div", null, [_cache[17] || (_cache[17] = createElementVNode("span", { class: "text-base-content/70" }, "Size:", -1)), createTextVNode(" " + toDisplayString(formatFileSize(file.size)), 1)]), createElementVNode("div", null, [_cache[18] || (_cache[18] = createElementVNode("span", { class: "text-base-content/70" }, "Uploaded:", -1)), createTextVNode(" " + toDisplayString(formatDate(file.uploadedAt)), 1)])]),
1839
+ createElementVNode("div", _hoisted_49, [
1840
+ createElementVNode("button", {
1841
+ class: "btn btn-sm btn-ghost flex-1 min-h-[2.75rem]",
1842
+ onClick: ($event) => openEditModal(file),
1843
+ title: "Edit title and description"
1844
+ }, " Edit ", 8, _hoisted_50),
1845
+ createElementVNode("button", {
1846
+ class: "btn btn-sm flex-1 min-h-[2.75rem]",
1847
+ onClick: ($event) => downloadFile(file)
1848
+ }, [..._cache[19] || (_cache[19] = [createElementVNode("svg", {
1849
+ xmlns: "http://www.w3.org/2000/svg",
1850
+ class: "h-4 w-4 mr-1",
1851
+ fill: "none",
1852
+ viewBox: "0 0 24 24",
1853
+ stroke: "currentColor"
1854
+ }, [createElementVNode("path", {
1855
+ "stroke-linecap": "round",
1856
+ "stroke-linejoin": "round",
1857
+ "stroke-width": "2",
1858
+ d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
1859
+ })], -1), createTextVNode(" Download ", -1)])], 8, _hoisted_51),
1860
+ createElementVNode("button", {
1861
+ class: "btn btn-sm btn-outline btn-error flex-1 min-h-[2.75rem]",
1862
+ onClick: ($event) => confirmDeleteFile(file)
1863
+ }, [..._cache[20] || (_cache[20] = [createElementVNode("svg", {
1864
+ xmlns: "http://www.w3.org/2000/svg",
1865
+ class: "h-4 w-4 mr-1",
1866
+ fill: "none",
1867
+ viewBox: "0 0 24 24",
1868
+ stroke: "currentColor"
1869
+ }, [createElementVNode("path", {
1870
+ "stroke-linecap": "round",
1871
+ "stroke-linejoin": "round",
1872
+ "stroke-width": "2",
1873
+ d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
1874
+ })], -1), createTextVNode(" Delete ", -1)])], 8, _hoisted_52)
1875
+ ])
1795
1876
  ])]);
1796
1877
  }), 128))])) : createCommentVNode("v-if", true),
1797
1878
  createCommentVNode(" Folder and File List for Tablet/Desktop "),
1798
- folders.value.length > 0 || attachments.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_48, [createElementVNode("table", _hoisted_49, [_cache[25] || (_cache[25] = createElementVNode("thead", null, [createElementVNode("tr", null, [
1879
+ folders.value.length > 0 || attachments.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_53, [createElementVNode("table", _hoisted_54, [_cache[28] || (_cache[28] = createElementVNode("thead", null, [createElementVNode("tr", null, [
1799
1880
  createElementVNode("th", null, "Name"),
1800
1881
  createElementVNode("th", null, "Size"),
1801
1882
  createElementVNode("th", null, "Uploaded"),
@@ -1808,51 +1889,74 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1808
1889
  class: "cursor-pointer",
1809
1890
  onClick: ($event) => enterFolder(folder.id)
1810
1891
  }, [
1811
- createElementVNode("td", null, [createElementVNode("div", _hoisted_51, [_cache[19] || (_cache[19] = createElementVNode("div", { class: "badge badge-secondary badge-sm" }, "FOLDER", -1)), createElementVNode("div", _hoisted_52, [createTextVNode(toDisplayString(folder.name) + " ", 1), folder.file_count !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_53, " (" + toDisplayString(folder.file_count) + ") ", 1)) : createCommentVNode("v-if", true)])])]),
1812
- _cache[20] || (_cache[20] = createElementVNode("td", null, "—", -1)),
1813
- _cache[21] || (_cache[21] = createElementVNode("td", null, "—", -1)),
1814
- _cache[22] || (_cache[22] = createElementVNode("td", null, "—", -1))
1815
- ], 8, _hoisted_50);
1892
+ createElementVNode("td", null, [createElementVNode("div", _hoisted_56, [_cache[21] || (_cache[21] = createElementVNode("div", { class: "badge badge-secondary badge-sm" }, "FOLDER", -1)), createElementVNode("div", _hoisted_57, [createTextVNode(toDisplayString(folder.name) + " ", 1), folder.file_count !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_58, " (" + toDisplayString(folder.file_count) + ") ", 1)) : createCommentVNode("v-if", true)])])]),
1893
+ _cache[22] || (_cache[22] = createElementVNode("td", null, "—", -1)),
1894
+ _cache[23] || (_cache[23] = createElementVNode("td", null, "—", -1)),
1895
+ _cache[24] || (_cache[24] = createElementVNode("td", null, "—", -1))
1896
+ ], 8, _hoisted_55);
1816
1897
  }), 128)),
1817
1898
  createCommentVNode(" Files "),
1818
1899
  (openBlock(true), createElementBlock(Fragment, null, renderList(attachments.value, (file, index) => {
1819
1900
  return openBlock(), createElementBlock("tr", { key: index }, [
1820
- createElementVNode("td", null, [createElementVNode("div", _hoisted_54, [createElementVNode("div", { class: normalizeClass(["badge badge-sm", getFileTypeBadgeClass(file.type)]) }, toDisplayString(getFileTypeLabel(file.type)), 3), createElementVNode("div", _hoisted_55, toDisplayString(file.name), 1)])]),
1901
+ createElementVNode("td", null, [createElementVNode("div", _hoisted_59, [
1902
+ createElementVNode("div", { class: normalizeClass(["badge badge-sm", getFileTypeBadgeClass(file.type)]) }, toDisplayString(getFileTypeLabel(file.type)), 3),
1903
+ createElementVNode("div", _hoisted_60, toDisplayString(file.title || file.name), 1),
1904
+ file.description ? (openBlock(), createElementBlock("div", _hoisted_61, toDisplayString(file.description), 1)) : createCommentVNode("v-if", true)
1905
+ ])]),
1821
1906
  createElementVNode("td", null, toDisplayString(formatFileSize(file.size)), 1),
1822
1907
  createElementVNode("td", null, toDisplayString(formatDate(file.uploadedAt)), 1),
1823
- createElementVNode("td", null, [createElementVNode("div", _hoisted_56, [createElementVNode("button", {
1824
- class: "btn btn-sm btn-ghost btn-circle",
1825
- onClick: ($event) => downloadFile(file)
1826
- }, [..._cache[23] || (_cache[23] = [createElementVNode("svg", {
1827
- xmlns: "http://www.w3.org/2000/svg",
1828
- class: "h-4 w-4",
1829
- fill: "none",
1830
- viewBox: "0 0 24 24",
1831
- stroke: "currentColor"
1832
- }, [createElementVNode("path", {
1833
- "stroke-linecap": "round",
1834
- "stroke-linejoin": "round",
1835
- "stroke-width": "2",
1836
- d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
1837
- })], -1)])], 8, _hoisted_57), createElementVNode("button", {
1838
- class: "btn btn-sm btn-ghost btn-circle text-error",
1839
- onClick: ($event) => confirmDeleteFile(file)
1840
- }, [..._cache[24] || (_cache[24] = [createElementVNode("svg", {
1841
- xmlns: "http://www.w3.org/2000/svg",
1842
- class: "h-4 w-4",
1843
- fill: "none",
1844
- viewBox: "0 0 24 24",
1845
- stroke: "currentColor"
1846
- }, [createElementVNode("path", {
1847
- "stroke-linecap": "round",
1848
- "stroke-linejoin": "round",
1849
- "stroke-width": "2",
1850
- d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
1851
- })], -1)])], 8, _hoisted_58)])])
1908
+ createElementVNode("td", null, [createElementVNode("div", _hoisted_62, [
1909
+ createElementVNode("button", {
1910
+ class: "btn btn-sm btn-ghost btn-circle",
1911
+ onClick: ($event) => openEditModal(file),
1912
+ title: "Edit title and description"
1913
+ }, [..._cache[25] || (_cache[25] = [createElementVNode("svg", {
1914
+ xmlns: "http://www.w3.org/2000/svg",
1915
+ class: "h-4 w-4",
1916
+ fill: "none",
1917
+ viewBox: "0 0 24 24",
1918
+ stroke: "currentColor"
1919
+ }, [createElementVNode("path", {
1920
+ "stroke-linecap": "round",
1921
+ "stroke-linejoin": "round",
1922
+ "stroke-width": "2",
1923
+ d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"
1924
+ })], -1)])], 8, _hoisted_63),
1925
+ createElementVNode("button", {
1926
+ class: "btn btn-sm btn-ghost btn-circle",
1927
+ onClick: ($event) => downloadFile(file)
1928
+ }, [..._cache[26] || (_cache[26] = [createElementVNode("svg", {
1929
+ xmlns: "http://www.w3.org/2000/svg",
1930
+ class: "h-4 w-4",
1931
+ fill: "none",
1932
+ viewBox: "0 0 24 24",
1933
+ stroke: "currentColor"
1934
+ }, [createElementVNode("path", {
1935
+ "stroke-linecap": "round",
1936
+ "stroke-linejoin": "round",
1937
+ "stroke-width": "2",
1938
+ d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
1939
+ })], -1)])], 8, _hoisted_64),
1940
+ createElementVNode("button", {
1941
+ class: "btn btn-sm btn-ghost btn-circle text-error",
1942
+ onClick: ($event) => confirmDeleteFile(file)
1943
+ }, [..._cache[27] || (_cache[27] = [createElementVNode("svg", {
1944
+ xmlns: "http://www.w3.org/2000/svg",
1945
+ class: "h-4 w-4",
1946
+ fill: "none",
1947
+ viewBox: "0 0 24 24",
1948
+ stroke: "currentColor"
1949
+ }, [createElementVNode("path", {
1950
+ "stroke-linecap": "round",
1951
+ "stroke-linejoin": "round",
1952
+ "stroke-width": "2",
1953
+ d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
1954
+ })], -1)])], 8, _hoisted_65)
1955
+ ])])
1852
1956
  ]);
1853
1957
  }), 128))
1854
- ])])])) : unref(fetchingAttachments) ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [createCommentVNode(" Loading State "), createElementVNode("div", _hoisted_59, [_cache[26] || (_cache[26] = createElementVNode("div", { class: "flex justify-center" }, [createElementVNode("span", { class: "loading loading-spinner loading-md" })], -1)), createElementVNode("p", _hoisted_60, toDisplayString(config.value.loadingText || "Loading attachments..."), 1)])], 2112)) : !isUploading.value ? (openBlock(), createElementBlock(Fragment, { key: 5 }, [createCommentVNode(" Empty State "), createElementVNode("div", _hoisted_61, [
1855
- _cache[27] || (_cache[27] = createElementVNode("svg", {
1958
+ ])])])) : unref(fetchingAttachments) ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [createCommentVNode(" Loading State "), createElementVNode("div", _hoisted_66, [_cache[29] || (_cache[29] = createElementVNode("div", { class: "flex justify-center" }, [createElementVNode("span", { class: "loading loading-spinner loading-md" })], -1)), createElementVNode("p", _hoisted_67, toDisplayString(config.value.loadingText || "Loading attachments..."), 1)])], 2112)) : !isUploading.value ? (openBlock(), createElementBlock(Fragment, { key: 5 }, [createCommentVNode(" Empty State "), createElementVNode("div", _hoisted_68, [
1959
+ _cache[30] || (_cache[30] = createElementVNode("svg", {
1856
1960
  xmlns: "http://www.w3.org/2000/svg",
1857
1961
  class: "h-12 w-12 mx-auto mb-3 text-base-content/30",
1858
1962
  fill: "none",
@@ -1864,17 +1968,44 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1864
1968
  "stroke-width": "2",
1865
1969
  d: "M9 13h6m-3-3v6m5 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
1866
1970
  })], -1)),
1867
- createElementVNode("p", _hoisted_62, toDisplayString(config.value.emptyText || "No attachments yet"), 1),
1971
+ createElementVNode("p", _hoisted_69, toDisplayString(config.value.emptyText || "No attachments yet"), 1),
1868
1972
  createCommentVNode(" Desktop instruction "),
1869
- createElementVNode("p", _hoisted_63, toDisplayString(config.value.instructionText || "Use the drag and drop area above to add files"), 1)
1870
- ])], 2112)) : unref(attachmentsError) ? (openBlock(), createElementBlock(Fragment, { key: 6 }, [createCommentVNode(" Error State "), createElementVNode("div", _hoisted_64, [createElementVNode("p", _hoisted_65, toDisplayString(config.value.errorText || "Failed to load attachments"), 1), createElementVNode("button", {
1973
+ createElementVNode("p", _hoisted_70, toDisplayString(config.value.instructionText || "Use the drag and drop area above to add files"), 1)
1974
+ ])], 2112)) : unref(attachmentsError) ? (openBlock(), createElementBlock(Fragment, { key: 6 }, [createCommentVNode(" Error State "), createElementVNode("div", _hoisted_71, [createElementVNode("p", _hoisted_72, toDisplayString(config.value.errorText || "Failed to load attachments"), 1), createElementVNode("button", {
1871
1975
  class: "btn btn-sm btn-outline mt-2",
1872
1976
  onClick: refreshAttachments
1873
1977
  }, toDisplayString(config.value.retryText || "Try Again"), 1)])], 2112)) : createCommentVNode("v-if", true),
1978
+ createCommentVNode(" Edit Attachment Modal "),
1979
+ createElementVNode("div", { class: normalizeClass(["modal", { "modal-open": showEditModal.value }]) }, [createElementVNode("div", _hoisted_73, [
1980
+ _cache[33] || (_cache[33] = createElementVNode("h3", { class: "font-bold text-lg" }, "Edit Attachment", -1)),
1981
+ createElementVNode("div", _hoisted_74, [createElementVNode("label", _hoisted_75, [_cache[31] || (_cache[31] = createElementVNode("span", { class: "label" }, [createElementVNode("span", { class: "label-text" }, "Title")], -1)), withDirectives(createElementVNode("input", {
1982
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => editTitle.value = $event),
1983
+ type: "text",
1984
+ placeholder: "Display title (optional)",
1985
+ class: "input input-bordered w-full"
1986
+ }, null, 512), [[vModelText, editTitle.value]])]), createElementVNode("label", _hoisted_76, [_cache[32] || (_cache[32] = createElementVNode("span", { class: "label" }, [createElementVNode("span", { class: "label-text" }, "Description")], -1)), withDirectives(createElementVNode("textarea", {
1987
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => editDescription.value = $event),
1988
+ placeholder: "Description (optional)",
1989
+ class: "textarea textarea-bordered w-full",
1990
+ rows: "3"
1991
+ }, null, 512), [[vModelText, editDescription.value]])])]),
1992
+ createElementVNode("div", _hoisted_77, [createElementVNode("button", {
1993
+ class: "btn",
1994
+ onClick: closeEditModal,
1995
+ disabled: unref(isUpdatingAttachment)
1996
+ }, toDisplayString(config.value.cancelText || "Cancel"), 9, _hoisted_78), createElementVNode("button", {
1997
+ class: "btn btn-primary",
1998
+ onClick: saveEditAttachment,
1999
+ disabled: unref(isUpdatingAttachment)
2000
+ }, toDisplayString(unref(isUpdatingAttachment) ? "Saving..." : "Save"), 9, _hoisted_79)])
2001
+ ]), createElementVNode("div", {
2002
+ class: "modal-backdrop",
2003
+ onClick: closeEditModal
2004
+ })], 2),
1874
2005
  createCommentVNode(" Create Folder Modal "),
1875
2006
  createVNode(InputModal_default, {
1876
2007
  modelValue: showCreateFolderModal.value,
1877
- "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => showCreateFolderModal.value = $event),
2008
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => showCreateFolderModal.value = $event),
1878
2009
  title: config.value.createFolderTitle || "Create New Folder",
1879
2010
  label: config.value.folderNameLabel || "Folder Name",
1880
2011
  placeholder: "Enter folder name",
@@ -1891,14 +2022,14 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1891
2022
  createCommentVNode(" Delete Confirmation Modal "),
1892
2023
  createVNode(ConfirmDialog_default, {
1893
2024
  modelValue: showDeleteModal.value,
1894
- "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => showDeleteModal.value = $event),
2025
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => showDeleteModal.value = $event),
1895
2026
  title: config.value.deleteTitle || "Confirm Deletion",
1896
2027
  "confirm-text": config.value.confirmDeleteText || "Delete",
1897
2028
  "cancel-text": config.value.cancelText || "Cancel",
1898
2029
  "confirm-button-class": "btn-error",
1899
2030
  onConfirm: deleteFile
1900
2031
  }, {
1901
- message: withCtx(() => [createElementVNode("p", _hoisted_66, toDisplayString(config.value.deleteMessage || "Are you sure you want to delete this file? This action cannot be undone."), 1), fileToDelete.value ? (openBlock(), createElementBlock("div", _hoisted_67, [createElementVNode("div", _hoisted_68, [createElementVNode("div", { class: normalizeClass(["badge badge-sm", getFileTypeBadgeClass(fileToDelete.value.type)]) }, toDisplayString(getFileTypeLabel(fileToDelete.value.type)), 3), createElementVNode("span", _hoisted_69, toDisplayString(fileToDelete.value.name), 1)]), createElementVNode("div", _hoisted_70, [createElementVNode("div", null, [_cache[28] || (_cache[28] = createElementVNode("span", { class: "font-medium" }, "Size:", -1)), createTextVNode(" " + toDisplayString(formatFileSize(fileToDelete.value.size)), 1)]), createElementVNode("div", null, [_cache[29] || (_cache[29] = createElementVNode("span", { class: "font-medium" }, "Uploaded:", -1)), createTextVNode(" " + toDisplayString(formatDate(fileToDelete.value.uploadedAt)), 1)])])])) : createCommentVNode("v-if", true)]),
2032
+ message: withCtx(() => [createElementVNode("p", _hoisted_80, toDisplayString(config.value.deleteMessage || "Are you sure you want to delete this file? This action cannot be undone."), 1), fileToDelete.value ? (openBlock(), createElementBlock("div", _hoisted_81, [createElementVNode("div", _hoisted_82, [createElementVNode("div", { class: normalizeClass(["badge badge-sm", getFileTypeBadgeClass(fileToDelete.value.type)]) }, toDisplayString(getFileTypeLabel(fileToDelete.value.type)), 3), createElementVNode("span", _hoisted_83, toDisplayString(fileToDelete.value.name), 1)]), createElementVNode("div", _hoisted_84, [createElementVNode("div", null, [_cache[34] || (_cache[34] = createElementVNode("span", { class: "font-medium" }, "Size:", -1)), createTextVNode(" " + toDisplayString(formatFileSize(fileToDelete.value.size)), 1)]), createElementVNode("div", null, [_cache[35] || (_cache[35] = createElementVNode("span", { class: "font-medium" }, "Uploaded:", -1)), createTextVNode(" " + toDisplayString(formatDate(fileToDelete.value.uploadedAt)), 1)])])])) : createCommentVNode("v-if", true)]),
1902
2033
  _: 1
1903
2034
  }, 8, [
1904
2035
  "modelValue",
@@ -4629,7 +4760,7 @@ const adminRoutes = [{
4629
4760
  {
4630
4761
  path: "credit-management",
4631
4762
  name: "CreditManagement",
4632
- component: () => import("./CreditManagement-CAaf_rVj.js"),
4763
+ component: () => import("./CreditManagement-B4aHJfOo.js"),
4633
4764
  meta: {
4634
4765
  title: "Credit Management",
4635
4766
  description: "Manage customer credits and allocations",
@@ -4696,7 +4827,7 @@ const creditRoutes = [{
4696
4827
  children: [{
4697
4828
  path: creditPaths.credit_balance.path,
4698
4829
  name: creditPaths.credit_balance.name,
4699
- component: () => import("./CreditBalanceDashboard-C2QnVfjU.js"),
4830
+ component: () => import("./CreditBalanceDashboard-D370HlpF.js"),
4700
4831
  meta: {
4701
4832
  title: "Credit Balance",
4702
4833
  description: "View your current credit balance and history.",
@@ -4714,4 +4845,4 @@ const creditRoutes = [{
4714
4845
 
4715
4846
  //#endregion
4716
4847
  export { DragoncoreVue as $, userAlreadyLoggedIn as A, Auth_default as B, customerSupportTicketRowSchemaWithMetadata as C, teamFiltersSchemaWithMetadata as D, teamMemberFiltersSchemaWithMetadata as E, FieldGroup_default as F, useBuildTag as G, UnverifiedEmailBanner_default as H, FieldDisplay_default as I, Navbar_default as J, RightSidebar_default as K, Legal_default as L, SummarySection_default as M, KeyValueEditor_default as N, TeamAttachmentsTab_default as O, FileManager_default as P, AppTabNavigation_default as Q, InApp_default as R, CustomerSupportTicketList_default as S, SupportTicketTimeline_default as T, useEmailVerificationGuard as U, Admin_default as V, Sidebar_default as W, InputModal_default as X, LoginButton_default as Y, AppHeader_default as Z, ConvertToCustomerWorkflow_default as _, authPaths as a, ApproveRejectActions_default as b, useSupportTicketStatus as c, SupportTicketAttachments_default as d, CreditBalanceWidget_default as f, ConvertToInternalWorkflow_default as g, ReactivateInternalTaskWorkflow_default as h, SocialLoginButtons_default as i, timezones as j, userRoutes as k, useSupportTicketPermissions as l, adminSupportTicketRowSchemaWithMetadata as m, creditRoutes as n, authRoutes as o, StaffSupportTicketList_default as p, NotFound_default as q, adminRoutes as r, getAuthRoutes as s, creditPaths as t, adminSupportTicketFiltersSchemaWithMetadata as u, CompleteSupportTicketForm_default as v, SupportTicketStatusBadge_default as w, CustomerCreditBalance_default as x, CancelInternalTaskWorkflow_default as y, Default_default as z };
4717
- //# sourceMappingURL=src-B7oHTH_y.js.map
4848
+ //# sourceMappingURL=src-BXO0PrFd.js.map