palantir / blueprint

A React-based UI toolkit for the web
https://blueprintjs.com/
Apache License 2.0
20.64k stars 2.17k forks source link

[Sketch] provide Symbols for components #2817

Closed romanr closed 4 years ago

romanr commented 6 years ago

Continuing from #2668.
Sketch file does not represent UI as symbols. Symbols in Sketch are like components in React.

Imagine if controls in Blueprint were developed as functions in one monolithic javascript file. Then in order to use a component the developer had to open a large javascript file, copy relevant code and paste into their application.

newstart346 commented 6 years ago

Hi

giladgray commented 6 years ago

@romanr yes we are aware and actively working on this.

equinusocio commented 6 years ago

@giladgray Please make good use of symbols. All colors should be use a master simbol which, if changed, should affect all ui components. Also, remember to use anchor points inside fluid components and sub elements.

Let me know if you need help about that.

giladgray commented 6 years ago

@romanr @equinusocio FYSA this is a huge amount of work and we all have full time jobs over here so it'll take some time to symbol-ize the entire library. don't think there's much opportunity for OSS contributions here unfortunately. watch this issue for updates.

@pkwi will be coordinating the work.

romanr commented 6 years ago

We would like to help but I don't think Sketch file is possible to be worked on by different contributors concurrently. I don't think git merges will be possible.

vkorobov-boostlabs commented 5 years ago

I could propose a version of symbolizing everything for your review in March. What do you think?

adidahiya commented 5 years ago

@pkwi is this still on our intended roadmap for the sketch file? if so, I think @vkorobov-boostlabs can go for it

pkwi commented 5 years ago

@vkorobov-boostlabs @adidahiya yeah, that would be great!

vkorobov-boostlabs commented 5 years ago

@pkwi @adidahiya I made a fork and working on it.

equinusocio commented 5 years ago

To work on sketch files together there are some tools like:

https://www.abstract.com/ (Free with limitations) https://plantapp.io/ (Free with limitations) https://kactus.io/ (free)

vkorobov-boostlabs commented 5 years ago

Hey guys, quick update. Working on symbols. Buttons are done including buttons with icons (left, right and both). image Structured good: image I'm doing that in the fork here https://github.com/boostlabscom/blueprint

vkorobov-boostlabs commented 5 years ago

Did 60% of symbolization. Here is what's left to do:

terpimost commented 5 years ago

All form elements are done.

Here is what's left to do:

@pkwi @adidahiya do you think I can do a pull request just with a light theme or dark theme has to be done too?

pkwi commented 5 years ago

@terpimost do a pull request when you're ready. This way, we will be able to look at it before doing the dark theme

vkorobov-boostlabs commented 5 years ago

Update, I'm still working on it. Just want to finish the Light theme properly and submit a pull request. Dropdown menus are almost done.

terpimost commented 5 years ago

Update. Light theme complete. Cleaning up and preparing a pull request.

vkorobov-boostlabs commented 5 years ago

@pkwi to which branch I should do a pull request? It is just sketched file updates and nothing else. You can also download a file and take a look at it here https://github.com/boostlabscom/blueprint/blob/sketch-symbols/resources/sketch/blueprint-core-kit.sketch

Everything on a Light page symbolized with resizing in mind, and:

  1. Text styles for all 3 sizes image
  2. All type of inputs for all intents: image
  3. Icon symbols created (16 and 20) for an easy switch of icons in symbols: image
  4. All types of buttons, resizable and text changeable with all stages and intents: image
  5. 2 intents of icons buttons for all sizes: image
  6. Segmented buttons and tabs components created so it is easy to construct any tab bars: image
  7. All types of tags for 2 sizes: image
  8. Dropdown elements and components: image
  9. The naming of symbols utilize number for the proper organization: image
vkorobov-boostlabs commented 5 years ago

@adidahiya @pkwi I could jump on a call to discuss that if you want. I do understand that is not ideal now and more work needs to be done. I would love to hear any feedback from you guys about it. Ready to improve it before doing a pull request.

pkwi commented 5 years ago

hey @vkorobov-boostlabs Thanks again for all your hard work it is much appreciated. We have started using this file internally and will get back to you once we have more feedback.

