41 lines
770 B
Plaintext
41 lines
770 B
Plaintext
---
|
|
import { Icons } from './icons.ts'
|
|
|
|
interface Path {
|
|
d: string
|
|
class?: string
|
|
}
|
|
|
|
const { name } = Astro.props
|
|
|
|
const icon = (Icons as any)[name] || {}
|
|
|
|
const paths: Path[] = icon.paths || [];
|
|
---
|
|
|
|
{
|
|
icon
|
|
? (
|
|
<svg
|
|
class={icon.class}
|
|
height={icon.height}
|
|
viewBox={icon.viewBox}
|
|
width={icon.width}
|
|
fill={icon.fill}
|
|
clip-rule={icon.clipRule}
|
|
fill-rule={icon.fillRule}
|
|
stroke={icon.stroke}
|
|
stroke-width={icon.strokeWidth}
|
|
stroke-linecap={icon.strokeLinecap}
|
|
stroke-linejoin={icon.strokeLinejoin}
|
|
><title>{icon.title}</title>
|
|
{paths.map(path => (
|
|
<path d={path.d} class={path.class || ''} />
|
|
))}
|
|
</svg>
|
|
)
|
|
: (
|
|
'Icon not found'
|
|
)
|
|
}
|