diff --git a/frontend/src/ide/explorer/explorer-component.jsx b/frontend/src/ide/explorer/explorer-component.jsx index fd5193e..2a0471a 100644 --- a/frontend/src/ide/explorer/explorer-component.jsx +++ b/frontend/src/ide/explorer/explorer-component.jsx @@ -73,23 +73,15 @@ const MODEL_SORT_OPTIONS = [ { label: "Z \u2192 A", key: "alpha_desc" }, ]; -const MODEL_STATUS_DOT_STYLE = { - display: "inline-block", - width: "7px", - height: "7px", - borderRadius: "50%", - verticalAlign: "middle", -}; +// Only backgroundColor varies per status — layout handled by .model-status-dot CSS class const getModelRunStatus = (runStatus, failureReason, lastRunAt, token) => { if (runStatus === "RUNNING") { return ( ); @@ -130,10 +122,8 @@ const getModelRunStatus = (runStatus, failureReason, lastRunAt, token) => { placement="right" > ); @@ -152,10 +142,8 @@ const getModelRunStatus = (runStatus, failureReason, lastRunAt, token) => { return ( ); @@ -659,8 +647,17 @@ const IdeExplorer = ({ child.last_run_at, token ); + const wrappedIcon = statusBadge ? ( + + {child.icon} + {statusBadge} + + ) : ( + child.icon + ); return { ...child, + icon: wrappedIcon, title: ( {modelDeleteModeRef.current && ( @@ -677,17 +674,6 @@ const IdeExplorer = ({ style={{ marginRight: 6 }} /> )} - {statusBadge && ( - - {statusBadge} - - )} {child.title} ), diff --git a/frontend/src/ide/ide-layout.css b/frontend/src/ide/ide-layout.css index b3fcfec..417cffe 100644 --- a/frontend/src/ide/ide-layout.css +++ b/frontend/src/ide/ide-layout.css @@ -84,6 +84,22 @@ padding-left: 12px; } +/* Model run status badge overlaid on icon */ +.model-icon-badge-wrapper { + position: relative; + display: inline-flex; +} + +.model-status-dot { + position: absolute; + top: -2px; + right: -3px; + width: 7px; + height: 7px; + border-radius: 50%; + border: 1px solid var(--page-bg-2, #fff); +} + .contextMenu { position: fixed; z-index: 1000;