@dragonmastery/dragoncore-vue 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -2
- package/dist/{ChangePasswordPage-Btu5lf-r.js → ChangePasswordPage-DCews8GU.js} +2 -2
- package/dist/{ChangePasswordPage-Btu5lf-r.js.map → ChangePasswordPage-DCews8GU.js.map} +1 -1
- package/dist/ChangePasswordPage-Dm5vW0nl.js +6 -0
- package/dist/CreateTeamForm-O_viMOrD.js +27 -0
- package/dist/CreateTeamMemberForm-BzwDug0x.js +27 -0
- package/dist/{CreateUserPage-Cmx8xjjv.js → CreateUserPage-B8qeBZij.js} +2 -2
- package/dist/{CreateUserPage-Cmx8xjjv.js.map → CreateUserPage-B8qeBZij.js.map} +1 -1
- package/dist/CreateUserPage-WjYDkwpb.js +6 -0
- package/dist/CreditBalanceDashboard-CBaQsjyo.js +27 -0
- package/dist/CreditManagement-Bal5mbQC.js +27 -0
- package/dist/CustomerCreateSupportTicketForm-CpnbsCqr.js +27 -0
- package/dist/CustomerSupportTicketDetailPage-DZQCplSM.js +717 -0
- package/dist/CustomerSupportTicketDetailPage-DZQCplSM.js.map +1 -0
- package/dist/CustomerSupportTicketList-CKf8Kyzu.js +27 -0
- package/dist/CustomerSupportTicketParent-BnmTFigo.js +7 -0
- package/dist/{CustomerSupportTicketParent-2mONd9kL.js → CustomerSupportTicketParent-BzY4pmBk.js} +6 -6
- package/dist/CustomerSupportTicketParent-BzY4pmBk.js.map +1 -0
- package/dist/CustomerSupportTicketSuccess-B-1n0gP-.js +27 -0
- package/dist/EditTeamForm-CKnK07nF.js +27 -0
- package/dist/EditTeamMemberForm-B8-pI6Xm.js +6 -0
- package/dist/{EditTeamMemberForm-ru4WgLz-.js → EditTeamMemberForm-CKbKomrL.js} +27 -5
- package/dist/EditTeamMemberForm-CKbKomrL.js.map +1 -0
- package/dist/EditUserPage-BG-Fkx_c.js +7 -0
- package/dist/{EditUserPage-BxJ5QvIM.js → EditUserPage-XqF25iwz.js} +4 -4
- package/dist/{EditUserPage-BxJ5QvIM.js.map → EditUserPage-XqF25iwz.js.map} +1 -1
- package/dist/ForgotPassword-CjWv2V7p.js +7 -0
- package/dist/{ForgotPassword-CqhenzUG.js → ForgotPassword-D3bjL48L.js} +2 -2
- package/dist/{ForgotPassword-CqhenzUG.js.map → ForgotPassword-D3bjL48L.js.map} +1 -1
- package/dist/LoginForm--br4Il85.js +7 -0
- package/dist/{LoginForm-_PZ51Uwe.js → LoginForm-C85U2E2r.js} +3 -3
- package/dist/{LoginForm-_PZ51Uwe.js.map → LoginForm-C85U2E2r.js.map} +1 -1
- package/dist/Logout-DHT-5Qz3.js +6 -0
- package/dist/{Logout-BMjiqHnS.js → Logout-DZuWLh0O.js} +3 -3
- package/dist/{Logout-BMjiqHnS.js.map → Logout-DZuWLh0O.js.map} +1 -1
- package/dist/ResetPassword-Q8vhelQz.js +27 -0
- package/dist/SavedFiltersPage-DhhcU1R1.js +419 -0
- package/dist/SavedFiltersPage-DhhcU1R1.js.map +1 -0
- package/dist/Signup-VZa7U-Ur.js +7 -0
- package/dist/{Signup-c2-_yMOM.js → Signup-hpV8J5cM.js} +3 -3
- package/dist/{Signup-c2-_yMOM.js.map → Signup-hpV8J5cM.js.map} +1 -1
- package/dist/StaffCreateSupportTicketForm-D5ne_W9A.js +27 -0
- package/dist/StaffSupportTicketDetailPage-DY07Ez0R.js +1928 -0
- package/dist/StaffSupportTicketDetailPage-DY07Ez0R.js.map +1 -0
- package/dist/StaffSupportTicketList-xD3FaXkS.js +27 -0
- package/dist/{StaffSupportTicketParent-Cx1buQZw.js → StaffSupportTicketParent-CWWhaM37.js} +6 -6
- package/dist/StaffSupportTicketParent-CWWhaM37.js.map +1 -0
- package/dist/StaffSupportTicketParent-Dp1G85wc.js +7 -0
- package/dist/StaffSupportTicketSuccess-D1nBsbcC.js +27 -0
- package/dist/SupportStaffPage-nd0HowtH.js +156 -0
- package/dist/SupportStaffPage-nd0HowtH.js.map +1 -0
- package/dist/SupportTicketDevLifecycleBadge-Ba-Rm6QW.js +116 -0
- package/dist/SupportTicketDevLifecycleBadge-Ba-Rm6QW.js.map +1 -0
- package/dist/SupportTicketMaintenancePage-rcJ7EfDj.js +56 -0
- package/dist/SupportTicketMaintenancePage-rcJ7EfDj.js.map +1 -0
- package/dist/TeamAttachmentsTab-DaCRkUsF.js +27 -0
- package/dist/{TeamHistoryTab-gB3H2KZv.js → TeamHistoryTab-CNelXR3Q.js} +19 -6
- package/dist/TeamHistoryTab-CNelXR3Q.js.map +1 -0
- package/dist/TeamHistoryTab-siesF93u.js +4 -0
- package/dist/TeamList-BaZfSOG4.js +27 -0
- package/dist/TeamMemberList-DOG48Y0Q.js +27 -0
- package/dist/TeamMemberParent-CTrhsG1K.js +27 -0
- package/dist/{NoteList-C0hRPNMO.js → TeamNotesTab-BhVRLG8h.js} +30 -69
- package/dist/TeamNotesTab-BhVRLG8h.js.map +1 -0
- package/dist/TeamNotesTab-Crp-afAe.js +7 -0
- package/dist/TeamParent-myjqz30R.js +27 -0
- package/dist/TimelineNoteInput-BVqF4MtZ.js +513 -0
- package/dist/TimelineNoteInput-BVqF4MtZ.js.map +1 -0
- package/dist/{InlineAttachments-I39rOvip.js → TimelineSystemEvent-D58zN850.js} +682 -136
- package/dist/TimelineSystemEvent-D58zN850.js.map +1 -0
- package/dist/UserListPage-D68AjrjM.js +4 -0
- package/dist/{UserListPage-WU56KiWj.js → UserListPage-OGYOLwlw.js} +3 -3
- package/dist/{UserListPage-WU56KiWj.js.map → UserListPage-OGYOLwlw.js.map} +1 -1
- package/dist/UserProfilePage-Q68NAGQQ.js +7 -0
- package/dist/{UserProfilePage-BtLUY1kt.js → UserProfilePage-uAIfC_NW.js} +4 -4
- package/dist/{UserProfilePage-BtLUY1kt.js.map → UserProfilePage-uAIfC_NW.js.map} +1 -1
- package/dist/ViewTeam-DRQuV1A3.js +27 -0
- package/dist/ViewTeamMember-DjbxMkB4.js +27 -0
- package/dist/{convertToLocalDateTime-D4IoNvRj.js → convertToLocalDateTime-DOSGtMn8.js} +13 -3
- package/dist/convertToLocalDateTime-DOSGtMn8.js.map +1 -0
- package/dist/{displayIdFormatter-Dz900Awr.js → displayIdFormatter-B1ZKgofu.js} +1 -1
- package/dist/{displayIdFormatter-Dz900Awr.js.map → displayIdFormatter-B1ZKgofu.js.map} +1 -1
- package/dist/extractRpcErrorMessage-C_UbKgHL.js +20 -0
- package/dist/extractRpcErrorMessage-C_UbKgHL.js.map +1 -0
- package/dist/index.d.ts +1234 -936
- package/dist/index.js +25 -40
- package/dist/{src-o5fMIo5_.js → src-wQ7pAFHx.js} +3903 -1347
- package/dist/src-wQ7pAFHx.js.map +1 -0
- package/dist/{useMutation-CFwe7H9j.js → useMutation-B4_S4Xoa.js} +3 -3
- package/dist/{useMutation-CFwe7H9j.js.map → useMutation-B4_S4Xoa.js.map} +1 -1
- package/dist/{useQuery-p7oJO7OD.js → useQuery-B7ndu5_P.js} +3 -3
- package/dist/{useQuery-p7oJO7OD.js.map → useQuery-B7ndu5_P.js.map} +1 -1
- package/dist/{useQueryCache-ByayvZgZ.js → useQueryCache-DqcDMsxb.js} +2 -2
- package/dist/{useQueryCache-ByayvZgZ.js.map → useQueryCache-DqcDMsxb.js.map} +1 -1
- package/dist/{useRpcAuth-BLlRSHy8.js → useRpcAuth-Dp2sec-X.js} +13 -4
- package/dist/useRpcAuth-Dp2sec-X.js.map +1 -0
- package/package.json +3 -3
- package/dist/ChangePasswordPage-mBBuQMkT.js +0 -6
- package/dist/CreateTeamForm-n2ut93vM.js +0 -43
- package/dist/CreateTeamMemberForm-CcH3AxNL.js +0 -43
- package/dist/CreateUserPage-CDrGuW9B.js +0 -6
- package/dist/CreditBalanceDashboard-DLz0ioP3.js +0 -43
- package/dist/CreditManagement-D3q5S-qc.js +0 -43
- package/dist/CustomerCreateSupportTicketForm-Ci7QYkG-.js +0 -43
- package/dist/CustomerEditSupportTicketForm-Dd5ZB74k.js +0 -159
- package/dist/CustomerEditSupportTicketForm-Dd5ZB74k.js.map +0 -1
- package/dist/CustomerEditSupportTicketForm-lLchVjnw.js +0 -9
- package/dist/CustomerSupportTicketAttachmentsTab-gBrVO97t.js +0 -43
- package/dist/CustomerSupportTicketCustomerNotesTab-D0jhzbOY.js +0 -8
- package/dist/CustomerSupportTicketCustomerNotesTab-D1aa9It7.js +0 -23
- package/dist/CustomerSupportTicketCustomerNotesTab-D1aa9It7.js.map +0 -1
- package/dist/CustomerSupportTicketHistoryTab-BNTf8EZq.js +0 -6
- package/dist/CustomerSupportTicketHistoryTab-CFYN_Sa4.js +0 -17
- package/dist/CustomerSupportTicketHistoryTab-CFYN_Sa4.js.map +0 -1
- package/dist/CustomerSupportTicketList-BkOzFxMP.js +0 -6
- package/dist/CustomerSupportTicketList-C2nUPawb.js +0 -166
- package/dist/CustomerSupportTicketList-C2nUPawb.js.map +0 -1
- package/dist/CustomerSupportTicketParent-2mONd9kL.js.map +0 -1
- package/dist/CustomerSupportTicketParent-N8ko1yFE.js +0 -7
- package/dist/CustomerSupportTicketSuccess-w_-9NXT4.js +0 -43
- package/dist/CustomerViewSupportTicket-CVwNH0lS.js +0 -11
- package/dist/CustomerViewSupportTicket-tZkxragu.js +0 -363
- package/dist/CustomerViewSupportTicket-tZkxragu.js.map +0 -1
- package/dist/EditTeamForm-BioqiTWE.js +0 -43
- package/dist/EditTeamMemberForm-DCq0Gsn_.js +0 -7
- package/dist/EditTeamMemberForm-ru4WgLz-.js.map +0 -1
- package/dist/EditUserPage-XOBuxUxd.js +0 -7
- package/dist/FieldsetSection-CsHN38_o.js +0 -27
- package/dist/FieldsetSection-CsHN38_o.js.map +0 -1
- package/dist/ForgotPassword-CpqvcSFg.js +0 -7
- package/dist/InlineAttachments-I39rOvip.js.map +0 -1
- package/dist/LoginForm-AM0qkfbU.js +0 -7
- package/dist/Logout-BfiBjlaH.js +0 -6
- package/dist/NoteList-C0hRPNMO.js.map +0 -1
- package/dist/NotificationEmailsPage-BjRqtW95.js +0 -141
- package/dist/NotificationEmailsPage-BjRqtW95.js.map +0 -1
- package/dist/NotificationEmailsPage-bx-9rg3x.js +0 -7
- package/dist/ResetPassword-BQLkR9TZ.js +0 -43
- package/dist/Signup-CnCcQlB8.js +0 -7
- package/dist/StaffCreateSupportTicketForm-ChVFDJdA.js +0 -43
- package/dist/StaffEditSupportTicketForm-DY1Zkf5k.js +0 -9
- package/dist/StaffEditSupportTicketForm-DuUKuIGg.js +0 -263
- package/dist/StaffEditSupportTicketForm-DuUKuIGg.js.map +0 -1
- package/dist/StaffSupportTicketAttachmentsTab-DpDXsHXP.js +0 -43
- package/dist/StaffSupportTicketCustomerNotesTab-CusqQV2-.js +0 -23
- package/dist/StaffSupportTicketCustomerNotesTab-CusqQV2-.js.map +0 -1
- package/dist/StaffSupportTicketCustomerNotesTab-rbJHJ0_V.js +0 -8
- package/dist/StaffSupportTicketHistoryTab-D24myEm3.js +0 -17
- package/dist/StaffSupportTicketHistoryTab-D24myEm3.js.map +0 -1
- package/dist/StaffSupportTicketHistoryTab-nmVma5vp.js +0 -6
- package/dist/StaffSupportTicketInternalNotesTab-D8HM--dp.js +0 -23
- package/dist/StaffSupportTicketInternalNotesTab-D8HM--dp.js.map +0 -1
- package/dist/StaffSupportTicketInternalNotesTab-DihYd5XI.js +0 -8
- package/dist/StaffSupportTicketList-DelptSmK.js +0 -43
- package/dist/StaffSupportTicketParent-BCrj3ckV.js +0 -7
- package/dist/StaffSupportTicketParent-Cx1buQZw.js.map +0 -1
- package/dist/StaffSupportTicketSuccess-BYxtY5wZ.js +0 -43
- package/dist/StaffSupportTicketWorkflowTab-BrDDBeK9.js +0 -9
- package/dist/StaffSupportTicketWorkflowTab-DmVTPzxS.js +0 -1234
- package/dist/StaffSupportTicketWorkflowTab-DmVTPzxS.js.map +0 -1
- package/dist/SupportTicketHistoryTab-CLMopA7a.js +0 -220
- package/dist/SupportTicketHistoryTab-CLMopA7a.js.map +0 -1
- package/dist/SupportTicketStatusBadge-YdZzjvkh.js +0 -163
- package/dist/SupportTicketStatusBadge-YdZzjvkh.js.map +0 -1
- package/dist/TeamAttachmentsTab-BxUpTWYh.js +0 -43
- package/dist/TeamHistoryTab-CUCT9MRG.js +0 -5
- package/dist/TeamHistoryTab-gB3H2KZv.js.map +0 -1
- package/dist/TeamList-By6pzWm5.js +0 -43
- package/dist/TeamMemberList-CYV9fWEb.js +0 -43
- package/dist/TeamMemberParent-CVvGqpxD.js +0 -43
- package/dist/TeamNotesTab-pfXTDhg6.js +0 -23
- package/dist/TeamNotesTab-pfXTDhg6.js.map +0 -1
- package/dist/TeamNotesTab-u4cDC67X.js +0 -8
- package/dist/TeamParent-BxT1KubK.js +0 -43
- package/dist/UserListPage-DsQdH2Sm.js +0 -4
- package/dist/UserProfilePage-B73JhjUu.js +0 -7
- package/dist/ViewTeam-DzX-obEl.js +0 -43
- package/dist/ViewTeamMember-PF6S_4Pb.js +0 -43
- package/dist/ZiniaContainer-C7c7Vwkh.js +0 -18
- package/dist/ZiniaContainer-C7c7Vwkh.js.map +0 -1
- package/dist/convertToLocalDateTime-D4IoNvRj.js.map +0 -1
- package/dist/creditValueFormatter-DftEzu8d.js +0 -128
- package/dist/creditValueFormatter-DftEzu8d.js.map +0 -1
- package/dist/src-o5fMIo5_.js.map +0 -1
- package/dist/useRpcAuth-BLlRSHy8.js.map +0 -1
- /package/dist/{TeamMembersTab-CpE9BaCi.js → TeamMembersTab-DTJxmb-M.js} +0 -0
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { computed, createElementBlock, defineComponent, normalizeClass, openBlock, toDisplayString } from "vue";
|
|
2
|
-
|
|
3
|
-
//#region src/slices/support_ticket/components/SupportTicketTypeBadge.vue
|
|
4
|
-
const _hoisted_1 = ["aria-label"];
|
|
5
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
6
|
-
__name: "SupportTicketTypeBadge",
|
|
7
|
-
props: {
|
|
8
|
-
type: {},
|
|
9
|
-
size: { default: "md" },
|
|
10
|
-
variant: { default: "default" }
|
|
11
|
-
},
|
|
12
|
-
setup(__props) {
|
|
13
|
-
/**
|
|
14
|
-
* SupportTicketTypeBadge - A reusable Vue component for displaying support ticket type
|
|
15
|
-
* as color-coded badges with consistent DaisyUI styling and accessibility features.
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* <SupportTicketTypeBadge :type="'BUG'" size="md" />
|
|
19
|
-
* <SupportTicketTypeBadge :type="'FEATURE_REQUEST'" size="sm" variant="outline" />
|
|
20
|
-
*/
|
|
21
|
-
const props = __props;
|
|
22
|
-
/**
|
|
23
|
-
* Configuration for each type badge
|
|
24
|
-
*/
|
|
25
|
-
const typeConfig = {
|
|
26
|
-
BUG: {
|
|
27
|
-
color: "badge-neutral",
|
|
28
|
-
text: "Bug",
|
|
29
|
-
ariaLabel: "Type: Bug report requiring fix"
|
|
30
|
-
},
|
|
31
|
-
FEATURE_REQUEST: {
|
|
32
|
-
color: "badge-neutral",
|
|
33
|
-
text: "Feature",
|
|
34
|
-
ariaLabel: "Type: New feature request"
|
|
35
|
-
},
|
|
36
|
-
IMPROVEMENT: {
|
|
37
|
-
color: "badge-neutral",
|
|
38
|
-
text: "Improvement",
|
|
39
|
-
ariaLabel: "Type: Enhancement to existing feature"
|
|
40
|
-
},
|
|
41
|
-
OPERATIONAL: {
|
|
42
|
-
color: "badge-neutral",
|
|
43
|
-
text: "Ops",
|
|
44
|
-
ariaLabel: "Type: Operational/admin work"
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
const getTypeConfig = (type) => {
|
|
48
|
-
const config$1 = typeConfig[type];
|
|
49
|
-
if (!config$1) return {
|
|
50
|
-
color: "badge-neutral",
|
|
51
|
-
text: type || "Unknown",
|
|
52
|
-
ariaLabel: `Type: ${type || "Unknown type"}`
|
|
53
|
-
};
|
|
54
|
-
return config$1;
|
|
55
|
-
};
|
|
56
|
-
const config = computed(() => getTypeConfig(props.type));
|
|
57
|
-
const badgeClasses = computed(() => {
|
|
58
|
-
const baseClasses = ["badge", "text-xs"];
|
|
59
|
-
baseClasses.push(config.value.color);
|
|
60
|
-
if (props.size === "sm") baseClasses.push("badge-sm", "text-xs");
|
|
61
|
-
else if (props.size === "lg") baseClasses.push("badge-lg", "text-sm");
|
|
62
|
-
else baseClasses.push("text-xs", "sm:text-sm");
|
|
63
|
-
if (props.variant === "outline") baseClasses.push("badge-outline");
|
|
64
|
-
return baseClasses.join(" ");
|
|
65
|
-
});
|
|
66
|
-
const displayText = computed(() => config.value.text);
|
|
67
|
-
const ariaLabel = computed(() => config.value.ariaLabel);
|
|
68
|
-
return (_ctx, _cache) => {
|
|
69
|
-
return openBlock(), createElementBlock("div", {
|
|
70
|
-
class: normalizeClass(badgeClasses.value),
|
|
71
|
-
"aria-label": ariaLabel.value,
|
|
72
|
-
role: "status"
|
|
73
|
-
}, toDisplayString(displayText.value), 11, _hoisted_1);
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
var SupportTicketTypeBadge_default = _sfc_main;
|
|
78
|
-
|
|
79
|
-
//#endregion
|
|
80
|
-
//#region src/slices/support_ticket/utils/creditValueFormatter.ts
|
|
81
|
-
/**
|
|
82
|
-
* Helper function to check if credit value is empty
|
|
83
|
-
*/
|
|
84
|
-
function isCreditValueEmpty(value) {
|
|
85
|
-
return value === null || value === void 0 || value.trim() === "";
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Core credit formatting logic
|
|
89
|
-
*/
|
|
90
|
-
function formatCreditValueCore(creditValue) {
|
|
91
|
-
if (isCreditValueEmpty(creditValue)) return "TBD";
|
|
92
|
-
const trimmed = creditValue.trim();
|
|
93
|
-
if (parseFloat(trimmed) === 0) return "0";
|
|
94
|
-
return trimmed.replace(/\.?0+$/, "");
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Formats credit value for staff views (includes internal ticket logic)
|
|
98
|
-
*
|
|
99
|
-
* @param creditValue - The credit value from the database
|
|
100
|
-
* @param approvalStatus - The approval status to determine display logic
|
|
101
|
-
* @returns Formatted string for display
|
|
102
|
-
*
|
|
103
|
-
* @example
|
|
104
|
-
* formatStaffCreditValue("5.50", "PENDING") // "5.5"
|
|
105
|
-
* formatStaffCreditValue("10", "INTERNAL") // "N/A"
|
|
106
|
-
*/
|
|
107
|
-
function formatStaffCreditValue(creditValue, approvalStatus) {
|
|
108
|
-
if (approvalStatus === "INTERNAL") return "N/A";
|
|
109
|
-
return formatCreditValueCore(creditValue);
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Formats credit value for customer views (status-based logic)
|
|
113
|
-
*
|
|
114
|
-
* @param creditValue - The credit value from the database
|
|
115
|
-
* @param status - The computed status from the customer query
|
|
116
|
-
* @returns Formatted string for display
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
* formatCustomerCreditValue("5.50", "PENDING") // "5.5"
|
|
120
|
-
* formatCustomerCreditValue("5.50", "FOLLOWUP") // "5.5"
|
|
121
|
-
*/
|
|
122
|
-
function formatCustomerCreditValue(creditValue) {
|
|
123
|
-
return formatCreditValueCore(creditValue);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
//#endregion
|
|
127
|
-
export { formatStaffCreditValue as n, SupportTicketTypeBadge_default as r, formatCustomerCreditValue as t };
|
|
128
|
-
//# sourceMappingURL=creditValueFormatter-DftEzu8d.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"creditValueFormatter-DftEzu8d.js","names":["typeConfig: Record<SupportTicketType, TypeBadgeConfig>"],"sources":["../src/slices/support_ticket/components/SupportTicketTypeBadge.vue","../src/slices/support_ticket/utils/creditValueFormatter.ts"],"sourcesContent":["<template>\n <div :class=\"badgeClasses\" :aria-label=\"ariaLabel\" role=\"status\">\n {{ displayText }}\n </div>\n</template>\n\n<script setup lang=\"ts\">\n/**\n * SupportTicketTypeBadge - A reusable Vue component for displaying support ticket type\n * as color-coded badges with consistent DaisyUI styling and accessibility features.\n *\n * @example\n * <SupportTicketTypeBadge :type=\"'BUG'\" size=\"md\" />\n * <SupportTicketTypeBadge :type=\"'FEATURE_REQUEST'\" size=\"sm\" variant=\"outline\" />\n */\nimport type { SupportTicketType } from '@dragonmastery/dragoncore-shared';\nimport { computed } from 'vue';\n\n/**\n * Props for the SupportTicketTypeBadge component\n */\ninterface Props {\n /** The support ticket type to display */\n type: SupportTicketType;\n /** Size of the badge - defaults to 'md' */\n size?: 'sm' | 'md' | 'lg';\n /** Visual variant of the badge - defaults to 'default' */\n variant?: 'default' | 'outline';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n size: 'md',\n variant: 'default',\n});\n\n/**\n * Configuration for each type badge\n */\ninterface TypeBadgeConfig {\n /** DaisyUI badge color class */\n color: string;\n /** Display text for the badge */\n text: string;\n /** Accessibility label for screen readers */\n ariaLabel: string;\n}\n\nconst typeConfig: Record<SupportTicketType, TypeBadgeConfig> = {\n BUG: {\n color: 'badge-neutral',\n text: 'Bug',\n ariaLabel: 'Type: Bug report requiring fix',\n },\n FEATURE_REQUEST: {\n color: 'badge-neutral',\n text: 'Feature',\n ariaLabel: 'Type: New feature request',\n },\n IMPROVEMENT: {\n color: 'badge-neutral',\n text: 'Improvement',\n ariaLabel: 'Type: Enhancement to existing feature',\n },\n OPERATIONAL: {\n color: 'badge-neutral',\n text: 'Ops',\n ariaLabel: 'Type: Operational/admin work',\n },\n};\n\nconst getTypeConfig = (type: SupportTicketType): TypeBadgeConfig => {\n const config = typeConfig[type];\n if (!config) {\n return {\n color: 'badge-neutral',\n text: type || 'Unknown',\n ariaLabel: `Type: ${type || 'Unknown type'}`,\n };\n }\n return config;\n};\n\nconst config = computed(() => getTypeConfig(props.type));\n\nconst badgeClasses = computed(() => {\n const baseClasses = ['badge', 'text-xs'];\n\n // Add color class\n baseClasses.push(config.value.color);\n\n // Add size class with responsive text sizing\n if (props.size === 'sm') {\n baseClasses.push('badge-sm', 'text-xs');\n } else if (props.size === 'lg') {\n baseClasses.push('badge-lg', 'text-sm');\n } else {\n // md size - responsive text\n baseClasses.push('text-xs', 'sm:text-sm');\n }\n\n // Add variant class\n if (props.variant === 'outline') {\n baseClasses.push('badge-outline');\n }\n\n return baseClasses.join(' ');\n});\n\nconst displayText = computed(() => config.value.text);\nconst ariaLabel = computed(() => config.value.ariaLabel);\n</script>\n","import type { SupportTicketApproval } from '@dragonmastery/dragoncore-shared';\n\n/**\n * Helper function to check if credit value is empty\n */\nfunction isCreditValueEmpty(value: string | null | undefined): boolean {\n return value === null || value === undefined || value.trim() === '';\n}\n\n/**\n * Core credit formatting logic\n */\nfunction formatCreditValueCore(creditValue: string | null | undefined): string {\n // Use same logic as backend formatter\n if (isCreditValueEmpty(creditValue)) {\n return 'TBD';\n }\n\n const trimmed = creditValue!.trim();\n const num = parseFloat(trimmed);\n\n // Explicit zero is valid - preserve it (same as backend)\n if (num === 0) {\n return '0';\n }\n\n // Remove trailing zeros for non-zero values (same as backend)\n // Examples: \"100.00\" -> \"100\", \"9.50\" -> \"9.5\", \"123.45\" -> \"123.45\"\n return trimmed.replace(/\\.?0+$/, '');\n}\n\n/**\n * Formats credit value for staff views (includes internal ticket logic)\n *\n * @param creditValue - The credit value from the database\n * @param approvalStatus - The approval status to determine display logic\n * @returns Formatted string for display\n *\n * @example\n * formatStaffCreditValue(\"5.50\", \"PENDING\") // \"5.5\"\n * formatStaffCreditValue(\"10\", \"INTERNAL\") // \"N/A\"\n */\nexport function formatStaffCreditValue(\n creditValue: string | null | undefined,\n approvalStatus?: SupportTicketApproval,\n): string {\n // Internal tickets don't use credits\n if (approvalStatus === 'INTERNAL') {\n return 'N/A';\n }\n\n return formatCreditValueCore(creditValue);\n}\n\n/**\n * Formats credit value for customer views (status-based logic)\n *\n * @param creditValue - The credit value from the database\n * @param status - The computed status from the customer query\n * @returns Formatted string for display\n *\n * @example\n * formatCustomerCreditValue(\"5.50\", \"PENDING\") // \"5.5\"\n * formatCustomerCreditValue(\"5.50\", \"FOLLOWUP\") // \"5.5\"\n */\nexport function formatCustomerCreditValue(creditValue: string | null | undefined): string {\n // Note: Internal tickets (status would be different) are handled by backend\n // Customers don't see internal tickets, so we don't need to check for INTERNAL here\n return formatCreditValueCore(creditValue);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EA8BA,MAAM,QAAQ;;;;EAiBd,MAAMA,aAAyD;GAC7D,KAAK;IACH,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,iBAAiB;IACf,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,aAAa;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,aAAa;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACF;EAED,MAAM,iBAAiB,SAA6C;GAClE,MAAM,WAAS,WAAW;AAC1B,OAAI,CAAC,SACH,QAAO;IACL,OAAO;IACP,MAAM,QAAQ;IACd,WAAW,SAAS,QAAQ;IAC7B;AAEH,UAAO;;EAGT,MAAM,SAAS,eAAe,cAAc,MAAM,KAAK,CAAC;EAExD,MAAM,eAAe,eAAe;GAClC,MAAM,cAAc,CAAC,SAAS,UAAU;AAGxC,eAAY,KAAK,OAAO,MAAM,MAAM;AAGpC,OAAI,MAAM,SAAS,KACjB,aAAY,KAAK,YAAY,UAAU;YAC9B,MAAM,SAAS,KACxB,aAAY,KAAK,YAAY,UAAU;OAGvC,aAAY,KAAK,WAAW,aAAa;AAI3C,OAAI,MAAM,YAAY,UACpB,aAAY,KAAK,gBAAgB;AAGnC,UAAO,YAAY,KAAK,IAAI;IAC5B;EAEF,MAAM,cAAc,eAAe,OAAO,MAAM,KAAK;EACrD,MAAM,YAAY,eAAe,OAAO,MAAM,UAAU;;uBA5GtD,mBAEM,OAAA;IAFA,OAAK,eAAE,aAAA,MAAY;IAAG,cAAY,UAAA;IAAW,MAAK;sBACnD,YAAA,MAAW,EAAA,IAAA,WAAA;;;;;;;;;;;ACGlB,SAAS,mBAAmB,OAA2C;AACrE,QAAO,UAAU,QAAQ,UAAU,UAAa,MAAM,MAAM,KAAK;;;;;AAMnE,SAAS,sBAAsB,aAAgD;AAE7E,KAAI,mBAAmB,YAAY,CACjC,QAAO;CAGT,MAAM,UAAU,YAAa,MAAM;AAInC,KAHY,WAAW,QAAQ,KAGnB,EACV,QAAO;AAKT,QAAO,QAAQ,QAAQ,UAAU,GAAG;;;;;;;;;;;;;AActC,SAAgB,uBACd,aACA,gBACQ;AAER,KAAI,mBAAmB,WACrB,QAAO;AAGT,QAAO,sBAAsB,YAAY;;;;;;;;;;;;;AAc3C,SAAgB,0BAA0B,aAAgD;AAGxF,QAAO,sBAAsB,YAAY"}
|