<pixiv-icon>
のname
に存在しないSVGをアイコンとして登録することができます。
import { PixivIcon } from '@charcoal-ui/icons'
import NewFeature from './NewFeature.svg'
PixivIcon.extend({
'16/NewFeature': require('./icons/16/NewFeature.svg'),
'24/NewFeature': 'https://example.com/hoge.svg',
'32/NewFeature': NewFeature,
})
declare module '@charcoal-ui/icons' {
export interface KnownIconType {
'16/NewFeature': unknown
'24/NewFeature': unknown
'32/NewFeature': unknown
}
}
その場合も名前の形式は {size}/{name}
である必要があります。
TypeScript 環境下では、KnownIconType
という型を拡張することで、カスタムアイコンに対しても補完が効くようになります。
PixivIcon.extend()
に渡すオブジェクトはキーがアイコン名、値がSVGファイルに対するパス名またはURLである必要があります。
(内部的には、ここで渡した文字列に対してfetch()
が走ります)
SVGファイルをimport
して渡す場合、プロジェクトのバンドラが*.svg
をパス文字列として(ファイルの内容の文字列ではなく)ロードする設定になっていることを確認してください。
たとえばWebpackの場合、当該アイコンファイルに対するルールのtypeはasset/resource
であるべきです。
svgrなど、SVGファイルを文字列以外の値にトランスフォームするツールを使っているプロジェクトでは、PixivIcon.extend()
に渡す用の.svg
ファイルをその対象から除いてください。