ai-design-system 0.1.37 → 0.1.39
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.
- package/components/blocks/WorkflowCanvas/WorkflowCanvas.tsx +2 -10
- package/components/blocks/WorkflowCanvas/index.ts +1 -0
- package/components/blocks/WorkflowCanvas/layout-engine.ts +59 -0
- package/components/blocks/index.ts +1 -1
- package/components/composites/TriggerNode/TriggerNode.tsx +62 -0
- package/components/composites/TriggerNode/index.ts +2 -0
- package/components/composites/index.ts +4 -0
- package/components/index.ts +1 -0
- package/dist/index.cjs +85 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +29 -0
- package/dist/index.d.ts +42 -30
- package/dist/index.js +86 -7
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/dist/index.css
CHANGED
|
@@ -24,8 +24,13 @@
|
|
|
24
24
|
--color-blue-400: oklch(70.7% 0.165 254.624);
|
|
25
25
|
--color-blue-500: oklch(62.3% 0.214 259.815);
|
|
26
26
|
--color-blue-600: oklch(54.6% 0.245 262.881);
|
|
27
|
+
--color-purple-50: oklch(97.7% 0.014 308.299);
|
|
28
|
+
--color-purple-200: oklch(90.2% 0.063 306.703);
|
|
29
|
+
--color-purple-400: oklch(71.4% 0.203 305.504);
|
|
27
30
|
--color-purple-500: oklch(62.7% 0.265 303.9);
|
|
28
31
|
--color-purple-600: oklch(55.8% 0.288 302.321);
|
|
32
|
+
--color-purple-800: oklch(43.8% 0.218 303.724);
|
|
33
|
+
--color-purple-950: oklch(29.1% 0.149 302.717);
|
|
29
34
|
--color-gray-300: oklch(87.2% 0.01 258.338);
|
|
30
35
|
--color-gray-400: oklch(70.7% 0.022 261.325);
|
|
31
36
|
--color-gray-500: oklch(55.1% 0.027 264.364);
|
|
@@ -1622,6 +1627,9 @@
|
|
|
1622
1627
|
.border-primary {
|
|
1623
1628
|
border-color: var(--primary);
|
|
1624
1629
|
}
|
|
1630
|
+
.border-purple-200 {
|
|
1631
|
+
border-color: var(--color-purple-200);
|
|
1632
|
+
}
|
|
1625
1633
|
.border-red-400\/40 {
|
|
1626
1634
|
border-color: color-mix(in srgb, oklch(70.4% 0.191 22.216) 40%, transparent);
|
|
1627
1635
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -1820,6 +1828,9 @@
|
|
|
1820
1828
|
background-color: color-mix(in oklab, var(--primary) 20%, transparent);
|
|
1821
1829
|
}
|
|
1822
1830
|
}
|
|
1831
|
+
.bg-purple-50 {
|
|
1832
|
+
background-color: var(--color-purple-50);
|
|
1833
|
+
}
|
|
1823
1834
|
.bg-purple-500 {
|
|
1824
1835
|
background-color: var(--color-purple-500);
|
|
1825
1836
|
}
|
|
@@ -4378,6 +4389,11 @@
|
|
|
4378
4389
|
border-color: var(--color-orange-600);
|
|
4379
4390
|
}
|
|
4380
4391
|
}
|
|
4392
|
+
.dark\:border-purple-800 {
|
|
4393
|
+
@media (prefers-color-scheme: dark) {
|
|
4394
|
+
border-color: var(--color-purple-800);
|
|
4395
|
+
}
|
|
4396
|
+
}
|
|
4381
4397
|
.dark\:border-white\/\[\.145\] {
|
|
4382
4398
|
@media (prefers-color-scheme: dark) {
|
|
4383
4399
|
border-color: color-mix(in srgb, #fff 14.499999999999998%, transparent);
|
|
@@ -4407,6 +4423,14 @@
|
|
|
4407
4423
|
}
|
|
4408
4424
|
}
|
|
4409
4425
|
}
|
|
4426
|
+
.dark\:bg-purple-950\/30 {
|
|
4427
|
+
@media (prefers-color-scheme: dark) {
|
|
4428
|
+
background-color: color-mix(in srgb, oklch(29.1% 0.149 302.717) 30%, transparent);
|
|
4429
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
4430
|
+
background-color: color-mix(in oklab, var(--color-purple-950) 30%, transparent);
|
|
4431
|
+
}
|
|
4432
|
+
}
|
|
4433
|
+
}
|
|
4410
4434
|
.dark\:bg-transparent {
|
|
4411
4435
|
@media (prefers-color-scheme: dark) {
|
|
4412
4436
|
background-color: transparent;
|
|
@@ -4442,6 +4466,11 @@
|
|
|
4442
4466
|
color: var(--color-orange-500);
|
|
4443
4467
|
}
|
|
4444
4468
|
}
|
|
4469
|
+
.dark\:text-purple-400 {
|
|
4470
|
+
@media (prefers-color-scheme: dark) {
|
|
4471
|
+
color: var(--color-purple-400);
|
|
4472
|
+
}
|
|
4473
|
+
}
|
|
4445
4474
|
.dark\:text-purple-500 {
|
|
4446
4475
|
@media (prefers-color-scheme: dark) {
|
|
4447
4476
|
color: var(--color-purple-500);
|
package/dist/index.d.ts
CHANGED
|
@@ -805,9 +805,6 @@ export const WorkflowBuilder: React.FC<WorkflowBuilderProps>;
|
|
|
805
805
|
// From components/features/WorkflowObservabilityFeature/WorkflowObservabilityFeature.tsx
|
|
806
806
|
export const WorkflowObservabilityFeature: React.FC<WorkflowObservabilityFeatureProps>;
|
|
807
807
|
|
|
808
|
-
export const WorkflowToolbarActions: React.FC<any>;
|
|
809
|
-
export const WorkflowToolbar: React.FC<any>;
|
|
810
|
-
|
|
811
808
|
// From components/composites/WorkflowRunObservabilityPanel/WorkflowRunObservabilityPanel.tsx
|
|
812
809
|
export interface WorkflowRunSummary {
|
|
813
810
|
runId: string
|
|
@@ -909,6 +906,9 @@ export const WorkflowRunObservabilityTracePanel: React.FC<WorkflowRunObservabili
|
|
|
909
906
|
export const WorkflowRunObservabilityDetailsPanel: React.FC<WorkflowRunObservabilityDetailsPanelProps>;
|
|
910
907
|
export const WorkflowRunObservabilityPanel: React.FC<WorkflowRunObservabilityPanelProps>;
|
|
911
908
|
|
|
909
|
+
export const WorkflowToolbarActions: React.FC<any>;
|
|
910
|
+
export const WorkflowToolbar: React.FC<any>;
|
|
911
|
+
|
|
912
912
|
// From components/composites/UserMessage/UserMessage.tsx
|
|
913
913
|
export interface UserMessageData {
|
|
914
914
|
id: string
|
|
@@ -930,6 +930,17 @@ export interface UserMessageProps {
|
|
|
930
930
|
|
|
931
931
|
export const UserMessage: React.FC<UserMessageProps>;
|
|
932
932
|
|
|
933
|
+
// From components/composites/TriggerNode/TriggerNode.tsx
|
|
934
|
+
export type TriggerNodeData = {
|
|
935
|
+
label: string;
|
|
936
|
+
description?: string;
|
|
937
|
+
type: "trigger";
|
|
938
|
+
status?: "idle" | "running" | "success" | "error";
|
|
939
|
+
enabled?: boolean;
|
|
940
|
+
};
|
|
941
|
+
|
|
942
|
+
export const TriggerNode: React.FC<any>;
|
|
943
|
+
|
|
933
944
|
// From components/composites/TransitionNode/TransitionNode.tsx
|
|
934
945
|
export type TransitionNodeConfig = {
|
|
935
946
|
/** For conditional transitions: form field comparison e.g. "{{record.orderValue}} > {{record.acceptedRange}}" */
|
|
@@ -1040,19 +1051,6 @@ export interface TablePaginationProps {
|
|
|
1040
1051
|
|
|
1041
1052
|
export const TablePagination: React.FC<TablePaginationProps>;
|
|
1042
1053
|
|
|
1043
|
-
// From components/composites/StateNode/StateNode.tsx
|
|
1044
|
-
export type StateNodeData = {
|
|
1045
|
-
label: string;
|
|
1046
|
-
description?: string;
|
|
1047
|
-
type: "state";
|
|
1048
|
-
/** True for terminal states — marks workflow completion, no outgoing transitions */
|
|
1049
|
-
isTerminal?: boolean;
|
|
1050
|
-
status?: "idle" | "running" | "success" | "error";
|
|
1051
|
-
enabled?: boolean;
|
|
1052
|
-
};
|
|
1053
|
-
|
|
1054
|
-
export const StateNode: React.FC<any>;
|
|
1055
|
-
|
|
1056
1054
|
// From components/composites/StatsCard/StatsCard.tsx
|
|
1057
1055
|
export interface StatsCardProps {
|
|
1058
1056
|
/**
|
|
@@ -1085,6 +1083,19 @@ export interface StatsCardProps {
|
|
|
1085
1083
|
|
|
1086
1084
|
export const StatsCard: React.FC<StatsCardProps>;
|
|
1087
1085
|
|
|
1086
|
+
// From components/composites/StateNode/StateNode.tsx
|
|
1087
|
+
export type StateNodeData = {
|
|
1088
|
+
label: string;
|
|
1089
|
+
description?: string;
|
|
1090
|
+
type: "state";
|
|
1091
|
+
/** True for terminal states — marks workflow completion, no outgoing transitions */
|
|
1092
|
+
isTerminal?: boolean;
|
|
1093
|
+
status?: "idle" | "running" | "success" | "error";
|
|
1094
|
+
enabled?: boolean;
|
|
1095
|
+
};
|
|
1096
|
+
|
|
1097
|
+
export const StateNode: React.FC<any>;
|
|
1098
|
+
|
|
1088
1099
|
// From components/composites/SpecialistMessage/SpecialistMessage.tsx
|
|
1089
1100
|
export interface SpecialistMessageData {
|
|
1090
1101
|
id: string
|
|
@@ -1338,18 +1349,6 @@ export interface FormReportsDrawerFormProps {
|
|
|
1338
1349
|
|
|
1339
1350
|
export const FormReportsDrawerForm: React.FC<FormReportsDrawerFormProps>;
|
|
1340
1351
|
|
|
1341
|
-
// From components/composites/FileQueue/FileStatusBadge.tsx
|
|
1342
|
-
export type FileStatus = "pending" | "modified" | "created" | "deleted";
|
|
1343
|
-
|
|
1344
|
-
export interface FileStatusBadgeProps {
|
|
1345
|
-
status: FileStatus;
|
|
1346
|
-
className?: string;
|
|
1347
|
-
}
|
|
1348
|
-
|
|
1349
|
-
export const FileStatusBadge: React.FC<FileStatusBadgeProps>;
|
|
1350
|
-
|
|
1351
|
-
export const FileQueue: React.FC<any>;
|
|
1352
|
-
|
|
1353
1352
|
// From components/composites/FilePreviewDialog/FilePreviewDialog.tsx
|
|
1354
1353
|
export interface FilePreviewDialogProps {
|
|
1355
1354
|
open: boolean;
|
|
@@ -1363,6 +1362,18 @@ export interface FilePreviewDialogProps {
|
|
|
1363
1362
|
|
|
1364
1363
|
export const FilePreviewDialog: React.FC<FilePreviewDialogProps>;
|
|
1365
1364
|
|
|
1365
|
+
// From components/composites/FileQueue/FileStatusBadge.tsx
|
|
1366
|
+
export type FileStatus = "pending" | "modified" | "created" | "deleted";
|
|
1367
|
+
|
|
1368
|
+
export interface FileStatusBadgeProps {
|
|
1369
|
+
status: FileStatus;
|
|
1370
|
+
className?: string;
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1373
|
+
export const FileStatusBadge: React.FC<FileStatusBadgeProps>;
|
|
1374
|
+
|
|
1375
|
+
export const FileQueue: React.FC<any>;
|
|
1376
|
+
|
|
1366
1377
|
// From components/composites/DocumentTabBar/DocumentTabBar.tsx
|
|
1367
1378
|
export interface DocumentTabBarProps {
|
|
1368
1379
|
/**
|
|
@@ -1508,8 +1519,6 @@ export const Confirmation: React.FC<ConfirmationProps>;
|
|
|
1508
1519
|
|
|
1509
1520
|
export const CommentBox: React.FC<any>;
|
|
1510
1521
|
|
|
1511
|
-
export const AppHeader: React.FC<any>;
|
|
1512
|
-
|
|
1513
1522
|
// From components/composites/AgentIndicator/AgentIndicator.tsx
|
|
1514
1523
|
export interface SubAgent {
|
|
1515
1524
|
id: string
|
|
@@ -1537,6 +1546,8 @@ export interface AgentIndicatorProps {
|
|
|
1537
1546
|
|
|
1538
1547
|
export const AgentIndicator: React.FC<AgentIndicatorProps>;
|
|
1539
1548
|
|
|
1549
|
+
export const AppHeader: React.FC<any>;
|
|
1550
|
+
|
|
1540
1551
|
// From components/composites/AdjustableLayout/AdjustableLayout.tsx
|
|
1541
1552
|
export interface AdjustableLayoutSection {
|
|
1542
1553
|
id: string
|
|
@@ -1564,6 +1575,7 @@ export const AdjustableLayout: React.FC<AdjustableLayoutProps>;
|
|
|
1564
1575
|
// ============================================================================
|
|
1565
1576
|
|
|
1566
1577
|
export { ModeSwitcher } from './composites';
|
|
1578
|
+
export { getLayoutedElements } from './blocks';
|
|
1567
1579
|
export { ReactFlowProvider, applyNodeChanges, applyEdgeChanges, addEdge } from '@xyflow/react';
|
|
1568
1580
|
export type { NodeChange, EdgeChange, Connection } from '@xyflow/react';
|
|
1569
1581
|
export { cn } from '@/lib/utils';
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
|
9
9
|
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
10
10
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
11
11
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
12
|
-
import { Send, Circle, X, EyeOff, Zap, Check, XCircle, GitBranch, Plus, WrenchIcon, ChevronDownIcon, ChevronsUpDownIcon, ArrowDownIcon, CheckIcon, XIcon, ArrowLeft, ArrowRight, SearchIcon, ChevronUpIcon, MoreVertical, Columns3, ChevronDown, ChevronsLeft, ChevronLeft, ChevronRight, ChevronsRight, XCircleIcon, CheckCircleIcon, ClockIcon, CircleIcon, SendIcon, GripVertical, Loader2Icon, SquareIcon, Undo2, Redo2, Save, Loader2 } from 'lucide-react';
|
|
12
|
+
import { Send, Circle, X, EyeOff, Zap, Check, XCircle, GitBranch, Play, Plus, WrenchIcon, ChevronDownIcon, ChevronsUpDownIcon, ArrowDownIcon, CheckIcon, XIcon, ArrowLeft, ArrowRight, SearchIcon, ChevronUpIcon, MoreVertical, Columns3, ChevronDown, ChevronsLeft, ChevronLeft, ChevronRight, ChevronsRight, XCircleIcon, CheckCircleIcon, ClockIcon, CircleIcon, SendIcon, GripVertical, Loader2Icon, SquareIcon, Undo2, Redo2, Save, Loader2 } from 'lucide-react';
|
|
13
13
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
14
14
|
import { motion } from 'motion/react';
|
|
15
15
|
import { StickToBottom, useStickToBottomContext } from 'use-stick-to-bottom';
|
|
@@ -46,9 +46,10 @@ import { CSS } from '@dnd-kit/utilities';
|
|
|
46
46
|
import 'sonner';
|
|
47
47
|
import { z } from 'zod';
|
|
48
48
|
import { dynamicTableSchema, DYNAMIC_TABLE_SCHEMA_VERSION, FORM_SCHEMA_VERSION } from 'ui-schema-contracts';
|
|
49
|
-
import { Handle, Position, ReactFlowProvider, useReactFlow, ConnectionMode,
|
|
49
|
+
import { Handle, Position, ReactFlowProvider, useReactFlow, ConnectionMode, ReactFlow, Background, getSimpleBezierPath, BaseEdge, getSmoothStepPath, Panel as Panel$1, Controls as Controls$1 } from '@xyflow/react';
|
|
50
50
|
export { ReactFlowProvider, addEdge, applyEdgeChanges, applyNodeChanges } from '@xyflow/react';
|
|
51
51
|
import '@xyflow/react/dist/style.css';
|
|
52
|
+
import ELK from 'elkjs';
|
|
52
53
|
import { formSchema } from 'design-schema/schemas/form';
|
|
53
54
|
|
|
54
55
|
var __defProp = Object.defineProperty;
|
|
@@ -8328,6 +8329,34 @@ var TransitionNode = memo(
|
|
|
8328
8329
|
}
|
|
8329
8330
|
);
|
|
8330
8331
|
TransitionNode.displayName = "TransitionNode";
|
|
8332
|
+
var TriggerNode = memo(({ data, selected, id }) => {
|
|
8333
|
+
if (!data) {
|
|
8334
|
+
return null;
|
|
8335
|
+
}
|
|
8336
|
+
const displayTitle = data.label || "Trigger";
|
|
8337
|
+
const displayDescription = data.description;
|
|
8338
|
+
const status = data.status;
|
|
8339
|
+
return /* @__PURE__ */ jsx(
|
|
8340
|
+
Node2,
|
|
8341
|
+
{
|
|
8342
|
+
className: cn(
|
|
8343
|
+
"relative flex flex-col items-center justify-center bg-purple-50 dark:bg-purple-950/30 border border-purple-200 dark:border-purple-800 shadow-none transition-all duration-150 ease-out",
|
|
8344
|
+
selected && "border-primary border-2"
|
|
8345
|
+
),
|
|
8346
|
+
"data-testid": `trigger-node-${id}`,
|
|
8347
|
+
handles: { target: false, source: true },
|
|
8348
|
+
status,
|
|
8349
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full items-center justify-center gap-1.5 px-3 py-2", children: [
|
|
8350
|
+
/* @__PURE__ */ jsx(Play, { className: "size-3 shrink-0 text-purple-600 dark:text-purple-400", strokeWidth: 1.5 }),
|
|
8351
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 text-center", children: [
|
|
8352
|
+
/* @__PURE__ */ jsx(NodeTitle, { className: "line-clamp-2 text-center text-xs font-medium leading-tight", title: displayTitle, children: displayTitle }),
|
|
8353
|
+
displayDescription && /* @__PURE__ */ jsx(NodeDescription, { className: "mt-0.5 line-clamp-2 text-center text-[10px] leading-tight", title: displayDescription, children: displayDescription })
|
|
8354
|
+
] })
|
|
8355
|
+
] })
|
|
8356
|
+
}
|
|
8357
|
+
);
|
|
8358
|
+
});
|
|
8359
|
+
TriggerNode.displayName = "TriggerNode";
|
|
8331
8360
|
function WorkflowToolbarActions({
|
|
8332
8361
|
actionGroups = [],
|
|
8333
8362
|
className
|
|
@@ -9299,7 +9328,8 @@ var edgeTypes = {
|
|
|
9299
9328
|
};
|
|
9300
9329
|
var nodeTypes = {
|
|
9301
9330
|
state: StateNode,
|
|
9302
|
-
transition: TransitionNode
|
|
9331
|
+
transition: TransitionNode,
|
|
9332
|
+
trigger: TriggerNode
|
|
9303
9333
|
};
|
|
9304
9334
|
function WorkflowCanvasInner({
|
|
9305
9335
|
nodes,
|
|
@@ -9312,7 +9342,6 @@ function WorkflowCanvasInner({
|
|
|
9312
9342
|
onPaneClick,
|
|
9313
9343
|
onNodeClick,
|
|
9314
9344
|
onEdgeClick,
|
|
9315
|
-
showMinimap = false,
|
|
9316
9345
|
interactive = false,
|
|
9317
9346
|
topLeft,
|
|
9318
9347
|
topRight,
|
|
@@ -9405,8 +9434,7 @@ function WorkflowCanvasInner({
|
|
|
9405
9434
|
position: "bottom-left",
|
|
9406
9435
|
children: /* @__PURE__ */ jsx(Controls, {})
|
|
9407
9436
|
}
|
|
9408
|
-
)
|
|
9409
|
-
showMinimap && /* @__PURE__ */ jsx(MiniMap, { bgColor: "var(--sidebar)", nodeStrokeColor: "var(--border)" })
|
|
9437
|
+
)
|
|
9410
9438
|
]
|
|
9411
9439
|
}
|
|
9412
9440
|
)
|
|
@@ -9416,6 +9444,50 @@ function WorkflowCanvasInner({
|
|
|
9416
9444
|
function WorkflowCanvas(props) {
|
|
9417
9445
|
return /* @__PURE__ */ jsx(ReactFlowProvider, { children: /* @__PURE__ */ jsx(WorkflowCanvasInner, __spreadValues({}, props)) });
|
|
9418
9446
|
}
|
|
9447
|
+
var NODE_WIDTH = 180;
|
|
9448
|
+
var NODE_HEIGHT = 52;
|
|
9449
|
+
var elk = new ELK();
|
|
9450
|
+
async function getLayoutedElements(nodes, edges) {
|
|
9451
|
+
const graph = {
|
|
9452
|
+
id: "root",
|
|
9453
|
+
layoutOptions: {
|
|
9454
|
+
"elk.algorithm": "layered",
|
|
9455
|
+
"elk.direction": "DOWN",
|
|
9456
|
+
"elk.layered.spacing.nodeNodeBetweenLayers": "60",
|
|
9457
|
+
"elk.spacing.nodeNode": "40",
|
|
9458
|
+
"elk.layered.nodePlacement.strategy": "BRANDES_KOEPF",
|
|
9459
|
+
"elk.layered.nodePlacement.bk.fixedAlignment": "BALANCED",
|
|
9460
|
+
"elk.layered.considerModelOrder": "true",
|
|
9461
|
+
"elk.hierarchyHandling": "INCLUDE_CHILDREN"
|
|
9462
|
+
},
|
|
9463
|
+
children: nodes.map((n) => ({
|
|
9464
|
+
id: n.id,
|
|
9465
|
+
width: NODE_WIDTH,
|
|
9466
|
+
height: NODE_HEIGHT
|
|
9467
|
+
})),
|
|
9468
|
+
edges: edges.map((e) => {
|
|
9469
|
+
return {
|
|
9470
|
+
id: e.id,
|
|
9471
|
+
sources: [e.source],
|
|
9472
|
+
targets: [e.target]
|
|
9473
|
+
};
|
|
9474
|
+
})
|
|
9475
|
+
};
|
|
9476
|
+
const layout = await elk.layout(graph);
|
|
9477
|
+
const layoutedNodes = nodes.map((n) => {
|
|
9478
|
+
var _a;
|
|
9479
|
+
const elkNode = ((_a = layout.children) != null ? _a : []).find((c) => c.id === n.id);
|
|
9480
|
+
if (!elkNode || elkNode.x == null || elkNode.y == null) return n;
|
|
9481
|
+
return __spreadProps(__spreadValues({}, n), {
|
|
9482
|
+
position: { x: elkNode.x, y: elkNode.y }
|
|
9483
|
+
});
|
|
9484
|
+
});
|
|
9485
|
+
const layoutedEdges = edges.map((e) => __spreadProps(__spreadValues({}, e), {
|
|
9486
|
+
sourceHandle: "source-bottom",
|
|
9487
|
+
targetHandle: "target-top"
|
|
9488
|
+
}));
|
|
9489
|
+
return { nodes: layoutedNodes, edges: layoutedEdges };
|
|
9490
|
+
}
|
|
9419
9491
|
function WorkflowBuilder({
|
|
9420
9492
|
workflowName,
|
|
9421
9493
|
versions,
|
|
@@ -10430,7 +10502,14 @@ var selectedWorkflowRunMock = {
|
|
|
10430
10502
|
suspensionReason: "-"
|
|
10431
10503
|
})
|
|
10432
10504
|
});
|
|
10505
|
+
var DashboardHeader = React3.memo(({ ctaLabel = "Quick Create" }) => {
|
|
10506
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
10507
|
+
/* @__PURE__ */ jsx(Button2, { variant: "outline", size: "sm", className: "hidden sm:flex", children: ctaLabel }),
|
|
10508
|
+
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: "GitHub" })
|
|
10509
|
+
] });
|
|
10510
|
+
});
|
|
10511
|
+
DashboardHeader.displayName = "DashboardHeader";
|
|
10433
10512
|
|
|
10434
|
-
export { AIDocEditor, DashboardFeature, FormReportsFeature, ModeSwitcher, PageLayout, RefinementPanel, SpecNavigator, WorkflowBuilder, WorkflowObservabilityFeature, cn };
|
|
10513
|
+
export { AIDocEditor, DashboardFeature, FormReportsFeature, ModeSwitcher, PageLayout, RefinementPanel, SpecNavigator, WorkflowBuilder, WorkflowObservabilityFeature, cn, getLayoutedElements };
|
|
10435
10514
|
//# sourceMappingURL=index.js.map
|
|
10436
10515
|
//# sourceMappingURL=index.js.map
|