@escalated-dev/escalated 0.7.0 → 0.8.0

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 (181) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +36 -1
  3. package/package.json +16 -7
  4. package/src/components/ActiveChatsPanel.vue +246 -0
  5. package/src/components/ActivityTimeline.stories.js +55 -55
  6. package/src/components/ActivityTimeline.vue +83 -83
  7. package/src/components/AdminDashboard.stories.js +1423 -1095
  8. package/src/components/AgentLoadIndicator.stories.js +37 -37
  9. package/src/components/AgentLoadIndicator.vue +49 -49
  10. package/src/components/AgentPerformanceCard.vue +44 -44
  11. package/src/components/ArticleEditor.vue +82 -82
  12. package/src/components/AssigneeSelect.vue +37 -37
  13. package/src/components/AttachmentList.vue +13 -1
  14. package/src/components/AuditLogEntry.vue +95 -95
  15. package/src/components/BulkActionBar.vue +166 -166
  16. package/src/components/CategoryTree.vue +89 -89
  17. package/src/components/ChartWidget.vue +46 -46
  18. package/src/components/ChatActionBar.vue +226 -0
  19. package/src/components/ChatBubble.vue +162 -0
  20. package/src/components/ChatComposer.vue +308 -0
  21. package/src/components/ChatQueue.vue +222 -0
  22. package/src/components/ChatThread.vue +197 -0
  23. package/src/components/CollisionWarning.stories.js +30 -30
  24. package/src/components/CollisionWarning.vue +68 -68
  25. package/src/components/ConditionalFieldRules.vue +135 -135
  26. package/src/components/ContextPanel.vue +66 -66
  27. package/src/components/ContextPanelSection.vue +65 -65
  28. package/src/components/CustomFieldRenderer.vue +159 -159
  29. package/src/components/EscalatedLayout.vue +35 -6
  30. package/src/components/FileDropzone.vue +57 -57
  31. package/src/components/FollowButton.stories.js +30 -30
  32. package/src/components/FollowButton.vue +88 -88
  33. package/src/components/KeyboardShortcutHelp.vue +213 -213
  34. package/src/components/KnowledgePanel.vue +122 -122
  35. package/src/components/KpiCard.stories.js +32 -32
  36. package/src/components/KpiCard.vue +88 -88
  37. package/src/components/MacroDropdown.vue +150 -150
  38. package/src/components/MentionDropdown.vue +154 -0
  39. package/src/components/MetricComparison.vue +89 -0
  40. package/src/components/PercentileChart.vue +67 -0
  41. package/src/components/PeriodSelector.vue +98 -0
  42. package/src/components/PermissionMatrix.vue +107 -107
  43. package/src/components/PinnedNotes.vue +129 -129
  44. package/src/components/PluginSlot.vue +68 -62
  45. package/src/components/PresenceIndicator.vue +46 -2
  46. package/src/components/PriorityBadge.stories.js +33 -33
  47. package/src/components/PriorityBadge.vue +46 -46
  48. package/src/components/ReplyComposer.vue +81 -18
  49. package/src/components/ReplyThread.vue +40 -2
  50. package/src/components/ReportChart.vue +395 -0
  51. package/src/components/ReportExportButton.vue +108 -0
  52. package/src/components/SatisfactionRating.vue +180 -180
  53. package/src/components/SaveViewDialog.vue +172 -0
  54. package/src/components/SavedViewSidebar.vue +208 -0
  55. package/src/components/ScheduleEditor.vue +104 -104
  56. package/src/components/SideConversation.vue +165 -165
  57. package/src/components/SideConversationList.vue +147 -147
  58. package/src/components/SkillTagManager.vue +83 -79
  59. package/src/components/SlaComplianceChart.vue +46 -53
  60. package/src/components/SlaTimer.stories.js +35 -35
  61. package/src/components/SlaTimer.vue +62 -62
  62. package/src/components/SnoozeButton.vue +247 -0
  63. package/src/components/StatsCard.stories.js +24 -24
  64. package/src/components/StatsCard.vue +58 -58
  65. package/src/components/StatusBadge.stories.js +53 -53
  66. package/src/components/StatusBadge.vue +78 -78
  67. package/src/components/TagSelect.vue +84 -84
  68. package/src/components/TicketFilters.vue +270 -225
  69. package/src/components/TicketLinkPanel.vue +193 -193
  70. package/src/components/TicketList.vue +655 -594
  71. package/src/components/TicketMergeDialog.vue +157 -157
  72. package/src/components/TicketSplitDialog.vue +98 -0
  73. package/src/components/TotpInput.stories.js +9 -9
  74. package/src/components/TotpInput.vue +81 -81
  75. package/src/components/TwoFactorSetup.vue +113 -113
  76. package/src/components/VariableTokenInput.vue +111 -0
  77. package/src/components/WorkflowActionConfig.vue +287 -0
  78. package/src/components/WorkflowActionList.vue +350 -0
  79. package/src/components/WorkflowConditionBuilder.vue +265 -0
  80. package/src/components/WorkflowTriggerSelector.vue +125 -0
  81. package/src/composables/useChat.js +187 -0
  82. package/src/composables/useI18n.js +30 -8
  83. package/src/composables/useKeyboardShortcuts.js +46 -46
  84. package/src/composables/useMentions.js +134 -0
  85. package/src/composables/usePluginExtensions.js +159 -159
  86. package/src/composables/usePluginHooks.js +65 -65
  87. package/src/composables/useRealtime.js +182 -0
  88. package/src/defineEscalatedPlugin.js +76 -76
  89. package/src/index.js +84 -72
  90. package/src/locales/README.md +13 -0
  91. package/src/locales/ar.json +727 -0
  92. package/src/locales/de.json +678 -430
  93. package/src/locales/en.json +717 -455
  94. package/src/locales/es.json +679 -430
  95. package/src/locales/fr.json +680 -431
  96. package/src/locales/index.js +12 -2
  97. package/src/locales/it.json +727 -0
  98. package/src/locales/ja.json +727 -0
  99. package/src/locales/ko.json +727 -0
  100. package/src/locales/nl.json +727 -0
  101. package/src/locales/pl.json +727 -0
  102. package/src/locales/pt-BR.json +727 -0
  103. package/src/locales/ru.json +727 -0
  104. package/src/locales/tr.json +727 -0
  105. package/src/locales/zh-CN.json +727 -0
  106. package/src/pages/Admin/ApiTokens/Index.vue +381 -381
  107. package/src/pages/Admin/AuditLog/Index.vue +154 -154
  108. package/src/pages/Admin/BusinessHours/Form.vue +172 -172
  109. package/src/pages/Admin/BusinessHours/Index.vue +113 -113
  110. package/src/pages/Admin/CannedResponses/Index.vue +127 -127
  111. package/src/pages/Admin/Capacity/Index.vue +134 -134
  112. package/src/pages/Admin/CustomFields/Form.vue +195 -195
  113. package/src/pages/Admin/CustomFields/Index.vue +134 -134
  114. package/src/pages/Admin/CustomObjects/Form.vue +202 -202
  115. package/src/pages/Admin/CustomObjects/Index.vue +127 -127
  116. package/src/pages/Admin/CustomObjects/Records.vue +228 -228
  117. package/src/pages/Admin/Departments/Form.vue +75 -75
  118. package/src/pages/Admin/Departments/Index.vue +110 -109
  119. package/src/pages/Admin/EscalationRules/Form.vue +157 -157
  120. package/src/pages/Admin/EscalationRules/Index.vue +178 -178
  121. package/src/pages/Admin/Import/Connect.vue +0 -1
  122. package/src/pages/Admin/Import/Index.vue +1 -1
  123. package/src/pages/Admin/Import/Progress.vue +1 -1
  124. package/src/pages/Admin/KnowledgeBase/Articles/Form.vue +142 -142
  125. package/src/pages/Admin/KnowledgeBase/Articles/Index.vue +195 -195
  126. package/src/pages/Admin/KnowledgeBase/Categories/Index.vue +193 -193
  127. package/src/pages/Admin/Macros/Index.vue +448 -448
  128. package/src/pages/Admin/Plugins/Index.vue +327 -327
  129. package/src/pages/Admin/Reports/AgentDetail.vue +132 -0
  130. package/src/pages/Admin/Reports/AgentMetrics.vue +115 -115
  131. package/src/pages/Admin/Reports/AgentRanking.vue +246 -0
  132. package/src/pages/Admin/Reports/Cohorts.vue +180 -0
  133. package/src/pages/Admin/Reports/Comparison.vue +141 -0
  134. package/src/pages/Admin/Reports/CsatReport.vue +127 -127
  135. package/src/pages/Admin/Reports/Dashboard.vue +36 -21
  136. package/src/pages/Admin/Reports/ResolutionTimes.vue +164 -0
  137. package/src/pages/Admin/Reports/ResponseTimes.vue +164 -0
  138. package/src/pages/Admin/Reports/SlaReport.vue +162 -166
  139. package/src/pages/Admin/Reports/SlaTrends.vue +183 -0
  140. package/src/pages/Admin/Reports.vue +206 -206
  141. package/src/pages/Admin/Roles/Form.vue +71 -71
  142. package/src/pages/Admin/Roles/Index.vue +122 -122
  143. package/src/pages/Admin/Settings/CsatSettings.vue +165 -165
  144. package/src/pages/Admin/Settings/DataRetention.vue +182 -182
  145. package/src/pages/Admin/Settings/EmailSettings.vue +243 -243
  146. package/src/pages/Admin/Settings/Sandbox.vue +135 -135
  147. package/src/pages/Admin/Settings/SsoSettings.vue +218 -218
  148. package/src/pages/Admin/Settings/TwoFactor.vue +110 -110
  149. package/src/pages/Admin/Settings.vue +1008 -468
  150. package/src/pages/Admin/Skills/Form.vue +193 -53
  151. package/src/pages/Admin/Skills/Index.vue +105 -94
  152. package/src/pages/Admin/SlaPolicies/Form.vue +118 -118
  153. package/src/pages/Admin/SlaPolicies/Index.vue +121 -120
  154. package/src/pages/Admin/Statuses/Form.vue +114 -114
  155. package/src/pages/Admin/Statuses/Index.vue +153 -153
  156. package/src/pages/Admin/Tags/Index.vue +191 -191
  157. package/src/pages/Admin/Tickets/Index.vue +126 -91
  158. package/src/pages/Admin/Tickets/Show.vue +29 -0
  159. package/src/pages/Admin/Users/Index.vue +145 -0
  160. package/src/pages/Admin/Webhooks/DeliveryLog.vue +120 -120
  161. package/src/pages/Admin/Webhooks/Form.vue +110 -110
  162. package/src/pages/Admin/Webhooks/Index.vue +136 -136
  163. package/src/pages/Admin/Workflows/Builder.vue +207 -0
  164. package/src/pages/Admin/Workflows/Index.vue +235 -0
  165. package/src/pages/Admin/Workflows/Logs.vue +286 -0
  166. package/src/pages/Agent/TicketIndex.vue +112 -88
  167. package/src/pages/Agent/TicketShow.vue +192 -60
  168. package/src/pages/Customer/Create.vue +1 -1
  169. package/src/pages/Customer/Index.vue +26 -1
  170. package/src/pages/Customer/KnowledgeBase/Article.vue +4 -2
  171. package/src/pages/Customer/KnowledgeBase/Index.vue +151 -151
  172. package/src/pages/Customer/Show.vue +69 -63
  173. package/src/pages/Guest/Create.vue +40 -15
  174. package/src/pages/Guest/Show.vue +124 -93
  175. package/src/plugin.js +26 -1
  176. package/src/utils/mentionHighlight.js +24 -0
  177. package/src/utils/sanitizeHtml.js +78 -64
  178. package/src/widget/EscalatedWidget.vue +804 -0
  179. package/src/widget/index.js +254 -0
  180. package/src/pages/Admin/Automations/Form.vue +0 -184
  181. package/src/pages/Admin/Automations/Index.vue +0 -129
