From 7e39aa3c9a87febc184662ea7428a910e0d67e46 Mon Sep 17 00:00:00 2001
From: Danny White <3104761+dnywh@users.noreply.github.com>
Date: Mon, 17 Nov 2025 12:48:13 +1100
Subject: [PATCH] pending state
---
.../NamespaceWithTables/index.tsx | 45 ++++++++++++++-----
1 file changed, 35 insertions(+), 10 deletions(-)
diff --git a/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/NamespaceWithTables/index.tsx b/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/NamespaceWithTables/index.tsx
index 9fd3f89a454..d5fc2cec7e1 100644
--- a/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/NamespaceWithTables/index.tsx
+++ b/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/NamespaceWithTables/index.tsx
@@ -39,6 +39,7 @@ interface SchemaFlowNodeProps {
description: string
ariaLabel: string
labelClassName?: string
+ isPending?: boolean
}
const SchemaFlowNode = ({
@@ -49,11 +50,12 @@ const SchemaFlowNode = ({
description,
ariaLabel,
labelClassName = 'text-foreground',
+ isPending = false,
}: SchemaFlowNodeProps) => {
return (
@@ -63,9 +65,23 @@ const SchemaFlowNode = ({
>
{icon}
-
+
{label}
-
{description}
+ {isPending ? (
+
+
+
+ {description}
+
+
+
+
+ This schema will be created when a table is published from your Iceberg client
+
+
+ ) : (
+
{description}
+ )}
)
@@ -188,6 +204,7 @@ const SchemaFlowDiagram = ({
width: '1px',
height: `${verticalLinePosition.height}px`,
overflow: 'visible',
+ opacity: isPending ? 0.5 : 1,
}}
viewBox={`0 0 1 ${verticalLinePosition.height}`}
preserveAspectRatio="none"
@@ -200,6 +217,9 @@ const SchemaFlowDiagram = ({
stroke-dasharray: 5, 5;
animation: dash 1.5s linear infinite;
}
+ .static-dash {
+ stroke-dasharray: 5, 5;
+ }
@keyframes dash {
to {
stroke-dashoffset: -10;
@@ -214,7 +234,7 @@ const SchemaFlowDiagram = ({
fill="none"
stroke="hsl(var(--foreground-muted))"
strokeWidth="1.25"
- className="animated-dash"
+ className={isPending ? 'static-dash' : 'animated-dash'}
/>
{/* Dot at start */}
@@ -238,6 +258,7 @@ const SchemaFlowDiagram = ({
width: '6rem',
height: '1px',
overflow: 'visible',
+ opacity: isPending ? 0.35 : 1,
}}
aria-hidden="true"
>
@@ -248,6 +269,9 @@ const SchemaFlowDiagram = ({
stroke-dasharray: 5, 5;
animation: dash 1.5s linear infinite;
}
+ .static-dash {
+ stroke-dasharray: 5, 5;
+ }
@keyframes dash {
to {
stroke-dashoffset: -10;
@@ -262,26 +286,27 @@ const SchemaFlowDiagram = ({
fill="none"
stroke="hsl(var(--foreground-muted))"
strokeWidth="1.25"
- className="animated-dash"
+ className={isPending ? 'static-dash' : 'animated-dash'}
/>
{/* Dot at start */}
-
+
{/* Dot at end */}
-
+
)}
{/* Target Node */}
}
+ icon={}
iconContainerClassName={
- isPending ? 'bg-surface-100 border-foreground/20' : 'bg-brand-500 border-brand-600'
+ isPending ? 'bg-surface-100 border-border' : 'bg-brand-500 border-brand-600'
}
label={targetLabel}
- description={`Analytics schema${isPending ? ' that will be created' : ''}`}
+ description={`Analytics schema`}
ariaLabel={`Target: ${targetLabel} schema${isPending ? ' that will be created' : ''}`}
labelClassName={isPending ? 'text-foreground-muted' : 'text-foreground'}
+ isPending={isPending}
/>
)