import type { ReactNode } from "react"; import { cn } from "./utils/cn.js"; /** * Loading - 骨架屏 / 加载占位 * * 用途:数据加载期间展示骨架屏,避免内容跳动。 * * @example * // 默认 3 行骨架 * // 5 行骨架 * // 旋转图标 */ export interface LoadingProps { /** 骨架行数(variant="skeleton" 时生效) */ lines?: number; /** 展示形态 */ variant?: "skeleton" | "spinner"; /** 自定义类名 */ className?: string; /** aria-label(无障碍) */ ariaLabel?: string; } export function Loading({ lines = 3, variant = "skeleton", className, ariaLabel = "加载中", }: LoadingProps): ReactNode { if (variant === "spinner") { return (
); } return (
{Array.from({ length: lines }, (_, i) => ( ); }