vkorobov-boostlabs commented 5 years ago

There are some bugs I should fix but probably more huge rework is coming because of that https://blog.sketchapp.com/sketch-for-teams-smart-layout-and-more-announcements-from-layers-eed45e3fa0fd

Anyway, tell if you want me to continue with Dark theme or I should make any changes in the structure.

terpimost commented 5 years ago

Hey guys, I'm going to work on a dark theme. Let me know about bugs and things you don't like now.

aycai commented 5 years ago

Hi @terpimost,

Thanks so much for your work so far! Lots of good stuff here. I have a few notes that include some from other designers on the team that I'd be keen to get your thoughts on so far:

At first I was unsure about creating symbols for indeterminately sized components like dropdown lists and tables, but I can see designers using plugins like Runner to quickly drop the base version into their file, then detach the symbol to customize the content. This might become more magical with the upcoming Smart Layout features!

romanr commented 5 years ago

@aycai Do you mean using layer styles as fill colors? This is controversial, more like a hack. This method is used in Google’s Sketch Material generator plugin and is nightmare to work with. You can achieve the same by saving and updating styles themselves in Sketch library.
Let’s not ruin it with this just when we finally have this perfect reusable library at last!

aycai commented 5 years ago

@romanr What I meant is that I'm not sure what the functional value of this as a symbol is: Screen Shot 2019-07-26 at 10 43 44 AM

Everything in the Sketch file already has their color set (and layer styled!). I'm fine not having each color and shade be a layer style, since if you're deciding to change a color for something that likely means you're doing something outside what Blueprint gives out of the box and should just use the palette.

terpimost commented 5 years ago

Hi @aycai, thank you for the feedback. I'm sure many people use Blueprint Kit not only at Palantir. I wanted to improve the Sketch library to streamline the design process and handoff to developers. Since I'm working with the already established library, I should not change it but the only level up the comfort of using it.

The majority of color and text styles were already in place. The kit was easy to use; you can see all the elements nicely laid out on a big artboard. A designer drags and drops an element from one sketch file to another. But after several copy/paste moves, I don't need the blueprint sketch file anymore. Because I remember the order of elements, and I want to paste them from my head. Here symbols are handy.

Maybe the order of symbols on the original artboard is arbitrary, but it is not my decision, and it is like it is historically. I didn't dare to bring in a confusion an decided to order things the same way. Numbering is the only way to keep the manual order in sketch symbols.

I don't think alphabetical order helps new designers because the organic flow is to check out the original layout and review the library and after use symbols from Add menu. We have to admit that not all designers will use Add Symbol dialog in Sketch. One designer told me that he always prefers to drag items form visually arranged elements on an artboard. So there will be designers who will continue to use Blueprint Sketch Kit as it was.

This is my first attempt; I'm sure more updates will be required in the future. And I'm ready to do them (as well as future adoption to the newest Sketch). We will not satisfy everybody with the update, but please allow me to clarify my thought behind that symbolization work.

Splitting the file could help with performance, but in that case, we have to connect more than 1 file as a library in Sketch, which is a bit dirty and doesn't help with consistency. Also, there could be projects where we want to use both themes at the same time. For example, I want to place something on a dark sidebar while the main container is white. Or I have the design with a white theme and decided to switch symbols to a dark one. I didn't start the dark theme yet, but I don't think it that different from the light, so it will be copy+rename for some of them.

I wanted to do a prototype version of Blueprint, and now I understand that it should be a separate file.

Icons are tricky. As you can see, I use a small number of 16 and 20 icons within symbols, so they must be in the kit. I agree that all the other icons could be a separate library.

The colors may be better served as layer styles; They were like that before I started. image

I'm not sure if the color palettes as literal UI elements need to be symbolized. I understand that you may never use it. I don't know how the decision about it should be made, but I'm ready to accept it.

Why would anybody need color palate as symbols? Because when a designer needs to choose a color, he/she can quickly add variations of Blue on the artboard and decide visually. While with layer styles rectangles should be created, colorized and moved together to pick the right color. Symbolization of color palets solves the quick color chose the issue.

