Framer.js module that simplifies the process of adding text to your prototypes.
Switch branches/tags
Nothing to show
Clone or download
awt2542 Merge pull request #29 from blaineb/updated-convert-function
Update convert function to work with native TextLayers
Latest commit d420d2f Sep 20, 2017

TextLayer for Framer.js

Update 23/3: TextLayer is now a native feature of Framer.

Framer.js module that simplifies the process of adding text to your prototypes.

NOTE: Latest version needs curly brackets when importing (see install instructions)



  1. Download the file
  2. Create a framer project and drop inside the /modules folder
  3. Add {TextLayer, convertTextLayers} = require 'TextLayer' at the top of your document (case-sensitive).

More info about modules in Framer: FramerJS Docs - Modules


Basic usage

t = new TextLayer
	text: "The quick brown fox jumps over the lazy dog"
	color: "#aaa"
	textAlign: "center"
	fontSize: 14
	width: 220
	height: 40
	fontFamily: "Georgia"

Convert imported layers to TextLayers

Make sure the text layer in Sketch is inside a group. There can be no other layers inside that group.

title = sketch.title.convertToTextLayer()
title.text = "Custom text"

Debug mode for converted layers

Optionally include a boolean when converting. This doesn't destroy the original sketch layer, allowing you to fine tune the converted layer to pixel perfection.

title = sketch.title.convertToTextLayer(true)

Convert all text layers from sketch

Function to convert all text layers from Sketch to editable layers. Optionally include true to use debuggin. Example:

sketch = Framer.Importer.load("imported/example@2x", scale: 1)
convertTextLayers(sketch, true)

AutoSize based on text length and styling

t = new TextLayer
	autoSize: true
	text: "This text is longer than 100px, but that's ok"	

Positioning and layout using the .setup guide

t = new TextLayer
	text: "This is a headline"
	setup: true
	autoSize: true
	paddingRight: 20
	paddingLeft: 20

Make text editable by user (input fields)

t = new TextLayer 
	contentEditable: true
	width: 200

Create a quick list of text

for fruit, i in ["Apple", "Pear", "Kiwi", "Banana"]
	t = new TextLayer
		text: fruit
		y: i*30


.text (string) - your text content

.fontFamily (string) - font. eg. "Arial", "Lato"

.fontSize (number) - size of font

.color (string) - color of text

.lineHeight (number) - line height (default is 1.25)

.letterSpacing (number) - letter spacing (default is 0)

.fontWeight (string) - weight of font

.fontStyle (string) - styling of font eg. "normal", "italic", "oblique"

.fontVariant (string) - font variant

.letterSpacing (number) - letter spacing

.padding (number) - padding on all sides

.paddingTop (number) - padding above text

.paddingRight (number) - padding on right side of text

.paddingBottom (number) - padding below the text

.paddingLeft (number) - padding on left side of text

.textAlign (string) - adjust alignment

.textTransform (string) - text transform using uppercase, lowercase or capitalize

.length (number) - number of characters in text

.contentEditable (boolean) - make the text editable by user

.autoSize (boolean) - resize the layer to automatically to fit text the content

.autoSizeHeight (boolean) - resize the height of the layer to automatically to fit the text content. great for fixed width columns

.setup (boolean) - show a transparent background to outline the layer's size

.convertToTextLayer(debug) - converts an imported layer to a TextLayer. Optionally pass true for debug argument to keep original layer.


Twitter: @andreaswah