Vue 向け出力の内容
Vue テンプレートは SVG 属性をそのまま受け付けるため、stroke-width や class などのケバブケースの名前は維持されます。エディタ由来の不要な情報と XML 宣言を取り除き、必要に応じて xmlns も削除したうえで、マークアップを <template> ブロックに配置します。
size オプションを有効にすると、デフォルト値付きの size プロパティを宣言する <script setup> ブロックが追加され、:width と :height にバインドされます。TypeScript の場合は defineProps<{ size?: number | string }>() と withDefaults で宣言します。
属性のフォールスルー
<svg> が唯一のルート要素なので、props として宣言されていない属性は Vue が自動的に転送します。つまり class、style、aria-label、@click などのイベントリスナーは、追加のコードなしで <svg> に適用されます。そのため Vue では props 展開オプションは不要です。
コンポーネントの使い方
Vue 3 や Nuxt プロジェクトでの典型的な使い方:
- 出力を components フォルダに IconName.vue として保存します。
- インポートします:import IconName from "./IconName.vue"。
- 任意のテンプレートで <IconName :size="20" class="text-emerald-600" /> と描画します。
- currentColor を有効にすると、アイコンは CSS の color プロパティに従います。