Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/frontend/packages/swarm-ui/src/pages/notifications/NotificationsPage.css
iris 6e7b5f84e9 swarm-ui: give the new-flow draft a route no flow id can take, and drop the dead hit-count rule
/notifications/new could be a saved flow's own page, so the draft now opens at
/notifications/draft/new, which has a segment more than any flow's route. The
placeholder id no longer needs reserving. The .notify-node-hits rule styled the
removed tree rows; nothing renders it.
2026-10-25 02:05:54 +02:00

289 lines
4.4 KiB
CSS

/* NotificationsPage — the flows, each drawn as its graph. */
.notify-flows {
display: flex;
flex-direction: column;
gap: 0.75em;
}
.notify-flow-head {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 0.5em;
}
.notify-flow-name {
flex: 1 1 auto;
min-width: 0;
font-weight: 600;
overflow-wrap: anywhere;
}
.notify-flow-state {
color: var(--muted);
}
.notify-flow-actions,
.notify-panel-actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.5em;
}
.notify-graph {
margin-top: 0.4em;
}
.notify-off {
opacity: 0.6;
}
/* FlowEditorPage — the head row, the canvas and the inspector beside it. */
.notify-editor-head {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
gap: 0.75em 1em;
margin-bottom: 1em;
padding-bottom: 1em;
border-bottom: 1px solid var(--border);
}
.notify-editor-actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.5em;
margin-left: auto;
}
.notify-editor-body {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
gap: 1em;
}
.notify-canvas-wrap {
flex: 1 1 24em;
min-width: 0;
}
.notify-palette {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.5em;
margin-bottom: 0.5em;
}
.notify-chip {
padding: 0.2em 0.7em;
border: 1.5px solid var(--border);
border-radius: 999px;
background: var(--bg-elev);
color: var(--fg);
font: inherit;
cursor: grab;
touch-action: none;
}
.notify-chip-match {
border-color: var(--purple);
}
.notify-chip-todo {
border-color: var(--green);
}
.notify-chip-request_reviewer {
border-color: var(--green);
}
.notify-ghost {
position: fixed;
z-index: 10;
padding: 0.2em 0.6em;
border: 1.5px solid var(--fg);
border-radius: 6px;
background: var(--bg-elev);
color: var(--fg);
pointer-events: none;
}
.notify-sr {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip-path: inset(50%);
white-space: nowrap;
}
.notify-canvas {
max-height: 70vh;
user-select: none;
overflow: auto;
border: 1px solid var(--border);
border-radius: 6px;
background: var(--bg);
}
.notify-edge {
fill: none;
stroke: var(--muted);
stroke-width: 1.5;
}
.notify-box {
cursor: grab;
touch-action: none;
}
.notify-box-source {
cursor: pointer;
}
.notify-box-carried {
opacity: 0.45;
}
.notify-box.notify-box-target rect {
stroke: var(--green);
stroke-width: 3;
}
.notify-box.notify-box-refused rect {
stroke: var(--red);
stroke-width: 3;
stroke-dasharray: 5 3;
}
.notify-box rect {
fill: var(--bg-elev);
stroke: var(--border);
stroke-width: 1.5;
}
.notify-box-source rect {
stroke: var(--blue);
}
.notify-box-match rect {
stroke: var(--purple);
}
.notify-box-todo rect,
.notify-box-request_reviewer rect {
stroke: var(--green);
}
.notify-box:focus {
outline: none;
}
.notify-box:focus rect,
.notify-box-selected rect {
stroke: var(--fg);
stroke-width: 2.5;
}
.notify-box text {
fill: var(--fg);
font-size: 12px;
pointer-events: none;
}
.notify-box .notify-box-kind {
fill: var(--muted);
font-size: 10px;
}
/* The box's line of text is cut by the browser at the box's own edge. */
.notify-box-text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: var(--fg);
font-size: 12px;
line-height: 16px;
pointer-events: none;
}
.notify-inspector {
flex: 0 1 22em;
min-width: 16em;
gap: 0.75em;
}
.notify-inspector h4 {
margin: 0;
}
.notify-inspector fieldset {
display: flex;
flex-direction: column;
gap: 0.6em;
margin: 0;
padding: 0.6em 0.8em 0.8em;
border: 1px solid var(--border);
border-radius: 6px;
}
.notify-inspector legend {
padding: 0 0.4em;
color: var(--muted);
font-size: 0.9em;
}
.notify-condition {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
gap: 0.5em;
margin-bottom: 0.4em;
}
.notify-inspector-actions {
display: flex;
flex-wrap: wrap;
gap: 0.5em;
margin-bottom: 0.75em;
}
.notify-node-id,
.notify-hint {
color: var(--muted);
font-size: 0.85em;
}
.notify-stale,
.notify-notice {
margin-bottom: 0.5em;
padding: 0.4em 0.6em;
border: 1px solid var(--red);
border-radius: 6px;
}
.notify-name {
flex: 0 1 24em;
}
/* The dry run's header line, and the router's "not available". */
.notify-dry-run {
margin: 0;
color: var(--muted);
font-size: 0.9em;
}
.notify-unavailable {
margin: 0;
color: var(--muted);
}
.notify-failed {
color: var(--red);
}