Sketch Tutorial Series

Creating Responsive Components for your Design System: Calendars

Let me show you how to create fully Responsive Components within your Design System

Marc Andrew
Apr 2, 2019 · 8 min read

Yes. Although Atoms, Molecules and the like (that’s Buttons, Text Fields etc… for us regular folk) are the basic, core elements of any great Design System. The real fun begins when you start bringing those smaller components together to create full-fat, king-size Components with their many Overrides at your disposal. And in this short, but hopefully insightful Tutorial Series I aim to show you how I created many of the larger Components inside of my own Design System; Cabana. Taking those smaller elements; Symbols, and in turn Nested Symbols, and creating fully Responsive Components.

I’ll show you how I created the foundational elements such as Icons, Buttons, and Text Styles and constructed these little by little into full sized, Responsive Components such as Menus, Calendars, Cards, and more… throughout this Tutorial Series. Hold tight, it’s going to be informative!


Let’s take the example below which is included in the Cabana Design System. A simple, but thoroughly versatile Calendar Component…

Ok. So this Component was comprised of a selection of Symbols and Text Styles.

Let me show you how I assembled this Component (which took a little more assembling than previous Components that I’d created), and also how I enabled it to be fully Responsive.

Let’s get to it you awesome peeps…

Ok, so the Calendar Component was comprised of 4 sections

- Header

- Weeks Header

- Dates

- Background + Container

Let’s kinda start things from the bottom and take a look at the Background + Container elements first…


Background + Container

For the Container element I simply drew out a Rectangle, around 312px wide, and 350px in height, gave it a Border Radius of 4, and applied one of the pre-existing Shadow Layer Styles that I’d created previously (I touch upon the creation of these in the 1st part of this Tutorial Series here), and then applied a Mask to it.

Then for the Background element, I drew out another Rectangle with dimensions similar to the Container, and then simply applied one of my pre-existing Color Layer Styles (You can read about these here too).

I then grouped the 2 elements so the Container Mask would only apply to the Background element.


Header

The Header element comprised of 3 elements; 2 Icons and a Text Layer.

I firstly inserted an Arrow Left icon from my pre-existing Icon Symbols (I cover the creation of these in the 1st Part of this Tutorial Series here), changed its Fill Color to something suitable, Pinned it to the Left edge, and then Fixed its Size both Horizontally, and Vertically.

For the Text Layer, I used again, one of my pre-existing Text Styles (I cover creating Text Styles in this Tutorial here), edited the text accordingly, and then Fixed its Size both Horizontally, and Vertically.

The finally, I inserted an Arrow Right icon, changed its Fill Color, Pinned it to the Right edge, and then Fixed its Size both Horizontally, and Vertically.

With all 3 elements selected (Icons, and Text Layer), I then Grouped them, renamed the Group to Header, positioned it 24pt from the Left and Right edges of the Container, and 16pt from the Top.

Then, with the new Group selected, I Pinned it to the Left, Top and Right edges.


Weeks Header

The Weeks Header element was basically comprised of the 1 Symbol x 7 (Sun, Mon, Tue, Wed, Thu and Fri).

Let me show you how I constructed this stupidly simple Symbol for both Dark & Light versions of the Calendar Component…

I went ahead and created an Artboard on my Symbols page 40px wide, and 32px in Height, created a Symbol from this, and renamed the Symbol to Calendar/Day.

I then inserted one of my existing Text Styles into this new Artboard, changed the wording (ie; Sun), positioned it 8pt from all edges of the Artboard, and then renamed the Text Layer to Day.

With the Text Layer still selected, I then Pinned it to the Left and Right edges, and Fixed its Size Vertically.

I then duplicated this Symbol, renamed to Calendar/Day — Light, and simply changed the Text to use on of my existing White Text Styles.

That simple really. Ok. Let’s jump back to our Component and let me show you how I arranged this Symbol inside of it…

I inserted a copy of the Calendar/Day — Light Symbol, positioned it 16pt from the Left edge of the Container, Pinned it to the Left edge, and then Fixed its Size both Horizontally, and Vertically.

With the Symbol selected, I duplicated it 6 times, and then updated the Day names in the Overrides panel.

For the first 5 duplicates (Mon, Tue, Wed, and Thu) I Fixed their Size both Horizontally, and Vertically.

And for the 6th duplicate (Sat) I Pinned it to the Right edge, and then Fixed its Size both Horizontally, and Vertically, and made sure it was positioned 16pt from the Right edge of the Container.

With all 7 Symbols selected, I Grouped them, renamed to Weeks Header, and then Pinned this new Group to All edges.


Dates

Ok. Finally onto the Dates for our Calendar Component. And this is where duplication overload comes into play! But don’t worry I’ll guide you through it. We’ve got this!

For the Calendar Component that I created for the Cabana Design System, I inserted 6 groups (Weeks) inside of the Component…

…which were made up from 3 Symbols; Date, Date — Disabled, and Date — Current Day. Let me show you how I created each of these…

Date

Similar to what I did for the Calendar/Day Symbol I showed you earlier, I went ahead and created an Artboard on my Symbols page 40px wide, and 40px in Height, created a Symbol from this, and renamed the Symbol to Calendar/Date.

I then inserted one of my existing Text Styles into this new Artboard, changed the wording (ie; 1), positioned it 8pt from all edges of the Artboard, and then renamed the Text Layer to Date.

Then, with the Text Layer still selected, I Pinned it to the Left and Right edges.

Date — Disabled

For this Symbol I simply duplicated the Calendar/Date Symbol that I’d just created, swapped out the Text Style for a Grey color, and then renamed the Symbol to Calendar/Date — Disabled. Simple as that!

Date — Current Day

With this final Symbol, I duplicated the Calendar/Date Symbol, swapped out the Text Style for a Bold version, and then inserted an Oval 40x40 and applied one of my Color Layer Styles.

Then finally I renamed the Symbol to Calendar/Date — Current Day.

With these 3 fresh Symbols at the ready, let’s jump on back to our Component…

Like I mentioned just earlier, I simply began inserting the Calendar/Date Symbols that I’d just created, and then using the Select menu in the Inspector, I could simply swap out the Symbols (ie; Date to Date — Disabled or Date — Current Day) as I went along.

I made sure that the far left Symbol was pinned to the Left edge, and the far right Symbol was pinned to the Right edge. And that all Symbols in that row had their size Fixed both Horizontally, and Vertically.

Then, once I’d created one row of Dates, I’d Group them all, and rename the Group to Week.

And then with this new Group selected Pin it to All edges.

Following the same steps as above I then added the rest of the Date rows, until I had something similar to the following…

I now had a fully responsive, and versatile Component to drop into my next project. Happy date-picking times indeed!

📣 Woah! Hang on. Before you go…

…If you really don’t want to create all the Components that I cover in this Tutorial Series you need to check out the following…

🎁 Design Better, Smarter, and Faster in Sketch. You can pick up a copy of my fully featured Design System — Cabana right here.

Use the offer code MEDIUM25 to receive 25% OFF.

Thanks for reading the article,

Marc

Designer, Author, Father and Lover of a little dose of Sigrid.

Design + Sketch

The best collection of articles, tips, tutorials, and stories on designing and prototyping with Sketch and beyond

Marc Andrew

Written by

Designer. Creator of Cabana https://cabanadesignsystem.com and Wired https://wiredkit.com. Find me at https://mrcndrw.com. 👍

Design + Sketch

The best collection of articles, tips, tutorials, and stories on designing and prototyping with Sketch and beyond

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade