Use the brand loading mark instead of lucide's spinner

Copies index/frontend's FluksioLoader component and its
`.fluksio-loader-line` rule into the app (the shadcn duplication model, so
the CSS travels with the component) and swaps every Loader2 pending state
over: the router's pending screen, the flow dock's Run and Publish, the
dashboard editor's Publish, the overview toolbar's Publish-all and
LoadingButton. One loading mark across both shells.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K1moruzue2kTJd3uVisgNk
This commit is contained in:
2026-08-28 15:36:54 +02:00
co-authored by Claude Opus 5
parent 565d6d2433
commit 498c2eb221
7 changed files with 90 additions and 19 deletions
@@ -1,14 +1,6 @@
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"
import { useNavigate } from "@tanstack/react-router"
import {
Check,
ExternalLink,
Loader2,
Pencil,
Plus,
Settings2,
X,
} from "lucide-react"
import { Check, ExternalLink, Pencil, Plus, Settings2, X } from "lucide-react"
import { motion } from "motion/react"
import { type CSSProperties, useEffect, useRef, useState } from "react"
import {
@@ -36,6 +28,7 @@ import {
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog"
import { FluksioLoader } from "@/components/ui/fluksio-loader"
import {
Popover,
PopoverContent,
@@ -720,7 +713,7 @@ export function DashboardEditor({
data-testid="publish-dashboard"
>
{save.isPending || publish.isPending ? (
<Loader2 className="size-3.5 animate-spin" />
<FluksioLoader className="size-3.5" />
) : (
<Check className="size-3.5" />
)}