@@ -1,467 +1,729 @@
1
1
  {
2
- "nav": {
3
- "admin": "Admin",
4
- "admin_badge": "ADMIN",
5
- "agent_panel": "Agent Panel",
6
- "back_to_app": "Back to App",
7
- "my_tickets": "My Tickets",
8
- "dashboard": "Dashboard",
9
- "tickets": "Tickets",
10
- "reports": "Reports",
11
- "departments": "Departments",
12
- "sla_policies": "SLA Policies",
13
- "escalation_rules": "Escalation Rules",
14
- "tags": "Tags",
15
- "canned_responses": "Canned Responses",
16
- "macros": "Macros",
17
- "api_tokens": "API Tokens",
18
- "plugins": "Plugins",
19
- "settings": "Settings"
20
- },
21
- "status": {
22
- "open": "Open",
23
- "in_progress": "In Progress",
24
- "waiting_on_customer": "Waiting on Customer",
25
- "waiting_on_agent": "Waiting on Agent",
26
- "escalated": "Escalated",
27
- "resolved": "Resolved",
28
- "closed": "Closed",
29
- "reopened": "Reopened"
30
- },
31
- "priority": {
32
- "low": "Low",
33
- "medium": "Medium",
34
- "high": "High",
35
- "urgent": "Urgent",
36
- "critical": "Critical"
37
- },
38
- "activity": {
39
- "status_changed": "changed status",
40
- "assigned": "assigned ticket",
41
- "unassigned": "unassigned ticket",
42
- "priority_changed": "changed priority",
43
- "tag_added": "added tag",
44
- "tag_removed": "removed tag",
45
- "escalated": "escalated ticket",
46
- "sla_breached": "SLA breached",
47
- "replied": "replied",
48
- "note_added": "added note",
49
- "department_changed": "changed department",
50
- "reopened": "reopened ticket",
51
- "resolved": "resolved ticket",
52
- "closed": "closed ticket",
53
- "system": "System",
54
- "no_activity": "No activity yet.",
55
- "to": "to",
56
- "assigned_to": "assigned to"
57
- },
58
- "ticket": {
59
- "reference": "Reference",
60
- "subject": "Subject",
61
- "requester": "Requester",
62
- "status": "Status",
63
- "priority": "Priority",
64
- "assignee": "Assignee",
65
- "last_reply": "Last Reply",
66
- "unknown": "Unknown",
67
- "unassigned": "Unassigned",
68
- "no_tickets": "No tickets found.",
69
- "details": "Details",
70
- "department": "Department",
71
- "created": "Created",
72
- "activity": "Activity",
73
- "conversation": "Conversation",
74
- "by": "by",
75
- "assign_to_me": "Assign to Me",
76
- "close_ticket": "Close Ticket",
77
- "reopen": "Reopen",
78
- "all_tickets": "All Tickets",
79
- "ticket_queue": "Ticket Queue",
80
- "my_tickets": "My Tickets",
81
- "new_ticket": "New Ticket",
82
- "create_ticket": "Create Ticket",
83
- "submit_ticket": "Submit Ticket",
84
- "no_replies": "No replies yet.",
85
- "ticket_closed_no_replies": "This ticket is closed. No further replies can be added."
86
- },
87
- "bulk": {
88
- "tickets_selected": ":count ticket(s) selected",
89
- "status_placeholder": "Status...",
90
- "priority_placeholder": "Priority...",
91
- "assign_placeholder": "Assign to...",
92
- "department_placeholder": "Department...",
93
- "delete": "Delete",
94
- "deselect_all": "Deselect All"
95
- },
96
- "filter": {
97
- "search_tickets": "Search tickets...",
98
- "all_statuses": "All Statuses",
99
- "all_priorities": "All Priorities",
100
- "all_agents": "All Agents",
101
- "all_departments": "All Departments",
102
- "following": "Following"
103
- },
104
- "quick_filter": {
105
- "my_tickets": "My Tickets",
106
- "unassigned": "Unassigned",
107
- "urgent_plus": "Urgent+",
108
- "sla_breaching": "SLA Breaching",
109
- "following": "Following"
110
- },
111
- "reply": {
112
- "reply": "Reply",
113
- "internal_note": "Internal Note",
114
- "note_visibility": "This note is only visible to agents.",
115
- "placeholder": "Type your reply...",
116
- "canned_responses": "Canned responses...",
117
- "add_note": "Add Note",
118
- "send_reply": "Send Reply",
119
- "pinned": "Pinned",
120
- "unpin": "Unpin",
121
- "pin": "Pin",
122
- "write_internal_note": "Write an internal note..."
123
- },
124
- "rating": {
125
- "customer_rating": "Customer Rating",
126
- "how_was_experience": "How was your experience?",
127
- "terrible": "Terrible",
128
- "poor": "Poor",
129
- "okay": "Okay",
130
- "good": "Good",
131
- "excellent": "Excellent",
132
- "feedback_placeholder": "Any additional feedback? (optional)",
133
- "thank_you": "Thank you for your feedback!",
134
- "submit_rating": "Submit Rating",
135
- "customer_satisfaction": "Customer Satisfaction"
136
- },
137
- "keyboard": {
138
- "title": "Keyboard Shortcuts",
139
- "list_view": "List View",
140
- "detail_view": "Detail View",
141
- "global": "Global",
142
- "move_down": "Move down",
143
- "move_up": "Move up",
144
- "toggle_select": "Toggle select",
145
- "open_ticket": "Open ticket",
146
- "reply": "Reply",
147
- "internal_note": "Internal note",
148
- "change_status": "Change status",
149
- "change_priority": "Change priority",
150
- "follow_unfollow": "Follow/unfollow",
151
- "show_help": "Show this help",
152
- "esc_to_close": "Press Esc to close"
153
- },
154
- "sla": {
155
- "overdue": "Overdue",
156
- "breached": "SLA Breached",
157
- "first_response": "First Response",
158
- "resolution": "Resolution"
159
- },
160
- "follow": {
161
- "following": "Following",
162
- "follow": "Follow"
163
- },
164
- "file": {
165
- "drop_or_browse": "Drop files here or :link",
166
- "browse": "browse"
167
- },
168
- "macro": {
169
- "apply_macro": "Apply Macro",
170
- "macros": "Macros",
171
- "no_macros": "No macros available"
172
- },
173
- "form": {
174
- "name": "Name",
175
- "description": "Description",
176
- "slug": "Slug",
177
- "auto_generated": "Auto-generated if empty",
178
- "active": "Active",
179
- "update": "Update",
180
- "create": "Create",
181
- "save": "Save",
182
- "cancel": "Cancel",
183
- "edit": "Edit",
184
- "delete": "Delete",
185
- "actions": "Actions",
186
- "order": "Order",
187
- "value": "Value",
188
- "yes": "Yes",
189
- "no": "No",
190
- "confirm": "Confirm",
191
- "none": "None",
192
- "general": "General",
193
- "shared": "Shared",
194
- "private": "Private",
195
- "color": "Color",
196
- "title": "Title",
197
- "copy": "Copy",
198
- "dismiss": "Dismiss",
199
- "saved": "Saved.",
200
- "saving": "Saving...",
201
- "creating": "Creating...",
202
- "submitting": "Submitting...",
203
- "sending": "Sending...",
204
- "uploading": "Uploading...",
205
- "copied": "Copied!",
206
- "subject": "Subject",
207
- "priority": "Priority",
208
- "department": "Department",
209
- "attachments": "Attachments"
210
- },
211
- "presence": {
212
- "also_viewing": "Also viewing: :names"
213
- },
214
- "pinned_notes": {
215
- "title": "Pinned Notes",
216
- "unpin": "Unpin"
217
- },
218
- "admin": {
219
- "settings": {
220
- "title": "Settings",
221
- "general": "General",
222
- "guest_tickets": "Guest Tickets",
223
- "guest_tickets_desc": "Allow visitors to submit tickets without signing in",
224
- "allow_customer_close": "Allow Customer Close",
225
- "allow_customer_close_desc": "Let customers close their own tickets",
226
- "auto_close": "Auto-close resolved tickets after",
227
- "auto_close_desc": "Days after resolution before auto-closing (0 to disable)",
228
- "days": "days",
229
- "limits": "Limits",
230
- "max_attachments": "Max attachments per reply",
231
- "max_attachment_size": "Max attachment size",
232
- "tickets": "Tickets",
233
- "reference_prefix": "Reference Prefix",
234
- "reference_prefix_desc": "Prefix for ticket references (e.g. ESC produces ESC-00001)",
235
- "inbound_email": "Inbound Email",
236
- "inbound_email_desc": "Allow creating and replying to tickets via email",
237
- "email_provider": "Email Provider",
238
- "email_provider_desc": "How inbound emails are received",
239
- "support_email": "Support Email Address",
240
- "support_email_desc": "The email address customers will send emails to (e.g. support@example.com)",
241
- "signing_key": "Signing Key",
242
- "webhook_url": "Webhook URL",
243
- "mailgun_webhook_desc": "Configure this URL in your Mailgun dashboard",
244
- "inbound_token": "Inbound Token",
245
- "postmark_webhook_desc": "Configure this URL in your Postmark server settings",
246
- "region": "Region",
247
- "topic_arn": "Topic ARN",
248
- "ses_webhook_desc": "Configure this URL as your SNS subscription endpoint",
249
- "host": "Host",
250
- "port": "Port",
251
- "encryption": "Encryption",
252
- "username": "Username",
253
- "password": "Password",
254
- "mailbox": "Mailbox",
255
- "save_settings": "Save Settings"
2
+ "nav": {
3
+ "admin": "Admin",
4
+ "admin_badge": "ADMIN",
5
+ "agent_panel": "Agent Panel",
6
+ "back_to_app": "Back to App",
7
+ "my_tickets": "My Tickets",
8
+ "dashboard": "Dashboard",
9
+ "tickets": "Tickets",
10
+ "reports": "Reports",
11
+ "departments": "Departments",
12
+ "sla_policies": "SLA Policies",
13
+ "escalation_rules": "Escalation Rules",
14
+ "tags": "Tags",
15
+ "canned_responses": "Canned Responses",
16
+ "macros": "Macros",
17
+ "api_tokens": "API Tokens",
18
+ "plugins": "Plugins",
19
+ "settings": "Settings"
256
20
  },
257
- "reports": {
258
- "title": "Reports",
259
- "last_days": "Last :count days",
260
- "total_tickets": "Total Tickets",
261
- "resolved": "Resolved",
262
- "avg_first_response": "Avg First Response",
263
- "sla_breaches": "SLA Breaches",
264
- "by_status": "By Status",
265
- "by_priority": "By Priority",
266
- "no_data": "No ticket data for this period",
267
- "no_ratings": "No ratings for this period",
268
- "ratings_count": "(:count ratings)"
21
+ "status": {
22
+ "open": "Open",
23
+ "in_progress": "In Progress",
24
+ "waiting_on_customer": "Waiting on Customer",
25
+ "waiting_on_agent": "Waiting on Agent",
26
+ "escalated": "Escalated",
27
+ "resolved": "Resolved",
28
+ "closed": "Closed",
29
+ "reopened": "Reopened"
269
30
  },
270
- "departments": {
271
- "title": "Departments",
272
- "add": "Add Department",
273
- "edit_title": "Edit Department",
274
- "new_title": "New Department",
275
- "tickets": "Tickets",
276
- "agents": "Agents",
277
- "no_departments": "No departments yet",
278
- "no_departments_desc": "Create your first department to organize tickets",
279
- "confirm_delete": "Delete this department?"
31
+ "priority": {
32
+ "low": "Low",
33
+ "medium": "Medium",
34
+ "high": "High",
35
+ "urgent": "Urgent",
36
+ "critical": "Critical"
280
37
  },
281
- "sla_policies": {
282
- "title": "SLA Policies",
283
- "add": "Add Policy",
284
- "edit_title": "Edit SLA Policy",
285
- "new_title": "New SLA Policy",
286
- "default": "Default",
287
- "business_hours": "Business Hours",
288
- "business_hours_only": "Business hours only",
289
- "default_policy": "Default policy",
290
- "first_response_hours": "First Response Hours (by priority)",
291
- "resolution_hours": "Resolution Hours (by priority)",
292
- "no_policies": "No SLA policies yet",
293
- "no_policies_desc": "Define response and resolution time targets",
294
- "confirm_delete": "Delete this SLA policy?"
38
+ "activity": {
39
+ "status_changed": "changed status",
40
+ "assigned": "assigned ticket",
41
+ "unassigned": "unassigned ticket",
42
+ "priority_changed": "changed priority",
43
+ "tag_added": "added tag",
44
+ "tag_removed": "removed tag",
45
+ "escalated": "escalated ticket",
46
+ "sla_breached": "SLA breached",
47
+ "replied": "replied",
48
+ "note_added": "added note",
49
+ "department_changed": "changed department",
50
+ "reopened": "reopened ticket",
51
+ "resolved": "resolved ticket",
52
+ "closed": "closed ticket",
53
+ "system": "System",
54
+ "no_activity": "No activity yet.",
55
+ "to": "to",
56
+ "assigned_to": "assigned to"
295
57
  },
296
- "escalation_rules": {
297
- "title": "Escalation Rules",
298
- "add": "Add Rule",
299
- "edit_title": "Edit Escalation Rule",
300
- "new_title": "New Escalation Rule",
301
- "trigger": "Trigger",
302
- "trigger_type": "Trigger Type",
303
- "time_based": "Time Based",
304
- "sla_breach": "SLA Breach",
305
- "priority_based": "Priority Based",
306
- "conditions": "Conditions",
307
- "add_short": "+ Add",
308
- "status": "Status",
309
- "priority": "Priority",
310
- "assignment": "Assignment",
311
- "age_hours": "Age (hours)",
312
- "no_response_hours": "No Response (hours)",
313
- "sla_breached": "SLA Breached",
314
- "escalate": "Escalate",
315
- "change_priority": "Change Priority",
316
- "assign_to": "Assign To",
317
- "change_department": "Change Department",
318
- "no_rules": "No escalation rules yet",
319
- "no_rules_desc": "Set up automatic escalation for overdue tickets",
320
- "confirm_delete": "Delete this escalation rule?"
58
+ "ticket": {
59
+ "reference": "Reference",
60
+ "subject": "Subject",
61
+ "requester": "Requester",
62
+ "status": "Status",
63
+ "priority": "Priority",
64
+ "assignee": "Assignee",
65
+ "last_reply": "Last Reply",
66
+ "unknown": "Unknown",
67
+ "unassigned": "Unassigned",
68
+ "no_tickets": "No tickets found.",
69
+ "details": "Details",
70
+ "department": "Department",
71
+ "created": "Created",
72
+ "activity": "Activity",
73
+ "conversation": "Conversation",
74
+ "by": "by",
75
+ "assign_to_me": "Assign to Me",
76
+ "close_ticket": "Close Ticket",
77
+ "reopen": "Reopen",
78
+ "all_tickets": "All Tickets",
79
+ "ticket_queue": "Ticket Queue",
80
+ "my_tickets": "My Tickets",
81
+ "new_ticket": "New Ticket",
82
+ "create_ticket": "Create Ticket",
83
+ "submit_ticket": "Submit Ticket",
84
+ "no_replies": "No replies yet.",
85
+ "ticket_closed_no_replies": "This ticket is closed. No further replies can be added."
321
86
  },
322
- "canned_responses": {
323
- "title": "Canned Responses",
324
- "add": "Add Response",
325
- "title_placeholder": "Title",
326
- "body_placeholder": "Response body...",
327
- "category_placeholder": "Category (optional)",
328
- "no_responses": "No canned responses yet",
329
- "no_responses_desc": "Create reusable templates for common replies",
330
- "confirm_delete": "Delete this canned response?"
87
+ "bulk": {
88
+ "tickets_selected": ":count ticket(s) selected",
89
+ "status_placeholder": "Status...",
90
+ "priority_placeholder": "Priority...",
91
+ "assign_placeholder": "Assign to...",
92
+ "department_placeholder": "Department...",
93
+ "delete": "Delete",
94
+ "deselect_all": "Deselect All"
331
95
  },
332
- "tags": {
333
- "title": "Tags",
334
- "add": "Add Tag",
335
- "no_tags": "No tags yet",
336
- "no_tags_desc": "Create tags to categorize and filter tickets",
337
- "confirm_delete": "Delete this tag?"
96
+ "filter": {
97
+ "search_tickets": "Search tickets...",
98
+ "all_statuses": "All Statuses",
99
+ "all_priorities": "All Priorities",
100
+ "all_agents": "All Agents",
101
+ "all_departments": "All Departments",
102
+ "following": "Following"
338
103
  },
339
- "macros": {
340
- "title": "Macros",
341
- "subtitle": "Macros automate repetitive actions on tickets.",
342
- "create_macro": "Create Macro",
343
- "update_macro": "Update Macro",
344
- "shared_label": "Shared with all agents",
345
- "add_action": "+ Add Action",
346
- "no_actions": "No actions yet. Add actions to define what this macro does.",
347
- "set_status": "Set Status",
348
- "set_priority": "Set Priority",
349
- "assign_to": "Assign To",
350
- "add_tags": "Add Tags",
351
- "move_to_department": "Move to Department",
352
- "send_reply": "Send Reply",
353
- "add_internal_note": "Add Internal Note",
354
- "select_status": "Select status...",
355
- "select_priority": "Select priority...",
356
- "agent_placeholder": "Agent ID or email",
357
- "tags_placeholder": "Comma-separated tag names",
358
- "department_placeholder": "Department ID or name",
359
- "reply_placeholder": "Reply message...",
360
- "note_placeholder": "Note content...",
361
- "no_macros": "No macros yet",
362
- "no_macros_desc": "Create macros to automate repetitive ticket actions",
363
- "creator": "Creator",
364
- "confirm_delete": "Delete this macro? This cannot be undone."
104
+ "quick_filter": {
105
+ "my_tickets": "My Tickets",
106
+ "unassigned": "Unassigned",
107
+ "urgent_plus": "Urgent+",
108
+ "sla_breaching": "SLA Breaching",
109
+ "following": "Following"
365
110
  },
366
- "api_tokens": {
367
- "title": "API Tokens",
368
- "subtitle": "Manage API tokens for desktop apps and external integrations.",
369
- "create_token": "Create Token",
370
- "api_disabled": "The REST API is currently disabled. Set ESCALATED_API_ENABLED=true in your .env to enable it.",
371
- "token_created": "Token created! Copy it now — it won't be shown again.",
372
- "new_token": "New API Token",
373
- "token_name": "Token Name",
374
- "token_name_placeholder": "e.g. Desktop App - Work Laptop",
375
- "user": "User",
376
- "select_user": "Select user...",
377
- "abilities": "Abilities",
378
- "expires_in": "Expires In (days)",
379
- "no_expiration": "Leave empty for no expiration",
380
- "last_used": "Last Used",
381
- "expires": "Expires",
382
- "never": "Never",
383
- "expired": "Expired",
384
- "revoke": "Revoke",
385
- "no_tokens": "No API tokens created yet.",
386
- "confirm_revoke": "Are you sure you want to revoke this token? This cannot be undone."
111
+ "reply": {
112
+ "reply": "Reply",
113
+ "internal_note": "Internal Note",
114
+ "note_visibility": "This note is only visible to agents.",
115
+ "placeholder": "Type your reply...",
116
+ "canned_responses": "Canned responses...",
117
+ "add_note": "Add Note",
118
+ "send_reply": "Send Reply",
119
+ "pinned": "Pinned",
120
+ "unpin": "Unpin",
121
+ "pin": "Pin",
122
+ "write_internal_note": "Write an internal note..."
387
123
  },
388
- "plugins": {
389
- "title": "Plugins",
390
- "upload": "Upload Plugin",
391
- "plugin_zip": "Plugin ZIP File",
392
- "installed": "Installed Plugins",
393
- "no_plugins": "No plugins installed",
394
- "no_plugins_alt": "No plugins installed yet.",
395
- "no_plugins_desc": "Upload a plugin ZIP to extend Escalated with custom functionality.",
396
- "active": "Active",
397
- "inactive": "Inactive",
398
- "installed_date": "Installed :date",
399
- "menu_items": ":count menu item(s)",
400
- "widgets": ":count widget(s)",
401
- "page_components": ":count page component(s)",
402
- "confirm_delete": "Are you sure you want to delete this plugin? This cannot be undone."
124
+ "rating": {
125
+ "customer_rating": "Customer Rating",
126
+ "how_was_experience": "How was your experience?",
127
+ "terrible": "Terrible",
128
+ "poor": "Poor",
129
+ "okay": "Okay",
130
+ "good": "Good",
131
+ "excellent": "Excellent",
132
+ "feedback_placeholder": "Any additional feedback? (optional)",
133
+ "thank_you": "Thank you for your feedback!",
134
+ "submit_rating": "Submit Rating",
135
+ "customer_satisfaction": "Customer Satisfaction"
136
+ },
137
+ "keyboard": {
138
+ "title": "Keyboard Shortcuts",
139
+ "list_view": "List View",
140
+ "detail_view": "Detail View",
141
+ "global": "Global",
142
+ "move_down": "Move down",
143
+ "move_up": "Move up",
144
+ "toggle_select": "Toggle select",
145
+ "open_ticket": "Open ticket",
146
+ "reply": "Reply",
147
+ "internal_note": "Internal note",
148
+ "change_status": "Change status",
149
+ "change_priority": "Change priority",
150
+ "follow_unfollow": "Follow/unfollow",
151
+ "show_help": "Show this help",
152
+ "esc_to_close": "Press Esc to close"
153
+ },
154
+ "sla": {
155
+ "overdue": "Overdue",
156
+ "breached": "SLA Breached",
157
+ "first_response": "First Response",
158
+ "resolution": "Resolution"
159
+ },
160
+ "follow": {
161
+ "following": "Following",
162
+ "follow": "Follow"
163
+ },
164
+ "file": {
165
+ "drop_or_browse": "Drop files here or :link",
166
+ "browse": "browse"
167
+ },
168
+ "macro": {
169
+ "apply_macro": "Apply Macro",
170
+ "macros": "Macros",
171
+ "no_macros": "No macros available"
172
+ },
173
+ "form": {
174
+ "name": "Name",
175
+ "description": "Description",
176
+ "slug": "Slug",
177
+ "auto_generated": "Auto-generated if empty",
178
+ "active": "Active",
179
+ "update": "Update",
180
+ "create": "Create",
181
+ "save": "Save",
182
+ "cancel": "Cancel",
183
+ "edit": "Edit",
184
+ "delete": "Delete",
185
+ "actions": "Actions",
186
+ "order": "Order",
187
+ "value": "Value",
188
+ "yes": "Yes",
189
+ "no": "No",
190
+ "confirm": "Confirm",
191
+ "none": "None",
192
+ "general": "General",
193
+ "shared": "Shared",
194
+ "private": "Private",
195
+ "color": "Color",
196
+ "title": "Title",
197
+ "copy": "Copy",
198
+ "dismiss": "Dismiss",
199
+ "saved": "Saved.",
200
+ "saving": "Saving...",
201
+ "creating": "Creating...",
202
+ "submitting": "Submitting...",
203
+ "sending": "Sending...",
204
+ "uploading": "Uploading...",
205
+ "copied": "Copied!",
206
+ "subject": "Subject",
207
+ "priority": "Priority",
208
+ "department": "Department",
209
+ "attachments": "Attachments"
210
+ },
211
+ "presence": {
212
+ "also_viewing": "Also viewing: :names"
213
+ },
214
+ "pinned_notes": {
215
+ "title": "Pinned Notes",
216
+ "unpin": "Unpin"
217
+ },
218
+ "admin": {
219
+ "settings": {
220
+ "title": "Settings",
221
+ "general": "General",
222
+ "guest_tickets": "Guest Tickets",
223
+ "guest_tickets_desc": "Allow visitors to submit tickets without signing in",
224
+ "allow_customer_close": "Allow Customer Close",
225
+ "allow_customer_close_desc": "Let customers close their own tickets",
226
+ "auto_close": "Auto-close resolved tickets after",
227
+ "auto_close_desc": "Days after resolution before auto-closing (0 to disable)",
228
+ "days": "days",
229
+ "limits": "Limits",
230
+ "max_attachments": "Max attachments per reply",
231
+ "max_attachment_size": "Max attachment size",
232
+ "tickets": "Tickets",
233
+ "reference_prefix": "Reference Prefix",
234
+ "reference_prefix_desc": "Prefix for ticket references (e.g. ESC produces ESC-00001)",
235
+ "inbound_email": "Inbound Email",
236
+ "inbound_email_desc": "Allow creating and replying to tickets via email",
237
+ "email_provider": "Email Provider",
238
+ "email_provider_desc": "How inbound emails are received",
239
+ "support_email": "Support Email Address",
240
+ "support_email_desc": "The email address customers will send emails to (e.g. support@example.com)",
241
+ "signing_key": "Signing Key",
242
+ "webhook_url": "Webhook URL",
243
+ "mailgun_webhook_desc": "Configure this URL in your Mailgun dashboard",
244
+ "inbound_token": "Inbound Token",
245
+ "postmark_webhook_desc": "Configure this URL in your Postmark server settings",
246
+ "region": "Region",
247
+ "topic_arn": "Topic ARN",
248
+ "ses_webhook_desc": "Configure this URL as your SNS subscription endpoint",
249
+ "host": "Host",
250
+ "port": "Port",
251
+ "encryption": "Encryption",
252
+ "username": "Username",
253
+ "password": "Password",
254
+ "mailbox": "Mailbox",
255
+ "save_settings": "Save Settings"
256
+ },
257
+ "reports": {
258
+ "title": "Reports",
259
+ "last_days": "Last :count days",
260
+ "total_tickets": "Total Tickets",
261
+ "resolved": "Resolved",
262
+ "avg_first_response": "Avg First Response",
263
+ "sla_breaches": "SLA Breaches",
264
+ "by_status": "By Status",
265
+ "by_priority": "By Priority",
266
+ "no_data": "No ticket data for this period",
267
+ "no_ratings": "No ratings for this period",
268
+ "ratings_count": "(:count ratings)",
269
+ "advanced_reports": "Advanced Reports",
270
+ "sla_trends": "SLA Breach Trends",
271
+ "response_times": "First Response Time Analysis",
272
+ "resolution_times": "Resolution Time Analysis",
273
+ "agent_ranking": "Agent Performance Rankings",
274
+ "agent_detail": "Agent Deep-Dive",
275
+ "cohorts": "Cohort Analysis",
276
+ "comparison": "Period Comparison",
277
+ "overview": "Overview",
278
+ "agents": "Agents",
279
+ "sla": "SLA",
280
+ "csat": "CSAT",
281
+ "export": "Export",
282
+ "export_csv": "Export as CSV",
283
+ "export_json": "Export as JSON",
284
+ "period_custom": "Custom",
285
+ "period_apply": "Apply",
286
+ "period_start": "Start",
287
+ "period_end": "End",
288
+ "total_breaches": "Total Breaches",
289
+ "breach_rate": "Breach Rate",
290
+ "frt_breaches": "FRT Breaches",
291
+ "resolution_breaches_label": "Resolution Breaches",
292
+ "breach_count_over_time": "Breach Count Over Time",
293
+ "frt_vs_resolution": "First Response vs Resolution Breaches",
294
+ "breach_by_department": "Breach Rate by Department",
295
+ "breach_by_priority": "Breach Rate by Priority",
296
+ "at_risk": "At Risk - Approaching SLA Breach",
297
+ "critical": "Critical",
298
+ "warning": "Warning",
299
+ "watch": "Watch",
300
+ "hours_remaining": ":count h remaining",
301
+ "no_at_risk": "No tickets currently at risk of breaching SLA.",
302
+ "no_at_risk": "No tickets currently at risk.",
303
+ "avg_frt": "Average FRT",
304
+ "median_frt": "Median FRT",
305
+ "p90_frt": "P90 FRT",
306
+ "under_target": "Under Target",
307
+ "frt_distribution": "FRT Distribution",
308
+ "avg_frt_trend": "Average FRT Trend",
309
+ "frt_by_department": "FRT by Department",
310
+ "frt_by_priority": "FRT by Priority",
311
+ "frt_by_agent": "FRT by Agent",
312
+ "avg_resolution": "Avg Resolution",
313
+ "median_resolution": "Median Resolution",
314
+ "p90_resolution": "P90 Resolution",
315
+ "resolution_distribution": "Resolution Time Distribution",
316
+ "resolution_trend": "Avg Resolution Time Trend",
317
+ "resolution_by_department": "Resolution by Department",
318
+ "resolution_by_channel": "Resolution by Channel",
319
+ "resolution_by_agent": "Resolution Time by Agent",
320
+ "composite_score": "Score",
321
+ "resolution_rate": "Resolution %",
322
+ "volume": "Volume",
323
+ "trend": "Trend",
324
+ "top_performers": "Top Performers",
325
+ "needs_attention": "Needs Attention",
326
+ "back_to_rankings": "Back to Rankings",
327
+ "response_percentiles": "Response Time Percentiles",
328
+ "productivity": "Productivity (Replies & Resolutions per Day)",
329
+ "productivity": "Productivity",
330
+ "workload_over_time": "Workload Over Time",
331
+ "csat_breakdown": "CSAT Breakdown",
332
+ "by_tag": "By Tag",
333
+ "by_department": "By Department",
334
+ "by_channel": "By Channel",
335
+ "by_type": "By Type",
336
+ "no_cohort_data": "No data for this cohort type.",
337
+ "current_period": "Current Period",
338
+ "previous_period": "Previous Period",
339
+ "vs_previous": "vs previous period",
340
+ "pct_change": "% change",
341
+ "sla_compliance": "SLA Compliance",
342
+ "no_agent_data": "No agent data for this period.",
343
+ "avg": "Avg",
344
+ "median": "Median",
345
+ "agent": "Agent",
346
+ "back": "Back"
347
+ },
348
+ "departments": {
349
+ "title": "Departments",
350
+ "add": "Add Department",
351
+ "edit_title": "Edit Department",
352
+ "new_title": "New Department",
353
+ "tickets": "Tickets",
354
+ "agents": "Agents",
355
+ "no_departments": "No departments yet",
356
+ "no_departments_desc": "Create your first department to organize tickets",
357
+ "confirm_delete": "Delete this department?"
358
+ },
359
+ "sla_policies": {
360
+ "title": "SLA Policies",
361
+ "add": "Add Policy",
362
+ "edit_title": "Edit SLA Policy",
363
+ "new_title": "New SLA Policy",
364
+ "default": "Default",
365
+ "business_hours": "Business Hours",
366
+ "business_hours_only": "Business hours only",
367
+ "default_policy": "Default policy",
368
+ "first_response_hours": "First Response Hours (by priority)",
369
+ "resolution_hours": "Resolution Hours (by priority)",
370
+ "no_policies": "No SLA policies yet",
371
+ "no_policies_desc": "Define response and resolution time targets",
372
+ "confirm_delete": "Delete this SLA policy?"
373
+ },
374
+ "escalation_rules": {
375
+ "title": "Escalation Rules",
376
+ "add": "Add Rule",
377
+ "edit_title": "Edit Escalation Rule",
378
+ "new_title": "New Escalation Rule",
379
+ "trigger": "Trigger",
380
+ "trigger_type": "Trigger Type",
381
+ "time_based": "Time Based",
382
+ "sla_breach": "SLA Breach",
383
+ "priority_based": "Priority Based",
384
+ "conditions": "Conditions",
385
+ "add_short": "+ Add",
386
+ "status": "Status",
387
+ "priority": "Priority",
388
+ "assignment": "Assignment",
389
+ "age_hours": "Age (hours)",
390
+ "no_response_hours": "No Response (hours)",
391
+ "sla_breached": "SLA Breached",
392
+ "escalate": "Escalate",
393
+ "change_priority": "Change Priority",
394
+ "assign_to": "Assign To",
395
+ "change_department": "Change Department",
396
+ "no_rules": "No escalation rules yet",
397
+ "no_rules_desc": "Set up automatic escalation for overdue tickets",
398
+ "confirm_delete": "Delete this escalation rule?"
399
+ },
400
+ "canned_responses": {
401
+ "title": "Canned Responses",
402
+ "add": "Add Response",
403
+ "title_placeholder": "Title",
404
+ "body_placeholder": "Response body...",
405
+ "category_placeholder": "Category (optional)",
406
+ "no_responses": "No canned responses yet",
407
+ "no_responses_desc": "Create reusable templates for common replies",
408
+ "confirm_delete": "Delete this canned response?"
409
+ },
410
+ "tags": {
411
+ "title": "Tags",
412
+ "add": "Add Tag",
413
+ "no_tags": "No tags yet",
414
+ "no_tags_desc": "Create tags to categorize and filter tickets",
415
+ "confirm_delete": "Delete this tag?"
416
+ },
417
+ "macros": {
418
+ "title": "Macros",
419
+ "subtitle": "Macros automate repetitive actions on tickets.",
420
+ "create_macro": "Create Macro",
421
+ "update_macro": "Update Macro",
422
+ "shared_label": "Shared with all agents",
423
+ "add_action": "+ Add Action",
424
+ "no_actions": "No actions yet. Add actions to define what this macro does.",
425
+ "set_status": "Set Status",
426
+ "set_priority": "Set Priority",
427
+ "assign_to": "Assign To",
428
+ "add_tags": "Add Tags",
429
+ "move_to_department": "Move to Department",
430
+ "send_reply": "Send Reply",
431
+ "add_internal_note": "Add Internal Note",
432
+ "select_status": "Select status...",
433
+ "select_priority": "Select priority...",
434
+ "agent_placeholder": "Agent ID or email",
435
+ "tags_placeholder": "Comma-separated tag names",
436
+ "department_placeholder": "Department ID or name",
437
+ "reply_placeholder": "Reply message...",
438
+ "note_placeholder": "Note content...",
439
+ "no_macros": "No macros yet",
440
+ "no_macros_desc": "Create macros to automate repetitive ticket actions",
441
+ "creator": "Creator",
442
+ "confirm_delete": "Delete this macro? This cannot be undone."
443
+ },
444
+ "api_tokens": {
445
+ "title": "API Tokens",
446
+ "subtitle": "Manage API tokens for desktop apps and external integrations.",
447
+ "create_token": "Create Token",
448
+ "api_disabled": "The REST API is currently disabled. Set ESCALATED_API_ENABLED=true in your .env to enable it.",
449
+ "token_created": "Token created! Copy it now — it won't be shown again.",
450
+ "new_token": "New API Token",
451
+ "token_name": "Token Name",
452
+ "token_name_placeholder": "e.g. Desktop App - Work Laptop",
453
+ "user": "User",
454
+ "select_user": "Select user...",
455
+ "abilities": "Abilities",
456
+ "expires_in": "Expires In (days)",
457
+ "no_expiration": "Leave empty for no expiration",
458
+ "last_used": "Last Used",
459
+ "expires": "Expires",
460
+ "never": "Never",
461
+ "expired": "Expired",
462
+ "revoke": "Revoke",
463
+ "no_tokens": "No API tokens created yet.",
464
+ "confirm_revoke": "Are you sure you want to revoke this token? This cannot be undone."
465
+ },
466
+ "plugins": {
467
+ "title": "Plugins",
468
+ "upload": "Upload Plugin",
469
+ "plugin_zip": "Plugin ZIP File",
470
+ "installed": "Installed Plugins",
471
+ "no_plugins": "No plugins installed",
472
+ "no_plugins_alt": "No plugins installed yet.",
473
+ "no_plugins_desc": "Upload a plugin ZIP to extend Escalated with custom functionality.",
474
+ "active": "Active",
475
+ "inactive": "Inactive",
476
+ "installed_date": "Installed :date",
477
+ "menu_items": ":count menu item(s)",
478
+ "widgets": ":count widget(s)",
479
+ "page_components": ":count page component(s)",
480
+ "confirm_delete": "Are you sure you want to delete this plugin? This cannot be undone."
481
+ }
482
+ },
483
+ "import": {
484
+ "title": "Import Data",
485
+ "description": "Migrate tickets, contacts, and history from another helpdesk platform.",
486
+ "no_adapters": "No import adapters installed.",
487
+ "connect": "Connect to {platform}",
488
+ "test_connection": "Test Connection",
489
+ "testing": "Testing...",
490
+ "connected": "Connected successfully",
491
+ "field_mapping": "Field Mapping",
492
+ "skip_entity": "Skip importing {type}",
493
+ "review": "Review Import",
494
+ "start": "Start Import",
495
+ "starting": "Starting...",
496
+ "progress": "Import Progress",
497
+ "pause": "Pause",
498
+ "resume": "Resume",
499
+ "cancel": "Cancel",
500
+ "paused": "Import paused.",
501
+ "resumed": "Import resumed.",
502
+ "cancelled": "Import cancelled.",
503
+ "completed": "Import completed successfully.",
504
+ "history": "Import History",
505
+ "suppression_notice": "Notifications and automations are suppressed during import.",
506
+ "recent_errors": "Recent Errors"
507
+ },
508
+ "agent": {
509
+ "dashboard": "Agent Dashboard",
510
+ "open_tickets": "Open Tickets",
511
+ "my_assigned": "My Assigned",
512
+ "unassigned": "Unassigned",
513
+ "sla_breached": "SLA Breached",
514
+ "resolved_today": "Resolved Today",
515
+ "needs_attention": "Needs Attention",
516
+ "sla_breaching": "SLA Breaching",
517
+ "unassigned_urgent": "Unassigned Urgent",
518
+ "recent_tickets": "Recent Tickets",
519
+ "no_recent_tickets": "No recent tickets",
520
+ "my_performance": "My Performance",
521
+ "resolved_this_week": "Resolved This Week"
522
+ },
523
+ "guest": {
524
+ "submit_title": "Submit a Ticket",
525
+ "submit_heading": "Submit a Support Ticket",
526
+ "submit_desc": "No account needed. We'll give you a link to track your ticket.",
527
+ "sign_in_link": "Already have an account? Sign in",
528
+ "your_name": "Your Name",
529
+ "email_address": "Email Address",
530
+ "bookmark_title": "Bookmark this page",
531
+ "bookmark_desc": "This is your private link to view and reply to this ticket.",
532
+ "copy_link": "Copy Link",
533
+ "write_reply": "Write your reply..."
534
+ },
535
+ "customer": {
536
+ "replies": "Replies",
537
+ "reply": "Reply"
538
+ },
539
+ "chat": {
540
+ "live": "Live",
541
+ "chat_with_us": "Chat with us",
542
+ "start_chat": "Start Chat",
543
+ "end_chat": "End Chat",
544
+ "end_confirm": "End this chat?",
545
+ "transfer": "Transfer",
546
+ "typing": ":name is typing...",
547
+ "chatting_with": "You're chatting with :name",
548
+ "no_agents": "No agents available",
549
+ "queue_position": "You're #:position in queue",
550
+ "placeholder": "Type a message...",
551
+ "note": "Note",
552
+ "empty_state": "Chat started — waiting for messages",
553
+ "new_messages": "New messages",
554
+ "active_chats": "Active Chats",
555
+ "no_active_chats": "No active chats",
556
+ "open_panel": "Open chat panel",
557
+ "close_panel": "Close chat panel",
558
+ "no_chats_waiting": "No chats waiting",
559
+ "customer": "Customer",
560
+ "department": "Department",
561
+ "first_message": "First Message",
562
+ "wait_time": "Wait Time",
563
+ "accept": "Accept",
564
+ "agents": "Agents",
565
+ "departments": "Departments",
566
+ "how_was_experience": "How was your experience?",
567
+ "start_new_chat": "Start New Chat",
568
+ "close": "Close",
569
+ "chat_ended": "Chat Ended",
570
+ "thank_you": "Thank you for your feedback!",
571
+ "submit_rating": "Submit Rating",
572
+ "live_chats": "Live Chats"
573
+ },
574
+ "common": {
575
+ "change_status": "Change Status...",
576
+ "change_priority": "Change Priority...",
577
+ "kb": "KB",
578
+ "upload": "Upload"
579
+ },
580
+ "workflows": {
581
+ "title": "Workflows",
582
+ "create": "Create Workflow",
583
+ "edit": "Edit Workflow",
584
+ "delete_confirm": "Delete this workflow? This cannot be undone.",
585
+ "no_workflows": "No workflows yet",
586
+ "no_workflows_desc": "Create event-driven automations with conditions and actions",
587
+ "name": "Workflow Name",
588
+ "description": "Description",
589
+ "active": "Active",
590
+ "save": "Save Workflow",
591
+ "cancel": "Cancel",
592
+ "view_logs": "View Logs",
593
+ "last_triggered": "Last Triggered",
594
+ "trigger_count": "Runs",
595
+ "trigger": {
596
+ "title": "Trigger Event",
597
+ "description": "When this happens...",
598
+ "ticket_created": "Ticket Created",
599
+ "ticket_created_desc": "When a new ticket is submitted",
600
+ "ticket_updated": "Ticket Updated",
601
+ "ticket_updated_desc": "When any ticket field is modified",
602
+ "reply_added": "Reply Added",
603
+ "reply_added_desc": "When a reply is posted on a ticket",
604
+ "status_changed": "Status Changed",
605
+ "status_changed_desc": "When the ticket status is updated",
606
+ "ticket_assigned": "Ticket Assigned",
607
+ "ticket_assigned_desc": "When a ticket is assigned to an agent",
608
+ "ticket_escalated": "Ticket Escalated",
609
+ "ticket_escalated_desc": "When a ticket is escalated",
610
+ "sla_breached": "SLA Breached",
611
+ "sla_breached_desc": "When an SLA target is breached",
612
+ "sla_warning": "SLA Warning",
613
+ "sla_warning_desc": "When an SLA target is approaching",
614
+ "chat_started": "Chat Started",
615
+ "chat_started_desc": "When a live chat session begins",
616
+ "chat_ended": "Chat Ended",
617
+ "chat_ended_desc": "When a live chat session ends"
618
+ },
619
+ "conditions": {
620
+ "title": "Conditions",
621
+ "description": "Only if these conditions are met...",
622
+ "optional": "optional",
623
+ "match_all": "All conditions (AND)",
624
+ "match_any": "Any condition (OR)",
625
+ "add_condition": "Add Condition",
626
+ "preview": "Preview",
627
+ "field": {
628
+ "status": "Status",
629
+ "priority": "Priority",
630
+ "type": "Type",
631
+ "channel": "Channel",
632
+ "tags": "Tags",
633
+ "department": "Department",
634
+ "assigned_agent": "Assigned Agent",
635
+ "subject": "Subject",
636
+ "hours_since_created": "Hours Since Created",
637
+ "hours_since_updated": "Hours Since Updated",
638
+ "reply_count": "Reply Count",
639
+ "custom_field": "Custom Field"
640
+ },
641
+ "operator": {
642
+ "equals": "equals",
643
+ "not_equals": "not equals",
644
+ "contains": "contains",
645
+ "in": "in",
646
+ "greater_than": "greater than",
647
+ "less_than": "less than",
648
+ "is_empty": "is empty",
649
+ "matches": "matches"
650
+ }
651
+ },
652
+ "actions": {
653
+ "title": "Actions",
654
+ "description": "Then do this...",
655
+ "add_action": "Add Action",
656
+ "assign_agent": "Assign Agent",
657
+ "assign_agent_desc": "Assign the ticket to an agent",
658
+ "change_status": "Change Status",
659
+ "change_status_desc": "Update the ticket status",
660
+ "change_priority": "Change Priority",
661
+ "change_priority_desc": "Update the ticket priority",
662
+ "add_tag": "Add Tag",
663
+ "add_tag_desc": "Add a tag to the ticket",
664
+ "remove_tag": "Remove Tag",
665
+ "remove_tag_desc": "Remove a tag from the ticket",
666
+ "move_department": "Move Department",
667
+ "move_department_desc": "Move ticket to another department",
668
+ "add_note": "Add Internal Note",
669
+ "add_note_desc": "Add an internal note to the ticket",
670
+ "send_email": "Send Email Notification",
671
+ "send_email_desc": "Send an email notification",
672
+ "send_webhook": "Send Webhook",
673
+ "send_webhook_desc": "Send data to an external URL",
674
+ "delay": "Delay",
675
+ "delay_desc": "Wait before continuing",
676
+ "delay_message": "Wait {duration} {unit}, then continue...",
677
+ "apply_macro": "Apply Macro",
678
+ "apply_macro_desc": "Apply an existing macro",
679
+ "close_ticket": "Close Ticket",
680
+ "close_ticket_desc": "Close the ticket immediately",
681
+ "snooze": "Snooze",
682
+ "snooze_desc": "Snooze the ticket for a duration",
683
+ "specific_agent": "Specific agent",
684
+ "least_busy": "Least busy agent",
685
+ "round_robin": "Round robin",
686
+ "not_configured": "Not configured"
687
+ },
688
+ "logs": {
689
+ "title": "Workflow Execution Logs",
690
+ "description": "Track workflow executions and debug issues",
691
+ "no_logs": "No execution logs yet",
692
+ "no_logs_desc": "Logs appear when workflows are triggered",
693
+ "timestamp": "Timestamp",
694
+ "workflow": "Workflow",
695
+ "ticket": "Ticket",
696
+ "event": "Event",
697
+ "matched": "Matched",
698
+ "actions_executed": "Actions",
699
+ "duration": "Duration",
700
+ "status": "Status",
701
+ "success": "Success",
702
+ "failed": "Failed",
703
+ "skipped": "Skipped",
704
+ "action_details": "Action-by-Action Execution",
705
+ "all_workflows": "All Workflows",
706
+ "from": "From",
707
+ "to": "To"
708
+ },
709
+ "variables": {
710
+ "insert": "Insert Variable",
711
+ "ticket_reference": "Ticket Reference",
712
+ "ticket_subject": "Ticket Subject",
713
+ "ticket_status": "Ticket Status",
714
+ "agent_name": "Agent Name",
715
+ "requester_name": "Requester Name",
716
+ "requester_email": "Requester Email",
717
+ "department_name": "Department Name"
718
+ },
719
+ "builder": {
720
+ "step": "Step",
721
+ "trigger_step": "Step 1: Trigger Event",
722
+ "conditions_step": "Step 2: Conditions",
723
+ "actions_step": "Step 3: Actions",
724
+ "saving": "Saving...",
725
+ "update": "Update Workflow",
726
+ "create": "Create Workflow"
727
+ }
403
728
  }
404
- },
405
- "import": {
406
- "title": "Import Data",
407
- "description": "Migrate tickets, contacts, and history from another helpdesk platform.",
408
- "no_adapters": "No import adapters installed.",
409
- "connect": "Connect to {platform}",
410
- "test_connection": "Test Connection",
411
- "testing": "Testing...",
412
- "connected": "Connected successfully",
413
- "field_mapping": "Field Mapping",
414
- "skip_entity": "Skip importing {type}",
415
- "review": "Review Import",
416
- "start": "Start Import",
417
- "starting": "Starting...",
418
- "progress": "Import Progress",
419
- "pause": "Pause",
420
- "resume": "Resume",
421
- "cancel": "Cancel",
422
- "paused": "Import paused.",
423
- "resumed": "Import resumed.",
424
- "cancelled": "Import cancelled.",
425
- "completed": "Import completed successfully.",
426
- "history": "Import History",
427
- "suppression_notice": "Notifications and automations are suppressed during import.",
428
- "recent_errors": "Recent Errors"
429
- },
430
- "agent": {
431
- "dashboard": "Agent Dashboard",
432
- "open_tickets": "Open Tickets",
433
- "my_assigned": "My Assigned",
434
- "unassigned": "Unassigned",
435
- "sla_breached": "SLA Breached",
436
- "resolved_today": "Resolved Today",
437
- "needs_attention": "Needs Attention",
438
- "sla_breaching": "SLA Breaching",
439
- "unassigned_urgent": "Unassigned Urgent",
440
- "recent_tickets": "Recent Tickets",
441
- "no_recent_tickets": "No recent tickets",
442
- "my_performance": "My Performance",
443
- "resolved_this_week": "Resolved This Week"
444
- },
445
- "guest": {
446
- "submit_title": "Submit a Ticket",
447
- "submit_heading": "Submit a Support Ticket",
448
- "submit_desc": "No account needed. We'll give you a link to track your ticket.",
449
- "sign_in_link": "Already have an account? Sign in",
450
- "your_name": "Your Name",
451
- "email_address": "Email Address",
452
- "bookmark_title": "Bookmark this page",
453
- "bookmark_desc": "This is your private link to view and reply to this ticket.",
454
- "copy_link": "Copy Link",
455
- "write_reply": "Write your reply..."
456
- },
457
- "customer": {
458
- "replies": "Replies",
459
- "reply": "Reply"
460
- },
461
- "common": {
462
- "change_status": "Change Status...",
463
- "change_priority": "Change Priority...",
464
- "kb": "KB",
465
- "upload": "Upload"
466
- }
467
729
  }