@consilioweb/payload-support 0.6.0 → 0.6.2

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 (85) hide show
  1. package/dist/{styles/theme.css → components/TicketConversation.css} +13 -326
  2. package/dist/components/TicketConversation.js +3004 -0
  3. package/dist/index.cjs +11 -11
  4. package/dist/index.js +11 -11
  5. package/dist/views/BillingView/client.cjs +209 -0
  6. package/dist/views/BillingView/index.cjs +34 -0
  7. package/dist/views/ChatView/client.cjs +253 -0
  8. package/dist/views/ChatView/index.cjs +34 -0
  9. package/dist/views/CrmView/client.cjs +233 -0
  10. package/dist/views/CrmView/index.cjs +34 -0
  11. package/dist/views/EmailTrackingView/client.cjs +159 -0
  12. package/dist/views/EmailTrackingView/index.cjs +34 -0
  13. package/dist/views/ImportConversationView/client.cjs +205 -0
  14. package/dist/views/ImportConversationView/index.cjs +34 -0
  15. package/dist/views/LogsView/client.cjs +149 -0
  16. package/dist/views/LogsView/index.cjs +32 -0
  17. package/dist/views/NewTicketView/client.cjs +229 -0
  18. package/dist/views/NewTicketView/index.cjs +32 -0
  19. package/dist/views/PendingEmailsView/client.cjs +173 -0
  20. package/dist/views/PendingEmailsView/index.cjs +34 -0
  21. package/dist/views/SupportDashboardView/client.cjs +301 -0
  22. package/dist/views/SupportDashboardView/index.cjs +34 -0
  23. package/dist/views/TicketDetailView/client.cjs +850 -0
  24. package/dist/views/TicketDetailView/index.cjs +34 -0
  25. package/dist/views/TicketInboxView/client.cjs +299 -0
  26. package/dist/views/TicketInboxView/index.cjs +32 -0
  27. package/dist/views/TicketingSettingsView/client.cjs +733 -0
  28. package/dist/views/TicketingSettingsView/index.cjs +34 -0
  29. package/dist/views/TimeDashboardView/client.cjs +169 -0
  30. package/dist/views/TimeDashboardView/index.cjs +34 -0
  31. package/dist/views/shared/AdminViewHeader.cjs +68 -0
  32. package/dist/views/shared/ErrorBoundary.cjs +55 -0
  33. package/dist/views/shared/Skeleton.cjs +77 -0
  34. package/dist/views/shared/adminTokens.cjs +34 -0
  35. package/dist/views/shared/adminTokens.js +0 -1
  36. package/dist/{components/TicketConversation/config.js → views/shared/config.cjs} +5 -2
  37. package/dist/views/shared/config.js +0 -1
  38. package/dist/views/shared/index.cjs +58 -0
  39. package/dist/views/shared/index.js +0 -1
  40. package/dist/views.cjs +86 -0
  41. package/dist/views.d.cts +13 -0
  42. package/dist/views.d.ts +13 -0
  43. package/dist/views.js +13 -0
  44. package/package.json +14 -7
  45. package/src/plugin.ts +11 -11
  46. package/src/views.ts +17 -0
  47. package/dist/components/TicketConversation/components/AISummaryPanel.js +0 -76
  48. package/dist/components/TicketConversation/components/ActionPanels.js +0 -118
  49. package/dist/components/TicketConversation/components/ActivityLog.js +0 -23
  50. package/dist/components/TicketConversation/components/ClientBar.js +0 -42
  51. package/dist/components/TicketConversation/components/ClientHistory.js +0 -137
  52. package/dist/components/TicketConversation/components/CodeBlock.js +0 -152
  53. package/dist/components/TicketConversation/components/CodeBlockInserter.js +0 -155
  54. package/dist/components/TicketConversation/components/QuickActions.js +0 -65
  55. package/dist/components/TicketConversation/components/TicketHeader.js +0 -92
  56. package/dist/components/TicketConversation/components/TimeTrackingPanel.js +0 -133
  57. package/dist/components/TicketConversation/constants.js +0 -96
  58. package/dist/components/TicketConversation/context.js +0 -11
  59. package/dist/components/TicketConversation/hooks/useAI.js +0 -176
  60. package/dist/components/TicketConversation/hooks/useMessageActions.js +0 -135
  61. package/dist/components/TicketConversation/hooks/useReply.js +0 -187
  62. package/dist/components/TicketConversation/hooks/useTicketActions.js +0 -230
  63. package/dist/components/TicketConversation/hooks/useTimeTracking.js +0 -122
  64. package/dist/components/TicketConversation/hooks/useTranslation.js +0 -70
  65. package/dist/components/TicketConversation/index.js +0 -1123
  66. package/dist/components/TicketConversation/locales/en.json +0 -878
  67. package/dist/components/TicketConversation/locales/fr.json +0 -878
  68. package/dist/components/TicketConversation/types.js +0 -2
  69. package/dist/components/TicketConversation/utils.js +0 -25
  70. package/dist/styles/BillingView.module.scss +0 -311
  71. package/dist/styles/ChatView.module.scss +0 -438
  72. package/dist/styles/CommandPalette.module.scss +0 -160
  73. package/dist/styles/CrmView.module.scss +0 -554
  74. package/dist/styles/EmailTracking.module.scss +0 -238
  75. package/dist/styles/ImportConversation.module.scss +0 -267
  76. package/dist/styles/Layout.module.scss +0 -55
  77. package/dist/styles/Logs.module.scss +0 -164
  78. package/dist/styles/NewTicket.module.scss +0 -143
  79. package/dist/styles/PendingEmails.module.scss +0 -629
  80. package/dist/styles/SupportDashboard.module.scss +0 -649
  81. package/dist/styles/TicketDetail.module.scss +0 -1050
  82. package/dist/styles/TicketInbox.module.scss +0 -296
  83. package/dist/styles/TicketingSettings.module.scss +0 -358
  84. package/dist/styles/TimeDashboard.module.scss +0 -287
  85. package/dist/styles/_tokens.scss +0 -78
