Replace icons
All icons used in the schedule are SVG. SVG files are vector based, which means your icons will look great on all devices and resolutions. Secondly, since SVG is XML, they’re are highly compressible and featherlight to load. And last but not least, SVG files are completely styleable with CSS.
To replace the default Blokks icons we need to create a new icon set. An icon set contains the following files:
filename | description |
---|---|
arrow-left-icon.svg | Left arrow used in the Controls component |
arrow-right-icon.svg | Right arrow used in the Controls component |
close-icon.svg | The symbol used in the close button of the Activity Details component |
dropdown-icon.svg | Symbol used when the Date Selector is a dropdown menu |
favorite-icon.svg | Symbol used to indicate the favorite action |
unfavorite-icon.svg | Symbol used to indicate the unfavorite action |
You should note that the embed uses the CSS fill
property to style icons. Convert all shapes to fills when creating your own icons. Also, fill colors set in tools like Sketch or Adobe Illustrator are overriden by CSS.
Optimizing SVGs
SVG files, especially when exported from tools like Sketch or Adobe Illustrator contain a lot of information that can be safely removed or converted without affecting rendering result. Optimizing and compressing your SVGs is simply done with a command-line tool called SVGO.
SVGO requires you to have Node.js installed on your computer. If Node.js is installed, run the following command from your console:
npm install -g svgo
This will install SVGO. After installing, SVGO can be run with the following command:
svgo -f path/to/folder/with/svg/files
This command will use the default SVGO settings to compress and override all files in the path/to/folder/with/svg/files folder. Make sure your replace this with the directory containing your svg files.
Note: SVGOMG is a webbased interface that allows you to drag & drop your SVG files and get an optimized version. There are also SVGO plugins for both Sketch and Adobe Illustrator.
Create spritesheets
Spritesheets combine multiple images into a single file. A website using spritesheets loads faster because it has to load just one, instead of multiple images. To create a spritesheet we use another command-line tool named svg-sprite. Again, Node.js is required for this.
First, install svg-sprite by running the following command:
npm install -g svg-sprite
After installing svg-sprite, run:
svg-sprite --symbol --svg-xmldecl=false --shape-transform='' --symbol-dest='.' --symbol-sprite='icon-set.svg' --symbol-example=false path/to/folder/with/svg/files/*.svg
This will merge all the SVGs into one file named icon-set.svg
.
Note: IcoMoon is a web-based interface that does a great job of producing SVG spritesheets. You can simply drag & drop your SVGs and export them as a single spritesheet.
Link icons
There’s just one thing left to do: have the embed use the new iconset. Simply add a link pointing to the iconset to the <head>
of your page, like so:
<link href='icons.svg' blokks-icons>
Make sure you replace icons.svg
with the location of your iconset. That’s all there is to it!
Styling SVGs
Replacing icons can cause them to be too big or too small. Similar to changing fonts, we can fix this by selecting the icon in the Developers Tools and change its size. For example, here’s how you can resize the close icon to 50px
of the Activity details component:
.blokks-activity-details__close-button .svg-icon {
width: 50px;
height: 50px;
}