Iconography.
Lucide, exclusively. Stroke 1.5. Inherits currentColor. Sized 12 / 16 / 20 / 24. No emoji, no PNG icons, no second library.
A representative slice — the codebase actually uses ~80 distinct Lucide icons. Add to this set by import; never re-trace.
<script lang="ts">
import TrendingUp from '@lucide/svelte/icons/trending-up';
</script>
<TrendingUp size={16} strokeWidth={1.5} />The dash.fi wordmark and app icon are the only custom marks in the system. Everything else is Lucide, by import. See Logo for downloads and rules.
Use Lucide exclusively. Imported via @lucide/svelte. Stroke 1.5 (override the default 2).
Inherit color from currentColor. Tone via text utilities (text-fg-muted, text-brand, text-destructive).
Match icon size to context: 12px in tight UI, 16px default, 20px for nav, 24px for empty states.
Don't use emoji anywhere. Not in labels, not in toasts, not in empty states. Ever.
Don't introduce a second icon library. No Heroicons, no Phosphor, no custom set.
Don't fill icons. The system is stroked. Filled icons read as a different brand.