Permalink
Fetching contributors…
Cannot retrieve contributors at this time
128 lines (86 sloc) 7.66 KB

Tandem Tools To Export SCSS From Sketch

This Sketch plugin is built to enhance the overall workflow at DevMynd. It comes with three functions:

Export as SCSS

This takes all layer styles and type styles and exports them as SCSS variables and mixins. There are some neat little tricks you can use with the style naming to unlock additional features.

Type Styles

The meat and potatoes of what this plugin outputs is type styles. Attributes are exported as variables. Desktop and mobile variables are paired into attribute mixins, and attribute mixins are combined into type style mixins.

To export a specific type setup, create a new type style.

Want to provide more context to the plugin? Use tags!

Type Style Tags

Tags are a relatively simple construct specific to this plugin. A "tag" generally appears at the beginning of a style name and is contained within square brackets like [this]. Tags are optional, but they can contain lots of helpful context when designing in Sketch and for the plugin when exporting.

Here's an example of a type style tag:

[D4L] Subheader

There are several components within that one tag, followed by the name. Let's break them down:

Ramp

The first character after the opening bracket is the ramp. There are two options here: "D" for "desktop" and "M" for "mobile." This lets the plugin know at what scale the style should be applied.

Selector

The second character after the opening bracket of a type style tag is the selector. A selector can be a number 1-6 or the character "P." Numbers correspond to different header styles. D1 is the <h1> header at the desktop size, M1 is the <h1> header at mobile sizes.

DP gives you the styles for a <p> tag at desktop size, etc.

Sub-selectors

If you need more than one style at a given size, you can use sub-selectors! You can add a decimal point and any number of decimal places.

Variant

Need still further differentiation, such as color variants? You can add ANYTHING after the selector inside of the tag. It will be ignored in the output, but you can add it to help with organization within Sketch

Name

The name of the style will be included as a comment in the SCSS file. For elements with a CSS selector (h1-h5 and p), the variables will be named with the selector and NOT the name.

Colors

The plugin can export colors as an SCSS variable. In order to indicate that a color should be exported, create a Layer Style with a color fill and no shadows. Only the fill color will be exported. You may name your layer style whatever you want. Variables are exported in alphabetical order, which is how they appear in Sketch.

Want the variables to have some logical order? Use tags!

Color Tags

Tags are a relatively simple construct specific to this plugin. A "tag" generally appears at the beginning of a style name and is contained within square brackets like [this].

Here's an example of a tag:

[C1] Primary

These tags allow you to organize your layer styles alphabetically without ruining your layer style names. When colors are exported, the tag is excluded. The above layer style would output an SCSS variable named $primary-color.

Shadows

Shadows are exported from layer styles as an SCSS variable. To indicate to the plugin that a shadow or shadows should be exported, create a layer style with one or more shadows. Multiple shadows, including inner shadows, will all be exported together as a variable.

Need your shadow variables to have a logical order? Use tags!

Color Tags

Tags are a relatively simple construct specific to this plugin. A "tag" generally appears at the beginning of a style name and is contained within square brackets like [this].

Here's an example of a tag:

[S1] Thinner Shadow

These tags allow you to organize your layer styles alphabetically without ruining your layer style names. When shadows are exported, the tag is excluded. The above layer style would output an SCSS variable named $thinner-shadow.

Gradients

You can get your gradients out of Sketch without writing them yourself. This is written from scratch, because Sketch's own Copy CSS Attributes gradient export leaves quite a bit to be desired.

If you want the plugin to export a gradient as an SCSS variable, create a layer style with a gradient fill and no shadows. The plugin will detect linear, radial, and conic gradients and export them as best as it can.

Need your gradient variables in a certain order? Use tags!

Gradient Tags

Tags are a relatively simple construct specific to this plugin. A "tag" generally appears at the beginning of a style name and is contained within square brackets like [this].

Here's an example of a tag:

[G1] Rainbow Conic Gradient

These tags allow you to organize your layer styles alphabetically without ruining your layer style names. When gradients are exported, the tag is excluded. The above layer style would output an SCSS variable named $rainbow-conic-gradient.

Linear Gradients

Linear gradients are created with an angle based on the layer style as applied to a square object. Scale and position may be off from what you see in Sketch.

Radial Gradients

Radial gradients ignore the careful scale, rotation, and positioning of your ellipse. I'm sorry, it's hard to get all of that out right now. TBD.

Conical Gradients

You can't position conical gradients in Sketch, so the output SCSS is centered, like it is in Sketch. Currently, only Google Chrome supports rendering conical gradients, but there are handy polyfills for other browsers.

Scale Type Ramp

If you want to use a modular type ramp, this action allows you to make and adjust one in a hurry. In order to do this, you will need to use type style tags.

Type Style Tags

Tags are a relatively simple construct specific to this plugin. A "tag" generally appears at the beginning of a style name and is contained within square brackets like [this]. Tags are optional, but they can contain lots of helpful context when designing in Sketch and for the plugin when exporting.

Here's an example of a type style tag:

[D4L] Subheader

There are several components within that one tag, followed by the name. Let's break them down:

Ramp

The first character after the opening bracket is the ramp. There are two options here: "D" for "desktop" and "M" for "mobile." This lets the plugin know at what scale the style should be applied.

Selector

The second character after the opening bracket of a type style tag is the selector. A selector can be a number 1-6 or the character "P." Numbers correspond to different header styles. D1 is the <h1> header at the desktop size, M1 is the <h1> header at mobile sizes.

DP gives you the styles for a <p> tag at desktop size, etc.

Sub-selectors

If you need more than one style at a given size, you can use sub-selectors! You can add a decimal point and any number of decimal places.

Variant

Need still further differentiation, such as color variants? You can add ANYTHING after the selector inside of the tag. It will be ignored in the output, but you can add it to help with organization within Sketch.

Name

The name of the style, which follows the tag will be included as a comment in the SCSS file. For elements with a CSS selector (h1-h5 and p), the variables will be named with the selector and NOT the name.

Align Text

Stop the ever-frustrating alignment problems with type styles overriding your text alignment. Requires specific symbols with specific naming conventions.

Symbols must start with "Text Style" and end with "Centered" to be centered. To be right aligned, the symbol name must start with "Text Style" and end with "Right."