I think the typography section would also work better as layer styles. They are right now. The advantage of having it also as a symbol is speed. Without Header 2 symbol, you have to add text, click inside the layer and change text, after select style. With Header 2 symbol you select paste it. Well, it is not an actual speed but cognitively easier actions.

I think when I'm putting wireframe, I don't want event touch symbol configuration and just through things on the canvas and move them.

Guys, obviously the decision is up to you, I'm just waiting for a signal from you to continue.

aycai commented 5 years ago

Hi @terpimost , After giving it some thought, I think overall I agree with your reasoning. Short version is:

  1. Let's keep everything a symbol, as you had it.
  2. For now, let's keep the order of the lists as you had them, matching the visual order of the Sketch file.

Definitely appreciate the work you've done for this! Lots of good ideas to go ahead and try out, we'll update things as we go along :)

(Much) longer version: Below are some points you brought up, as well as some of my thoughts on them:

terpimost commented 5 years ago

@aycai thank you for feedback and your thoughts. I'm going to continue with Dark theme. Do you think I should do pull request before that?

Here are some comments on your thoughts

I don't think the visual order of the elements should never to be updated,

Sure, and symbolization update has to follow the Blueprint team.

EVERY icon should be included as well.

For now, I don't have an automatic solution for that. But open to adding all icons manually later.

if I use something like Runner and type "button", do I always have to type "light" as well so I don't get the dark theme button (which has different styling) first?

Let me explore that plugin and get back to you later.

What do you have in mind for prototyping?

https://github.com/palantir/blueprint/issues/3415

it would be nice for a change to a single symbol to update all of its variations

Yes, it would be great, but there is no such tool yet. If we want that we have to create a specific plugin for sketch

Date pickers and dropdowns are examples of this. Maybe this is something we wait on until

Sketch releases the smart content features

Date pickers and dropdowns are examples of this. Maybe this is something we wait on until Sketch releases the smart content features

Yes, I'm thinking that we should wait for Sketch v56 because after it, I will have to perform significant changes to all symbols. Meanwhile, they are as they are.

terpimost commented 5 years ago

Just realized that version 56 is already on my Mac, let me research smart layout and decide if we need a significant update.

franckl commented 5 years ago

I think smart layout is still not available on v56

aycai commented 5 years ago

@terpimost For the icon update, I might be able to save you some work with that; I think we have a Sketch file kicking around for the 16px and 20px icons already, I can bring that in after your changes 😄

it would be nice for a change to a single symbol to update all of its variations

Initially I was thinking how well nesting symbols would help here (e.g. use a base button symbol, then use different layer styles for its variations), but I think that just adds more redundancy.

My inclination for PR timing is to do it after both themes are done since I think symbols are kind of an all or nothing affair. Defer to @adidahiya for this!

kudigaracoder commented 5 years ago

Sketch 58 just launched with Smart Layouts. Would it be good to incorporate Smart Layouts and baseline this version before adding/updating components?

terpimost commented 4 years ago

@kudigaracoder was waiting for it.

romanr commented 4 years ago

Any progress, maybe I can help? Perhaps with new Sketch collaboration features it can be arranged to work on same file.

terpimost commented 4 years ago

@romanr sorry for the delay. Now as we have new features of Slack like smart layout and components dashboard I think it is time to finish the job. I plan to finish light and dark theme in Jan 2020. @aycai could you point me to all icons in sketch for Blueprint? It will be really helpful.

About Sketch collaboration - it is not released yet, right?

giladgray commented 4 years ago

@terpimost icon svg files live here: https://github.com/palantir/blueprint/tree/develop/resources/icons

kudigaracoder commented 4 years ago

@terpimost Sketch Collaboration is not out until 2020.

estevesd commented 4 years ago

@terpimost @giladgray I just did a PR for icons library https://github.com/palantir/blueprint/pull/3933 and colors as symbols https://github.com/palantir/blueprint/pull/3932 I saw this thread after doing the PRs, and now realize that they are probably not optimal

terpimost commented 4 years ago

@estevesd that is great. I'm not sure how should I join it except manually. In symbolization process I would love to have all of those icons inside the sketch file. Because they are used inside components. Could we have a call together to discuss it? Please pick a time here https://calendly.com/vladkorobov/30min

