@agentiffai/design 0.1.5 → 0.1.7

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 (43) hide show
  1. package/dist/{Window-CukhSS8T.d.cts → StreamStatusIndicator-DM5n4MI1.d.cts} +141 -4
  2. package/dist/{Window-CukhSS8T.d.ts → StreamStatusIndicator-DM5n4MI1.d.ts} +141 -4
  3. package/dist/copilotkit/index.cjs +974 -222
  4. package/dist/copilotkit/index.cjs.map +1 -1
  5. package/dist/copilotkit/index.d.cts +10 -2
  6. package/dist/copilotkit/index.d.ts +10 -2
  7. package/dist/copilotkit/index.js +972 -223
  8. package/dist/copilotkit/index.js.map +1 -1
  9. package/dist/index.cjs +1829 -175
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.d.cts +17 -3
  12. package/dist/index.d.ts +17 -3
  13. package/dist/index.js +1822 -176
  14. package/dist/index.js.map +1 -1
  15. package/dist/layout/index.cjs +85 -50
  16. package/dist/layout/index.cjs.map +1 -1
  17. package/dist/layout/index.d.cts +10 -3
  18. package/dist/layout/index.d.ts +10 -3
  19. package/dist/layout/index.js +85 -50
  20. package/dist/layout/index.js.map +1 -1
  21. package/dist/theme/index.cjs +6 -1
  22. package/dist/theme/index.cjs.map +1 -1
  23. package/dist/theme/index.d.cts +8 -0
  24. package/dist/theme/index.d.ts +8 -0
  25. package/dist/theme/index.js +6 -1
  26. package/dist/theme/index.js.map +1 -1
  27. package/dist/workflow/index.cjs +995 -0
  28. package/dist/workflow/index.cjs.map +1 -0
  29. package/dist/workflow/index.d.cts +168 -0
  30. package/dist/workflow/index.d.ts +168 -0
  31. package/dist/workflow/index.js +986 -0
  32. package/dist/workflow/index.js.map +1 -0
  33. package/package.json +15 -3
  34. package/public/assets/avatar-transparent-bg.png +0 -0
  35. package/public/assets/icon-set/Icon-arrow-left-fill.svg +1 -0
  36. package/public/assets/icon-set/Icon-check-fill.svg +3 -0
  37. package/public/assets/icon-set/Icon-close-fill.svg +3 -0
  38. package/public/assets/icon-set/Icon-hourglass-line.svg +3 -0
  39. package/public/assets/icon-set/Icon-loader-2-line.svg +3 -0
  40. package/public/assets/icon-set/Icon-radio-button-line.svg +3 -0
  41. package/public/assets/icon-set/Icon-shield-check-fill.svg +3 -0
  42. package/public/assets/icon-set/Icon-shield-cross-fill.svg +3 -0
  43. package/public/assets/icon-set/logout-box-fill.svg +1 -0
