@xwink/ui

    Icon

    全站图标唯一入口。名字统一用 Iconify 的 集合:名字(如 ph:list),去 icones.js.org 挑图标复制即用,全站优先 ph(Phosphor)集。

    尺寸与颜色不由组件定:默认 1em 跟随字号,用 size-* / text-* 控制。

    尺寸

    尺寸跟随
    ph:heart
    ph:star
    ph:bell
    ph:magnifying-glass

    L0 内联写法:

    离线与 SSR

    两条渲染路径:

    • 随包子集(库内组件用到的图标,清单在 packages/ui/core/scripts/gen-icons.mts)直接内联 SVG 路径,SSR 直出、首屏不闪、零网络。
    • 子集之外的名字回落 Iconify 运行时,会在客户端去公网拉。宿主要用的固定图标在构建期登记成离线:Nuxt 宿主写进 nuxt.config 的 xwinkUi.icons(本站就是这样,清单见 apps/ui-docs/nuxt.config.ts),模块从宿主装的 @iconify-json/* 抽出子集、两端 addCollection,数据在 registry 里时 XIcon 自动打开 SSR 直出。
    ts
    // nuxt.config.ts —— 宿主另装 @iconify-json/ph(devDependency 即可)
    export default defineNuxtConfig({
      modules: ['@xwink/ui/nuxt'],
      xwinkUi: { icons: ['ph:lightning', 'ph:palette'] },
    })
    

    非 Nuxt 宿主在构建脚本里用 @xwink/ui/icons 的 loadIconCollections(names, [宿主根目录]) 抽出子集写成文件,入口里 addCollection(从 @xwink/ui 导入)。运营配置的动态图标这类构建期不知道名字的,才留给运行时。

    API

    Props

    名称类型默认值说明
    name 必填 string—Iconify 的 `集合:名字`
    sizenumber | "mini" | "small" | "medium" | "large" | "super" | undefined—边长:尺寸档(取该档控件的图标边长 `--ui-size-<档>-icon-size`,与同档按钮里的图标一样大)或像素数。 缺省不定——默认 1em 跟字号,放进控件跟控件档;宿主写的 `size-*` 类照样优先