@@ -1,296 +0,0 @@
1
- // Ticket Inbox — Superhuman/Linear inspired, 2026
2
-
3
- .page {
4
- max-width: 1920px;
5
- margin: 0 auto;
6
- padding: 0 24px 60px;
7
- font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', system-ui, sans-serif;
8
- }
9
-
10
- // Header
11
- .header {
12
- display: flex;
13
- align-items: center;
14
- gap: 16px;
15
- padding: 20px 0 16px;
16
- flex-wrap: wrap;
17
- }
18
-
19
- .title {
20
- font-size: 24px;
21
- font-weight: 800;
22
- color: var(--theme-text);
23
- margin: 0;
24
- }
25
-
26
- .headerRight {
27
- margin-left: auto;
28
- display: flex;
29
- gap: 10px;
30
- align-items: center;
31
- }
32
-
33
- .searchWrap {
34
- position: relative;
35
- display: flex;
36
- align-items: center;
37
- }
38
-
39
- .searchIcon {
40
- position: absolute;
41
- left: 12px;
42
- color: var(--theme-elevation-400);
43
- font-size: 14px;
44
- pointer-events: none;
45
- }
46
-
47
- .searchInput {
48
- padding: 8px 12px 8px 34px;
49
- border-radius: 8px;
50
- border: 1px solid var(--theme-elevation-200);
51
- background: var(--theme-elevation-0, #fff);
52
- color: var(--theme-text);
53
- font-size: 13px;
54
- width: 280px;
55
- transition: border-color 150ms, box-shadow 150ms;
56
-
57
- &:focus {
58
- outline: none;
59
- border-color: #2563eb;
60
- box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.08);
61
- }
62
-
63
- &::placeholder { color: var(--theme-elevation-400); }
64
- }
65
-
66
- .searchHint {
67
- position: absolute;
68
- right: 10px;
69
- font-size: 10px;
70
- font-weight: 600;
71
- color: var(--theme-elevation-400);
72
- padding: 2px 6px;
73
- border-radius: 4px;
74
- border: 1px solid var(--theme-elevation-200);
75
- background: var(--theme-elevation-50);
76
- }
77
-
78
- .newTicketBtn {
79
- padding: 8px 18px;
80
- border-radius: 8px;
81
- border: 1px solid var(--theme-elevation-200);
82
- background: var(--theme-elevation-0, #fff);
83
- color: var(--theme-text);
84
- font-size: 13px;
85
- font-weight: 600;
86
- cursor: pointer;
87
- transition: all 100ms;
88
- text-decoration: none;
89
- &:hover { background: var(--theme-elevation-100); }
90
- }
91
-
92
- // Filter tabs
93
- .tabs {
94
- display: flex;
95
- gap: 0;
96
- border-bottom: 1px solid var(--theme-elevation-150, #f1f5f9);
97
- margin-bottom: 0;
98
- }
99
-
100
- .tab {
101
- padding: 10px 16px;
102
- font-size: 13px;
103
- font-weight: 600;
104
- color: var(--theme-elevation-500);
105
- background: none;
106
- border: none;
107
- border-bottom: 2px solid transparent;
108
- cursor: pointer;
109
- transition: all 100ms;
110
- white-space: nowrap;
111
-
112
- &:hover { color: var(--theme-text); }
113
-
114
- &.tabActive {
115
- color: var(--theme-text);
116
- border-bottom-color: #2563eb;
117
- }
118
- }
119
-
120
- .tabCount {
121
- font-size: 11px;
122
- font-weight: 700;
123
- color: var(--theme-elevation-400);
124
- margin-left: 4px;
125
- }
126
-
127
- .sortRow {
128
- display: flex;
129
- justify-content: flex-end;
130
- padding: 8px 0;
131
- }
132
-
133
- .sortSelect {
134
- font-size: 12px;
135
- font-weight: 600;
136
- color: var(--theme-elevation-500);
137
- background: none;
138
- border: none;
139
- cursor: pointer;
140
- padding: 4px 8px;
141
- &:hover { color: var(--theme-text); }
142
- }
143
-
144
- // Ticket list
145
- .list {
146
- display: flex;
147
- flex-direction: column;
148
- }
149
-
150
- .row {
151
- display: grid;
152
- grid-template-columns: 18px 16px 70px 50px 1fr 180px 100px 80px 100px 12px;
153
- gap: 10px;
154
- align-items: center;
155
- padding: 11px 12px;
156
- border-bottom: 1px solid var(--theme-elevation-100, #f8fafc);
157
- cursor: pointer;
158
- transition: background 60ms;
159
- text-decoration: none;
160
- color: inherit;
161
-
162
- &:hover { background: var(--theme-elevation-50); }
163
-
164
- @media (max-width: 900px) {
165
- grid-template-columns: 16px 60px 1fr 100px 80px;
166
- }
167
- }
168
-
169
- .rowSelected {
170
- background: #eff6ff;
171
- border-left: 3px solid #2563eb;
172
- padding-left: 9px;
173
- }
174
-
175
- .statusDot {
176
- width: 8px;
177
- height: 8px;
178
- border-radius: 50%;
179
- flex-shrink: 0;
180
- }
181
-
182
- .statusText {
183
- font-size: 12px;
184
- font-weight: 600;
185
- color: var(--theme-elevation-500);
186
- }
187
-
188
- .ticketNum {
189
- font-family: 'SF Mono', 'Fira Code', 'JetBrains Mono', 'Cascadia Code', monospace;
190
- font-size: 11px;
191
- color: var(--theme-elevation-400);
192
- font-weight: 500;
193
- }
194
-
195
- .subject {
196
- font-size: 13px;
197
- font-weight: 600;
198
- color: var(--theme-text);
199
- overflow: hidden;
200
- text-overflow: ellipsis;
201
- white-space: nowrap;
202
- }
203
-
204
- .client {
205
- font-size: 12px;
206
- color: var(--theme-elevation-500);
207
- overflow: hidden;
208
- text-overflow: ellipsis;
209
- white-space: nowrap;
210
- }
211
-
212
- .categoryChip {
213
- font-size: 11px;
214
- font-weight: 600;
215
- color: var(--theme-elevation-500);
216
- padding: 2px 8px;
217
- border-radius: 4px;
218
- background: var(--theme-elevation-100);
219
- white-space: nowrap;
220
- }
221
-
222
- .priorityBar {
223
- width: 4px;
224
- height: 18px;
225
- border-radius: 2px;
226
- flex-shrink: 0;
227
- }
228
-
229
- .timeAgo {
230
- font-size: 12px;
231
- color: var(--theme-elevation-400);
232
- white-space: nowrap;
233
- text-align: right;
234
- }
235
-
236
- .unreadDot {
237
- width: 7px;
238
- height: 7px;
239
- border-radius: 50%;
240
- background: #2563eb;
241
- flex-shrink: 0;
242
- }
243
-
244
- // Empty state
245
- .empty {
246
- padding: 80px 20px;
247
- text-align: center;
248
- color: var(--theme-elevation-400);
249
- }
250
-
251
- .emptyIcon {
252
- font-size: 40px;
253
- margin-bottom: 12px;
254
- opacity: 0.4;
255
- }
256
-
257
- .emptyText {
258
- font-size: 14px;
259
- font-weight: 500;
260
- }
261
-
262
- // Keyboard hints
263
- .keyboardHints {
264
- position: fixed;
265
- bottom: 20px;
266
- right: 24px;
267
- padding: 6px 14px;
268
- border-radius: 8px;
269
- background: var(--theme-elevation-0, #fff);
270
- border: 1px solid var(--theme-elevation-200);
271
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
272
- font-size: 11px;
273
- font-weight: 500;
274
- color: var(--theme-elevation-500);
275
- display: flex;
276
- gap: 12px;
277
- z-index: 10;
278
-
279
- kbd {
280
- font-family: inherit;
281
- padding: 1px 5px;
282
- border-radius: 3px;
283
- border: 1px solid var(--theme-elevation-200);
284
- background: var(--theme-elevation-50);
285
- font-size: 10px;
286
- font-weight: 700;
287
- }
288
- }
289
-
290
- // Loading
291
- .loading {
292
- padding: 60px 20px;
293
- text-align: center;
294
- color: var(--theme-elevation-400);
295
- font-size: 14px;
296
- }
@@ -1,358 +0,0 @@
1
- // TicketingSettings — SCSS Module
2
- // Uses Payload CMS CSS variables for dark mode compatibility
3
-
4
- $font: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', system-ui, sans-serif;
5
- $blue: #2563eb;
6
- $green: #16a34a;
7
-
8
- // ─── PAGE ───
9
- .page {
10
- padding: 20px 24px;
11
- max-width: 840px;
12
- margin: 0 auto;
13
- font-family: $font;
14
- }
15
-
16
- .intro {
17
- font-size: 13px;
18
- color: var(--theme-elevation-500);
19
- margin: 0 0 24px;
20
- line-height: 1.6;
21
- }
22
-
23
- // ─── COLLAPSIBLE SECTION ───
24
- .sectionWrapper {
25
- margin-bottom: 32px;
26
- border: 1px solid var(--theme-elevation-300);
27
- border-radius: 10px;
28
- overflow: hidden;
29
- }
30
-
31
- .sectionHeader {
32
- display: flex;
33
- align-items: center;
34
- gap: 10px;
35
- padding: 14px 18px;
36
- background-color: var(--theme-elevation-100);
37
- border-bottom: 1px solid var(--theme-elevation-300);
38
- cursor: pointer;
39
- user-select: none;
40
- }
41
-
42
- .sectionIcon {
43
- width: 32px;
44
- height: 32px;
45
- border-radius: 8px;
46
- display: flex;
47
- align-items: center;
48
- justify-content: center;
49
- color: #fff;
50
- flex-shrink: 0;
51
- }
52
-
53
- .sectionTitle {
54
- font-size: 15px;
55
- font-weight: 700;
56
- color: var(--theme-text);
57
- flex: 1;
58
- }
59
-
60
- .sectionChevron {
61
- font-size: 16px;
62
- color: var(--theme-elevation-500);
63
- transition: transform 150ms;
64
-
65
- &.open {
66
- transform: rotate(180deg);
67
- }
68
- }
69
-
70
- .sectionBody {
71
- padding: 18px 18px 14px;
72
- }
73
-
74
- .sectionDescription {
75
- font-size: 12px;
76
- color: var(--theme-elevation-500);
77
- margin: 0 0 16px;
78
- line-height: 1.5;
79
- }
80
-
81
- // ─── FIELD ROW ───
82
- .fieldRow {
83
- display: flex;
84
- align-items: flex-start;
85
- gap: 12px;
86
- margin-bottom: 14px;
87
- }
88
-
89
- .fieldLabel {
90
- font-size: 13px;
91
- font-weight: 600;
92
- color: var(--theme-text);
93
- min-width: 160px;
94
- padding-top: 8px;
95
- flex-shrink: 0;
96
- }
97
-
98
- .fieldDescription {
99
- font-size: 11px;
100
- color: var(--theme-elevation-500);
101
- font-weight: 400;
102
- margin-top: 2px;
103
- }
104
-
105
- .fieldContent {
106
- flex: 1;
107
- max-width: 400px;
108
- }
109
-
110
- // ─── INPUTS ───
111
- .input {
112
- padding: 8px 12px;
113
- border-radius: 6px;
114
- border: 1px solid var(--theme-elevation-300);
115
- font-size: 13px;
116
- color: var(--theme-text);
117
- background-color: var(--theme-elevation-0);
118
- width: 100%;
119
- max-width: 400px;
120
- outline: none;
121
- transition: border-color 150ms;
122
- font-family: inherit;
123
-
124
- &:focus {
125
- border-color: $blue;
126
- }
127
- }
128
-
129
- .inputReadonly {
130
- padding: 8px 12px;
131
- border-radius: 6px;
132
- border: 1px solid var(--theme-elevation-300);
133
- font-size: 13px;
134
- color: var(--theme-elevation-500);
135
- background-color: var(--theme-elevation-100);
136
- width: 100%;
137
- max-width: 400px;
138
- cursor: not-allowed;
139
- outline: none;
140
- }
141
-
142
- .select {
143
- padding: 8px 12px;
144
- border-radius: 6px;
145
- border: 1px solid var(--theme-elevation-300);
146
- font-size: 13px;
147
- color: var(--theme-text);
148
- background-color: var(--theme-elevation-0);
149
- max-width: 400px;
150
- width: 100%;
151
- outline: none;
152
- cursor: pointer;
153
- }
154
-
155
- .numberInput {
156
- padding: 8px 12px;
157
- border-radius: 6px;
158
- border: 1px solid var(--theme-elevation-300);
159
- font-size: 13px;
160
- color: var(--theme-text);
161
- background-color: var(--theme-elevation-0);
162
- width: 100px;
163
- outline: none;
164
- }
165
-
166
- // ─── TOGGLE ───
167
- .toggleRow {
168
- display: flex;
169
- align-items: center;
170
- gap: 12px;
171
- padding: 10px 0;
172
- }
173
-
174
- .inlineLabel {
175
- font-size: 13px;
176
- font-weight: 600;
177
- color: var(--theme-text);
178
- }
179
-
180
- .inlineDesc {
181
- font-size: 12px;
182
- color: var(--theme-elevation-500);
183
- }
184
-
185
- // ─── BADGE ───
186
- .badge {
187
- display: inline-flex;
188
- align-items: center;
189
- padding: 2px 8px;
190
- border-radius: 4px;
191
- font-size: 11px;
192
- font-weight: 600;
193
- }
194
-
195
- // ─── SEPARATOR ───
196
- .separator {
197
- border-top: 1px solid var(--theme-elevation-300);
198
- margin: 14px 0;
199
- }
200
-
201
- // ─── FEATURE CARD ───
202
- .categoryHeading {
203
- font-size: 13px;
204
- font-weight: 700;
205
- margin: 0 0 10px;
206
- display: flex;
207
- align-items: center;
208
- gap: 8px;
209
- }
210
-
211
- .categoryDot {
212
- width: 8px;
213
- height: 8px;
214
- border-radius: 50%;
215
- }
216
-
217
- .categoryGroup {
218
- margin-bottom: 20px;
219
- }
220
-
221
- .featureList {
222
- display: flex;
223
- flex-direction: column;
224
- gap: 4px;
225
- }
226
-
227
- .featureCard {
228
- display: flex;
229
- align-items: center;
230
- gap: 14px;
231
- padding: 10px 14px;
232
- border-radius: 8px;
233
- border: 1px solid var(--theme-elevation-300);
234
- background-color: transparent;
235
- cursor: pointer;
236
- transition: all 150ms;
237
- opacity: 0.5;
238
-
239
- &.enabled {
240
- background-color: var(--theme-elevation-100);
241
- opacity: 1;
242
- }
243
- }
244
-
245
- .featureLabel {
246
- font-size: 13px;
247
- font-weight: 600;
248
- color: var(--theme-text);
249
- margin-bottom: 1px;
250
- }
251
-
252
- .featureDesc {
253
- font-size: 12px;
254
- color: var(--theme-elevation-500);
255
- line-height: 1.4;
256
- }
257
-
258
- // ─── AI TOGGLE ROW ───
259
- .aiToggleRow {
260
- display: flex;
261
- align-items: center;
262
- gap: 12px;
263
- padding: 8px 0;
264
- }
265
-
266
- .aiToggleLabel {
267
- font-size: 13px;
268
- font-weight: 600;
269
- color: var(--theme-text);
270
- }
271
-
272
- .aiToggleDesc {
273
- font-size: 12px;
274
- color: var(--theme-elevation-500);
275
- margin-left: 8px;
276
- }
277
-
278
- // ─── API KEY ROW ───
279
- .apiKeyRow {
280
- display: flex;
281
- gap: 8px;
282
- align-items: center;
283
- max-width: 400px;
284
- }
285
-
286
- .apiKeyToggle {
287
- padding: 8px 10px;
288
- border-radius: 6px;
289
- border: 1px solid var(--theme-elevation-300);
290
- background-color: transparent;
291
- cursor: pointer;
292
- font-size: 12px;
293
- color: var(--theme-elevation-500);
294
- white-space: nowrap;
295
- }
296
-
297
- // ─── SLA INLINE ───
298
- .slaInline {
299
- display: flex;
300
- align-items: center;
301
- gap: 8px;
302
- }
303
-
304
- .slaHint {
305
- font-size: 12px;
306
- color: var(--theme-elevation-500);
307
- }
308
-
309
- // ─── AI SUB FEATURES LABEL ───
310
- .aiSubFeaturesLabel {
311
- font-size: 12px;
312
- font-weight: 600;
313
- color: var(--theme-text);
314
- margin: 0 0 10px;
315
- }
316
-
317
- // ─── SIGNATURE TEXTAREA ───
318
- .signatureTextarea {
319
- @extend .input;
320
- max-width: 100%;
321
- width: 100%;
322
- resize: vertical;
323
- line-height: 1.6;
324
- }
325
-
326
- // ─── PURGE SECTION ───
327
- .purgeGroup {
328
- display: flex;
329
- gap: 12px;
330
- flex-wrap: wrap;
331
- }
332
-
333
- .purgeCategory {
334
- display: flex;
335
- flex-direction: column;
336
- gap: 8px;
337
- }
338
-
339
- .purgeCategoryLabel {
340
- font-size: 13px;
341
- font-weight: 600;
342
- color: var(--theme-text);
343
- }
344
-
345
- .purgeButtons {
346
- display: flex;
347
- gap: 6px;
348
- }
349
-
350
- // ─── BOTTOM BAR ───
351
- .bottomBar {
352
- display: flex;
353
- justify-content: flex-end;
354
- gap: 8px;
355
- padding: 16px 0;
356
- border-top: 1px solid var(--theme-elevation-300);
357
- margin-top: 8px;
358
- }