estevesd commented 4 years ago

@terpimost I added the icons to your version of the kit. All the icons I could find have been updated in the Symbols Page. Now it needs to be done in the light and dark pages https://github.com/wicastr/blueprint/blob/de/stech-icons-in-kit/resources/sketch/blueprint-core-kit.sketch I also made some symbols for radio button and switch an put them in the Icons folder like you did for the checkboxes All the instances of the icons you created before have been replaced with the new ones

estevesd commented 4 years ago

@terpimost I did the changes in the dark page. The light one didn't need it. https://github.com/wicastr/blueprint/blob/de/sketch-icons-in-kit/resources/sketch/blueprint-core-kit.sketch

terpimost commented 4 years ago

Working on a dark theme, I will update elements with icons from @estevesd. I'm going to improve buttons with new flex layout from Sketch, other elements are already with a proper scaling configuration and there is no need to make them more complex.

aycai commented 4 years ago

This is all amazing progress, thank you @terpimost and @estevesd for your hard work so far!

One thing I do want to be mindful of is scope creep. Adding in icons and layer/text styles are valuable in tightening up the symbols, but the diff in the sketch file is getting quite large and it's hard to spread these changes out in Github.

It sounds like you are both working on a single Sketch file with all of these changes already so this might be a moot point. So far I've heard:

I think it's possible to review these all at once, but I'll want to hold on additional changes until after this is done as this will be a lot to go through and review.

terpimost commented 4 years ago

Sorry, guys, it's taking so long. But I have to recreate all buttons with a smart layout. A simple button in both themes is done. After I go through all button-based symbols it will be almost done.

Form elements and everything before them is already in both themes. You can always take a look at the latest version here https://github.com/terpimost/blueprint/tree/sketch-symbols/resources/sketch

terpimost commented 4 years ago

Hey guys. Here is some update.

Bug with a corner in Sketch 63

While working on flexible layout buttons I noticed a weird bug: when the top right corner of a button is strangely bent. image

When exporting it is SVG path and not SVG rect. You can see that bug only when Shadow applied to a button. I asked Sketch and it turns out it is a bug of Sketch 63. They told me they will fix it in the next version. image

Current progress

  1. I've finished the Light theme button updates. Now they support elastic layout. Except for segmented buttons where equal width is usually important.

  2. Elastic buttons are flexible, content-driven but it is possible to set up a fixed width too. button-gif

  3. Thanks to @estevesd it's easy to replace an icon of a button.

  4. I have to update buttons in the dark theme and create symbols for other elements in the dark theme. Form elements and tables are finished in the dark theme.

Sorry for such a terrible delay. I'm focused to do a push and prepare to pull request in the next 2 weeks.

kudigaracoder commented 4 years ago

Thanks for the update @terpimost. I'm on the Sketch Beta 64 and the issue still persists! I've been using your file to test drive certain parts of a design, I noticed that text and icons were rotated 180˚. Could you let me know the reason behind that?

terpimost commented 4 years ago

@kudigaracoder rotation was the old hack, it is not the case anymore. I removed it. I've message about the bug 2 days ago, I hope they will fix it eventually. If not we will have to update all button backgrounds to the actual rect. I was thinking to write a plugin for Sketch to help with that process.

terpimost commented 4 years ago

You can watch for progress here https://github.com/terpimost/blueprint/commits/sketch-symbols/resources/sketch/blueprint-core-kit.sketch

terpimost commented 4 years ago

Updated tags and badges. Remorted another Sketch bug when label shifted 1 pixel up or down in the label (I manually moved labels if I saw such behavior)

Next: dark theme Callouts, Tooltips & popovers After: the rest is easier because no flex symbols support needed

terpimost commented 4 years ago

Complete symbolization process for both themes. Not everything ideal. There are bugs on Sketch side. The whole lib could be minimized and a bit slow. But it is definitely better Sketch file than it was :) https://github.com/palantir/blueprint/pull/4006

terpimost commented 4 years ago

Sorry, this one should be with a rebase on Develop https://github.com/palantir/blueprint/pull/4007 @aycai @adidahiya please let me know about your review. If you want to jump on a call (Washington D.C. time) and discuss it let me know.