@@ -0,0 +1,995 @@
1
+ 'use strict';
2
+
3
+ var styled4 = require('styled-components');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('react');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var styled4__default = /*#__PURE__*/_interopDefault(styled4);
10
+
11
+ // src/components/workflow/WorkflowStatusBadge.tsx
12
+ var spin = styled4.keyframes`
13
+ from {
14
+ transform: rotate(0deg);
15
+ }
16
+ to {
17
+ transform: rotate(360deg);
18
+ }
19
+ `;
20
+ var pulse = styled4.keyframes`
21
+ 0%, 100% {
22
+ opacity: 1;
23
+ }
24
+ 50% {
25
+ opacity: 0.5;
26
+ }
27
+ `;
28
+ var BadgeContainer = styled4__default.default.div`
29
+ display: inline-flex;
30
+ align-items: center;
31
+ gap: ${(props) => {
32
+ switch (props.$size) {
33
+ case "sm":
34
+ return "4px";
35
+ case "lg":
36
+ return "8px";
37
+ case "md":
38
+ default:
39
+ return "6px";
40
+ }
41
+ }};
42
+ padding: ${(props) => {
43
+ switch (props.$size) {
44
+ case "sm":
45
+ return "4px 8px";
46
+ case "lg":
47
+ return "8px 16px";
48
+ case "md":
49
+ default:
50
+ return "6px 12px";
51
+ }
52
+ }};
53
+ background-color: ${(props) => {
54
+ switch (props.$status) {
55
+ case "pending":
56
+ return "rgba(107, 114, 128, 0.1)";
57
+ // Gray
58
+ case "running":
59
+ return "rgba(59, 130, 246, 0.1)";
60
+ // Blue
61
+ case "completed":
62
+ return "rgba(16, 185, 129, 0.1)";
63
+ // Green
64
+ case "failed":
65
+ return "rgba(239, 68, 68, 0.1)";
66
+ // Red
67
+ case "timeout":
68
+ return "rgba(245, 158, 11, 0.1)";
69
+ }
70
+ }};
71
+ border: 1px solid
72
+ ${(props) => {
73
+ switch (props.$status) {
74
+ case "pending":
75
+ return "rgba(107, 114, 128, 0.3)";
76
+ case "running":
77
+ return "rgba(59, 130, 246, 0.3)";
78
+ case "completed":
79
+ return "rgba(16, 185, 129, 0.3)";
80
+ case "failed":
81
+ return "rgba(239, 68, 68, 0.3)";
82
+ case "timeout":
83
+ return "rgba(245, 158, 11, 0.3)";
84
+ }
85
+ }};
86
+ border-radius: ${(props) => {
87
+ switch (props.$size) {
88
+ case "sm":
89
+ return "4px";
90
+ case "lg":
91
+ return "8px";
92
+ case "md":
93
+ default:
94
+ return "6px";
95
+ }
96
+ }};
97
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
98
+ 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
99
+ font-size: ${(props) => {
100
+ switch (props.$size) {
101
+ case "sm":
102
+ return "11px";
103
+ case "lg":
104
+ return "15px";
105
+ case "md":
106
+ default:
107
+ return "13px";
108
+ }
109
+ }};
110
+ font-weight: 500;
111
+ color: ${(props) => {
112
+ switch (props.$status) {
113
+ case "pending":
114
+ return "#6B7280";
115
+ case "running":
116
+ return "#3B82F6";
117
+ case "completed":
118
+ return "#10B981";
119
+ case "failed":
120
+ return "#EF4444";
121
+ case "timeout":
122
+ return "#F59E0B";
123
+ }
124
+ }};
125
+ line-height: 1.4;
126
+ `;
127
+ var IconContainer = styled4__default.default.div`
128
+ display: flex;
129
+ align-items: center;
130
+ justify-content: center;
131
+ width: 16px;
132
+ height: 16px;
133
+ animation: ${(props) => {
134
+ if (props.$animated) {
135
+ if (props.$status === "running") return spin;
136
+ if (props.$status === "pending") return pulse;
137
+ }
138
+ return "none";
139
+ }}
140
+ ${(props) => props.$status === "running" ? "1s" : "2s"} linear infinite;
141
+ `;
142
+ var PendingIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: "16", height: "16", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z" }) });
143
+ var RunningIcon = () => /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: "16", height: "16", children: [
144
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z", opacity: "0.3" }),
145
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z" })
146
+ ] });
147
+ var CompletedIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: "16", height: "16", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" }) });
148
+ var FailedIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: "16", height: "16", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z" }) });
149
+ var TimeoutIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: "16", height: "16", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" }) });
150
+ var Label = styled4__default.default.span`
151
+ white-space: nowrap;
152
+ `;
153
+ var getDefaultLabel = (status) => {
154
+ switch (status) {
155
+ case "pending":
156
+ return "Pending";
157
+ case "running":
158
+ return "Running";
159
+ case "completed":
160
+ return "Completed";
161
+ case "failed":
162
+ return "Failed";
163
+ case "timeout":
164
+ return "Timeout";
165
+ }
166
+ };
167
+ var getStatusIcon = (status) => {
168
+ switch (status) {
169
+ case "pending":
170
+ return /* @__PURE__ */ jsxRuntime.jsx(PendingIcon, {});
171
+ case "running":
172
+ return /* @__PURE__ */ jsxRuntime.jsx(RunningIcon, {});
173
+ case "completed":
174
+ return /* @__PURE__ */ jsxRuntime.jsx(CompletedIcon, {});
175
+ case "failed":
176
+ return /* @__PURE__ */ jsxRuntime.jsx(FailedIcon, {});
177
+ case "timeout":
178
+ return /* @__PURE__ */ jsxRuntime.jsx(TimeoutIcon, {});
179
+ }
180
+ };
181
+ var WorkflowStatusBadge = ({
182
+ status,
183
+ size = "md",
184
+ showIcon = true,
185
+ showLabel = true,
186
+ animated = true,
187
+ label,
188
+ className
189
+ }) => {
190
+ const displayLabel = label || getDefaultLabel(status);
191
+ return /* @__PURE__ */ jsxRuntime.jsxs(
192
+ BadgeContainer,
193
+ {
194
+ $status: status,
195
+ $size: size,
196
+ className,
197
+ role: "status",
198
+ "aria-label": displayLabel,
199
+ children: [
200
+ showIcon && /* @__PURE__ */ jsxRuntime.jsx(IconContainer, { $animated: animated, $status: status, "aria-hidden": "true", children: getStatusIcon(status) }),
201
+ showLabel && /* @__PURE__ */ jsxRuntime.jsx(Label, { children: displayLabel })
202
+ ]
203
+ }
204
+ );
205
+ };
206
+ WorkflowStatusBadge.displayName = "WorkflowStatusBadge";
207
+ var indeterminate = styled4.keyframes`
208
+ 0% {
209
+ transform: translateX(-100%);
210
+ }
211
+ 100% {
212
+ transform: translateX(400%);
213
+ }
214
+ `;
215
+ var rotate = styled4.keyframes`
216
+ from {
217
+ transform: rotate(0deg);
218
+ }
219
+ to {
220
+ transform: rotate(360deg);
221
+ }
222
+ `;
223
+ var Container = styled4__default.default.div`
224
+ display: flex;
225
+ flex-direction: column;
226
+ gap: 8px;
227
+ width: 100%;
228
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
229
+ 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
230
+ `;
231
+ var ProgressMessage = styled4__default.default.div`
232
+ font-size: ${(props) => {
233
+ switch (props.size) {
234
+ case "sm":
235
+ return "12px";
236
+ case "lg":
237
+ return "16px";
238
+ case "md":
239
+ default:
240
+ return "14px";
241
+ }
242
+ }};
243
+ color: #9CA3AF;
244
+ line-height: 1.5;
245
+ `;
246
+ var ProgressInfo = styled4__default.default.div`
247
+ display: flex;
248
+ justify-content: space-between;
249
+ align-items: center;
250
+ margin-bottom: 4px;
251
+ `;
252
+ var PercentageText = styled4__default.default.span`
253
+ font-size: ${(props) => {
254
+ switch (props.size) {
255
+ case "sm":
256
+ return "11px";
257
+ case "lg":
258
+ return "15px";
259
+ case "md":
260
+ default:
261
+ return "13px";
262
+ }
263
+ }};
264
+ font-weight: 500;
265
+ color: #FFFFFF;
266
+ `;
267
+ var LinearTrack = styled4__default.default.div`
268
+ position: relative;
269
+ width: 100%;
270
+ height: ${(props) => {
271
+ switch (props.size) {
272
+ case "sm":
273
+ return "4px";
274
+ case "lg":
275
+ return "8px";
276
+ case "md":
277
+ default:
278
+ return "6px";
279
+ }
280
+ }};
281
+ background-color: rgba(255, 255, 255, 0.1);
282
+ border-radius: 9999px;
283
+ overflow: hidden;
284
+ `;
285
+ var LinearFill = styled4__default.default.div`
286
+ position: absolute;
287
+ top: 0;
288
+ left: 0;
289
+ height: 100%;
290
+ width: ${(props) => props.indeterminate ? "25%" : `${props.progress}%`};
291
+ background-color: ${(props) => {
292
+ switch (props.status) {
293
+ case "pending":
294
+ return "#6B7280";
295
+ // Gray
296
+ case "running":
297
+ return "#3B82F6";
298
+ // Blue
299
+ case "completed":
300
+ return "#10B981";
301
+ // Green
302
+ case "failed":
303
+ return "#EF4444";
304
+ // Red
305
+ case "timeout":
306
+ return "#F59E0B";
307
+ }
308
+ }};
309
+ border-radius: 9999px;
310
+ transition: ${(props) => props.animated && !props.indeterminate ? "width 0.3s ease-out" : "none"};
311
+ animation: ${(props) => props.indeterminate ? indeterminate : "none"} 1.5s ease-in-out infinite;
312
+ `;
313
+ var CircularContainer = styled4__default.default.div`
314
+ display: flex;
315
+ align-items: center;
316
+ justify-content: center;
317
+ `;
318
+ var CircularSvg = styled4__default.default.svg`
319
+ width: ${(props) => {
320
+ switch (props.size) {
321
+ case "sm":
322
+ return "40px";
323
+ case "lg":
324
+ return "80px";
325
+ case "md":
326
+ default:
327
+ return "60px";
328
+ }
329
+ }};
330
+ height: ${(props) => {
331
+ switch (props.size) {
332
+ case "sm":
333
+ return "40px";
334
+ case "lg":
335
+ return "80px";
336
+ case "md":
337
+ default:
338
+ return "60px";
339
+ }
340
+ }};
341
+ transform: rotate(-90deg);
342
+ `;
343
+ var getCircularSize = (size) => {
344
+ switch (size) {
345
+ case "sm":
346
+ return { radius: 16, strokeWidth: 3 };
347
+ case "lg":
348
+ return { radius: 36, strokeWidth: 6 };
349
+ case "md":
350
+ default:
351
+ return { radius: 26, strokeWidth: 4 };
352
+ }
353
+ };
354
+ var CircularTrack = styled4__default.default.circle`
355
+ fill: none;
356
+ stroke: rgba(255, 255, 255, 0.1);
357
+ stroke-width: ${(props) => getCircularSize(props.size).strokeWidth};
358
+ `;
359
+ var CircularFill = styled4__default.default.circle`
360
+ fill: none;
361
+ stroke: ${(props) => {
362
+ switch (props.status) {
363
+ case "pending":
364
+ return "#6B7280";
365
+ case "running":
366
+ return "#3B82F6";
367
+ case "completed":
368
+ return "#10B981";
369
+ case "failed":
370
+ return "#EF4444";
371
+ case "timeout":
372
+ return "#F59E0B";
373
+ }
374
+ }};
375
+ stroke-width: ${(props) => getCircularSize(props.size).strokeWidth};
376
+ stroke-dasharray: ${(props) => {
377
+ const { radius } = getCircularSize(props.size);
378
+ const circumference = 2 * Math.PI * radius;
379
+ return props.indeterminate ? `${circumference * 0.25} ${circumference}` : circumference;
380
+ }};
381
+ stroke-dashoffset: ${(props) => {
382
+ const { radius } = getCircularSize(props.size);
383
+ const circumference = 2 * Math.PI * radius;
384
+ return props.indeterminate ? 0 : circumference * (1 - props.progress / 100);
385
+ }};
386
+ stroke-linecap: round;
387
+ transition: ${(props) => props.animated && !props.indeterminate ? "stroke-dashoffset 0.3s ease-out" : "none"};
388
+ animation: ${(props) => props.indeterminate ? rotate : "none"} 1.5s linear infinite;
389
+ `;
390
+ var CircularPercentage = styled4__default.default.text`
391
+ fill: #FFFFFF;
392
+ font-size: ${(props) => {
393
+ switch (props.size) {
394
+ case "sm":
395
+ return "10px";
396
+ case "lg":
397
+ return "16px";
398
+ case "md":
399
+ default:
400
+ return "12px";
401
+ }
402
+ }};
403
+ font-weight: 600;
404
+ text-anchor: middle;
405
+ dominant-baseline: middle;
406
+ transform: rotate(90deg);
407
+ transform-origin: center;
408
+ `;
409
+ var WorkflowProgressBar = ({
410
+ progress,
411
+ message,
412
+ status = "running",
413
+ variant = "linear",
414
+ size = "md",
415
+ showPercentage = true,
416
+ animated = true,
417
+ className
418
+ }) => {
419
+ const isIndeterminate = progress === void 0;
420
+ const progressValue = progress ?? 0;
421
+ if (variant === "circular") {
422
+ const { radius } = getCircularSize(size);
423
+ const center = radius + getCircularSize(size).strokeWidth;
424
+ return /* @__PURE__ */ jsxRuntime.jsxs(Container, { className, children: [
425
+ message && /* @__PURE__ */ jsxRuntime.jsx(ProgressMessage, { size, children: message }),
426
+ /* @__PURE__ */ jsxRuntime.jsx(CircularContainer, { children: /* @__PURE__ */ jsxRuntime.jsxs(
427
+ CircularSvg,
428
+ {
429
+ size,
430
+ viewBox: `0 0 ${center * 2} ${center * 2}`,
431
+ role: "progressbar",
432
+ "aria-valuenow": progressValue,
433
+ "aria-valuemin": 0,
434
+ "aria-valuemax": 100,
435
+ "aria-label": message || `${progressValue}% complete`,
436
+ children: [
437
+ /* @__PURE__ */ jsxRuntime.jsx(CircularTrack, { size, cx: center, cy: center, r: radius }),
438
+ /* @__PURE__ */ jsxRuntime.jsx(
439
+ CircularFill,
440
+ {
441
+ progress: progressValue,
442
+ status,
443
+ size,
444
+ animated,
445
+ indeterminate: isIndeterminate,
446
+ cx: center,
447
+ cy: center,
448
+ r: radius
449
+ }
450
+ ),
451
+ showPercentage && !isIndeterminate && /* @__PURE__ */ jsxRuntime.jsxs(CircularPercentage, { size, x: center, y: center, children: [
452
+ Math.round(progressValue),
453
+ "%"
454
+ ] })
455
+ ]
456
+ }
457
+ ) })
458
+ ] });
459
+ }
460
+ return /* @__PURE__ */ jsxRuntime.jsxs(Container, { className, children: [
461
+ (message || showPercentage) && /* @__PURE__ */ jsxRuntime.jsxs(ProgressInfo, { children: [
462
+ message && /* @__PURE__ */ jsxRuntime.jsx(ProgressMessage, { size, children: message }),
463
+ showPercentage && !isIndeterminate && /* @__PURE__ */ jsxRuntime.jsxs(PercentageText, { size, children: [
464
+ Math.round(progressValue),
465
+ "%"
466
+ ] })
467
+ ] }),
468
+ /* @__PURE__ */ jsxRuntime.jsx(
469
+ LinearTrack,
470
+ {
471
+ size,
472
+ role: "progressbar",
473
+ "aria-valuenow": progressValue,
474
+ "aria-valuemin": 0,
475
+ "aria-valuemax": 100,
476
+ "aria-label": message || `${progressValue}% complete`,
477
+ children: /* @__PURE__ */ jsxRuntime.jsx(
478
+ LinearFill,
479
+ {
480
+ progress: progressValue,
481
+ status,
482
+ animated,
483
+ indeterminate: isIndeterminate
484
+ }
485
+ )
486
+ }
487
+ )
488
+ ] });
489
+ };
490
+ WorkflowProgressBar.displayName = "WorkflowProgressBar";
491
+ var Panel = styled4__default.default.div`
492
+ display: flex;
493
+ flex-direction: column;
494
+ background-color: rgba(255, 255, 255, 0.05);
495
+ border: 1px solid rgba(255, 255, 255, 0.1);
496
+ border-radius: 8px;
497
+ overflow: hidden;
498
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
499
+ 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
500
+ `;
501
+ var Header = styled4__default.default.div`
502
+ display: flex;
503
+ justify-content: space-between;
504
+ align-items: center;
505
+ padding: 12px 16px;
506
+ background-color: rgba(255, 255, 255, 0.02);
507
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
508
+ cursor: ${(props) => props.collapsible ? "pointer" : "default"};
509
+ user-select: none;
510
+
511
+ &:hover {
512
+ background-color: ${(props) => props.collapsible ? "rgba(255, 255, 255, 0.05)" : "rgba(255, 255, 255, 0.02)"};
513
+ }
514
+ `;
515
+ var Title = styled4__default.default.div`
516
+ font-size: 14px;
517
+ font-weight: 500;
518
+ color: #FFFFFF;
519
+ display: flex;
520
+ align-items: center;
521
+ gap: 8px;
522
+ `;
523
+ var Actions = styled4__default.default.div`
524
+ display: flex;
525
+ gap: 8px;
526
+ `;
527
+ var IconButton = styled4__default.default.button`
528
+ display: flex;
529
+ align-items: center;
530
+ justify-content: center;
531
+ width: 28px;
532
+ height: 28px;
533
+ padding: 0;
534
+ background: rgba(255, 255, 255, 0.05);
535
+ border: 1px solid rgba(255, 255, 255, 0.1);
536
+ border-radius: 4px;
537
+ color: #9CA3AF;
538
+ cursor: pointer;
539
+ transition: all 0.15s ease-in-out;
540
+
541
+ &:hover {
542
+ background: rgba(255, 255, 255, 0.1);
543
+ border-color: rgba(255, 255, 255, 0.2);
544
+ color: #FFFFFF;
545
+ }
546
+
547
+ &:active {
548
+ transform: scale(0.95);
549
+ }
550
+
551
+ svg {
552
+ width: 16px;
553
+ height: 16px;
554
+ }
555
+ `;
556
+ var CollapseIcon = styled4__default.default.div`
557
+ display: flex;
558
+ align-items: center;
559
+ justify-content: center;
560
+ transition: transform 0.2s ease-in-out;
561
+ transform: ${(props) => props.expanded ? "rotate(180deg)" : "rotate(0deg)"};
562
+ color: #9CA3AF;
563
+
564
+ svg {
565
+ width: 16px;
566
+ height: 16px;
567
+ }
568
+ `;
569
+ var Content = styled4__default.default.div`
570
+ padding: 16px;
571
+ max-height: ${(props) => {
572
+ if (!props.expanded) return "0";
573
+ return props.maxHeight || "400px";
574
+ }};
575
+ overflow: ${(props) => props.expanded ? "auto" : "hidden"};
576
+ transition: max-height 0.3s ease-in-out;
577
+
578
+ /* Custom scrollbar */
579
+ &::-webkit-scrollbar {
580
+ width: 8px;
581
+ }
582
+
583
+ &::-webkit-scrollbar-track {
584
+ background: rgba(255, 255, 255, 0.05);
585
+ border-radius: 4px;
586
+ }
587
+
588
+ &::-webkit-scrollbar-thumb {
589
+ background: rgba(255, 255, 255, 0.2);
590
+ border-radius: 4px;
591
+ }
592
+
593
+ &::-webkit-scrollbar-thumb:hover {
594
+ background: rgba(255, 255, 255, 0.3);
595
+ }
596
+ `;
597
+ var JsonView = styled4__default.default.pre`
598
+ margin: 0;
599
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
600
+ font-size: 13px;
601
+ line-height: 1.6;
602
+ color: #E5E7EB;
603
+ white-space: pre-wrap;
604
+ word-break: break-word;
605
+ `;
606
+ var FormattedView = styled4__default.default.div`
607
+ font-size: 14px;
608
+ line-height: 1.6;
609
+ color: #E5E7EB;
610
+ `;
611
+ var TableView = styled4__default.default.table`
612
+ width: 100%;
613
+ border-collapse: collapse;
614
+ font-size: 13px;
615
+
616
+ th {
617
+ text-align: left;
618
+ padding: 8px 12px;
619
+ background-color: rgba(255, 255, 255, 0.05);
620
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
621
+ font-weight: 500;
622
+ color: #FFFFFF;
623
+ }
624
+
625
+ td {
626
+ padding: 8px 12px;
627
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
628
+ color: #E5E7EB;
629
+ }
630
+
631
+ tr:last-child td {
632
+ border-bottom: none;
633
+ }
634
+ `;
635
+ var EmptyState = styled4__default.default.div`
636
+ padding: 32px;
637
+ text-align: center;
638
+ color: #6B7280;
639
+ font-size: 14px;
640
+ `;
641
+ var DownloadIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z" }) });
642
+ var CopyIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z" }) });
643
+ var ChevronIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z" }) });
644
+ var WorkflowResultPanel = ({
645
+ outputData,
646
+ variant = "json",
647
+ collapsible = true,
648
+ defaultExpanded = true,
649
+ maxHeight,
650
+ onDownload,
651
+ onCopy,
652
+ title = "Result",
653
+ className
654
+ }) => {
655
+ const [expanded, setExpanded] = react.useState(defaultExpanded);
656
+ const handleToggle = () => {
657
+ if (collapsible) {
658
+ setExpanded(!expanded);
659
+ }
660
+ };
661
+ const renderContent = () => {
662
+ if (!outputData) {
663
+ return /* @__PURE__ */ jsxRuntime.jsx(EmptyState, { children: "No results available" });
664
+ }
665
+ switch (variant) {
666
+ case "json":
667
+ return /* @__PURE__ */ jsxRuntime.jsx(JsonView, { children: JSON.stringify(outputData, null, 2) });
668
+ case "formatted":
669
+ if (typeof outputData === "object") {
670
+ return /* @__PURE__ */ jsxRuntime.jsx(FormattedView, { children: Object.entries(outputData).map(([key, value]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
671
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
672
+ key,
673
+ ":"
674
+ ] }),
675
+ " ",
676
+ String(value)
677
+ ] }, key)) });
678
+ }
679
+ return /* @__PURE__ */ jsxRuntime.jsx(FormattedView, { children: String(outputData) });
680
+ case "table":
681
+ if (Array.isArray(outputData) && outputData.length > 0) {
682
+ const keys = Object.keys(outputData[0]);
683
+ return /* @__PURE__ */ jsxRuntime.jsxs(TableView, { children: [
684
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { children: keys.map((key) => /* @__PURE__ */ jsxRuntime.jsx("th", { children: key }, key)) }) }),
685
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: outputData.map((row, idx) => /* @__PURE__ */ jsxRuntime.jsx("tr", { children: keys.map((key) => /* @__PURE__ */ jsxRuntime.jsx("td", { children: String(row[key]) }, key)) }, idx)) })
686
+ ] });
687
+ }
688
+ return /* @__PURE__ */ jsxRuntime.jsx(EmptyState, { children: "Data is not in table format" });
689
+ default:
690
+ return /* @__PURE__ */ jsxRuntime.jsx(EmptyState, { children: "Unsupported variant" });
691
+ }
692
+ };
693
+ return /* @__PURE__ */ jsxRuntime.jsxs(Panel, { collapsible, expanded, className, children: [
694
+ /* @__PURE__ */ jsxRuntime.jsxs(Header, { collapsible, onClick: handleToggle, children: [
695
+ /* @__PURE__ */ jsxRuntime.jsxs(Title, { children: [
696
+ title,
697
+ collapsible && /* @__PURE__ */ jsxRuntime.jsx(CollapseIcon, { expanded, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronIcon, {}) })
698
+ ] }),
699
+ /* @__PURE__ */ jsxRuntime.jsxs(Actions, { onClick: (e) => e.stopPropagation(), children: [
700
+ onCopy && /* @__PURE__ */ jsxRuntime.jsx(IconButton, { onClick: onCopy, title: "Copy to clipboard", "aria-label": "Copy to clipboard", children: /* @__PURE__ */ jsxRuntime.jsx(CopyIcon, {}) }),
701
+ onDownload && /* @__PURE__ */ jsxRuntime.jsx(IconButton, { onClick: onDownload, title: "Download", "aria-label": "Download results", children: /* @__PURE__ */ jsxRuntime.jsx(DownloadIcon, {}) })
702
+ ] })
703
+ ] }),
704
+ /* @__PURE__ */ jsxRuntime.jsx(Content, { maxHeight, expanded, children: renderContent() })
705
+ ] });
706
+ };
707
+ WorkflowResultPanel.displayName = "WorkflowResultPanel";
708
+ var AlertContainer = styled4__default.default.div`
709
+ display: flex;
710
+ flex-direction: column;
711
+ background-color: ${(props) => {
712
+ const alpha = props.variant === "modal" ? "0.15" : props.variant === "banner" ? "0.1" : "0.05";
713
+ switch (props.severity) {
714
+ case "error":
715
+ return `rgba(239, 68, 68, ${alpha})`;
716
+ case "warning":
717
+ return `rgba(245, 158, 11, ${alpha})`;
718
+ case "info":
719
+ return `rgba(59, 130, 246, ${alpha})`;
720
+ }
721
+ }};
722
+ border: 1px solid
723
+ ${(props) => {
724
+ const alpha = props.variant === "modal" ? "0.4" : "0.3";
725
+ switch (props.severity) {
726
+ case "error":
727
+ return `rgba(239, 68, 68, ${alpha})`;
728
+ case "warning":
729
+ return `rgba(245, 158, 11, ${alpha})`;
730
+ case "info":
731
+ return `rgba(59, 130, 246, ${alpha})`;
732
+ }
733
+ }};
734
+ border-radius: ${(props) => props.variant === "banner" ? "0" : "8px"};
735
+ padding: ${(props) => props.variant === "modal" ? "20px" : "16px"};
736
+ margin: ${(props) => props.variant === "banner" ? "0" : "8px 0"};
737
+ width: ${(props) => props.variant === "modal" ? "auto" : "100%"};
738
+ max-width: ${(props) => props.variant === "inline" ? "600px" : "100%"};
739
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
740
+ 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
741
+ `;
742
+ var ModalOverlay = styled4__default.default.div`
743
+ position: fixed;
744
+ top: 0;
745
+ left: 0;
746
+ right: 0;
747
+ bottom: 0;
748
+ background-color: rgba(0, 0, 0, 0.6);
749
+ display: ${(props) => props.isOpen ? "flex" : "none"};
750
+ align-items: center;
751
+ justify-content: center;
752
+ z-index: 1000;
753
+ padding: 20px;
754
+ `;
755
+ var ModalContent = styled4__default.default.div`
756
+ background-color: #1A1A1A;
757
+ border-radius: 12px;
758
+ max-width: 500px;
759
+ width: 100%;
760
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 10px 10px -5px rgba(0, 0, 0, 0.2);
761
+ `;
762
+ var Header2 = styled4__default.default.div`
763
+ display: flex;
764
+ align-items: flex-start;
765
+ gap: 12px;
766
+ `;
767
+ var IconContainer2 = styled4__default.default.div`
768
+ flex-shrink: 0;
769
+ width: 24px;
770
+ height: 24px;
771
+ color: ${(props) => {
772
+ switch (props.severity) {
773
+ case "error":
774
+ return "#EF4444";
775
+ case "warning":
776
+ return "#F59E0B";
777
+ case "info":
778
+ return "#3B82F6";
779
+ }
780
+ }};
781
+ `;
782
+ var Content2 = styled4__default.default.div`
783
+ flex: 1;
784
+ display: flex;
785
+ flex-direction: column;
786
+ gap: 8px;
787
+ `;
788
+ var Title2 = styled4__default.default.div`
789
+ font-size: 15px;
790
+ font-weight: 600;
791
+ color: #FFFFFF;
792
+ line-height: 1.4;
793
+ `;
794
+ var ErrorMessage = styled4__default.default.div`
795
+ font-size: 14px;
796
+ line-height: 1.5;
797
+ color: #E5E7EB;
798
+ `;
799
+ var ErrorCode = styled4__default.default.div`
800
+ font-size: 12px;
801
+ color: #9CA3AF;
802
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
803
+ margin-top: 4px;
804
+ `;
805
+ var Timestamp = styled4__default.default.div`
806
+ font-size: 12px;
807
+ color: #6B7280;
808
+ margin-top: 4px;
809
+ `;
810
+ var Details = styled4__default.default.details`
811
+ margin-top: 12px;
812
+ cursor: pointer;
813
+
814
+ summary {
815
+ font-size: 13px;
816
+ font-weight: 500;
817
+ color: #9CA3AF;
818
+ user-select: none;
819
+ list-style: none;
820
+ display: flex;
821
+ align-items: center;
822
+ gap: 4px;
823
+
824
+ &:hover {
825
+ color: #FFFFFF;
826
+ }
827
+
828
+ &::-webkit-details-marker {
829
+ display: none;
830
+ }
831
+ }
832
+ `;
833
+ var DetailsIcon = styled4__default.default.span`
834
+ display: inline-block;
835
+ transition: transform 0.2s ease-in-out;
836
+ transform: ${(props) => props.open ? "rotate(90deg)" : "rotate(0deg)"};
837
+ `;
838
+ var StackTrace = styled4__default.default.pre`
839
+ margin: 8px 0 0 0;
840
+ padding: 12px;
841
+ background-color: rgba(0, 0, 0, 0.3);
842
+ border-radius: 4px;
843
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
844
+ font-size: 11px;
845
+ line-height: 1.5;
846
+ color: #D1D5DB;
847
+ white-space: pre-wrap;
848
+ word-break: break-word;
849
+ overflow-x: auto;
850
+ `;
851
+ var Actions2 = styled4__default.default.div`
852
+ display: flex;
853
+ gap: 8px;
854
+ margin-top: 16px;
855
+ `;
856
+ var Button = styled4__default.default.button`
857
+ display: inline-flex;
858
+ align-items: center;
859
+ gap: 6px;
860
+ padding: 8px 16px;
861
+ font-size: 14px;
862
+ font-weight: 500;
863
+ color: ${(props) => props.variant === "primary" ? "#FFFFFF" : "#9CA3AF"};
864
+ background: ${(props) => props.variant === "primary" ? "#EF4444" : "rgba(255, 255, 255, 0.05)"};
865
+ border: 1px solid
866
+ ${(props) => props.variant === "primary" ? "#EF4444" : "rgba(255, 255, 255, 0.1)"};
867
+ border-radius: 6px;
868
+ cursor: pointer;
869
+ transition: all 0.15s ease-in-out;
870
+
871
+ &:hover {
872
+ background: ${(props) => props.variant === "primary" ? "#DC2626" : "rgba(255, 255, 255, 0.1)"};
873
+ border-color: ${(props) => props.variant === "primary" ? "#DC2626" : "rgba(255, 255, 255, 0.2)"};
874
+ }
875
+
876
+ &:active {
877
+ transform: scale(0.98);
878
+ }
879
+
880
+ &:disabled {
881
+ opacity: 0.5;
882
+ cursor: not-allowed;
883
+ }
884
+ `;
885
+ var CloseButton = styled4__default.default.button`
886
+ position: absolute;
887
+ top: 12px;
888
+ right: 12px;
889
+ width: 32px;
890
+ height: 32px;
891
+ padding: 0;
892
+ display: flex;
893
+ align-items: center;
894
+ justify-content: center;
895
+ background: transparent;
896
+ border: none;
897
+ color: #9CA3AF;
898
+ cursor: pointer;
899
+ border-radius: 4px;
900
+ transition: all 0.15s ease-in-out;
901
+
902
+ &:hover {
903
+ background: rgba(255, 255, 255, 0.1);
904
+ color: #FFFFFF;
905
+ }
906
+
907
+ &:active {
908
+ transform: scale(0.95);
909
+ }
910
+
911
+ svg {
912
+ width: 20px;
913
+ height: 20px;
914
+ }
915
+ `;
916
+ var ErrorIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: "24", height: "24", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z" }) });
917
+ var WarningIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: "24", height: "24", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" }) });
918
+ var InfoIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: "24", height: "24", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z" }) });
919
+ var CloseIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) });
920
+ var ChevronIcon2 = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", width: "16", height: "16", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" }) });
921
+ var WorkflowErrorAlert = ({
922
+ error,
923
+ errorCode,
924
+ timestamp,
925
+ variant = "inline",
926
+ severity = "error",
927
+ retryable = false,
928
+ onRetry,
929
+ onDismiss,
930
+ showDetails = false,
931
+ stackTrace,
932
+ title,
933
+ className
934
+ }) => {
935
+ const [detailsOpen, setDetailsOpen] = react.useState(false);
936
+ const [isModalOpen, setIsModalOpen] = react.useState(variant === "modal");
937
+ const errorMessage = typeof error === "string" ? error : error.message;
938
+ const defaultTitle = severity === "error" ? "Workflow Error" : severity === "warning" ? "Warning" : "Information";
939
+ const displayTitle = title || defaultTitle;
940
+ const handleDismiss = () => {
941
+ if (variant === "modal") {
942
+ setIsModalOpen(false);
943
+ }
944
+ onDismiss?.();
945
+ };
946
+ const getIcon = () => {
947
+ switch (severity) {
948
+ case "error":
949
+ return /* @__PURE__ */ jsxRuntime.jsx(ErrorIcon, {});
950
+ case "warning":
951
+ return /* @__PURE__ */ jsxRuntime.jsx(WarningIcon, {});
952
+ case "info":
953
+ return /* @__PURE__ */ jsxRuntime.jsx(InfoIcon, {});
954
+ }
955
+ };
956
+ const alertContent = /* @__PURE__ */ jsxRuntime.jsx(AlertContainer, { variant, severity, className, role: "alert", children: /* @__PURE__ */ jsxRuntime.jsxs(Header2, { children: [
957
+ /* @__PURE__ */ jsxRuntime.jsx(IconContainer2, { severity, "aria-hidden": "true", children: getIcon() }),
958
+ /* @__PURE__ */ jsxRuntime.jsxs(Content2, { children: [
959
+ /* @__PURE__ */ jsxRuntime.jsx(Title2, { children: displayTitle }),
960
+ /* @__PURE__ */ jsxRuntime.jsx(ErrorMessage, { children: errorMessage }),
961
+ errorCode && /* @__PURE__ */ jsxRuntime.jsxs(ErrorCode, { children: [
962
+ "Error Code: ",
963
+ errorCode
964
+ ] }),
965
+ timestamp && /* @__PURE__ */ jsxRuntime.jsx(Timestamp, { children: new Date(timestamp).toLocaleString() }),
966
+ showDetails && (stackTrace || typeof error === "object" && error.stack) && /* @__PURE__ */ jsxRuntime.jsxs(Details, { open: detailsOpen, onToggle: (e) => setDetailsOpen(e.target.open), children: [
967
+ /* @__PURE__ */ jsxRuntime.jsxs("summary", { children: [
968
+ /* @__PURE__ */ jsxRuntime.jsx(DetailsIcon, { open: detailsOpen, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronIcon2, {}) }),
969
+ "Show Details"
970
+ ] }),
971
+ /* @__PURE__ */ jsxRuntime.jsx(StackTrace, { children: stackTrace || (typeof error === "object" ? error.stack : "") })
972
+ ] }),
973
+ (retryable || onDismiss) && /* @__PURE__ */ jsxRuntime.jsxs(Actions2, { children: [
974
+ retryable && onRetry && /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "primary", onClick: onRetry, children: "Retry" }),
975
+ onDismiss && /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", onClick: handleDismiss, children: "Dismiss" })
976
+ ] })
977
+ ] }),
978
+ variant !== "modal" && onDismiss && /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { onClick: handleDismiss, "aria-label": "Dismiss alert", children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, {}) })
979
+ ] }) });
980
+ if (variant === "modal") {
981
+ return /* @__PURE__ */ jsxRuntime.jsx(ModalOverlay, { isOpen: isModalOpen, onClick: handleDismiss, children: /* @__PURE__ */ jsxRuntime.jsxs(ModalContent, { onClick: (e) => e.stopPropagation(), children: [
982
+ alertContent,
983
+ /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { onClick: handleDismiss, "aria-label": "Close modal", children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, {}) })
984
+ ] }) });
985
+ }
986
+ return alertContent;
987
+ };
988
+ WorkflowErrorAlert.displayName = "WorkflowErrorAlert";
989
+
990
+ exports.WorkflowErrorAlert = WorkflowErrorAlert;
991
+ exports.WorkflowProgressBar = WorkflowProgressBar;
992
+ exports.WorkflowResultPanel = WorkflowResultPanel;
993
+ exports.WorkflowStatusBadge = WorkflowStatusBadge;
994
+ //# sourceMappingURL=index.cjs.map
995
+ //# sourceMappingURL=index.cjs.map