import type { ReactNode, SVGProps } from "react"; import type { NavKey } from "../../lib/nav"; export type AppIconName = NavKey | "more" | "spark"; type Props = { name: AppIconName; size?: number; className?: string; } & Omit, "name">; /** * 精緻線稿 icon:圓潤端點、雙層深度、細微星芒(魔法感但不吵) * 可隨 currentColor 換色,適配 light / dark。 */ export function AppIcon({ name, size = 22, className = "", ...rest }: Props) { return ( {glyphs[name]} ); } const stroke = { stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round" as const, strokeLinejoin: "round" as const, }; /** 小星芒 */ function Spark({ x = 18, y = 5, s = 1 }: { x?: number; y?: number; s?: number }) { return ( ); } const glyphs: Record = { // 今日:圓角日曆 + 星 today: ( <> ), // 帳號:雙圓 + 柔弧(島民) crew: ( <> ), // 創作:羽毛筆 + 星 studio: ( <> ), // 海巡:水晶球 / 羅盤弧 + 十字光 scout: ( <> ), // 發送:紙飛機 + 軌跡星 outbox: ( <> ), // 任務:魔法卷軸/手提袋簡化 jobs: ( <> ), // 品牌:旗幟堡壘簡化 + 星 brands: ( <> ), more: ( <> ), spark: ( <> ), };