@@ -328,54 +295,6 @@ header h1 { font-size: var(--font-size-lg); font-weight: 600; }
.job-id { color: var(--text-dim); font-size: var(--font-size-sm); margin-left: auto; }
-/* Main layout: pipeline left, content right — both same height */
-.main-layout {
- display: flex;
- gap: var(--space-2);
- min-height: 0;
- overflow: hidden;
-}
-
-.pipeline-col {
- flex-shrink: 0;
- display: flex;
- overflow: hidden;
-}
-
-.pipeline-col > * { flex: 1; }
-
-.content-col {
- flex: 1;
- display: flex;
- flex-direction: column;
- gap: var(--space-2);
- min-height: 0;
- overflow: hidden;
-}
-
-/* Content rows */
-.viewer-row {
- display: flex;
- gap: var(--space-2);
- flex-shrink: 0;
-}
-.viewer-row > * { flex: 1; overflow: hidden; }
-
-/* Detections (75%) + Stats (25%) side by side, bottom-aligned with pipeline */
-.detections-stats-row {
- display: flex;
- gap: var(--space-2);
- flex: 1;
- min-height: 0;
-}
-
-.detections-col {
- flex: 3;
- min-width: 0;
- display: flex;
-}
-.detections-col > * { flex: 1; display: flex; flex-direction: column; }
-
.stats-col {
flex: 1;
display: flex;
@@ -385,24 +304,6 @@ header h1 { font-size: var(--font-size-lg); font-weight: 600; }
}
.stats-col > * { flex: 1; }
-.detections-stack {
- display: flex;
- flex-direction: column;
- height: 100%;
- overflow: hidden;
-}
-
-.timeline-section {
- min-height: 60px;
- overflow: auto;
-}
-
-.table-section {
- min-height: 60px;
- overflow-y: auto;
- overflow-x: hidden;
-}
-
/* Pipeline stats list */
.pipeline-stats {
display: flex;
@@ -427,7 +328,7 @@ header h1 { font-size: var(--font-size-lg); font-weight: 600; }
.empty { color: var(--text-dim); padding: var(--space-6); text-align: center; }
-/* Editor layout — frame maximized, sliders right, overlays bottom */
+/* Editor layout */
.editor-layout {
display: flex;
flex-direction: column;
@@ -437,32 +338,17 @@ header h1 { font-size: var(--font-size-lg); font-weight: 600; }
}
.editor-top {
- display: flex;
- flex: 1;
- min-height: 0;
- overflow: hidden;
-}
-
-.editor-frame {
- flex: 1;
- min-height: 0;
- min-width: 0;
- overflow: hidden;
- display: flex;
-}
-.editor-frame > * {
flex: 1;
min-height: 0;
overflow: hidden;
}
.editor-sliders {
- flex-shrink: 0;
- min-width: 210px;
padding: var(--space-2);
background: var(--surface-2);
overflow-y: auto;
overflow-x: hidden;
+ height: 100%;
}
.editor-bottom {
diff --git a/ui/framework/src/components/SplitPane.vue b/ui/framework/src/components/SplitPane.vue
new file mode 100644
index 0000000..af77b73
--- /dev/null
+++ b/ui/framework/src/components/SplitPane.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
diff --git a/ui/framework/src/index.ts b/ui/framework/src/index.ts
index 26d4de0..82f4ac5 100644
--- a/ui/framework/src/index.ts
+++ b/ui/framework/src/index.ts
@@ -8,6 +8,7 @@ export { useDataSource } from './composables/useDataSource'
export { default as Panel } from './components/Panel.vue'
export { default as LayoutGrid } from './components/LayoutGrid.vue'
export { default as ResizeHandle } from './components/ResizeHandle.vue'
+export { default as SplitPane } from './components/SplitPane.vue'
// Renderers
export { default as LogRenderer } from './renderers/LogRenderer.vue'