feat: Step Function + small fixes + more services + color matching the services

This commit is contained in:
Zakaria
2026-09-28 18:38:22 -04:00
parent 0d613ae256
commit 548a15d7ec
23 changed files with 3219 additions and 52 deletions
+298
View File
@@ -53,6 +53,46 @@
--bulk-bar-border: #5c6bc0;
--bulk-bar-text: #e8eaf6;
/* Workflow Studio: keep canvas surfaces readable independently of state accents. */
--workflow-save-border: #4e628f;
--workflow-save-bg: #18233c;
--workflow-save-text: #dce7ff;
--workflow-save-hover-border: #7498e6;
--workflow-save-hover-bg: #21345a;
--workflow-canvas-bg: #f2f4f7;
--workflow-canvas-dot: rgba(58, 72, 98, .22);
--workflow-toolbar-bg: #ffffff;
--workflow-node-bg: #ffffff;
--workflow-node-text: #162033;
--workflow-node-muted: #526077;
--workflow-node-border: #73819a;
--workflow-node-accent: #6389e8;
--workflow-choice-border: #9a7137;
--workflow-container-border: #5773a9;
--workflow-container-bg: rgba(38, 56, 95, .36);
--workflow-warning-border: #bf7b37;
--workflow-warning-text: #f3b465;
--workflow-task: #5d8dff;
--workflow-choice: #d99a3d;
--workflow-pass: #76b7a1;
--workflow-pass-border: #4f8073;
--workflow-wait: #a480df;
--workflow-wait-border: #73589b;
--workflow-parallel: #d279bd;
--workflow-parallel-border: #9d568d;
--workflow-map: #45b1bd;
--workflow-map-border: #39848d;
--workflow-start-border: #4d9d82;
--workflow-start-text: #8de0b7;
--workflow-end-border: #ab5a67;
--workflow-end-text: #f19aa6;
--workflow-validation-border: #8f652f;
--workflow-validation-bg: rgba(143, 101, 47, .16);
--workflow-validation-text: #f2c47e;
--workflow-confirmation-border: #657da9;
--workflow-confirmation-bg: rgba(42, 61, 96, .34);
--workflow-edge: #59677d;
/* ── Sidebar geometry ── */
--sidebar-w: 220px;
--sidebar-rail-w: 52px;
@@ -116,6 +156,45 @@
--bulk-bar-border: #3949ab;
--bulk-bar-text: #1a237e;
--workflow-save-border: #5565a7;
--workflow-save-bg: #e7ecff;
--workflow-save-text: #27366e;
--workflow-save-hover-border: #3949ab;
--workflow-save-hover-bg: #d9e2ff;
--workflow-canvas-bg: #f6f7f9;
--workflow-canvas-dot: rgba(69, 82, 108, .2);
--workflow-toolbar-bg: #ffffff;
--workflow-node-bg: #ffffff;
--workflow-node-text: #111827;
--workflow-node-muted: #4b5565;
--workflow-node-border: #7180b0;
--workflow-node-accent: #3949ab;
--workflow-choice-border: #a76519;
--workflow-container-border: #6679ad;
--workflow-container-bg: rgba(73, 95, 159, .08);
--workflow-warning-border: #a85f13;
--workflow-warning-text: #7a3f00;
--workflow-task: #1d4ed8;
--workflow-choice: #b45309;
--workflow-pass: #177a62;
--workflow-pass-border: #27806b;
--workflow-wait: #7040a6;
--workflow-wait-border: #7950a5;
--workflow-parallel: #ad3d87;
--workflow-parallel-border: #9f4d84;
--workflow-map: #147a88;
--workflow-map-border: #2d7b86;
--workflow-start-border: #24795f;
--workflow-start-text: #145a45;
--workflow-end-border: #a63b48;
--workflow-end-text: #862a35;
--workflow-validation-border: #a85f13;
--workflow-validation-bg: #fff4df;
--workflow-validation-text: #6f3900;
--workflow-confirmation-border: #6e7eb3;
--workflow-confirmation-bg: #edf1ff;
--workflow-edge: #5c6b91;
/* 45% black at 32px blur is far too heavy under a white panel. */
--sidebar-overlay-shadow: 6px 0 28px rgba(38, 48, 82, 0.18);
}
@@ -820,6 +899,165 @@ pre,
flex: 1 1 160px;
}
.workflow-studio-page { display: grid; grid-template-rows: auto minmax(0, 1fr); height: 100%; min-width: 0; }
.workflow-studio-workspace { min-height: 0; max-width: 100%; padding: 0; overflow: hidden; }
.workflow-studio { display: flex; height: 100%; min-height: 0; flex-direction: column; border: 0; border-radius: 0; }
.workflow-studio > .dynamic-stage-header { min-height: 58px; margin: 0; padding: 9px 18px; border-bottom: 1px solid var(--border); }
.workflow-studio > .dynamic-stage-header h3 { margin: 1px 0 0; font-size: 15px; }
.workflow-studio > .compact-text { margin: 0; padding: 7px 18px; border-bottom: 1px solid var(--border-faint); }
.workflow-studio-actions { display: flex; align-items: center; gap: 8px; }
.workflow-save-definition { min-height: 30px; border-color: var(--workflow-save-border); background: var(--workflow-save-bg); color: var(--workflow-save-text); font-size: 11px; }
.workflow-save-definition:not(:disabled):hover { border-color: var(--workflow-save-hover-border); background: var(--workflow-save-hover-bg); }
.workflow-studio-split { display: grid; min-height: 0; flex: 1; grid-template-columns: 280px minmax(440px, 1fr) 350px; border-top: 1px solid var(--border); }
.workflow-action-palette, .workflow-studio-json { min-width: 0; overflow-x: hidden; overflow-y: auto; background: var(--surface); scrollbar-gutter: stable; }
.workflow-action-palette { padding: 18px 16px; border-right: 1px solid var(--border); }
.workflow-studio-json { padding: 18px; border-left: 1px solid var(--border); }
.workflow-studio-json > * { min-width: 0; max-width: 100%; }
.workflow-pane-title { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; color: var(--text-bright); font-size: 15px; font-weight: 700; }
.workflow-pane-title small { overflow: hidden; color: var(--text-3); font-size: 9px; font-weight: 700; letter-spacing: .08em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.workflow-palette-search { position: relative; display: block; margin: 16px 0 12px; }
.workflow-palette-search svg { position: absolute; top: 9px; left: 10px; color: var(--text-3); }
.workflow-palette-search input { width: 100%; height: 34px; padding: 0 10px 0 32px; border: 1px solid var(--input-border); border-radius: 3px; background: var(--input-bg); color: var(--text); font-size: 12px; }
.workflow-palette-tabs { display: grid; grid-template-columns: 1fr 1fr; border-bottom: 1px solid var(--border); }
.workflow-palette-tabs button { justify-content: center; margin: 0; padding: 8px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; color: var(--text-3); font-size: 12px; font-weight: 700; }
.workflow-palette-tabs button.active { border-bottom-color: var(--accent); color: var(--text-bright); }
.workflow-action-palette > p { margin: 17px 0 8px; color: var(--text-3); font-size: 10px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.workflow-palette-cards { display: grid; gap: 8px; }
.workflow-palette-cards > button { display: flex; width: 100%; align-items: center; gap: 10px; margin: 0; padding: 9px; border: 1px solid var(--border); border-radius: 4px; background: var(--elevated); color: var(--text); text-align: left; box-shadow: 0 2px 5px rgba(0, 0, 0, .12); }
.workflow-palette-cards > button:hover { border-color: var(--accent); background: var(--raised); }
.workflow-palette-cards > button > span:last-child { display: grid; min-width: 0; gap: 2px; }
.workflow-palette-cards strong { font-size: 12px; }
.workflow-palette-cards small { color: var(--text-3); font-size: 9px; }
.workflow-palette-icon { display: grid; width: 32px; height: 32px; flex: 0 0 auto; place-items: center; border-radius: 3px; background: var(--accent-tint); color: var(--accent); }
.workflow-palette-service-group { display: grid; gap: 6px; margin: 0 0 12px; }
.workflow-palette-service-group h4 { margin: 0; color: var(--text-2); font-size: 10px; letter-spacing: .05em; text-transform: uppercase; }
.workflow-palette-lambda { background: rgba(255, 153, 0, .15); color: #d97706; }
.workflow-palette-sns { background: rgba(196, 56, 123, .14); color: #c4387b; }
.workflow-palette-sqs-send-message { background: rgba(209, 79, 100, .14); color: #c2415a; }
.workflow-palette-dynamodb-put-item, .workflow-palette-dynamodb-get-item, .workflow-palette-dynamodb-update-item, .workflow-palette-dynamodb-delete-item { background: rgba(47, 110, 181, .14); color: #2f6eb5; }
.workflow-palette-eventbridge-put-events { background: rgba(210, 68, 139, .14); color: #c3347a; }
.workflow-palette-ecs-run-task, .workflow-palette-ecs-run-task-sync { background: rgba(232, 119, 34, .14); color: #d46613; }
.workflow-palette-states-start-execution { background: rgba(119, 79, 184, .14); color: #7650b5; }
.workflow-palette-choice { background: rgba(217, 154, 61, .14); color: var(--workflow-choice); }
.workflow-palette-wait { background: rgba(164, 128, 223, .14); color: var(--workflow-wait); }
.workflow-branch-hint { margin-top: 14px; padding: 9px; border: 1px solid var(--workflow-choice-border); border-radius: 3px; color: var(--workflow-warning-text); font-size: 11px; line-height: 1.45; }
.workflow-studio-canvas { position: relative; min-height: 0; background: radial-gradient(circle at 1px 1px, var(--workflow-canvas-dot) 1px, transparent 0) 0 0 / 20px 20px, var(--workflow-canvas-bg); }
.workflow-canvas-toolbar { position: absolute; z-index: 5; top: 12px; left: 50%; display: flex; gap: 2px; padding: 3px; transform: translateX(-50%); border: 1px solid #c4cad4; border-radius: 4px; background: var(--workflow-toolbar-bg); box-shadow: 0 2px 8px rgba(29, 38, 55, .16); }
.workflow-canvas-toolbar span { width: 1px; margin: 3px; background: #d7dbe2; }
.workflow-canvas-toolbar button { display: grid; width: 28px; height: 28px; place-items: center; border: 0; border-radius: 2px; background: transparent; color: #38455a; }
.workflow-canvas-toolbar button:hover:not(:disabled) { background: #e8ecf4; color: #111827; }
.workflow-canvas-toolbar button:disabled { color: #a1a9b5; cursor: not-allowed; }
.workflow-inspector-tabs { display: flex; gap: 20px; margin: 17px -18px 18px; padding: 0 18px; border-bottom: 1px solid var(--border); }
.workflow-inspector-tabs button { padding: 0 1px 10px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--text-3); font-size: 12px; font-weight: 700; }
.workflow-inspector-tabs button.active { border-bottom-color: var(--accent); color: var(--text-bright); }
.workflow-rename, .workflow-choice-rule label, .workflow-choice-default label, .workflow-transition-editor label, .workflow-sns-task-picker > label, .workflow-definition-editor > label { display: grid; gap: 5px; color: var(--text-2); font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.workflow-rename { margin: 0 0 18px; }
.workflow-rename input, .workflow-choice-rule input, .workflow-choice-rule select, .workflow-choice-default select, .workflow-transition-editor select { width: 100%; min-height: 34px; padding: 0 9px; border: 1px solid var(--input-border); border-radius: 3px; background: var(--input-bg); color: var(--text); font-size: 12px; }
.workflow-studio-json pre { margin: 8px 0 0; overflow: auto; color: var(--text); font-size: 12px; line-height: 1.55; white-space: pre-wrap; overflow-wrap: anywhere; }
.workflow-state-node { position: relative; min-width: 190px; max-width: 230px; padding: 12px 14px; border: 1px solid var(--workflow-node-border); border-left: 5px solid var(--workflow-node-accent); border-radius: 5px; background: var(--workflow-node-bg); color: var(--workflow-node-text); box-shadow: 0 3px 9px rgba(31, 41, 55, .2); }
.workflow-state-node strong, .workflow-state-type, .workflow-retry-marker { display: block; }
.workflow-state-node > strong { padding-right: 22px; font-size: 13px; line-height: 1.35; }
.workflow-state-type { display: flex; align-items: center; gap: 5px; margin-bottom: 6px; color: var(--workflow-node-muted); font-size: 9px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.workflow-node-delete { position: absolute; z-index: 2; top: 8px; right: 8px; display: grid; width: 21px; height: 21px; place-items: center; border: 0; border-radius: 3px; background: transparent; color: var(--workflow-node-muted); }
.workflow-node-delete:hover { background: #fee2e2; color: #b91c1c; }
.workflow-choice-branches { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; margin-top: 10px; }
.workflow-choice-branches > div { position: relative; min-height: 24px; padding: 5px 13px 5px 6px; border: 1px solid #d69a46; border-radius: 2px; background: #fff8ed; color: #68420d; font-size: 9px; font-weight: 700; }
.workflow-choice-branches .react-flow__handle { bottom: -5px; width: 8px; height: 8px; border-color: #945f16; background: #fff; }
.workflow-choice-placeholder { display: grid; width: 210px; min-height: 100px; place-content: center; gap: 5px; border: 2px dashed #79879a; border-radius: 5px; background: rgba(255, 255, 255, .78); color: var(--workflow-node-text); text-align: center; box-shadow: 0 2px 6px rgba(31, 41, 55, .08); }
.workflow-choice-placeholder:hover, .workflow-choice-placeholder:focus-visible { border-color: #3949ab; background: #fff; }
.workflow-choice-placeholder > span { color: #74480b; font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.workflow-choice-placeholder > strong { font-size: 13px; }
.workflow-choice-placeholder > small { color: var(--workflow-node-muted); font-size: 9px; }
.workflow-empty-guidance { display: grid; gap: 4px; min-width: 190px; padding: 15px; border: 2px dashed var(--workflow-node-border); border-radius: 5px; background: rgba(255, 255, 255, .82); color: var(--workflow-node-text); text-align: center; }
.workflow-empty-guidance span { color: var(--workflow-node-muted); font-size: 11px; }
.workflow-open-studio { width: calc(100% - 24px); margin: 12px 12px 0; }
.workflow-container-node { height: 100%; padding: 10px; border: 1px dashed var(--workflow-container-border); border-radius: 6px; background: var(--workflow-container-bg); color: var(--workflow-node-text); }
.workflow-retry-marker { margin-top: 7px; color: #854d0e; font-size: 10px; font-weight: 700; }
.workflow-state-name { display: block; margin-top: 4px; color: var(--workflow-node-muted); font-size: 10px; }
.workflow-unattached-marker { display: inline-block; margin-top: 7px; padding: 2px 5px; border: 1px solid #a85f13; border-radius: 2px; color: #7a3f00; font-size: 9px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.workflow-state-task { border-left-color: var(--workflow-task); }
.workflow-node-lambda { border-left-color: #d97706; }
.workflow-node-sns { border-left-color: #c4387b; }
.workflow-node-sqs-send-message { border-left-color: #c2415a; }
.workflow-node-dynamodb-put-item, .workflow-node-dynamodb-get-item, .workflow-node-dynamodb-update-item, .workflow-node-dynamodb-delete-item { border-left-color: #2f6eb5; }
.workflow-node-eventbridge-put-events { border-left-color: #c3347a; }
.workflow-node-ecs-run-task, .workflow-node-ecs-run-task-sync { border-left-color: #d46613; }
.workflow-node-states-start-execution { border-left-color: #7650b5; }
.workflow-state-choice { border-left-color: var(--workflow-choice); border-color: var(--workflow-choice-border); }
.workflow-state-pass { border-left-color: var(--workflow-pass); border-color: var(--workflow-pass-border); }
.workflow-state-wait { border-left-color: var(--workflow-wait); border-color: var(--workflow-wait-border); }
.workflow-state-succeed { border-left-color: #15803d; border-color: #15803d; }
.workflow-state-fail { border-left-color: #b91c1c; border-color: #b91c1c; }
.workflow-state-parallel { border-left-color: var(--workflow-parallel); border-color: var(--workflow-parallel-border); }
.workflow-state-map { border-left-color: var(--workflow-map); border-color: var(--workflow-map-border); }
.workflow-state-unattached { border-color: #a85f13; }
.workflow-boundary-node { display: flex; align-items: center; justify-content: center; gap: 6px; min-width: 104px; padding: 8px 12px; border: 1px solid; border-radius: 999px; background: #fff; box-shadow: 0 2px 6px rgba(31, 41, 55, .18); font-size: 12px; font-weight: 700; }
.workflow-boundary-start { border-color: #24795f; color: #145a45; }
.workflow-boundary-end { border-color: #a63b48; color: #862a35; }
.workflow-validation { display: flex; align-items: baseline; gap: 9px; margin: 8px 16px; padding: 8px 11px; border: 1px solid var(--workflow-validation-border); border-radius: 3px; background: var(--workflow-validation-bg); color: var(--workflow-validation-text); font-size: 11px; }
.workflow-validation-errors { border-color: var(--status-error); color: var(--status-error); }
.workflow-confirmation { display: grid; gap: 6px; margin: 10px 16px; padding: 9px 11px; border: 1px solid var(--workflow-confirmation-border); border-radius: 3px; background: var(--workflow-confirmation-bg); color: var(--text-2); font-size: 12px; }
.workflow-confirmation strong { color: var(--text); }
.workflow-confirmation > div { display: flex; gap: 6px; }
.workflow-lambda-picker { display: grid; gap: 5px; margin: 4px 0 14px; }
.workflow-lambda-picker label { color: var(--text-2); font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.workflow-lambda-picker select, .workflow-task-rule input, .workflow-task-rule select, .workflow-sns-task-picker select { width: 100%; min-height: 32px; border: 1px solid var(--input-border); border-radius: 3px; background: var(--input-bg); color: var(--text); }
.workflow-task-editor { display: grid; gap: 10px; margin: 4px 0 14px; padding: 10px; border: 1px solid var(--border); border-radius: 3px; background: var(--connection-bg); }
.workflow-task-editor h4 { margin: 0; color: var(--text); font-size: 13px; }
.workflow-service-editor > label, .workflow-integration-entry > label { display: grid; min-width: 0; gap: 5px; color: var(--text-2); font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.workflow-service-editor input, .workflow-service-editor select, .workflow-service-editor textarea { width: 100%; min-width: 0; min-height: 34px; padding: 6px 9px; border: 1px solid var(--input-border); border-radius: 3px; background: var(--input-bg); color: var(--text); font-size: 12px; }
.workflow-service-editor textarea { min-height: 88px; resize: vertical; font: 11px/1.45 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; text-transform: none; }
.workflow-service-editor .workflow-checkbox { display: flex; align-items: center; gap: 7px; }
.workflow-service-editor .workflow-checkbox input { width: auto; min-height: 0; }
.workflow-integration-entry { display: grid; min-width: 0; gap: 8px; padding: 9px; border: 1px solid var(--border); border-radius: 3px; }
.workflow-integration-entry > div { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--text-2); font-size: 11px; }
.workflow-task-section { display: grid; gap: 7px; }
.workflow-task-section > div { display: flex; min-width: 0; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; color: var(--text-2); font-size: 11px; }
.workflow-task-rule { display: grid; min-width: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; padding: 8px; border: 1px solid var(--border); border-radius: 3px; }
.workflow-task-rule label { display: grid; gap: 3px; color: var(--text-3); font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.workflow-task-rule label:first-child { grid-column: 1 / -1; }
.workflow-task-rule .button { grid-column: 1 / -1; justify-self: start; }
.workflow-choice-editor { display: grid; gap: 10px; }
.workflow-inspector-section-title h4 { margin: 0; color: var(--text-bright); font-size: 13px; }
.workflow-inspector-section-title span { color: var(--text-3); font-size: 10px; }
.workflow-choice-rule { display: grid; gap: 9px; padding: 12px; border: 1px solid var(--border); border-radius: 3px; background: var(--connection-bg); }
.workflow-choice-rule > div, .workflow-choice-default > div { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.workflow-choice-rule > div > *, .workflow-choice-default > div > * { min-width: 0; }
.workflow-choice-rule > div strong, .workflow-choice-default strong { color: var(--text); font-size: 11px; }
.workflow-choice-rule > div span, .workflow-choice-default span { color: var(--text-3); font-size: 10px; }
.workflow-add-rule { justify-self: start; }
.workflow-choice-default { display: grid; gap: 7px; padding: 12px; border: 1px solid var(--border); border-radius: 3px; }
.workflow-transition-editor { display: grid; gap: 8px; margin: 0 0 14px; padding: 10px; border: 1px solid var(--border); border-radius: 3px; background: var(--connection-bg); }
.workflow-transition-editor h4 { margin: 0; color: var(--text); font-size: 13px; }
.workflow-definition-editor { display: grid; gap: 9px; min-height: 460px; }
.workflow-definition-editor textarea { width: 100%; min-height: 400px; resize: vertical; border: 1px solid var(--input-border); border-radius: 3px; background: var(--input-bg); color: var(--text); font: 11px/1.5 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; tab-size: 2; }
.workflow-definition-editor .button { justify-self: start; }
.workflow-studio-canvas .react-flow__edge-path { stroke: var(--workflow-edge); stroke-width: 1.6; }
.workflow-studio-canvas .react-flow__edge-text { fill: #283447; font-size: 10px; font-weight: 700; }
.workflow-studio-canvas .react-flow__edge-textbg { fill: var(--workflow-canvas-bg); }
.workflow-edge-label { position: absolute; z-index: 3; display: flex; max-width: 145px; align-items: center; gap: 6px; padding: 4px 7px; border: 1px solid #c6ccd6; border-radius: 999px; background: var(--surface); color: var(--text); font-size: 10px; font-weight: 700; line-height: 1.25; text-align: center; box-shadow: 0 1px 4px rgba(31, 41, 55, .14); pointer-events: all; overflow-wrap: anywhere; }
.workflow-edge-label span { min-width: 0; }
.workflow-edge-splice b { display: grid; width: 17px; height: 17px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: var(--accent); color: #fff; font-size: 14px; line-height: 1; opacity: .72; }
.workflow-edge-splice:hover, .workflow-edge-splice.drag-active { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-tint); }
.workflow-edge-splice:hover b, .workflow-edge-splice.drag-active b { opacity: 1; }
.workflow-catch-edge .react-flow__edge-path { stroke: #b91c1c; stroke-dasharray: 5 4; }
.workflow-placeholder-edge .react-flow__edge-path { stroke-dasharray: 5 4; }
@media (max-width: 1050px) {
.workflow-studio-split { grid-template-columns: 220px minmax(400px, 1fr) 300px; }
}
@media (max-width: 760px) {
.workflow-studio-page, .workflow-studio { height: auto; min-height: 100%; }
.workflow-studio-workspace { overflow: auto; }
.workflow-studio-split { grid-template-columns: 1fr; }
.workflow-action-palette { border-right: 0; border-bottom: 1px solid var(--border); }
.workflow-palette-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.workflow-studio-canvas { min-height: 620px; }
.workflow-studio-json { border-top: 1px solid var(--border); border-left: 0; }
.workflow-task-rule { grid-template-columns: 1fr 1fr; }
}
.widget-header {
display: flex;
align-items: center;
@@ -1608,6 +1846,62 @@ pre,
grid-template-columns: repeat(2, minmax(180px, 1fr));
}
.workflow-create-modes {
display: grid;
grid-column: 1 / -1;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
margin-bottom: 6px;
}
.workflow-create-mode {
align-items: flex-start;
border: 1px solid var(--border);
border-radius: 8px;
background: var(--surface-subtle);
color: var(--text-2);
display: flex;
gap: 10px;
padding: 12px;
text-align: left;
}
.workflow-create-mode:hover,
.workflow-create-mode.active {
border-color: var(--accent);
background: var(--accent-tint-faint);
}
.workflow-create-mode > svg {
color: var(--accent);
flex: 0 0 auto;
}
.workflow-create-mode strong,
.workflow-create-mode small {
display: block;
}
.workflow-create-mode strong {
color: var(--text-bright);
font-size: 12px;
}
.workflow-create-mode small {
margin-top: 3px;
color: var(--text-muted);
font-size: 11px;
line-height: 1.35;
}
.workflow-definition-input {
box-sizing: border-box;
min-height: 230px;
resize: vertical;
width: 100%;
font-family: var(--font-mono, monospace);
}
.serverless-payload-editor {
box-sizing: border-box;
display: block;
@@ -3655,6 +3949,10 @@ button.console-service-card {
grid-template-columns: 1fr;
}
.workflow-create-modes {
grid-template-columns: 1fr;
}
.resource-inspector {
position: static;
}