Custom icons - Svelte Lucide
You can create a custom default icon, by using Icon:
Create a custom component #
Create a Svelte component named src/lib/MyIcon.svelte:
Svelte 4 #
<script lang="ts">
import type { Component } from 'svelte';
const config = {
size: "20",
color: '#FF5733'
};
import { Icon } from 'svelte-lucide';
export let icon: Component;
</script>
<Icon {...config} {icon} />
Svelte 5 #
<script lang="ts">
import { Icon as HeroIcon } from 'svelte-lucide';
import { type Component } from 'svelte';
const config: { size: string, color: string; ariaLabel: string, class: string } = {
size: "50",
color: "#44ff88",
ariaLabel: "my custom icon",
class: "mx-4"
};
interface Props {
Icon: Component
}
let { Icon }: Props = $props();
</script>
<HeroIcon {...config} {Icon} />
This component, MyIcon.svelte, accepts an icon prop which you can use to pass
in the specific icon component you want to display. The default configuration is also applied to the
icon.
Implementation #
To use your custom default icon in a Svelte page, do the following:
Svelte 4 #
<script>
import MyIcon from '$lib/MyIcon.svelte';
import { AreaChart } from 'svelte-lucide';
</script>
<MyIcon icon="{AreaChart}" />
Svelte 5 #
<script lang="ts">
import { AlarmClock } from 'svelte-lucide';
import MyIcon from './MyIcon.svelte'
</script>
<MyIcon Icon={AlarmClock} />
Here, we import the MyIcon component and the AreaChart icon. By passing the AreaChart icon to the icon prop of MyIcon, you apply the default configuration
to the icon.