Open dferber90 opened 4 years ago
Turns out visual-center
can only run in the browser, so it's not suitable for a build-step out of the box. However, I rewrote the relevant functions locally to use node-canvas
instead. With that, I was able to generate the translation values required to visually center the icons.
Here are the generated values for each icon set in the meantime:
These can be used to manually apply a transform which vertically aligns the icons until the functionality eventually makes it into the site itself (if that is welcome). To use these, apply translateXPercentage
and translateXPercentage
in a style
attribute like so :
<svg style={{ transform: `translate(${translateXPercentage}%, ${translateXPercentage}%)` }} />
for example
<svg style={{ transform: `translate(0%, -10%)` }} />
Hey Dominik, this is pretty interesting. Thank you for creating an issue and documenting your experience.
If anything I think this could be added as a feature for framework libraries. The viewer could support inline transforms but I think you would agree that this is the kind of thing that can get messy over time.
If anything I would recommend creating this issue for the original repo so this can potentially get traction on a library-level.
For your use case, if you’re not doing this already, I’d recommend doing something like this:
<svg style={visualCenter("lock")} ...>
Which would expand to your precomputed styles. Then the only thing you need to remember / maintain is icon identity, like which icon you are referring to at any given time.
Does that make sense?
This could potentially be made to be an option for this repo but I don’t have the time right now to roll this feature myself.
I wanted to offer the suggestion in case you felt like it's a good addition to the website. It doesn't seem like many people are visually centering their icons, so I agree that it isn't worth the additional effort.
As writing the script to get the right values out was a bit tricky, I thought I'd share the results. Coming back to this issue to check the precomputed values has been good enough for the few times I needed it.
Thanks for your consideration and your thoughtful response 👍
I’m actually going to keep this open (as a reminder for me) because I want to add this feature at a later time.
Thanks for all your hard work. ❤️
@dferber90 I'd love to get this implemented now that I've just pulled off a major refactor. Do you have a JSON artifact or or something similar? I do see the script you included.
@zaydek unfortunately not anymore, I think this got lost when I switched laptops. Either way it would be outdated since new heroicons were since I last used this script. You should be able to run the script to create the necessary files though 🤞
@dferber90 Ah good point. OK will follow-up here when I make progress on this front. Thank you for your work. :)
I find myself applying
style={{ transform: "translateY(-3.5%)" }}
to thesvg
tag of the icons regularly to make them visually aligned, so they look better next to text. The percentage value depends on the image itself.Here's an example of visual alignment applied with some text next to it for reference:
At the moment, the process is quite manual if you want to achieve this: 1) Copy icon svg markup 2) Create an svg file locally by pasting the markup 3) Upload that svg file to https://svgtopng.com/ to transform it to PNG 4) Download that png file 5) Upload the png file to https://javier.xyz/visual-center/ 6) Copy the transform percentage
An option to copy items with the visually alignment transform in place would be nice to have.
Implementation
If we were to enable the functionality mentioned above, we'd need the following steps
Modify the build process
svg-to-png
orsvg2img
)Modify the site
style
object with the necessarytransform
Does that sound like something you'd accept a PR for?