@escalated-dev/escalated 0.7.1 → 0.9.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 (117) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +380 -357
  3. package/package.json +85 -81
  4. package/src/components/ActiveChatsPanel.vue +246 -246
  5. package/src/components/AdminDashboard.stories.js +1423 -1423
  6. package/src/components/AttachmentList.vue +65 -65
  7. package/src/components/ChatActionBar.vue +226 -226
  8. package/src/components/ChatBubble.vue +162 -162
  9. package/src/components/ChatComposer.vue +308 -308
  10. package/src/components/ChatQueue.vue +222 -222
  11. package/src/components/ChatThread.vue +197 -197
  12. package/src/components/CustomTicketActions.stories.js +71 -0
  13. package/src/components/CustomTicketActions.vue +101 -0
  14. package/src/components/EscalatedLayout.vue +619 -598
  15. package/src/components/FollowButton.vue +20 -1
  16. package/src/components/MentionDropdown.vue +154 -154
  17. package/src/components/MetricComparison.vue +89 -89
  18. package/src/components/PercentileChart.vue +67 -67
  19. package/src/components/PeriodSelector.vue +98 -98
  20. package/src/components/PresenceIndicator.vue +228 -213
  21. package/src/components/ReplyComposer.vue +336 -336
  22. package/src/components/ReplyThread.vue +153 -153
  23. package/src/components/ReportChart.vue +395 -395
  24. package/src/components/ReportExportButton.vue +108 -108
  25. package/src/components/SaveViewDialog.vue +172 -172
  26. package/src/components/SavedViewSidebar.vue +208 -208
  27. package/src/components/SkillTagManager.vue +29 -22
  28. package/src/components/SnoozeButton.vue +247 -247
  29. package/src/components/TicketFilters.vue +270 -270
  30. package/src/components/TicketList.vue +655 -655
  31. package/src/components/TicketSidebar.vue +4 -0
  32. package/src/components/TicketSplitDialog.vue +98 -98
  33. package/src/components/TicketSubjects.stories.js +63 -0
  34. package/src/components/TicketSubjects.vue +107 -0
  35. package/src/components/TwoFactorSetup.vue +1 -37
  36. package/src/components/VariableTokenInput.vue +111 -111
  37. package/src/components/WorkflowActionConfig.vue +287 -287
  38. package/src/components/WorkflowActionList.vue +350 -350
  39. package/src/components/WorkflowConditionBuilder.vue +265 -265
  40. package/src/components/WorkflowTriggerSelector.vue +125 -125
  41. package/src/components/admin/newsletters/AnalyticsTiles.stories.js +14 -0
  42. package/src/components/admin/newsletters/AnalyticsTiles.vue +55 -0
  43. package/src/components/admin/newsletters/DeliveriesTable.stories.js +28 -0
  44. package/src/components/admin/newsletters/DeliveriesTable.vue +104 -0
  45. package/src/components/admin/newsletters/DynamicFilterBuilder.stories.js +11 -0
  46. package/src/components/admin/newsletters/DynamicFilterBuilder.vue +53 -0
  47. package/src/components/admin/newsletters/ListMemberTable.stories.js +12 -0
  48. package/src/components/admin/newsletters/ListMemberTable.vue +53 -0
  49. package/src/components/admin/newsletters/MarkdownEditor.stories.js +6 -0
  50. package/src/components/admin/newsletters/MarkdownEditor.vue +53 -0
  51. package/src/components/admin/newsletters/MergeFieldDropdown.stories.js +6 -0
  52. package/src/components/admin/newsletters/MergeFieldDropdown.vue +84 -0
  53. package/src/components/admin/newsletters/PreviewIframe.stories.js +7 -0
  54. package/src/components/admin/newsletters/PreviewIframe.vue +40 -0
  55. package/src/components/admin/newsletters/SummaryTiles.stories.js +8 -0
  56. package/src/components/admin/newsletters/SummaryTiles.vue +63 -0
  57. package/src/composables/useChat.js +187 -187
  58. package/src/composables/useI18n.js +30 -8
  59. package/src/composables/useMentions.js +134 -134
  60. package/src/composables/usePermissions.js +31 -0
  61. package/src/composables/useRealtime.js +182 -182
  62. package/src/index.js +85 -84
  63. package/src/locales/README.md +13 -0
  64. package/src/locales/ar.json +727 -727
  65. package/src/locales/de.json +690 -690
  66. package/src/locales/en.json +889 -729
  67. package/src/locales/es.json +691 -691
  68. package/src/locales/fr.json +691 -691
  69. package/src/locales/index.js +16 -16
  70. package/src/locales/it.json +727 -727
  71. package/src/locales/ja.json +727 -727
  72. package/src/locales/ko.json +727 -727
  73. package/src/locales/nl.json +727 -727
  74. package/src/locales/pl.json +727 -727
  75. package/src/locales/pt-BR.json +727 -727
  76. package/src/locales/ru.json +727 -727
  77. package/src/locales/tr.json +727 -727
  78. package/src/locales/zh-CN.json +727 -727
  79. package/src/pages/Admin/Newsletters/Compose.vue +192 -0
  80. package/src/pages/Admin/Newsletters/Edit.vue +24 -0
  81. package/src/pages/Admin/Newsletters/Index.vue +141 -0
  82. package/src/pages/Admin/Newsletters/Lists/Create.vue +64 -0
  83. package/src/pages/Admin/Newsletters/Lists/Index.vue +59 -0
  84. package/src/pages/Admin/Newsletters/Lists/Show.vue +53 -0
  85. package/src/pages/Admin/Newsletters/Settings.vue +85 -0
  86. package/src/pages/Admin/Newsletters/Show.vue +140 -0
  87. package/src/pages/Admin/Newsletters/Templates/Create.vue +11 -0
  88. package/src/pages/Admin/Newsletters/Templates/Index.vue +54 -0
  89. package/src/pages/Admin/Newsletters/Templates/Show.vue +65 -0
  90. package/src/pages/Admin/Newsletters/usePreview.js +44 -0
  91. package/src/pages/Admin/Reports/AgentDetail.vue +132 -132
  92. package/src/pages/Admin/Reports/AgentRanking.vue +246 -246
  93. package/src/pages/Admin/Reports/Cohorts.vue +180 -180
  94. package/src/pages/Admin/Reports/Comparison.vue +141 -141
  95. package/src/pages/Admin/Reports/Dashboard.vue +226 -226
  96. package/src/pages/Admin/Reports/ResolutionTimes.vue +164 -164
  97. package/src/pages/Admin/Reports/ResponseTimes.vue +164 -164
  98. package/src/pages/Admin/Reports/SlaTrends.vue +183 -183
  99. package/src/pages/Admin/Settings/SsoSettings.vue +157 -4
  100. package/src/pages/Admin/Settings/TwoFactor.vue +32 -6
  101. package/src/pages/Admin/Settings.vue +1008 -1008
  102. package/src/pages/Admin/Skills/Form.vue +164 -4
  103. package/src/pages/Admin/Skills/Index.vue +14 -3
  104. package/src/pages/Admin/Tickets/Index.vue +126 -126
  105. package/src/pages/Admin/Tickets/Show.vue +254 -249
  106. package/src/pages/Admin/Users/Index.vue +145 -0
  107. package/src/pages/Admin/Workflows/Builder.vue +207 -207
  108. package/src/pages/Admin/Workflows/Index.vue +235 -235
  109. package/src/pages/Admin/Workflows/Logs.vue +286 -286
  110. package/src/pages/Agent/TicketIndex.vue +112 -112
  111. package/src/pages/Agent/TicketShow.vue +547 -494
  112. package/src/pages/Customer/Index.vue +26 -1
  113. package/src/pages/Customer/KnowledgeBase/Article.vue +129 -129
  114. package/src/plugin.js +175 -175
  115. package/src/utils/mentionHighlight.js +24 -24
  116. package/src/widget/EscalatedWidget.vue +804 -804
  117. package/src/widget/index.js +254 -254
