{single ? (
<>
>
) : (
Texte, lien et notes se modifient noeud par noeud. Les reglages d'icone et de style
ci-dessous s'appliquent a toute la selection.
)}
Icone
{EMOJI_ICONS.map((emoji) => (
))}
{BUILTIN_ICON_IDS.map((iconId) => {
const { label, Icon } = BUILTIN_ICONS[iconId] as (typeof BUILTIN_ICONS)[string];
return (
);
})}
node.iconStyle?.position).value ?? 'left'}
mixed={styleOf(nodes, (node) => node.iconStyle?.position).mixed}
options={ICON_POSITIONS}
onChange={(position) => updateNodesIconStyle(ids, { position })}
/>
node.iconStyle?.size).mixed}
selected={String(
styleOf(nodes, (node) => node.iconStyle?.size).value ?? metrics.iconSize,
)}
options={ICON_SIZES.map((size) => ({ value: String(size), label: `${size} px` }))}
onSelect={(value) => updateNodesIconStyle(ids, { size: Number(value) })}
/>
node.iconStyle?.gap).value ?? metrics.iconGap}
mixed={styleOf(nodes, (node) => node.iconStyle?.gap).mixed}
min={LAYOUT_LIMITS.iconGap.min}
max={LAYOUT_LIMITS.iconGap.max}
onChange={(gap) => updateNodesIconStyle(ids, { gap })}
/>