P0 Critical: presentation isolation (client scoping), storage super_admin fix, template selection in worker, IMAGE_PROVIDERS list fix. P1 High: template layout management UI (delete/filter/bulk), slide-based parsing mode, LLM model listing & connection test, settings persistence to DB (Fernet encryption), logout button. P2 Polish: storage improvements (master deck files, per-client breakdown, bulk delete, hard purge, client selector), image generation error visibility (__image_error__ badge), hamster wheel loading animation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
18 lines
No EOL
519 B
TypeScript
18 lines
No EOL
519 B
TypeScript
import { cn } from "@/lib/utils"
|
|
import { HamsterLoader } from "@/components/ui/hamster-loader"
|
|
|
|
interface LoaderProps {
|
|
text?: string
|
|
className?: string
|
|
}
|
|
|
|
export const Loader = ({ text, className }: LoaderProps) => {
|
|
return (
|
|
<div className={cn("flex flex-col items-center justify-center", className)}>
|
|
<HamsterLoader size="md" />
|
|
{text && (
|
|
<p className="mt-4 text-white text-base font-inter font-semibold">{text}</p>
|
|
)}
|
|
</div>
|
|
)
|
|
}
|