@bpmnkit/operate 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +131 -0
  2. package/dist/components/badge.d.ts +2 -0
  3. package/dist/components/badge.js +2 -0
  4. package/dist/components/card.d.ts +2 -0
  5. package/dist/components/card.js +2 -0
  6. package/dist/components/chart.d.ts +6 -0
  7. package/dist/components/chart.js +161 -0
  8. package/dist/components/filter-table.d.ts +20 -0
  9. package/dist/components/filter-table.js +215 -0
  10. package/dist/components/table.d.ts +2 -0
  11. package/dist/components/table.js +2 -0
  12. package/dist/css.d.ts +2 -0
  13. package/dist/css.js +1071 -0
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.js +2 -0
  16. package/dist/mock-data.d.ts +18 -0
  17. package/dist/mock-data.js +509 -0
  18. package/dist/operate.d.ts +3 -0
  19. package/dist/operate.js +308 -0
  20. package/dist/router.d.ts +9 -0
  21. package/dist/router.js +49 -0
  22. package/dist/stores/base.d.ts +20 -0
  23. package/dist/stores/base.js +32 -0
  24. package/dist/stores/dashboard.d.ts +6 -0
  25. package/dist/stores/dashboard.js +19 -0
  26. package/dist/stores/decisions.d.ts +9 -0
  27. package/dist/stores/decisions.js +19 -0
  28. package/dist/stores/definitions.d.ts +9 -0
  29. package/dist/stores/definitions.js +19 -0
  30. package/dist/stores/incidents.d.ts +10 -0
  31. package/dist/stores/incidents.js +27 -0
  32. package/dist/stores/instances.d.ts +15 -0
  33. package/dist/stores/instances.js +33 -0
  34. package/dist/stores/jobs.d.ts +10 -0
  35. package/dist/stores/jobs.js +19 -0
  36. package/dist/stores/tasks.d.ts +10 -0
  37. package/dist/stores/tasks.js +19 -0
  38. package/dist/stream.d.ts +12 -0
  39. package/dist/stream.js +42 -0
  40. package/dist/types.d.ts +48 -0
  41. package/dist/types.js +2 -0
  42. package/dist/views/dashboard.d.ts +6 -0
  43. package/dist/views/dashboard.js +98 -0
  44. package/dist/views/decision-detail.d.ts +15 -0
  45. package/dist/views/decision-detail.js +167 -0
  46. package/dist/views/decisions.d.ts +7 -0
  47. package/dist/views/decisions.js +78 -0
  48. package/dist/views/definition-detail.d.ts +15 -0
  49. package/dist/views/definition-detail.js +339 -0
  50. package/dist/views/definitions.d.ts +7 -0
  51. package/dist/views/definitions.js +70 -0
  52. package/dist/views/header.d.ts +9 -0
  53. package/dist/views/header.js +49 -0
  54. package/dist/views/incident-detail.d.ts +14 -0
  55. package/dist/views/incident-detail.js +540 -0
  56. package/dist/views/incidents.d.ts +7 -0
  57. package/dist/views/incidents.js +108 -0
  58. package/dist/views/instance-detail.d.ts +16 -0
  59. package/dist/views/instance-detail.js +728 -0
  60. package/dist/views/instances.d.ts +7 -0
  61. package/dist/views/instances.js +249 -0
  62. package/dist/views/jobs.d.ts +6 -0
  63. package/dist/views/jobs.js +60 -0
  64. package/dist/views/messages.d.ts +11 -0
  65. package/dist/views/messages.js +431 -0
  66. package/dist/views/nav.d.ts +10 -0
  67. package/dist/views/nav.js +60 -0
  68. package/dist/views/task-detail.d.ts +13 -0
  69. package/dist/views/task-detail.js +187 -0
  70. package/dist/views/tasks.d.ts +7 -0
  71. package/dist/views/tasks.js +72 -0
  72. package/package.json +46 -0
