feat: add icon component with 50+ Lucide-based SVG icons

Adds a general-purpose icon system (ui.icon) with inline SVG rendering:
- 50+ icons from the Lucide icon set (navigation, actions, objects, UI,
  status, dev/technical categories)
- Size variants: sm (--size-4), md (--size-5), lg (--size-6), xl (--size-8)
- Pure data approach: icon paths stored as hiccup vectors, rendered into
  SVG with stroke="currentColor" so icons inherit text color
- API: (icon/icon {:icon-name :home :size :lg :class "custom"})

Integrates icons into the sidebar component:
- sidebar-menu-item now accepts :icon-name prop
- Renders icon in a .sidebar-menu-item-icon wrapper at :sm size

All three dev targets updated with icon gallery demo and sidebar icons.
This commit is contained in:
Florian Schroedl
2026-03-05 12:49:22 +01:00
parent e3787363d2
commit c857954845
10 changed files with 1677 additions and 6 deletions

4
bb.edn
View File

@@ -31,6 +31,8 @@
[ui.breadcrumb-test]
[ui.pagination-test]
[ui.form-test]
[ui.icon-test]
[ui.sidebar-test]
[ui.theme-test])
:task (let [{:keys [fail error]} (t/run-tests
'ui.button-test
@@ -48,6 +50,8 @@
'ui.breadcrumb-test
'ui.pagination-test
'ui.form-test
'ui.icon-test
'ui.sidebar-test
'ui.theme-test)]
(when (pos? (+ fail error))
(System/exit 1)))}