#let icon_with_text(clip_icon: false, icon: "", icon_alt_text: "", icon_size: 1.25em, body) = { let image_box_properties = if clip_icon { (clip: true, radius: icon_size / 6) } else { (clip: false) } // Use a box for the container so it is rendered inline. box( // Then use a grid inside to size and space the icon out perfectly. grid( // Take the icon size and add some extra space so it's not rendered // directly against the text. columns: (icon_size + 0.2em, auto), // Render the image with the icon size as the wanted width. box( ..image_box_properties, image(icon, width: icon_size, alt: icon_alt_text), ), // And finally vertically align the text. align(horizon, body), ), ) }