Custom icons - Svelte Heros

If you wish to create a custom default icon, you can follow these steps:

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: '30',
    color: '#FF5733'
  };
  import { Icon } from 'svelte-heros';
  export let icon: Component;
</script>

<Icon {...config} {icon} />

Svelte 5 #

<script lang="ts">
  import { Icon as CustomIcon } from 'svelte-heros';
  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>
<CustomIcon {...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 { AcademicCap } from 'svelte-heros';
</script>

<MyIcon icon="{AcademicCap}" />

Svelte 5 #

<script lang="ts">
  import { Adjustments } from 'svelte-heros';
  import MyIcon from './MyIcon.svelte'
</script>

<MyIcon Icon={Adjustments} />

Here, we import the MyIcon component and the AcademicCap icon. By passing the AcademicCap icon to the icon prop of MyIcon, you apply the default configuration to the icon.