From 33ed6f669fddf42097c6ae685ed2e490e25dc053 Mon Sep 17 00:00:00 2001 From: stroblme Date: Tue, 10 Nov 2026 19:01:23 +0100 Subject: [PATCH] Long names stay in their box: overview cards and Home's dashboard tiles truncate with the full name on hover, the node panel's flow path and a device id leave half the row to the name field, dialog titles and select items wrap an unbroken name, and a select menu is capped at the room it has; the flow canvas shows a loader until the layout engine has placed the nodes, so a slow link no longer looks like an empty flow --- .../src/components/Common/DashboardMosaic.tsx | 7 +++++-- .../src/components/Common/OverviewCard.tsx | 8 +++++--- .../src/components/Devices/DeviceDetail.tsx | 7 +++++-- frontend/src/components/Flow/FlowEditor.tsx | 20 +++++++++++++++---- frontend/src/components/Flow/NodePanel.tsx | 5 ++++- frontend/src/components/ui/dialog.tsx | 2 +- frontend/src/components/ui/select.tsx | 4 ++-- 7 files changed, 38 insertions(+), 15 deletions(-) diff --git a/frontend/src/components/Common/DashboardMosaic.tsx b/frontend/src/components/Common/DashboardMosaic.tsx index b815af0..c013c75 100644 --- a/frontend/src/components/Common/DashboardMosaic.tsx +++ b/frontend/src/components/Common/DashboardMosaic.tsx @@ -165,8 +165,11 @@ function Tile({ )} > - - + + {dashboard.title || dashboard.name} {dashboard.has_draft ? ( diff --git a/frontend/src/components/Common/OverviewCard.tsx b/frontend/src/components/Common/OverviewCard.tsx index f2af316..7b405df 100644 --- a/frontend/src/components/Common/OverviewCard.tsx +++ b/frontend/src/components/Common/OverviewCard.tsx @@ -68,7 +68,7 @@ export function OverviewCard({ }: { link: LinkProps icon: LucideIcon - title: ReactNode + title: string detail: ReactNode /** Has unpublished changes. */ draft?: boolean @@ -132,9 +132,11 @@ export function OverviewCard({ if (held.current) event.preventDefault() }} > - + - {title} + + {title} + {draft ? ( Unpublished changes diff --git a/frontend/src/components/Devices/DeviceDetail.tsx b/frontend/src/components/Devices/DeviceDetail.tsx index 71a9e57..1881077 100644 --- a/frontend/src/components/Devices/DeviceDetail.tsx +++ b/frontend/src/components/Devices/DeviceDetail.tsx @@ -175,7 +175,7 @@ function Basics({ }) { return ( -
+
- + {device.id}
diff --git a/frontend/src/components/Flow/FlowEditor.tsx b/frontend/src/components/Flow/FlowEditor.tsx index 879a732..b9dd994 100644 --- a/frontend/src/components/Flow/FlowEditor.tsx +++ b/frontend/src/components/Flow/FlowEditor.tsx @@ -50,6 +50,7 @@ import { DialogHeader, DialogTitle, } from "@/components/ui/dialog" +import { FluksioLoader } from "@/components/ui/fluksio-loader" import useAuth from "@/hooks/useAuth" import useCustomToast from "@/hooks/useCustomToast" import { useIsMobile } from "@/hooks/useMobile" @@ -110,10 +111,10 @@ const nodeTypes = { flow: FlowNode, [ENDPOINT_TYPE]: EndpointNode } * Where every node sits and how every edge runs, once the engine has said so. * * The layout is a chunk of its own and answers asynchronously, so a canvas has - * a moment before it knows where anything goes. It draws nothing at all until - * then — a route already shows a skeleton for that — and an *edit* keeps the - * arrangement it had, so only the node that changed lands a frame late rather - * than the whole graph flickering through the corner. + * a moment before it knows where anything goes. It draws no node until then, + * only a loader, and an *edit* keeps the arrangement it had, so only the node + * that changed lands a frame late rather than the whole graph flickering + * through the corner. */ function useLayout( ids: string[], @@ -1565,6 +1566,17 @@ function FlowEditorInner({ />
+ {/* On a slow link the layout engine arrives well after the document, + and a bare canvas until then reads as a flow with no nodes. */} + {definitions.length > 0 && !positions ? ( +
+ +
+ ) : null} + {definitions.length === 0 ? (
{/* Where the node lives: the flow is the namespace of its messages, so it reads like the folder holding them. */} - + /{flow}/ ) diff --git a/frontend/src/components/ui/select.tsx b/frontend/src/components/ui/select.tsx index 3c98759..c1c24e9 100644 --- a/frontend/src/components/ui/select.tsx +++ b/frontend/src/components/ui/select.tsx @@ -60,7 +60,7 @@ function SelectContent({