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} /> )