UI Design with Penpot | Hands-On Demo, Dec. 11

After many requests to showcase a full start-to-finish UI design using Penpot, save the date for a new Hands-On Session on December 11th!

Date: December, 11th

Time: UTC 3-4 PM (Convert to your local timezone with TimezoneWizard)

Stream on: YouTube, PeerTube or LinkedIn

@LauraKalbag will design a complete layout from scratch in just one hour. She’ll walk through design techniques you’ve been asking about, including:

  • Importing vector graphics
  • Creating and nesting components
  • Using CSS Flex and Grid layouts

Penpot CSS Grid Layout

Join us for a live session where you’ll learn, interact, and, of course, get your questions answered in real time.

Do you have a technique you’d like to see demonstrated live? Leave a comment below, and Laura will feature it next week!

5 Likes

Let me throw some ideas out here that you can vote on. Suggestions also welcome :smiley:

  • Mobile app UI design
  • Web page UI design
  • Using Flex layouts
  • Using Grid layouts
  • Creating color palettes
  • Creating typographies
  • Importing and using icons and other vector graphics
  • Using JPGs, PNGs, and other bitmap images
  • Using templates
  • Building navigation
  • Creating buttons
  • Working with text content
  • Creating components
  • Using components in responsive layouts
  • Wrapping in Flex layouts
  • Cells spanning multiple columns and rows in Grid layouts
  • Named grid areas in Grid layouts
0 voters
2 Likes

Here are the files from the demo:

The file I was working on:

HomeCentral.penpot (1.8 MB)

The version I made earlier:

One I Made Earlier.penpot (718.7 KB)

If you have any questions that I missed, please ask them here.

@Louis thank you for asking about why I absolutely positioned the rain image on a board rather than applying it as a background image on the container, sorry I didn’t get around to answering you! The answer is that I wanted to apply a blur to the image. If I applied that blur to the container, it would’ve blurred its contents as well as the image. It’s a little workaround :slight_smile:

1 Like

Thanks for your answer @LauraKalbag it makes total sense yep.

That was a great demo again, looking forward to the next one !

1 Like

The one thing I missed out was how to add this single border line:

Again, it’s a little workaround because it isn’t exactly how single borders work on the web, but it’s useful for showing where border lines should go.

The border is in a flex layout container that contains the content above the border and the border shape. The flex layout is flowing top-to-bottom:

The border itself is a rectangle that has a fixed height of 1px (or however thick you want your border) and in its flex element settings, it is set to keep that height as a fixed height, but fill the width of the flex container.

Tada! You have a border that will always be the width of its container. This also works with side borders, you just need to make the rectangle a fixed width with full height and layout its flex container from left to right.

4 Likes

Hi, this tutorial was super helpful, thank you so much!!
For the “Recent Scenes” and “Active Devices” texts (minute 34:00 of the video circa), could it be a good approach to use an absolute positioning for them (with a Z index)? Because using a negative margin makes it more difficult to align the div (board) that contains the elements later. Or is it just my wrong idea?
Just to make sure I understood something!
cardsss.penpot (76.0 KB)

1 Like

It’s a great question! I would generally avoid absolute positioning in web-based UIs unless you absolutely (:wink:) have to use it. This is because absolute positioning takes an element out of the flow so it can’t be affected by the elements around it.

When we’re designing for flexible layouts, we ideally want elements to flex and flow around each other depending on the viewport width. Positioning the title and buttons using a negative margin means the positioning will work whether the cards are placed in a narrow mobile-sized viewport or a really widescreen viewport. Absolute positioning could still work in some of these cases, but you’re more likely to have to manually change its height, width, X and Y positioning for different viewport sizes because an absolutely-positioned item won’t base those values on the objects around it.

My approach here is most informed by writing code for UIs. So while absolute positioning could be a handy workaround if you’re creating a static design, it won’t translate as well into code if you’re designing a web UI. Does that make sense?

1 Like

Thank you so much for the explanation…and for your patience!

1 Like

Hi @LauraKalbag !

Let me suggest to take a look to Accessibility Theme Builder, I find it an amazing project.

It helps you out creating an accessible design system by leading the user through a series of forms and you end up with the design tokens.

I have created one example with their demo and now I´m looking how to import it into the Penpot server from Token Studio that supports import and export design tokens.

They have a Figma workflow and it would be wonderful to do something similar for penpot.

It would be very interesting to contact them and also to develop a plugin to integrate this as soon as design tokens are ready.

Cheers!

2 Likes

Hi @gabriel. Thank you for sharing, this looks very interesting!

Great! Maybe even with the Material Theme Builder, since I imagine the code produced for exporting assets is similar, it would be possible to do the same thing!

@Elena_Alcalde_Rueda Instead of using TimezoneWizard I suggest using ZoneStamp its open source, you pick your’e date, time and time zone. The you press generate link, when a user clicks on the link he sees the time of the event in his local time. TimeStamp is more straight forward and easier to use than TimezoneWizard.

1 Like

Thanks! We’ll check ZoneStamp, of course :ok_hand:

It would be very useful to something similar to this Design Tokens Starter Set from Figma once the design tokens are ready to test in Penpot.

@LauraKalbag Maybe you can showcase it in a hands-on session.

1 Like

Thanks @gabriel! For sure there’ll be a specific Hands-on Demo for Design Tokens (or more than one if needed!) :raised_hands:t2:

1 Like

Thanks @Elena_Alcalde_Rueda,

Sure design tokens is a complex theme, that is why having a template with a generic design system example would be very helpful. Maybe someone at Penpot could do it?

Keep on with the nice work <3

2 Likes

By the way, I have made the test of importing the tokens file from the starter set into Token Studio penpot instance and it worked like charm.

1 Like

I created a color palette using the design tokens.

I will like to create a plugin to create a color palette, similar to what this plugin does but instead of using the colors in the library using the ones in the design tokens.

A plugin to create a design system from the complete design tokens file would be super useful.

How can I access to the tokens information through the API?

Hey Gabriel,

Great to see that you’re enjoying the beta! Regarding the tokens in the API, they won’t be available yet. We need to test the data structure before including them, so they’ll be added after the MVP stage.

I’m using the same tokens file to test a few things, along with the attached library from on this repo. You could use our Penpot Exporter for this as well, but I’m sharing the file I’m working on in case you want to give it a try. You just need to reimport the token set in this file in order to see it working :blush:

Please be aware that this is a WIP - testing file, so there may be a lot of errors but switching sets works just fine.
Another great thing about using the penpot exporter plugin is that the typography styles are working as well (we don’t have typography tokens yet). So this part is also covered :smiley:

Design Tokens Starter Set.penpot (7.0 MB)