package/dist/css.js ADDED
@@ -0,0 +1,1071 @@
1
+ import { injectStyle } from "@bpmnkit/ui";
2
+ const OPERATE_STYLE_ID = "bpmnkit-operate-styles-v2";
3
+ /**
4
+ * Operate-specific layout CSS. Design tokens (colours, radius, font, etc.)
5
+ * come from @bpmnkit/ui — call injectUiStyles() before this.
6
+ *
7
+ * Component styles (badge, card, table) are also in @bpmnkit/ui.
8
+ */
9
+ const OPERATE_CSS = `
10
+ /* ── Layout ─────────────────────────────────────────────────────────────── */
11
+ .op-root {
12
+ font-family: var(--bpmnkit-font);
13
+ font-size: 13px;
14
+ color: var(--bpmnkit-fg);
15
+ background: var(--bpmnkit-bg);
16
+ height: 100%;
17
+ /* Metric accent colors — dark defaults */
18
+ --op-c-amber: #e8a54e;
19
+ --op-c-green: #3bba7c;
20
+ --op-c-purple: #a07cf5;
21
+ }
22
+ .op-root[data-theme="light"] {
23
+ --op-c-amber: #c07c10;
24
+ --op-c-green: #1a7a4a;
25
+ --op-c-purple: #6b3fd4;
26
+ }
27
+ .op-layout {
28
+ display: flex;
29
+ height: 100%;
30
+ overflow: hidden;
31
+ }
32
+ .op-main {
33
+ flex: 1;
34
+ display: flex;
35
+ flex-direction: column;
36
+ overflow: hidden;
37
+ }
38
+ .op-content {
39
+ flex: 1;
40
+ overflow-y: auto;
41
+ padding: 20px 24px;
42
+ }
43
+
44
+ /* ── Nav ─────────────────────────────────────────────────────────────────── */
45
+ .op-nav {
46
+ width: var(--bpmnkit-nav-width);
47
+ background: var(--bpmnkit-nav-bg);
48
+ display: flex;
49
+ flex-direction: column;
50
+ padding: 0;
51
+ flex-shrink: 0;
52
+ border-right: 1px solid rgba(255,255,255,0.06);
53
+ }
54
+ .op-nav-logo {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: 10px;
58
+ padding: 16px 20px;
59
+ font-size: 14px;
60
+ font-weight: 600;
61
+ color: var(--bpmnkit-nav-fg-active);
62
+ letter-spacing: 0.02em;
63
+ border-bottom: 1px solid rgba(255,255,255,0.06);
64
+ margin-bottom: 8px;
65
+ }
66
+ .op-nav-list {
67
+ list-style: none;
68
+ padding: 4px 10px;
69
+ margin: 0;
70
+ display: flex;
71
+ flex-direction: column;
72
+ gap: 2px;
73
+ }
74
+ .op-nav-item {
75
+ display: flex;
76
+ align-items: center;
77
+ gap: 10px;
78
+ width: 100%;
79
+ padding: 8px 12px;
80
+ background: none;
81
+ border: none;
82
+ border-radius: var(--bpmnkit-radius);
83
+ color: var(--bpmnkit-nav-fg);
84
+ font-size: 13px;
85
+ cursor: pointer;
86
+ text-align: left;
87
+ transition: background 0.15s, color 0.15s;
88
+ }
89
+ .op-nav-item:hover {
90
+ background: rgba(255,255,255,0.06);
91
+ color: var(--bpmnkit-nav-fg-active);
92
+ }
93
+ .op-nav-item--active {
94
+ background: rgba(76,142,247,0.18);
95
+ color: var(--bpmnkit-nav-fg-active);
96
+ }
97
+ .op-nav-icon {
98
+ display: flex;
99
+ align-items: center;
100
+ justify-content: center;
101
+ width: 16px;
102
+ height: 16px;
103
+ flex-shrink: 0;
104
+ opacity: 0.85;
105
+ }
106
+ .op-nav-icon svg { width: 100%; height: 100%; pointer-events: none; }
107
+
108
+ /* ── Header ─────────────────────────────────────────────────────────────── */
109
+ .op-header {
110
+ height: var(--bpmnkit-header-height);
111
+ display: flex;
112
+ align-items: center;
113
+ justify-content: space-between;
114
+ padding: 0 24px;
115
+ background: var(--bpmnkit-surface);
116
+ border-bottom: 1px solid var(--bpmnkit-border);
117
+ flex-shrink: 0;
118
+ }
119
+ .op-header-title {
120
+ font-size: 16px;
121
+ font-weight: 600;
122
+ margin: 0;
123
+ }
124
+ .op-header-right {
125
+ display: flex;
126
+ align-items: center;
127
+ gap: 8px;
128
+ }
129
+ .op-profile-select {
130
+ background: var(--bpmnkit-surface-2);
131
+ color: var(--bpmnkit-fg);
132
+ border: 1px solid var(--bpmnkit-border);
133
+ border-radius: var(--bpmnkit-radius);
134
+ padding: 5px 10px;
135
+ font-size: 12px;
136
+ cursor: pointer;
137
+ outline: none;
138
+ font-family: var(--bpmnkit-font);
139
+ }
140
+ .op-profile-select:focus { border-color: var(--bpmnkit-accent); }
141
+
142
+ /* ── Filter bar ──────────────────────────────────────────────────────────── */
143
+ .op-filter-bar {
144
+ display: flex;
145
+ align-items: center;
146
+ gap: 6px;
147
+ margin-bottom: 14px;
148
+ flex-wrap: wrap;
149
+ }
150
+ .op-proc-filter-wrap {
151
+ display: flex;
152
+ align-items: center;
153
+ gap: 5px;
154
+ margin-left: auto;
155
+ }
156
+ .op-proc-filter-label { font-size: 12px; color: var(--bpmnkit-fg-muted); white-space: nowrap; }
157
+ .op-proc-filter-select {
158
+ background: var(--bpmnkit-surface);
159
+ border: 1px solid var(--bpmnkit-border);
160
+ border-radius: var(--bpmnkit-radius);
161
+ padding: 3px 8px;
162
+ font-size: 12px;
163
+ color: var(--bpmnkit-fg);
164
+ cursor: pointer;
165
+ font-family: var(--bpmnkit-font);
166
+ max-width: 200px;
167
+ }
168
+ .op-proc-filter-select:focus { outline: none; border-color: var(--bpmnkit-accent); }
169
+
170
+ /* ── Process breadcrumb ──────────────────────────────────────────────────── */
171
+ .op-proc-breadcrumb { display: inline-flex; align-items: center; min-width: 0; max-width: 100%; }
172
+ .op-proc-root { color: var(--bpmnkit-fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
173
+ .op-proc-sep { color: var(--bpmnkit-fg-muted); opacity: 0.5; flex-shrink: 0; }
174
+ .op-proc-leaf { color: var(--bpmnkit-fg); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
175
+ .op-filter-btn {
176
+ background: var(--bpmnkit-surface);
177
+ border: 1px solid var(--bpmnkit-border);
178
+ border-radius: 20px;
179
+ padding: 4px 14px;
180
+ font-size: 12px;
181
+ color: var(--bpmnkit-fg-muted);
182
+ cursor: pointer;
183
+ transition: border-color 0.15s, color 0.15s;
184
+ font-family: var(--bpmnkit-font);
185
+ }
186
+ .op-filter-btn:hover {
187
+ color: var(--bpmnkit-fg);
188
+ border-color: var(--bpmnkit-accent);
189
+ }
190
+ .op-filter-btn--active {
191
+ background: rgba(76,142,247,0.15);
192
+ border-color: var(--bpmnkit-accent);
193
+ color: var(--bpmnkit-fg);
194
+ }
195
+
196
+ /* ── Card grid ───────────────────────────────────────────────────────────── */
197
+ .op-card-grid {
198
+ display: grid;
199
+ grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
200
+ gap: 14px;
201
+ margin-bottom: 24px;
202
+ }
203
+
204
+ /* ── Dashboard metric card ───────────────────────────────────────────────── */
205
+ .op-dash-card {
206
+ background: var(--bpmnkit-surface);
207
+ border: 1px solid var(--bpmnkit-border);
208
+ border-radius: var(--bpmnkit-radius-lg);
209
+ padding: 16px 16px 18px;
210
+ display: flex;
211
+ flex-direction: column;
212
+ gap: 12px;
213
+ cursor: pointer;
214
+ transition: border-color 0.15s, box-shadow 0.15s;
215
+ }
216
+ .op-dash-card:hover {
217
+ border-color: var(--accent);
218
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent);
219
+ }
220
+ .op-dash-card-top {
221
+ display: flex;
222
+ align-items: flex-start;
223
+ justify-content: space-between;
224
+ gap: 8px;
225
+ }
226
+ .op-dash-card-label {
227
+ font-size: 11px;
228
+ font-weight: 600;
229
+ text-transform: uppercase;
230
+ letter-spacing: 0.06em;
231
+ color: var(--bpmnkit-fg-muted);
232
+ line-height: 1.3;
233
+ margin-top: 2px;
234
+ }
235
+ .op-dash-card-icon {
236
+ width: 32px;
237
+ height: 32px;
238
+ flex-shrink: 0;
239
+ border-radius: 8px;
240
+ background: color-mix(in srgb, var(--accent) 14%, transparent);
241
+ color: var(--accent);
242
+ display: flex;
243
+ align-items: center;
244
+ justify-content: center;
245
+ }
246
+ .op-dash-card-icon svg {
247
+ width: 16px;
248
+ height: 16px;
249
+ display: block;
250
+ }
251
+ .op-dash-card-value {
252
+ font-size: 30px;
253
+ font-weight: 700;
254
+ line-height: 1;
255
+ color: var(--bpmnkit-fg);
256
+ letter-spacing: -0.02em;
257
+ }
258
+
259
+ /* ── Loading ─────────────────────────────────────────────────────────────── */
260
+ .op-loading {
261
+ padding: 40px;
262
+ text-align: center;
263
+ color: var(--bpmnkit-fg-muted);
264
+ font-size: 13px;
265
+ }
266
+
267
+ /* ── Instance detail ─────────────────────────────────────────────────────── */
268
+ .op-instance-detail {
269
+ position: relative;
270
+ display: flex;
271
+ flex-direction: column;
272
+ height: 100%;
273
+ overflow: hidden;
274
+ }
275
+ .op-breadcrumb { margin-bottom: 10px; }
276
+ .op-back-btn {
277
+ background: none;
278
+ border: none;
279
+ color: var(--bpmnkit-accent);
280
+ cursor: pointer;
281
+ font-size: 13px;
282
+ padding: 0;
283
+ font-family: var(--bpmnkit-font);
284
+ }
285
+ .op-back-btn:hover { text-decoration: underline; }
286
+ .op-instance-meta {
287
+ display: flex;
288
+ align-items: center;
289
+ gap: 10px;
290
+ margin-bottom: 14px;
291
+ flex-wrap: wrap;
292
+ }
293
+ .op-instance-key {
294
+ font-family: monospace;
295
+ font-size: 12px;
296
+ color: var(--bpmnkit-fg-muted);
297
+ background: var(--bpmnkit-surface-2);
298
+ padding: 2px 8px;
299
+ border-radius: var(--bpmnkit-radius-sm);
300
+ }
301
+ .op-instance-biz {
302
+ font-weight: 600;
303
+ color: var(--bpmnkit-fg);
304
+ }
305
+ .op-instance-time {
306
+ font-size: 12px;
307
+ color: var(--bpmnkit-fg-muted);
308
+ }
309
+ .op-detail-layout {
310
+ display: flex;
311
+ flex: 1;
312
+ gap: 16px;
313
+ overflow: hidden;
314
+ min-height: 0;
315
+ }
316
+ .op-detail-canvas {
317
+ flex: 1;
318
+ background: var(--bpmnkit-surface);
319
+ border: 1px solid var(--bpmnkit-border);
320
+ border-radius: var(--bpmnkit-radius);
321
+ overflow: hidden;
322
+ min-height: 0;
323
+ }
324
+ .op-detail-sidebar {
325
+ width: 320px;
326
+ flex-shrink: 0;
327
+ display: flex;
328
+ flex-direction: column;
329
+ background: var(--bpmnkit-surface);
330
+ border: 1px solid var(--bpmnkit-border);
331
+ border-radius: var(--bpmnkit-radius);
332
+ overflow: hidden;
333
+ }
334
+ .op-detail-tabs {
335
+ display: flex;
336
+ border-bottom: 1px solid var(--bpmnkit-border);
337
+ }
338
+ .op-detail-tab {
339
+ flex: 1;
340
+ background: none;
341
+ border: none;
342
+ border-bottom: 2px solid transparent;
343
+ padding: 10px 16px;
344
+ font-size: 12px;
345
+ font-weight: 600;
346
+ color: var(--bpmnkit-fg-muted);
347
+ cursor: pointer;
348
+ transition: color 0.15s, border-color 0.15s;
349
+ font-family: var(--bpmnkit-font);
350
+ }
351
+ .op-detail-tab:hover { color: var(--bpmnkit-fg); }
352
+ .op-detail-tab--active {
353
+ color: var(--bpmnkit-fg);
354
+ border-bottom-color: var(--bpmnkit-accent);
355
+ }
356
+ .op-detail-panel {
357
+ flex: 1;
358
+ overflow-y: auto;
359
+ padding: 12px;
360
+ }
361
+ /* ── Variables panel ─────────────────────────────────────────────────────── */
362
+ .op-var-panel { padding: 0; }
363
+ .op-var-controls {
364
+ position: sticky;
365
+ top: 0;
366
+ z-index: 1;
367
+ background: var(--bpmnkit-surface);
368
+ border-bottom: 1px solid var(--bpmnkit-border);
369
+ padding: 10px 12px 8px;
370
+ display: flex;
371
+ flex-direction: column;
372
+ gap: 6px;
373
+ }
374
+ .op-var-controls-row {
375
+ display: flex;
376
+ align-items: center;
377
+ gap: 4px;
378
+ flex-wrap: wrap;
379
+ }
380
+ .op-var-controls-sep { flex: 1; }
381
+ .op-var-sort-btn {
382
+ background: var(--bpmnkit-surface-2);
383
+ border: 1px solid var(--bpmnkit-border);
384
+ border-radius: var(--bpmnkit-radius-sm);
385
+ padding: 2px 8px;
386
+ font-size: 11px;
387
+ color: var(--bpmnkit-fg);
388
+ cursor: pointer;
389
+ white-space: nowrap;
390
+ font-family: var(--bpmnkit-font);
391
+ }
392
+ .op-var-sort-btn:hover { border-color: var(--bpmnkit-accent); color: var(--bpmnkit-accent); }
393
+ .op-var-type-btn {
394
+ background: none;
395
+ border: 1px solid var(--bpmnkit-border);
396
+ border-radius: var(--bpmnkit-radius-sm);
397
+ padding: 2px 7px;
398
+ font-size: 11px;
399
+ color: var(--bpmnkit-fg-muted);
400
+ cursor: pointer;
401
+ font-family: monospace;
402
+ }
403
+ .op-var-type-btn:hover { color: var(--bpmnkit-fg); border-color: var(--bpmnkit-accent); }
404
+ .op-var-type-btn--active { background: var(--bpmnkit-accent); border-color: var(--bpmnkit-accent); color: #fff; }
405
+ .op-var-controls .op-search { max-width: 100%; }
406
+ .op-var-list { display: flex; flex-direction: column; gap: 4px; padding: 10px 12px; }
407
+ .op-var-row { display: flex; align-items: center; gap: 6px; padding: 5px 8px; border-radius: var(--bpmnkit-radius-sm); background: var(--bpmnkit-surface-2); min-width: 0; }
408
+ .op-var-row--clickable { cursor: pointer; }
409
+ .op-var-row--clickable:hover { background: var(--bpmnkit-surface-3, var(--bpmnkit-surface-2)); outline: 1px solid var(--bpmnkit-border); }
410
+ .op-var-name { font-family: monospace; font-size: 12px; color: var(--bpmnkit-fg); flex-shrink: 0; }
411
+ .op-var-type {
412
+ font-family: monospace;
413
+ font-size: 10px;
414
+ padding: 1px 4px;
415
+ border-radius: var(--bpmnkit-radius-sm);
416
+ flex-shrink: 0;
417
+ opacity: 0.75;
418
+ }
419
+ .op-var-type--string { background: color-mix(in srgb, var(--op-c-green) 15%, transparent); color: var(--op-c-green); }
420
+ .op-var-type--number { background: color-mix(in srgb, var(--op-c-amber) 15%, transparent); color: var(--op-c-amber); }
421
+ .op-var-type--boolean { background: color-mix(in srgb, var(--op-c-purple) 15%, transparent); color: var(--op-c-purple); }
422
+ .op-var-type--json { background: color-mix(in srgb, var(--bpmnkit-accent) 15%, transparent); color: var(--bpmnkit-accent); }
423
+ .op-var-type--null { background: var(--bpmnkit-surface-3, var(--bpmnkit-surface-2)); color: var(--bpmnkit-fg-muted); }
424
+ .op-var-value { font-family: monospace; font-size: 12px; color: var(--bpmnkit-fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; flex: 1; }
425
+
426
+ /* ── Variable modal ──────────────────────────────────────────────────────── */
427
+ .op-modal-overlay {
428
+ position: absolute;
429
+ inset: 0;
430
+ background: rgba(0,0,0,0.45);
431
+ display: flex;
432
+ align-items: center;
433
+ justify-content: center;
434
+ z-index: 100;
435
+ }
436
+ .op-modal {
437
+ background: var(--bpmnkit-surface);
438
+ border: 1px solid var(--bpmnkit-border);
439
+ border-radius: var(--bpmnkit-radius);
440
+ width: min(680px, 90%);
441
+ max-height: 88%;
442
+ height: 88%;
443
+ display: flex;
444
+ flex-direction: column;
445
+ box-shadow: 0 8px 32px rgba(0,0,0,0.3);
446
+ }
447
+ .op-modal-header {
448
+ display: flex;
449
+ align-items: center;
450
+ gap: 10px;
451
+ padding: 10px 14px;
452
+ border-bottom: 1px solid var(--bpmnkit-border);
453
+ flex-shrink: 0;
454
+ }
455
+ .op-modal-title { font-family: monospace; font-size: 13px; color: var(--bpmnkit-fg); flex-shrink: 0; }
456
+ .op-modal-search-input {
457
+ flex: 1;
458
+ background: var(--bpmnkit-surface-2);
459
+ border: 1px solid var(--bpmnkit-border);
460
+ border-radius: var(--bpmnkit-radius-sm);
461
+ padding: 4px 8px;
462
+ font-size: 12px;
463
+ color: var(--bpmnkit-fg);
464
+ outline: none;
465
+ font-family: var(--bpmnkit-font);
466
+ min-width: 0;
467
+ }
468
+ .op-modal-search-input:focus { border-color: var(--bpmnkit-accent); }
469
+ .op-modal-search-input::placeholder { color: var(--bpmnkit-fg-muted); }
470
+ .op-modal-close {
471
+ background: none;
472
+ border: none;
473
+ color: var(--bpmnkit-fg-muted);
474
+ cursor: pointer;
475
+ font-size: 14px;
476
+ line-height: 1;
477
+ padding: 2px 4px;
478
+ border-radius: var(--bpmnkit-radius-sm);
479
+ flex-shrink: 0;
480
+ }
481
+ .op-modal-close:hover { color: var(--bpmnkit-fg); background: var(--bpmnkit-surface-2); }
482
+ .op-modal-body {
483
+ font-family: monospace;
484
+ font-size: 12px;
485
+ color: var(--bpmnkit-fg);
486
+ padding: 14px 16px;
487
+ margin: 0;
488
+ overflow: auto;
489
+ white-space: pre;
490
+ line-height: 1.7;
491
+ flex: 1;
492
+ }
493
+
494
+ /* ── JSON syntax colors ──────────────────────────────────────────────────── */
495
+ .op-json-key { color: var(--bpmnkit-accent); }
496
+ .op-json-string { color: var(--op-c-green); }
497
+ .op-json-number { color: var(--op-c-amber); }
498
+ .op-json-bool { color: var(--op-c-purple); }
499
+ .op-json-null { color: var(--bpmnkit-fg-muted); font-style: italic; }
500
+ .op-json-match { background: rgba(255, 210, 0, 0.35); border-radius: 2px; color: inherit; }
501
+ .op-panel-empty { padding: 20px; text-align: center; color: var(--bpmnkit-fg-muted); font-size: 12px; }
502
+ .op-incident-row {
503
+ display: flex;
504
+ flex-direction: column;
505
+ gap: 4px;
506
+ padding: 8px 10px;
507
+ border-radius: var(--bpmnkit-radius-sm);
508
+ background: var(--bpmnkit-surface-2);
509
+ margin-bottom: 6px;
510
+ }
511
+ .op-incident-type { font-size: 11px; font-weight: 600; color: var(--bpmnkit-warn); text-transform: uppercase; }
512
+ .op-incident-msg { font-size: 12px; color: var(--bpmnkit-fg); line-height: 1.4; }
513
+
514
+ /* ── Misc ────────────────────────────────────────────────────────────────── */
515
+ .op-cell-error {
516
+ display: block;
517
+ overflow: hidden;
518
+ text-overflow: ellipsis;
519
+ white-space: nowrap;
520
+ color: var(--bpmnkit-danger);
521
+ font-size: 12px;
522
+ }
523
+ .op-incident-msg-cell {
524
+ display: block;
525
+ overflow: hidden;
526
+ text-overflow: ellipsis;
527
+ white-space: nowrap;
528
+ font-size: 12px;
529
+ }
530
+ .op-view { height: 100%; }
531
+ .op-dashboard { height: auto; }
532
+
533
+ /* ── Chart ───────────────────────────────────────────────────────────────── */
534
+ .op-chart-section {
535
+ margin-bottom: 8px;
536
+ }
537
+ .op-chart-heading {
538
+ font-size: 11px;
539
+ font-weight: 600;
540
+ text-transform: uppercase;
541
+ letter-spacing: 0.07em;
542
+ color: var(--bpmnkit-fg-muted);
543
+ margin-bottom: 10px;
544
+ }
545
+ .op-chart {
546
+ background: var(--bpmnkit-surface);
547
+ border: 1px solid var(--bpmnkit-border);
548
+ border-radius: var(--bpmnkit-radius);
549
+ padding: 12px 14px 10px;
550
+ }
551
+ .op-chart-svg {
552
+ display: block;
553
+ width: 100%;
554
+ height: 160px;
555
+ overflow: visible;
556
+ }
557
+ .op-chart-grid {
558
+ stroke: var(--bpmnkit-border);
559
+ stroke-width: 1;
560
+ stroke-dasharray: 3 3;
561
+ }
562
+ .op-chart-axis {
563
+ stroke: var(--bpmnkit-border);
564
+ stroke-width: 1;
565
+ }
566
+ .op-chart-axis-label {
567
+ font-size: 10px;
568
+ fill: var(--bpmnkit-fg-muted);
569
+ font-family: var(--bpmnkit-font);
570
+ }
571
+ /* Pulsing loading dots (shown when < 2 data points) */
572
+ .op-chart-dot-pulse {
573
+ fill: var(--bpmnkit-border);
574
+ animation: op-chart-pulse 1.2s ease-in-out infinite;
575
+ }
576
+ @keyframes op-chart-pulse {
577
+ 0%, 100% { opacity: 0.3; transform: scale(1); }
578
+ 50% { opacity: 1; transform: scale(1.3); }
579
+ }
580
+
581
+ /* ── Filter table / toolbar ─────────────────────────────────────────────── */
582
+ .op-filter-table { display: flex; flex-direction: column; }
583
+ .op-filter-table .bpmnkit-table-wrap { overflow: auto; }
584
+ .op-toolbar {
585
+ display: flex;
586
+ align-items: center;
587
+ gap: 8px;
588
+ margin-bottom: 10px;
589
+ flex-wrap: wrap;
590
+ }
591
+ .op-search {
592
+ flex: 1;
593
+ max-width: 260px;
594
+ background: var(--bpmnkit-surface);
595
+ border: 1px solid var(--bpmnkit-border);
596
+ border-radius: var(--bpmnkit-radius);
597
+ padding: 5px 10px;
598
+ font-size: 12px;
599
+ color: var(--bpmnkit-fg);
600
+ outline: none;
601
+ font-family: var(--bpmnkit-font);
602
+ }
603
+ .op-search::placeholder { color: var(--bpmnkit-fg-muted); }
604
+ .op-search:focus { border-color: var(--bpmnkit-accent); }
605
+ .op-search-count {
606
+ font-size: 11px;
607
+ color: var(--bpmnkit-fg-muted);
608
+ white-space: nowrap;
609
+ }
610
+ .op-th-sort {
611
+ cursor: pointer;
612
+ user-select: none;
613
+ display: flex !important;
614
+ align-items: center;
615
+ gap: 4px;
616
+ }
617
+ .op-th-sort:hover { color: var(--bpmnkit-fg); }
618
+ .op-sort-icon { font-size: 10px; color: var(--bpmnkit-fg-muted); flex-shrink: 0; }
619
+ .op-sort-icon--active { color: var(--bpmnkit-accent); }
620
+
621
+ /* ── Pagination bar ──────────────────────────────────────────────────────── */
622
+ .op-pagination {
623
+ display: flex;
624
+ align-items: center;
625
+ gap: 6px;
626
+ padding: 8px 0 4px;
627
+ font-size: 12px;
628
+ color: var(--bpmnkit-fg-muted);
629
+ flex-shrink: 0;
630
+ }
631
+ .op-pagination-btn {
632
+ background: var(--bpmnkit-surface);
633
+ border: 1px solid var(--bpmnkit-border);
634
+ border-radius: var(--bpmnkit-radius);
635
+ padding: 2px 8px;
636
+ font-size: 13px;
637
+ color: var(--bpmnkit-fg);
638
+ cursor: pointer;
639
+ line-height: 1.4;
640
+ font-family: var(--bpmnkit-font);
641
+ }
642
+ .op-pagination-btn:hover:not(:disabled) { border-color: var(--bpmnkit-accent); color: var(--bpmnkit-accent); }
643
+ .op-pagination-btn:disabled { opacity: 0.35; cursor: default; }
644
+ .op-page-size {
645
+ background: var(--bpmnkit-surface);
646
+ border: 1px solid var(--bpmnkit-border);
647
+ border-radius: var(--bpmnkit-radius);
648
+ padding: 2px 4px;
649
+ font-size: 12px;
650
+ color: var(--bpmnkit-fg);
651
+ cursor: pointer;
652
+ font-family: var(--bpmnkit-font);
653
+ }
654
+ .op-pagination-info { margin: 0 4px; white-space: nowrap; }
655
+
656
+ /* ── Definitions / Decisions views ──────────────────────────────────────── */
657
+ .op-def-view { display: flex; flex-direction: column; }
658
+ .op-mono-cell { font-family: monospace; font-size: 11px; color: var(--bpmnkit-fg-muted); }
659
+
660
+ /* ── Definition detail ───────────────────────────────────────────────────── */
661
+ .op-def-detail {
662
+ display: flex;
663
+ flex-direction: column;
664
+ height: 100%;
665
+ overflow: hidden;
666
+ }
667
+ .op-def-meta {
668
+ display: flex;
669
+ align-items: center;
670
+ gap: 10px;
671
+ margin-bottom: 14px;
672
+ flex-wrap: wrap;
673
+ }
674
+ .op-def-meta-name {
675
+ font-weight: 600;
676
+ font-size: 15px;
677
+ color: var(--bpmnkit-fg);
678
+ }
679
+ .op-def-meta-version {
680
+ font-size: 12px;
681
+ color: var(--bpmnkit-fg-muted);
682
+ background: var(--bpmnkit-surface-2);
683
+ padding: 2px 8px;
684
+ border-radius: var(--bpmnkit-radius-sm);
685
+ }
686
+ .op-version-select {
687
+ background: var(--bpmnkit-surface-2);
688
+ color: var(--bpmnkit-fg);
689
+ border: 1px solid var(--bpmnkit-border);
690
+ border-radius: var(--bpmnkit-radius-sm);
691
+ padding: 2px 8px;
692
+ font-size: 12px;
693
+ cursor: pointer;
694
+ outline: none;
695
+ font-family: var(--bpmnkit-font);
696
+ }
697
+ .op-version-select:focus { border-color: var(--bpmnkit-accent); }
698
+ .op-def-canvas {
699
+ flex: 1;
700
+ background: var(--bpmnkit-surface);
701
+ border: 1px solid var(--bpmnkit-border);
702
+ border-radius: var(--bpmnkit-radius);
703
+ overflow: hidden;
704
+ min-height: 0;
705
+ }
706
+
707
+ /* ── Usage metrics section ───────────────────────────────────────────────── */
708
+ .op-usage-section { margin-bottom: 16px; }
709
+ .op-usage-grid {
710
+ display: flex;
711
+ gap: 10px;
712
+ flex-wrap: wrap;
713
+ }
714
+ .op-usage-card {
715
+ background: var(--bpmnkit-surface);
716
+ border: 1px solid var(--bpmnkit-border);
717
+ border-radius: var(--bpmnkit-radius);
718
+ padding: 10px 16px;
719
+ min-width: 140px;
720
+ flex: 1;
721
+ }
722
+ .op-usage-card-value {
723
+ font-size: 20px;
724
+ font-weight: 700;
725
+ color: var(--bpmnkit-fg);
726
+ margin-bottom: 2px;
727
+ }
728
+ .op-usage-card-label {
729
+ font-size: 11px;
730
+ color: var(--bpmnkit-fg-muted);
731
+ text-transform: uppercase;
732
+ letter-spacing: 0.05em;
733
+ }
734
+
735
+ /* ── Task detail ─────────────────────────────────────────────────────────── */
736
+ .op-task-detail-body {
737
+ display: flex;
738
+ flex: 1;
739
+ gap: 16px;
740
+ overflow: hidden;
741
+ min-height: 0;
742
+ }
743
+ .op-task-info-panel {
744
+ width: 280px;
745
+ flex-shrink: 0;
746
+ background: var(--bpmnkit-surface);
747
+ border: 1px solid var(--bpmnkit-border);
748
+ border-radius: var(--bpmnkit-radius);
749
+ overflow-y: auto;
750
+ padding: 14px;
751
+ }
752
+ .op-task-info-heading {
753
+ font-size: 11px;
754
+ font-weight: 600;
755
+ text-transform: uppercase;
756
+ letter-spacing: 0.07em;
757
+ color: var(--bpmnkit-fg-muted);
758
+ margin-bottom: 10px;
759
+ }
760
+ .op-task-meta-row {
761
+ display: flex;
762
+ flex-direction: column;
763
+ gap: 1px;
764
+ margin-bottom: 8px;
765
+ }
766
+ .op-task-meta-label {
767
+ font-size: 10px;
768
+ font-weight: 600;
769
+ text-transform: uppercase;
770
+ letter-spacing: 0.05em;
771
+ color: var(--bpmnkit-fg-muted);
772
+ }
773
+ .op-task-meta-value {
774
+ font-size: 12px;
775
+ color: var(--bpmnkit-fg);
776
+ word-break: break-all;
777
+ }
778
+ .op-task-form-wrap {
779
+ flex: 1;
780
+ background: var(--bpmnkit-surface);
781
+ border: 1px solid var(--bpmnkit-border);
782
+ border-radius: var(--bpmnkit-radius);
783
+ overflow: hidden;
784
+ min-height: 0;
785
+ display: flex;
786
+ flex-direction: column;
787
+ padding: 14px;
788
+ }
789
+ .op-task-form-container {
790
+ flex: 1;
791
+ overflow: hidden;
792
+ min-height: 0;
793
+ }
794
+
795
+ /* ── Incident detail — action buttons ────────────────────────────────────── */
796
+ .op-action-btn {
797
+ display: inline-flex;
798
+ align-items: center;
799
+ gap: 6px;
800
+ padding: 6px 14px;
801
+ background: var(--bpmnkit-surface-2);
802
+ border: 1px solid var(--bpmnkit-border);
803
+ border-radius: var(--bpmnkit-radius-sm);
804
+ font-size: 12px;
805
+ font-family: var(--bpmnkit-font);
806
+ color: var(--bpmnkit-fg);
807
+ cursor: pointer;
808
+ transition: background 0.15s;
809
+ }
810
+ .op-action-btn:hover { background: var(--bpmnkit-border); }
811
+ .op-action-btn:disabled { opacity: 0.5; cursor: not-allowed; }
812
+ .op-action-btn--primary {
813
+ background: var(--bpmnkit-accent);
814
+ border-color: var(--bpmnkit-accent);
815
+ color: #fff;
816
+ }
817
+ .op-action-btn--primary:hover { opacity: 0.88; background: var(--bpmnkit-accent); }
818
+ .op-action-btn--danger {
819
+ border-color: color-mix(in srgb, var(--bpmnkit-danger, #e05252) 60%, transparent);
820
+ color: var(--bpmnkit-danger, #e05252);
821
+ }
822
+ .op-action-btn--danger:hover { background: color-mix(in srgb, var(--bpmnkit-danger, #e05252) 10%, transparent); }
823
+ .op-action-btns {
824
+ display: flex;
825
+ gap: 8px;
826
+ flex-wrap: wrap;
827
+ margin-top: 16px;
828
+ padding-top: 12px;
829
+ border-top: 1px solid var(--bpmnkit-border);
830
+ }
831
+ .op-action-feedback {
832
+ font-size: 12px;
833
+ margin-top: 8px;
834
+ padding: 6px 10px;
835
+ border-radius: var(--bpmnkit-radius-sm);
836
+ }
837
+ .op-action-feedback--ok { background: color-mix(in srgb, var(--op-c-green) 12%, transparent); color: var(--op-c-green); }
838
+ .op-action-feedback--err { background: color-mix(in srgb, var(--op-c-amber) 12%, transparent); color: var(--op-c-amber); }
839
+
840
+ /* ── Process chain breadcrumb ────────────────────────────────────────────── */
841
+ .op-process-chain {
842
+ display: flex;
843
+ align-items: center;
844
+ gap: 4px;
845
+ font-size: 12px;
846
+ color: var(--bpmnkit-fg-muted);
847
+ margin-bottom: 8px;
848
+ flex-wrap: wrap;
849
+ }
850
+ .op-process-chain-sep { color: var(--bpmnkit-border); }
851
+ .op-process-chain-link {
852
+ background: none;
853
+ border: none;
854
+ padding: 0;
855
+ font: inherit;
856
+ font-size: 12px;
857
+ color: var(--bpmnkit-accent);
858
+ cursor: pointer;
859
+ text-decoration: underline;
860
+ text-underline-offset: 2px;
861
+ }
862
+ .op-process-chain-link:hover { opacity: 0.75; }
863
+ .op-process-chain-link:disabled { color: var(--bpmnkit-fg-muted); text-decoration: none; cursor: default; }
864
+
865
+ /* ── Job details section ──────────────────────────────────────────────────── */
866
+ .op-job-section {
867
+ margin-top: 16px;
868
+ border-top: 1px solid var(--bpmnkit-border);
869
+ padding-top: 12px;
870
+ }
871
+ .op-job-section-title {
872
+ font-size: 11px;
873
+ font-weight: 600;
874
+ text-transform: uppercase;
875
+ letter-spacing: 0.05em;
876
+ color: var(--bpmnkit-fg-muted);
877
+ margin-bottom: 8px;
878
+ }
879
+ .op-job-headers {
880
+ font-size: 12px;
881
+ font-family: monospace;
882
+ background: var(--bpmnkit-surface-2);
883
+ border: 1px solid var(--bpmnkit-border);
884
+ border-radius: var(--bpmnkit-radius-sm);
885
+ padding: 8px 10px;
886
+ overflow-x: auto;
887
+ white-space: pre-wrap;
888
+ word-break: break-all;
889
+ line-height: 1.6;
890
+ color: var(--bpmnkit-fg);
891
+ }
892
+
893
+ /* ── Read-only config panel wrapper ─────────────────────────────────────── */
894
+ .op-props-pane { padding: 0; overflow-y: auto; flex: 1; display: flex; flex-direction: column; }
895
+ /* Disable all form inputs inside the read-only properties panel */
896
+ .op-props-pane input,
897
+ .op-props-pane textarea,
898
+ .op-props-pane select {
899
+ pointer-events: none;
900
+ opacity: 0.75;
901
+ }
902
+ /* Keep action-style buttons (links, collapse) but disable edit triggers */
903
+ .op-props-pane button.bpmnkit-cfg-field-edit-btn,
904
+ .op-props-pane button.bpmnkit-cfg-overlay-trigger {
905
+ display: none;
906
+ }
907
+ .op-props-pane .bpmnkit-cfg-empty {
908
+ padding: 20px;
909
+ text-align: center;
910
+ color: var(--bpmnkit-fg-muted);
911
+ font-size: 12px;
912
+ }
913
+ /* Placeholder shown before element is selected */
914
+ .op-props-placeholder {
915
+ padding: 20px;
916
+ text-align: center;
917
+ color: var(--bpmnkit-fg-muted);
918
+ font-size: 12px;
919
+ line-height: 1.5;
920
+ }
921
+
922
+ /* ── AI Assist panel ─────────────────────────────────────────────────────── */
923
+ .op-ai-assist-panel {
924
+ display: flex;
925
+ flex-direction: column;
926
+ gap: 12px;
927
+ height: 100%;
928
+ }
929
+ .op-ai-assist-intro {
930
+ font-size: 12px;
931
+ color: var(--bpmnkit-fg-muted);
932
+ line-height: 1.5;
933
+ margin: 0;
934
+ }
935
+ .op-ai-response {
936
+ flex: 1;
937
+ font-size: 12px;
938
+ font-family: var(--bpmnkit-font);
939
+ line-height: 1.6;
940
+ white-space: pre-wrap;
941
+ word-break: break-word;
942
+ background: var(--bpmnkit-surface-2);
943
+ border: 1px solid var(--bpmnkit-border);
944
+ border-radius: var(--bpmnkit-radius-sm);
945
+ padding: 10px 12px;
946
+ overflow-y: auto;
947
+ min-height: 200px;
948
+ margin: 0;
949
+ }
950
+
951
+ /* ── Form modal (Start Instance, Correlate Message, etc.) ────────────────── */
952
+ .op-modal--form {
953
+ height: auto;
954
+ max-height: 80%;
955
+ }
956
+ .op-modal-form-body {
957
+ padding: 16px;
958
+ display: flex;
959
+ flex-direction: column;
960
+ gap: 14px;
961
+ overflow-y: auto;
962
+ }
963
+ .op-form-group {
964
+ display: flex;
965
+ flex-direction: column;
966
+ gap: 5px;
967
+ }
968
+ .op-form-label {
969
+ font-size: 11px;
970
+ font-weight: 600;
971
+ text-transform: uppercase;
972
+ letter-spacing: 0.05em;
973
+ color: var(--bpmnkit-fg-muted);
974
+ }
975
+ .op-form-input {
976
+ background: var(--bpmnkit-surface-2);
977
+ border: 1px solid var(--bpmnkit-border);
978
+ border-radius: var(--bpmnkit-radius-sm);
979
+ padding: 6px 10px;
980
+ font-size: 13px;
981
+ color: var(--bpmnkit-fg);
982
+ outline: none;
983
+ font-family: var(--bpmnkit-font);
984
+ }
985
+ .op-form-input:focus { border-color: var(--bpmnkit-accent); }
986
+ .op-form-input::placeholder { color: var(--bpmnkit-fg-muted); }
987
+ .op-form-textarea {
988
+ background: var(--bpmnkit-surface-2);
989
+ border: 1px solid var(--bpmnkit-border);
990
+ border-radius: var(--bpmnkit-radius-sm);
991
+ padding: 6px 10px;
992
+ font-size: 12px;
993
+ color: var(--bpmnkit-fg);
994
+ outline: none;
995
+ font-family: monospace;
996
+ resize: vertical;
997
+ min-height: 80px;
998
+ line-height: 1.5;
999
+ }
1000
+ .op-form-textarea:focus { border-color: var(--bpmnkit-accent); }
1001
+ .op-form-textarea::placeholder { color: var(--bpmnkit-fg-muted); }
1002
+ .op-form-hint { font-size: 11px; color: var(--bpmnkit-fg-muted); line-height: 1.4; }
1003
+ .op-form-error { font-size: 12px; color: var(--bpmnkit-danger, #e05252); padding: 4px 0; }
1004
+ .op-modal-form-footer {
1005
+ display: flex;
1006
+ align-items: center;
1007
+ gap: 8px;
1008
+ padding: 12px 16px;
1009
+ border-top: 1px solid var(--bpmnkit-border);
1010
+ flex-shrink: 0;
1011
+ }
1012
+ .op-modal-form-footer .op-action-feedback { margin-top: 0; flex: 1; }
1013
+
1014
+ /* ── Messages & Signals view ─────────────────────────────────────────────── */
1015
+ .op-msg-view { display: flex; flex-direction: column; gap: 20px; }
1016
+ .op-msg-actions {
1017
+ display: grid;
1018
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
1019
+ gap: 12px;
1020
+ }
1021
+ .op-msg-action-card {
1022
+ background: var(--bpmnkit-surface);
1023
+ border: 1px solid var(--bpmnkit-border);
1024
+ border-radius: var(--bpmnkit-radius-lg);
1025
+ padding: 16px;
1026
+ display: flex;
1027
+ flex-direction: column;
1028
+ gap: 8px;
1029
+ cursor: pointer;
1030
+ text-align: left;
1031
+ font-family: var(--bpmnkit-font);
1032
+ transition: border-color 0.15s, box-shadow 0.15s;
1033
+ width: 100%;
1034
+ }
1035
+ .op-msg-action-card:hover {
1036
+ border-color: var(--bpmnkit-accent);
1037
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--bpmnkit-accent) 30%, transparent);
1038
+ }
1039
+ .op-msg-action-card-title {
1040
+ font-size: 13px;
1041
+ font-weight: 600;
1042
+ color: var(--bpmnkit-fg);
1043
+ }
1044
+ .op-msg-action-card-desc {
1045
+ font-size: 12px;
1046
+ color: var(--bpmnkit-fg-muted);
1047
+ line-height: 1.4;
1048
+ }
1049
+ .op-msg-section-title {
1050
+ font-size: 11px;
1051
+ font-weight: 600;
1052
+ text-transform: uppercase;
1053
+ letter-spacing: 0.07em;
1054
+ color: var(--bpmnkit-fg-muted);
1055
+ margin-bottom: 8px;
1056
+ }
1057
+ .op-kv-body {
1058
+ padding: 12px 16px;
1059
+ display: flex;
1060
+ flex-direction: column;
1061
+ gap: 8px;
1062
+ overflow-y: auto;
1063
+ }
1064
+ .op-kv-row { display: flex; gap: 12px; font-size: 12px; align-items: baseline; }
1065
+ .op-kv-key { color: var(--bpmnkit-fg-muted); min-width: 120px; flex-shrink: 0; font-weight: 500; }
1066
+ .op-kv-value { color: var(--bpmnkit-fg); font-family: monospace; word-break: break-all; }
1067
+ `;
1068
+ export function injectOperateStyles() {
1069
+ injectStyle(OPERATE_STYLE_ID, OPERATE_CSS);
1070
+ }
1071
+ //# sourceMappingURL=css.js.map