package/src/index.js CHANGED
@@ -1,84 +1,85 @@
1
- // Plugin
2
- export { EscalatedPlugin } from './plugin';
3
-
4
- // Components
5
- export { default as ActiveChatsPanel } from './components/ActiveChatsPanel.vue';
6
- export { default as ActivityTimeline } from './components/ActivityTimeline.vue';
7
- export { default as AgentLoadIndicator } from './components/AgentLoadIndicator.vue';
8
- export { default as AgentPerformanceCard } from './components/AgentPerformanceCard.vue';
9
- export { default as ArticleEditor } from './components/ArticleEditor.vue';
10
- export { default as AssigneeSelect } from './components/AssigneeSelect.vue';
11
- export { default as AttachmentList } from './components/AttachmentList.vue';
12
- export { default as AuditLogEntry } from './components/AuditLogEntry.vue';
13
- export { default as BulkActionBar } from './components/BulkActionBar.vue';
14
- export { default as CategoryTree } from './components/CategoryTree.vue';
15
- export { default as ChatActionBar } from './components/ChatActionBar.vue';
16
- export { default as ChatBubble } from './components/ChatBubble.vue';
17
- export { default as ChatComposer } from './components/ChatComposer.vue';
18
- export { default as ChatQueue } from './components/ChatQueue.vue';
19
- export { default as ChatThread } from './components/ChatThread.vue';
20
- export { default as ChartWidget } from './components/ChartWidget.vue';
21
- export { default as CollisionWarning } from './components/CollisionWarning.vue';
22
- export { default as ConditionalFieldRules } from './components/ConditionalFieldRules.vue';
23
- export { default as ContextPanel } from './components/ContextPanel.vue';
24
- export { default as ContextPanelSection } from './components/ContextPanelSection.vue';
25
- export { default as CustomFieldRenderer } from './components/CustomFieldRenderer.vue';
26
- export { default as EscalatedLayout } from './components/EscalatedLayout.vue';
27
- export { default as FileDropzone } from './components/FileDropzone.vue';
28
- export { default as FollowButton } from './components/FollowButton.vue';
29
- export { default as KeyboardShortcutHelp } from './components/KeyboardShortcutHelp.vue';
30
- export { default as KnowledgePanel } from './components/KnowledgePanel.vue';
31
- export { default as KpiCard } from './components/KpiCard.vue';
32
- export { default as MacroDropdown } from './components/MacroDropdown.vue';
33
- export { default as MentionDropdown } from './components/MentionDropdown.vue';
34
- export { default as PermissionMatrix } from './components/PermissionMatrix.vue';
35
- export { default as PinnedNotes } from './components/PinnedNotes.vue';
36
- export { default as PluginSlot } from './components/PluginSlot.vue';
37
- export { default as PresenceIndicator } from './components/PresenceIndicator.vue';
38
- export { default as PriorityBadge } from './components/PriorityBadge.vue';
39
- export { default as QuickFilters } from './components/QuickFilters.vue';
40
- export { default as ReplyComposer } from './components/ReplyComposer.vue';
41
- export { default as ReplyThread } from './components/ReplyThread.vue';
42
- export { default as SavedViewSidebar } from './components/SavedViewSidebar.vue';
43
- export { default as SaveViewDialog } from './components/SaveViewDialog.vue';
44
- export { default as SatisfactionRating } from './components/SatisfactionRating.vue';
45
- export { default as ScheduleEditor } from './components/ScheduleEditor.vue';
46
- export { default as SideConversation } from './components/SideConversation.vue';
47
- export { default as SideConversationList } from './components/SideConversationList.vue';
48
- export { default as SkillTagManager } from './components/SkillTagManager.vue';
49
- export { default as SlaComplianceChart } from './components/SlaComplianceChart.vue';
50
- export { default as SlaTimer } from './components/SlaTimer.vue';
51
- export { default as StatsCard } from './components/StatsCard.vue';
52
- export { default as StatusBadge } from './components/StatusBadge.vue';
53
- export { default as TagSelect } from './components/TagSelect.vue';
54
- export { default as TicketFilters } from './components/TicketFilters.vue';
55
- export { default as TicketLinkPanel } from './components/TicketLinkPanel.vue';
56
- export { default as TicketList } from './components/TicketList.vue';
57
- export { default as TicketMergeDialog } from './components/TicketMergeDialog.vue';
58
- export { default as TicketSidebar } from './components/TicketSidebar.vue';
59
- export { default as TicketTypeSelector } from './components/TicketTypeSelector.vue';
60
- export { default as TotpInput } from './components/TotpInput.vue';
61
- export { default as TwoFactorSetup } from './components/TwoFactorSetup.vue';
62
-
63
- // Composables
64
- export { useDebouncedSearch } from './composables/useDebouncedSearch';
65
- export { useKeyboardShortcuts } from './composables/useKeyboardShortcuts';
66
- export { useMentions } from './composables/useMentions';
67
- export { usePluginExtensions } from './composables/usePluginExtensions';
68
- export { usePluginHooks } from './composables/usePluginHooks';
69
- export { useChat } from './composables/useChat';
70
- export { useRealtime } from './composables/useRealtime';
71
-
72
- // Utilities
73
- export { TICKET_STATUSES, TICKET_PRIORITIES, TICKET_TYPES, TICKET_TYPE_COLORS } from './utils/constants';
74
- export { timeAgo, slaClass } from './utils/formatting';
75
-
76
- // Plugin authoring helper
77
- export { defineEscalatedPlugin } from './defineEscalatedPlugin';
78
-
79
- // Import pages
80
- export { default as AdminImportIndex } from './pages/Admin/Import/Index.vue';
81
- export { default as AdminImportConnect } from './pages/Admin/Import/Connect.vue';
82
- export { default as AdminImportMapping } from './pages/Admin/Import/Mapping.vue';
83
- export { default as AdminImportReview } from './pages/Admin/Import/Review.vue';
84
- export { default as AdminImportProgress } from './pages/Admin/Import/Progress.vue';
1
+ // Plugin
2
+ export { EscalatedPlugin } from './plugin';
3
+
4
+ // Components
5
+ export { default as ActiveChatsPanel } from './components/ActiveChatsPanel.vue';
6
+ export { default as ActivityTimeline } from './components/ActivityTimeline.vue';
7
+ export { default as AgentLoadIndicator } from './components/AgentLoadIndicator.vue';
8
+ export { default as AgentPerformanceCard } from './components/AgentPerformanceCard.vue';
9
+ export { default as ArticleEditor } from './components/ArticleEditor.vue';
10
+ export { default as AssigneeSelect } from './components/AssigneeSelect.vue';
11
+ export { default as AttachmentList } from './components/AttachmentList.vue';
12
+ export { default as AuditLogEntry } from './components/AuditLogEntry.vue';
13
+ export { default as BulkActionBar } from './components/BulkActionBar.vue';
14
+ export { default as CategoryTree } from './components/CategoryTree.vue';
15
+ export { default as ChatActionBar } from './components/ChatActionBar.vue';
16
+ export { default as ChatBubble } from './components/ChatBubble.vue';
17
+ export { default as ChatComposer } from './components/ChatComposer.vue';
18
+ export { default as ChatQueue } from './components/ChatQueue.vue';
19
+ export { default as ChatThread } from './components/ChatThread.vue';
20
+ export { default as ChartWidget } from './components/ChartWidget.vue';
21
+ export { default as CollisionWarning } from './components/CollisionWarning.vue';
22
+ export { default as ConditionalFieldRules } from './components/ConditionalFieldRules.vue';
23
+ export { default as ContextPanel } from './components/ContextPanel.vue';
24
+ export { default as ContextPanelSection } from './components/ContextPanelSection.vue';
25
+ export { default as CustomFieldRenderer } from './components/CustomFieldRenderer.vue';
26
+ export { default as CustomTicketActions } from './components/CustomTicketActions.vue';
27
+ export { default as EscalatedLayout } from './components/EscalatedLayout.vue';
28
+ export { default as FileDropzone } from './components/FileDropzone.vue';
29
+ export { default as FollowButton } from './components/FollowButton.vue';
30
+ export { default as KeyboardShortcutHelp } from './components/KeyboardShortcutHelp.vue';
31
+ export { default as KnowledgePanel } from './components/KnowledgePanel.vue';
32
+ export { default as KpiCard } from './components/KpiCard.vue';
33
+ export { default as MacroDropdown } from './components/MacroDropdown.vue';
34
+ export { default as MentionDropdown } from './components/MentionDropdown.vue';
35
+ export { default as PermissionMatrix } from './components/PermissionMatrix.vue';
36
+ export { default as PinnedNotes } from './components/PinnedNotes.vue';
37
+ export { default as PluginSlot } from './components/PluginSlot.vue';
38
+ export { default as PresenceIndicator } from './components/PresenceIndicator.vue';
39
+ export { default as PriorityBadge } from './components/PriorityBadge.vue';
40
+ export { default as QuickFilters } from './components/QuickFilters.vue';
41
+ export { default as ReplyComposer } from './components/ReplyComposer.vue';
42
+ export { default as ReplyThread } from './components/ReplyThread.vue';
43
+ export { default as SavedViewSidebar } from './components/SavedViewSidebar.vue';
44
+ export { default as SaveViewDialog } from './components/SaveViewDialog.vue';
45
+ export { default as SatisfactionRating } from './components/SatisfactionRating.vue';
46
+ export { default as ScheduleEditor } from './components/ScheduleEditor.vue';
47
+ export { default as SideConversation } from './components/SideConversation.vue';
48
+ export { default as SideConversationList } from './components/SideConversationList.vue';
49
+ export { default as SkillTagManager } from './components/SkillTagManager.vue';
50
+ export { default as SlaComplianceChart } from './components/SlaComplianceChart.vue';
51
+ export { default as SlaTimer } from './components/SlaTimer.vue';
52
+ export { default as StatsCard } from './components/StatsCard.vue';
53
+ export { default as StatusBadge } from './components/StatusBadge.vue';
54
+ export { default as TagSelect } from './components/TagSelect.vue';
55
+ export { default as TicketFilters } from './components/TicketFilters.vue';
56
+ export { default as TicketLinkPanel } from './components/TicketLinkPanel.vue';
57
+ export { default as TicketList } from './components/TicketList.vue';
58
+ export { default as TicketMergeDialog } from './components/TicketMergeDialog.vue';
59
+ export { default as TicketSidebar } from './components/TicketSidebar.vue';
60
+ export { default as TicketTypeSelector } from './components/TicketTypeSelector.vue';
61
+ export { default as TotpInput } from './components/TotpInput.vue';
62
+ export { default as TwoFactorSetup } from './components/TwoFactorSetup.vue';
63
+
64
+ // Composables
65
+ export { useDebouncedSearch } from './composables/useDebouncedSearch';
66
+ export { useKeyboardShortcuts } from './composables/useKeyboardShortcuts';
67
+ export { useMentions } from './composables/useMentions';
68
+ export { usePluginExtensions } from './composables/usePluginExtensions';
69
+ export { usePluginHooks } from './composables/usePluginHooks';
70
+ export { useChat } from './composables/useChat';
71
+ export { useRealtime } from './composables/useRealtime';
72
+
73
+ // Utilities
74
+ export { TICKET_STATUSES, TICKET_PRIORITIES, TICKET_TYPES, TICKET_TYPE_COLORS } from './utils/constants';
75
+ export { timeAgo, slaClass } from './utils/formatting';
76
+
77
+ // Plugin authoring helper
78
+ export { defineEscalatedPlugin } from './defineEscalatedPlugin';
79
+
80
+ // Import pages
81
+ export { default as AdminImportIndex } from './pages/Admin/Import/Index.vue';
82
+ export { default as AdminImportConnect } from './pages/Admin/Import/Connect.vue';
83
+ export { default as AdminImportMapping } from './pages/Admin/Import/Mapping.vue';
84
+ export { default as AdminImportReview } from './pages/Admin/Import/Review.vue';
85
+ export { default as AdminImportProgress } from './pages/Admin/Import/Progress.vue';
@@ -0,0 +1,13 @@
1
+ # Local locale overrides
2
+
3
+ The JSON files in this directory (`en.json`, `de.json`, …) are **local overrides** that win over the central source published by [`@escalated-dev/locale`](https://github.com/escalated-dev/escalated-locale).
4
+
5
+ The composable in `src/composables/useI18n.js` resolves keys in this order:
6
+
7
+ 1. Host-app `customMessages` for the current locale
8
+ 2. Local override (these JSON files) for the current locale
9
+ 3. Central source (`@escalated-dev/locale`) for the current locale
10
+ 4. Same three layers, but English fallback
11
+ 5. Raw key
12
+
13
+ After the central package is populated with the canonical strings, files here can be trimmed to contain only the keys this plugin needs to phrase differently from the central source. Keys not present locally fall through to the central source unchanged.