iconify_lustre

Package Version Hex Docs

A build-time tool that downloads SVG icons from Iconify and generates Lustre-compatible Gleam source code. Each icon becomes a reusable Element(msg) function with zero runtime overhead.

Installation

gleam add iconify_lustre --dev

Configuration

Defaults can be set in your project’s gleam.toml under [tools.iconify_lustre]:

[tools.iconify_lustre]
iconset = "tabler"
module  = "iconify/*/"
KeyDefaultDescription
iconsetlucideDefault Iconify icon set name
module*Module path template (see Usage)

Usage

gleam run -m iconify_lustre/add -- [-m module]... [-s set]... <[set/]name>...

Icons which were added in a previous invocation are updated in place, leaving the target module as much as possible in the same.

Arguments

ArgumentDescription
<name>Icon name from the current icon set.
<set/name>Icon prefixed with its icon set (overrides -s for that icon).
-s <set>Iconify set name (e.g. lucide, tabler, mdi). Default: lucide.
-m <module>Target module path. Default: * (replaced with the icon set name).

All three can be repeated and are processed left-to-right. -s and -m set the active configuration for subsequent icons on the same command line.

# home from lucide (default), settings and info from tabler
gleam run -m iconify_lustre/add -- home -s tabler settings info

When multiple -s or -m flags are interleaved with icon names, each icon uses the most recent -s and -m values at that position:

The -m (module) placeholder

The * character in the module path is replaced with the sanitised icon set name.

PatternResult for lucide/home
*src/lucide.gleamfn home()
iconify/*/src/iconify/lucide/home.gleamfn home()
iconify/*src/iconify/lucide.gleamfn home()
custom/iconssrc/custom/icons.gleamfn home()

When the module ends with /, the icon name is appended as the file name.

Examples

# Single icon from the default set (lucide)
gleam run -m iconify_lustre/add -- home

# Explicit set and module directory, the modules will be icons/tabler/home.gleam
# and icons/tabler/settings.gleam
gleam run -m iconify_lustre/add -- -s tabler -m "icons/tabler/" home settings

# Mixed notation – first uses default set, second overrides the set with the `tabler' set
gleam run -m iconify_lustre/add -- home tabler/settings

# Multiple icons
gleam run -m iconify_lustre/add -- home mail user

Usage in lustre view

Running gleam run -m iconify_lustre/add -- -m icons home creates src/icons.gleam with a function fn home(attributes: List(attribute.Attribute)). This can then be used as:

import icons.{home}
import lucide/element.{type Element}
import lucide/attributes.{attribute}

pub fn view() -> Element(msg) {
  home([attribute("class", "icon icon--large")])
}

The attributes-argument can be used to override default attributes or add new attributes giving you some additional flexibility.

Search Document