Skip to main content

useIconPicker

Headless hook for building custom icon picker UIs. Manages dialog open/close state and selection.

Signature

const picker = useIconPicker(options?);

Parameters

PropTypeRequiredDescription
sourcesIconSource[]NoEnabled sources (default: all four)
onSelect(icon: IconValue | null) => voidNoCalled on selection or clear

Return value

PropertyTypeDescription
isOpenbooleanWhether the picker dialog is open
selectedIconValue | nullCurrently selected icon
open() => voidOpens the picker dialog
close() => voidCloses without selecting
select(icon: IconValue | null) => voidConfirms selection and closes
clear() => voidClears selection to null
sourcesIconSource[]Active source list

Example

import { Button, useIconPicker, IconDisplay } from "@zaflun/lumio-sdk";

function CustomPicker() {
const { open, selected, clear, isOpen } = useIconPicker({
sources: ["lucide", "emoji"],
onSelect: (icon) => console.log("Selected:", icon),
});

return (
<VStack>
<Button label="Pick Icon" onClick={open} />
{selected && (
<>
<IconDisplay icon={selected} size={48} />
<Button label="Clear" variant="destructive" onClick={clear} />
</>
)}
</VStack>
);
}