├── .gitignore
├── LICENSE
├── Palettes
├── ios.sketchpalette
├── material-design.sketchpalette
└── sketch-default.sketchpalette
├── README.md
├── Sketch Palettes.sketchplugin
└── Contents
│ └── Sketch
│ ├── manifest.json
│ ├── sketchPalettes.js
│ └── util.js
├── appcast.xml
└── palettes.png
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS generated files #
2 | ######################
3 | .DS_Store
4 | .DS_Store?
5 | ._*
6 | .Spotlight-V100
7 | .Trashes
8 | ehthumbs.db
9 | Thumbs.db
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Andrew Fiorillo
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Palettes/ios.sketchpalette:
--------------------------------------------------------------------------------
1 | {"compatibleVersion":"1.4","pluginVersion":"1.4","colors":[{"red":0.3529411764705882,"green":0.7843137254901961,"blue":0.9803921568627451,"alpha":1},{"red":1,"green":0.8,"blue":0,"alpha":1},{"red":1,"green":0.5843137254901961,"blue":0,"alpha":1},{"red":1,"green":0.1764705882352941,"blue":0.3333333333333333,"alpha":1},{"red":0,"green":0.4784313725490196,"blue":1,"alpha":1},{"red":0.2980392156862745,"green":0.8509803921568627,"blue":0.39215686274509803,"alpha":1},{"red":1,"green":0.23137254901960785,"blue":0.18823529411764706,"alpha":1},{"red":0.5568627450980392,"green":0.5568627450980392,"blue":0.5764705882352941,"alpha":1},{"red":0.9372549019607843,"green":0.9372549019607843,"blue":0.9568627450980391,"alpha":1},{"red":0,"green":0,"blue":0,"alpha":1}]}
--------------------------------------------------------------------------------
/Palettes/material-design.sketchpalette:
--------------------------------------------------------------------------------
1 | {"compatibleVersion":"1.4","pluginVersion":"1.4","colors":[{"red":0.9568627450980391,"green":0.2627450980392157,"blue":0.21176470588235294,"alpha":1},{"red":1,"green":0.9215686274509803,"blue":0.9333333333333333,"alpha":1},{"red":1,"green":0.803921568627451,"blue":0.8235294117647058,"alpha":1},{"red":0.9372549019607843,"green":0.6039215686274509,"blue":0.6039215686274509,"alpha":1},{"red":0.8980392156862745,"green":0.45098039215686275,"blue":0.45098039215686275,"alpha":1},{"red":0.9372549019607843,"green":0.3254901960784314,"blue":0.3137254901960784,"alpha":1},{"red":0.8980392156862745,"green":0.22352941176470587,"blue":0.20784313725490194,"alpha":1},{"red":0.8274509803921568,"green":0.1843137254901961,"blue":0.1843137254901961,"alpha":1},{"red":0.7764705882352941,"green":0.1568627450980392,"blue":0.1568627450980392,"alpha":1},{"red":0.7176470588235294,"green":0.10980392156862745,"blue":0.10980392156862745,"alpha":1},{"red":1,"green":0.5411764705882353,"blue":0.5019607843137255,"alpha":1},{"red":1,"green":0.32156862745098036,"blue":0.32156862745098036,"alpha":1},{"red":1,"green":0.09019607843137255,"blue":0.26666666666666666,"alpha":1},{"red":0.8352941176470589,"green":0,"blue":0,"alpha":1},{"red":0.9137254901960784,"green":0.11764705882352941,"blue":0.38823529411764707,"alpha":1},{"red":0.9882352941176471,"green":0.8941176470588235,"blue":0.9254901960784314,"alpha":1},{"red":0.9725490196078431,"green":0.7333333333333333,"blue":0.8156862745098039,"alpha":1},{"red":0.9568627450980391,"green":0.5607843137254902,"blue":0.6941176470588235,"alpha":1},{"red":0.9411764705882353,"green":0.38431372549019605,"blue":0.5725490196078431,"alpha":1},{"red":0.9254901960784314,"green":0.25098039215686274,"blue":0.4784313725490196,"alpha":1},{"red":0.8470588235294118,"green":0.10588235294117647,"blue":0.3764705882352941,"alpha":1},{"red":0.7607843137254902,"green":0.09411764705882353,"blue":0.3568627450980392,"alpha":1},{"red":0.6784313725490196,"green":0.0784313725490196,"blue":0.3411764705882353,"alpha":1},{"red":0.5333333333333333,"green":0.054901960784313725,"blue":0.30980392156862746,"alpha":1},{"red":1,"green":0.5019607843137255,"blue":0.6705882352941176,"alpha":1},{"red":1,"green":0.25098039215686274,"blue":0.5058823529411764,"alpha":1},{"red":0.9607843137254902,"green":0,"blue":0.3411764705882353,"alpha":1},{"red":0.7725490196078432,"green":0.06666666666666667,"blue":0.38431372549019605,"alpha":1},{"red":0.611764705882353,"green":0.15294117647058825,"blue":0.6901960784313725,"alpha":1},{"red":0.9529411764705882,"green":0.8980392156862745,"blue":0.9607843137254902,"alpha":1},{"red":0.8823529411764706,"green":0.7450980392156863,"blue":0.9058823529411765,"alpha":1},{"red":0.807843137254902,"green":0.5764705882352941,"blue":0.8470588235294118,"alpha":1},{"red":0.7294117647058823,"green":0.40784313725490196,"blue":0.7843137254901961,"alpha":1},{"red":0.6705882352941176,"green":0.2784313725490196,"blue":0.7372549019607844,"alpha":1},{"red":0.5568627450980392,"green":0.1411764705882353,"blue":0.6666666666666666,"alpha":1},{"red":0.4823529411764706,"green":0.12156862745098039,"blue":0.6352941176470588,"alpha":1},{"red":0.4156862745098039,"green":0.10588235294117647,"blue":0.6039215686274509,"alpha":1},{"red":0.2901960784313725,"green":0.0784313725490196,"blue":0.5490196078431373,"alpha":1},{"red":0.9176470588235294,"green":0.5019607843137255,"blue":0.9882352941176471,"alpha":1},{"red":0.8784313725490196,"green":0.25098039215686274,"blue":0.984313725490196,"alpha":1},{"red":0.8352941176470589,"green":0,"blue":0.9764705882352941,"alpha":1},{"red":0.6666666666666666,"green":0,"blue":1,"alpha":1},{"red":0.403921568627451,"green":0.22745098039215686,"blue":0.7176470588235294,"alpha":1},{"red":0.9294117647058824,"green":0.9058823529411765,"blue":0.9647058823529412,"alpha":1},{"red":0.8196078431372549,"green":0.7686274509803921,"blue":0.9137254901960784,"alpha":1},{"red":0.7019607843137254,"green":0.615686274509804,"blue":0.8588235294117647,"alpha":1},{"red":0.5843137254901961,"green":0.4588235294117647,"blue":0.803921568627451,"alpha":1},{"red":0.49411764705882355,"green":0.3411764705882353,"blue":0.7607843137254902,"alpha":1},{"red":0.3686274509803922,"green":0.20784313725490194,"blue":0.6941176470588235,"alpha":1},{"red":0.3176470588235294,"green":0.1764705882352941,"blue":0.6588235294117647,"alpha":1},{"red":0.27058823529411763,"green":0.15294117647058825,"blue":0.6274509803921569,"alpha":1},{"red":0.19215686274509802,"green":0.10588235294117647,"blue":0.5725490196078431,"alpha":1},{"red":0.7019607843137254,"green":0.5333333333333333,"blue":1,"alpha":1},{"red":0.48627450980392156,"green":0.30196078431372547,"blue":1,"alpha":1},{"red":0.396078431372549,"green":0.12156862745098039,"blue":1,"alpha":1},{"red":0.38431372549019605,"green":0,"blue":0.9176470588235294,"alpha":1},{"red":0.24705882352941178,"green":0.3176470588235294,"blue":0.7098039215686275,"alpha":1},{"red":0.9098039215686274,"green":0.9176470588235294,"blue":0.9647058823529412,"alpha":1},{"red":0.7725490196078432,"green":0.792156862745098,"blue":0.9137254901960784,"alpha":1},{"red":0.6235294117647059,"green":0.6588235294117647,"blue":0.8549019607843137,"alpha":1},{"red":0.4745098039215686,"green":0.5254901960784314,"blue":0.796078431372549,"alpha":1},{"red":0.3607843137254902,"green":0.4196078431372549,"blue":0.7529411764705882,"alpha":1},{"red":0.22352941176470587,"green":0.28627450980392155,"blue":0.6705882352941176,"alpha":1},{"red":0.18823529411764706,"green":0.24705882352941178,"blue":0.6235294117647059,"alpha":1},{"red":0.1568627450980392,"green":0.20784313725490194,"blue":0.5764705882352941,"alpha":1},{"red":0.10196078431372549,"green":0.13725490196078433,"blue":0.49411764705882355,"alpha":1},{"red":0.5490196078431373,"green":0.6196078431372549,"blue":1,"alpha":1},{"red":0.3254901960784314,"green":0.42745098039215684,"blue":0.996078431372549,"alpha":1},{"red":0.2392156862745098,"green":0.3529411764705882,"blue":0.996078431372549,"alpha":1},{"red":0.18823529411764706,"green":0.30980392156862746,"blue":0.996078431372549,"alpha":1},{"red":0.12941176470588234,"green":0.5882352941176471,"blue":0.9529411764705882,"alpha":1},{"red":0.8901960784313725,"green":0.9490196078431372,"blue":0.9921568627450981,"alpha":1},{"red":0.7333333333333333,"green":0.8705882352941177,"blue":0.984313725490196,"alpha":1},{"red":0.5647058823529412,"green":0.792156862745098,"blue":0.9764705882352941,"alpha":1},{"red":0.39215686274509803,"green":0.7098039215686275,"blue":0.9647058823529412,"alpha":1},{"red":0.2588235294117647,"green":0.6470588235294118,"blue":0.9607843137254902,"alpha":1},{"red":0.11764705882352941,"green":0.5333333333333333,"blue":0.8980392156862745,"alpha":1},{"red":0.09803921568627451,"green":0.4627450980392157,"blue":0.8235294117647058,"alpha":1},{"red":0.08235294117647059,"green":0.396078431372549,"blue":0.7529411764705882,"alpha":1},{"red":0.050980392156862744,"green":0.2784313725490196,"blue":0.6313725490196078,"alpha":1},{"red":0.5098039215686274,"green":0.6941176470588235,"blue":1,"alpha":1},{"red":0.26666666666666666,"green":0.5411764705882353,"blue":1,"alpha":1},{"red":0.16078431372549018,"green":0.4745098039215686,"blue":1,"alpha":1},{"red":0.16078431372549018,"green":0.38431372549019605,"blue":1,"alpha":1},{"red":0.011764705882352941,"green":0.6627450980392157,"blue":0.9568627450980391,"alpha":1},{"red":0.8823529411764706,"green":0.9607843137254902,"blue":0.996078431372549,"alpha":1},{"red":0.7019607843137254,"green":0.8980392156862745,"blue":0.9882352941176471,"alpha":1},{"red":0.5058823529411764,"green":0.8313725490196078,"blue":0.9803921568627451,"alpha":1},{"red":0.30980392156862746,"green":0.7647058823529411,"blue":0.9686274509803922,"alpha":1},{"red":0.16078431372549018,"green":0.7137254901960784,"blue":0.9647058823529412,"alpha":1},{"red":0.011764705882352941,"green":0.6078431372549019,"blue":0.8980392156862745,"alpha":1},{"red":0.00784313725490196,"green":0.5333333333333333,"blue":0.8196078431372549,"alpha":1},{"red":0.00784313725490196,"green":0.4666666666666667,"blue":0.7411764705882353,"alpha":1},{"red":0.00392156862745098,"green":0.3411764705882353,"blue":0.6078431372549019,"alpha":1},{"red":0.5019607843137255,"green":0.8470588235294118,"blue":1,"alpha":1},{"red":0.25098039215686274,"green":0.7686274509803921,"blue":1,"alpha":1},{"red":0,"green":0.6901960784313725,"blue":1,"alpha":1},{"red":0,"green":0.5686274509803921,"blue":0.9176470588235294,"alpha":1},{"red":0,"green":0.7372549019607844,"blue":0.8313725490196078,"alpha":1},{"red":0.8784313725490196,"green":0.9686274509803922,"blue":0.9803921568627451,"alpha":1},{"red":0.6980392156862745,"green":0.9215686274509803,"blue":0.9490196078431372,"alpha":1},{"red":0.5019607843137255,"green":0.8705882352941177,"blue":0.9176470588235294,"alpha":1},{"red":0.30196078431372547,"green":0.8156862745098039,"blue":0.8823529411764706,"alpha":1},{"red":0.14901960784313725,"green":0.7764705882352941,"blue":0.8549019607843137,"alpha":1},{"red":0,"green":0.6745098039215687,"blue":0.7568627450980392,"alpha":1},{"red":0,"green":0.592156862745098,"blue":0.6549019607843137,"alpha":1},{"red":0,"green":0.5137254901960784,"blue":0.5607843137254902,"alpha":1},{"red":0,"green":0.3764705882352941,"blue":0.39215686274509803,"alpha":1},{"red":0.5176470588235293,"green":1,"blue":1,"alpha":1},{"red":0.09411764705882353,"green":1,"blue":1,"alpha":1},{"red":0,"green":0.8980392156862745,"blue":1,"alpha":1},{"red":0,"green":0.7215686274509804,"blue":0.8313725490196078,"alpha":1},{"red":0,"green":0.5882352941176471,"blue":0.5333333333333333,"alpha":1},{"red":0.8784313725490196,"green":0.9490196078431372,"blue":0.9450980392156862,"alpha":1},{"red":0.6980392156862745,"green":0.8745098039215686,"blue":0.8588235294117647,"alpha":1},{"red":0.5019607843137255,"green":0.796078431372549,"blue":0.7686274509803921,"alpha":1},{"red":0.30196078431372547,"green":0.7137254901960784,"blue":0.6745098039215687,"alpha":1},{"red":0.14901960784313725,"green":0.6509803921568628,"blue":0.6039215686274509,"alpha":1},{"red":0,"green":0.5372549019607843,"blue":0.4823529411764706,"alpha":1},{"red":0,"green":0.4745098039215686,"blue":0.4196078431372549,"alpha":1},{"red":0,"green":0.4117647058823529,"blue":0.3607843137254902,"alpha":1},{"red":0,"green":0.30196078431372547,"blue":0.25098039215686274,"alpha":1},{"red":0.6549019607843137,"green":1,"blue":0.9215686274509803,"alpha":1},{"red":0.39215686274509803,"green":1,"blue":0.8549019607843137,"alpha":1},{"red":0.11372549019607843,"green":0.9137254901960784,"blue":0.7137254901960784,"alpha":1},{"red":0,"green":0.7490196078431373,"blue":0.6470588235294118,"alpha":1},{"red":0.2980392156862745,"green":0.6862745098039216,"blue":0.3137254901960784,"alpha":1},{"red":0.9098039215686274,"green":0.9607843137254902,"blue":0.9137254901960784,"alpha":1},{"red":0.7843137254901961,"green":0.9019607843137255,"blue":0.788235294117647,"alpha":1},{"red":0.6470588235294118,"green":0.8392156862745098,"blue":0.6549019607843137,"alpha":1},{"red":0.5058823529411764,"green":0.7803921568627451,"blue":0.5176470588235293,"alpha":1},{"red":0.4,"green":0.7333333333333333,"blue":0.4156862745098039,"alpha":1},{"red":0.2627450980392157,"green":0.6274509803921569,"blue":0.2784313725490196,"alpha":1},{"red":0.2196078431372549,"green":0.5568627450980392,"blue":0.23529411764705882,"alpha":1},{"red":0.1803921568627451,"green":0.49019607843137253,"blue":0.19607843137254902,"alpha":1},{"red":0.10588235294117647,"green":0.3686274509803922,"blue":0.12549019607843137,"alpha":1},{"red":0.7254901960784313,"green":0.9647058823529412,"blue":0.792156862745098,"alpha":1},{"red":0.4117647058823529,"green":0.9411764705882353,"blue":0.6823529411764706,"alpha":1},{"red":0,"green":0.9019607843137255,"blue":0.4627450980392157,"alpha":1},{"red":0,"green":0.7843137254901961,"blue":0.3254901960784314,"alpha":1},{"red":0.5450980392156862,"green":0.7647058823529411,"blue":0.2901960784313725,"alpha":1},{"red":0.9450980392156862,"green":0.9725490196078431,"blue":0.9137254901960784,"alpha":1},{"red":0.8627450980392157,"green":0.9294117647058824,"blue":0.7843137254901961,"alpha":1},{"red":0.7725490196078432,"green":0.8823529411764706,"blue":0.6470588235294118,"alpha":1},{"red":0.6823529411764706,"green":0.8352941176470589,"blue":0.5058823529411764,"alpha":1},{"red":0.611764705882353,"green":0.8,"blue":0.396078431372549,"alpha":1},{"red":0.48627450980392156,"green":0.7019607843137254,"blue":0.2588235294117647,"alpha":1},{"red":0.40784313725490196,"green":0.6235294117647059,"blue":0.2196078431372549,"alpha":1},{"red":0.3333333333333333,"green":0.5450980392156862,"blue":0.1843137254901961,"alpha":1},{"red":0.2,"green":0.4117647058823529,"blue":0.11764705882352941,"alpha":1},{"red":0.8,"green":1,"blue":0.5647058823529412,"alpha":1},{"red":0.6980392156862745,"green":1,"blue":0.34901960784313724,"alpha":1},{"red":0.4627450980392157,"green":1,"blue":0.011764705882352941,"alpha":1},{"red":0.39215686274509803,"green":0.8666666666666667,"blue":0.09019607843137255,"alpha":1},{"red":0.803921568627451,"green":0.8627450980392157,"blue":0.22352941176470587,"alpha":1},{"red":0.9764705882352941,"green":0.984313725490196,"blue":0.9058823529411765,"alpha":1},{"red":0.9411764705882353,"green":0.9568627450980391,"blue":0.7647058823529411,"alpha":1},{"red":0.9019607843137255,"green":0.9333333333333333,"blue":0.611764705882353,"alpha":1},{"red":0.8627450980392157,"green":0.9058823529411765,"blue":0.4588235294117647,"alpha":1},{"red":0.8313725490196078,"green":0.8823529411764706,"blue":0.3411764705882353,"alpha":1},{"red":0.7529411764705882,"green":0.792156862745098,"blue":0.2,"alpha":1},{"red":0.6862745098039216,"green":0.7058823529411764,"blue":0.16862745098039217,"alpha":1},{"red":0.6196078431372549,"green":0.615686274509804,"blue":0.1411764705882353,"alpha":1},{"red":0.5098039215686274,"green":0.4666666666666667,"blue":0.09019607843137255,"alpha":1},{"red":0.9568627450980391,"green":1,"blue":0.5058823529411764,"alpha":1},{"red":0.9333333333333333,"green":1,"blue":0.2549019607843137,"alpha":1},{"red":0.7764705882352941,"green":1,"blue":0,"alpha":1},{"red":0.6823529411764706,"green":0.9176470588235294,"blue":0,"alpha":1},{"red":1,"green":0.9215686274509803,"blue":0.23137254901960785,"alpha":1},{"red":1,"green":0.9921568627450981,"blue":0.9058823529411765,"alpha":1},{"red":1,"green":0.9764705882352941,"blue":0.7686274509803921,"alpha":1},{"red":1,"green":0.9607843137254902,"blue":0.615686274509804,"alpha":1},{"red":1,"green":0.9450980392156862,"blue":0.4627450980392157,"alpha":1},{"red":1,"green":0.9333333333333333,"blue":0.34509803921568627,"alpha":1},{"red":0.9921568627450981,"green":0.8470588235294118,"blue":0.20784313725490194,"alpha":1},{"red":0.984313725490196,"green":0.7529411764705882,"blue":0.1764705882352941,"alpha":1},{"red":0.9764705882352941,"green":0.6588235294117647,"blue":0.14509803921568626,"alpha":1},{"red":0.9607843137254902,"green":0.4980392156862745,"blue":0.09019607843137255,"alpha":1},{"red":1,"green":1,"blue":0.5529411764705883,"alpha":1},{"red":1,"green":1,"blue":0,"alpha":1},{"red":1,"green":0.9176470588235294,"blue":0,"alpha":1},{"red":1,"green":0.8392156862745098,"blue":0,"alpha":1},{"red":1,"green":0.7568627450980392,"blue":0.027450980392156862,"alpha":1},{"red":1,"green":0.9725490196078431,"blue":0.8823529411764706,"alpha":1},{"red":1,"green":0.9254901960784314,"blue":0.7019607843137254,"alpha":1},{"red":1,"green":0.8784313725490196,"blue":0.5098039215686274,"alpha":1},{"red":1,"green":0.8352941176470589,"blue":0.30980392156862746,"alpha":1},{"red":1,"green":0.792156862745098,"blue":0.1568627450980392,"alpha":1},{"red":1,"green":0.7019607843137254,"blue":0,"alpha":1},{"red":1,"green":0.6274509803921569,"blue":0,"alpha":1},{"red":1,"green":0.5607843137254902,"blue":0,"alpha":1},{"red":1,"green":0.43529411764705883,"blue":0,"alpha":1},{"red":1,"green":0.8980392156862745,"blue":0.4980392156862745,"alpha":1},{"red":1,"green":0.8431372549019608,"blue":0.25098039215686274,"alpha":1},{"red":1,"green":0.7686274509803921,"blue":0,"alpha":1},{"red":1,"green":0.6705882352941176,"blue":0,"alpha":1},{"red":1,"green":0.596078431372549,"blue":0,"alpha":1},{"red":1,"green":0.9529411764705882,"blue":0.8784313725490196,"alpha":1},{"red":1,"green":0.8784313725490196,"blue":0.6980392156862745,"alpha":1},{"red":1,"green":0.8,"blue":0.5019607843137255,"alpha":1},{"red":1,"green":0.7176470588235294,"blue":0.30196078431372547,"alpha":1},{"red":1,"green":0.6549019607843137,"blue":0.14901960784313725,"alpha":1},{"red":0.984313725490196,"green":0.5490196078431373,"blue":0,"alpha":1},{"red":0.9607843137254902,"green":0.48627450980392156,"blue":0,"alpha":1},{"red":0.9372549019607843,"green":0.4235294117647059,"blue":0,"alpha":1},{"red":0.9019607843137255,"green":0.3176470588235294,"blue":0,"alpha":1},{"red":1,"green":0.8196078431372549,"blue":0.5019607843137255,"alpha":1},{"red":1,"green":0.6705882352941176,"blue":0.25098039215686274,"alpha":1},{"red":1,"green":0.5686274509803921,"blue":0,"alpha":1},{"red":1,"green":0.42745098039215684,"blue":0,"alpha":1},{"red":1,"green":0.3411764705882353,"blue":0.13333333333333333,"alpha":1},{"red":0.984313725490196,"green":0.9137254901960784,"blue":0.9058823529411765,"alpha":1},{"red":1,"green":0.8,"blue":0.7372549019607844,"alpha":1},{"red":1,"green":0.6705882352941176,"blue":0.5686274509803921,"alpha":1},{"red":1,"green":0.5411764705882353,"blue":0.396078431372549,"alpha":1},{"red":1,"green":0.4392156862745098,"blue":0.2627450980392157,"alpha":1},{"red":0.9568627450980391,"green":0.3176470588235294,"blue":0.11764705882352941,"alpha":1},{"red":0.9019607843137255,"green":0.2901960784313725,"blue":0.09803921568627451,"alpha":1},{"red":0.8470588235294118,"green":0.2627450980392157,"blue":0.08235294117647059,"alpha":1},{"red":0.7490196078431373,"green":0.21176470588235294,"blue":0.047058823529411764,"alpha":1},{"red":1,"green":0.6196078431372549,"blue":0.5019607843137255,"alpha":1},{"red":1,"green":0.43137254901960786,"blue":0.25098039215686274,"alpha":1},{"red":1,"green":0.2392156862745098,"blue":0,"alpha":1},{"red":0.8666666666666667,"green":0.17254901960784313,"blue":0,"alpha":1},{"red":0.6196078431372549,"green":0.6196078431372549,"blue":0.6196078431372549,"alpha":1},{"red":0.9803921568627451,"green":0.9803921568627451,"blue":0.9803921568627451,"alpha":1},{"red":0.9607843137254902,"green":0.9607843137254902,"blue":0.9607843137254902,"alpha":1},{"red":0.9333333333333333,"green":0.9333333333333333,"blue":0.9333333333333333,"alpha":1},{"red":0.8784313725490196,"green":0.8784313725490196,"blue":0.8784313725490196,"alpha":1},{"red":0.7411764705882353,"green":0.7411764705882353,"blue":0.7411764705882353,"alpha":1},{"red":0.4588235294117647,"green":0.4588235294117647,"blue":0.4588235294117647,"alpha":1},{"red":0.3803921568627451,"green":0.3803921568627451,"blue":0.3803921568627451,"alpha":1},{"red":0.2588235294117647,"green":0.2588235294117647,"blue":0.2588235294117647,"alpha":1},{"red":0.12941176470588234,"green":0.12941176470588234,"blue":0.12941176470588234,"alpha":1},{"red":0.3764705882352941,"green":0.49019607843137253,"blue":0.5450980392156862,"alpha":1},{"red":0.9254901960784314,"green":0.9372549019607843,"blue":0.9450980392156862,"alpha":1},{"red":0.8117647058823529,"green":0.8470588235294118,"blue":0.8627450980392157,"alpha":1},{"red":0.6901960784313725,"green":0.7450980392156863,"blue":0.7725490196078432,"alpha":1},{"red":0.5647058823529412,"green":0.6431372549019607,"blue":0.6823529411764706,"alpha":1},{"red":0.47058823529411764,"green":0.5647058823529412,"blue":0.611764705882353,"alpha":1},{"red":0.32941176470588235,"green":0.43137254901960786,"blue":0.4784313725490196,"alpha":1},{"red":0.27058823529411763,"green":0.3529411764705882,"blue":0.39215686274509803,"alpha":1},{"red":0.21568627450980393,"green":0.2784313725490196,"blue":0.30980392156862746,"alpha":1},{"red":0.14901960784313725,"green":0.19607843137254902,"blue":0.2196078431372549,"alpha":1},{"red":0.4745098039215686,"green":0.3333333333333333,"blue":0.2823529411764706,"alpha":1},{"red":0.9372549019607843,"green":0.9215686274509803,"blue":0.9137254901960784,"alpha":1},{"red":0.8431372549019608,"green":0.8,"blue":0.7843137254901961,"alpha":1},{"red":0.7372549019607844,"green":0.6666666666666666,"blue":0.6431372549019607,"alpha":1},{"red":0.6313725490196078,"green":0.5333333333333333,"blue":0.4980392156862745,"alpha":1},{"red":0.5529411764705883,"green":0.43137254901960786,"blue":0.38823529411764707,"alpha":1},{"red":0.42745098039215684,"green":0.2980392156862745,"blue":0.2549019607843137,"alpha":1},{"red":0.36470588235294116,"green":0.25098039215686274,"blue":0.21568627450980393,"alpha":1},{"red":0.3058823529411765,"green":0.20392156862745098,"blue":0.1803921568627451,"alpha":1},{"red":0.24313725490196078,"green":0.15294117647058825,"blue":0.13725490196078433,"alpha":1},{"red":0,"green":0,"blue":0,"alpha":1},{"red":1,"green":1,"blue":1,"alpha":1}]}
--------------------------------------------------------------------------------
/Palettes/sketch-default.sketchpalette:
--------------------------------------------------------------------------------
1 | {"compatibleVersion":"1.4","pluginVersion":"1.4","colors":[{"red":0.8156862745098039,"green":0.00784313725490196,"blue":0.10588235294117647,"alpha":1},{"red":0.9607843137254902,"green":0.6509803921568628,"blue":0.13725490196078433,"alpha":1},{"red":0.9725490196078431,"green":0.9058823529411765,"blue":0.10980392156862745,"alpha":1},{"red":0.5450980392156862,"green":0.3411764705882353,"blue":0.16470588235294117,"alpha":1},{"red":0.49411764705882355,"green":0.8274509803921568,"blue":0.12941176470588234,"alpha":1},{"red":0.2549019607843137,"green":0.4588235294117647,"blue":0.0196078431372549,"alpha":1},{"red":0.7411764705882353,"green":0.06274509803921569,"blue":0.8784313725490196,"alpha":1},{"red":0.5647058823529412,"green":0.07450980392156863,"blue":0.996078431372549,"alpha":1},{"red":0.2901960784313725,"green":0.5647058823529412,"blue":0.8862745098039215,"alpha":1},{"red":0.3137254901960784,"green":0.8901960784313725,"blue":0.7607843137254902,"alpha":1},{"red":0.7215686274509804,"green":0.9137254901960784,"blue":0.5254901960784314,"alpha":1},{"red":0,"green":0,"blue":0,"alpha":1},{"red":0.2901960784313725,"green":0.2901960784313725,"blue":0.2901960784313725,"alpha":1},{"red":0.6078431372549019,"green":0.6078431372549019,"blue":0.6078431372549019,"alpha":1},{"red":1,"green":1,"blue":1,"alpha":1}]}
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Sketch Palettes
2 |
3 | A Sketch plugin for exporting and importing fill presets. It supports colors, gradients, and Pattern fills.
4 |
5 |
6 |
7 | # Installation
8 |
9 | Move the Sketch Palettes plugin into your Plugins folder or double-click the .sketchplugin file.
10 |
11 | # Usage
12 |
13 | #### Saving Palettes
14 |
15 | You can save palettes from either the Global presets section or from the Document presets section of the color picker. You can also select which of the available fill types you'd like to include. The plugin supports colors, gradients, and pattern fills. Saving will create a .sketchpalette file at whatever location you choose.
16 |
17 | #### Loading Palettes
18 |
19 | Running the "Load Palette..." command in the plugin menu will allow you to choose a .sketchpalette file containg the presets you like to import. You can load palettes into either the Global presets section or into the Document presets section of the color picker. You can also select which of the available fill types you'd like to load. Fill presets will then be appended to the corresponding preset sections.
20 |
21 | #### Removing Palettes
22 |
23 | Select "Clear Palette..." to remove fill presets from either the Global presets or Document presets section of the color picker. You can select which fill types you'd like to clear.
24 |
25 | # Info & Feedback
26 |
27 | This plugin would not have been possible without the help of some other awesome people. Alan Dickinson was enormously helpful and implemented the long-standing feature request to support gradients, as well as some other nice enhancements and bug fixes. William O'Beirne helped with some of the trickier parts earlier on, like making sense of the class-dump of Sketch, to figure out how to use undocumented Sketch functionality. And Ale Muñoz lent a hand fixing bugs here and there.
28 |
29 | If you have any questions, find a bug, or have ideas for ways to improve the plugin, ping me on twitter: @andrewfiorillo
--------------------------------------------------------------------------------
/Sketch Palettes.sketchplugin/Contents/Sketch/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Sketch Palettes",
3 | "description": "A Sketch plugin for exporting and importing fill presets. It supports colors, gradients, and pattern fills.",
4 | "author": "Andrew Fiorillo",
5 | "homepage": "http://github.com/andrewfiorillo/sketch-palettes",
6 | "version": "2.22",
7 | "identifier": "com.andrewfiorillo.sketch.sketch-palettes",
8 | "compatibleVersion": "54.1",
9 | "bundleVersion": "2.0",
10 | "appcast": "https://raw.githubusercontent.com/andrewfiorillo/sketch-palettes/master/appcast.xml",
11 | "commands": [
12 | {
13 | "name": "Load Palette...",
14 | "identifier": "loadPalette",
15 | "shortcut": "",
16 | "script": "sketchPalettes.js",
17 | "handler": "loadPalette"
18 | },
19 | {
20 | "name": "Save Palette...",
21 | "identifier": "savePalette",
22 | "shortcut": "",
23 | "script": "sketchPalettes.js",
24 | "handler": "savePalette"
25 | },
26 | {
27 | "name": "Clear Palette...",
28 | "identifier": "clearPalette",
29 | "shortcut": "",
30 | "script": "sketchPalettes.js",
31 | "handler": "clearPalette"
32 | }
33 | ],
34 | "menu": {
35 | "items": [
36 | "loadPalette",
37 | "savePalette",
38 | "clearPalette"
39 | ]
40 | }
41 | }
--------------------------------------------------------------------------------
/Sketch Palettes.sketchplugin/Contents/Sketch/sketchPalettes.js:
--------------------------------------------------------------------------------
1 |
2 | @import "util.js";
3 |
4 |
5 | //-------------------------------------------------------------------------------------------------------------
6 | // Save palette
7 | //-------------------------------------------------------------------------------------------------------------
8 |
9 |
10 | function savePalette(context) {
11 |
12 | var doc = context.document;
13 | var app = NSApp.delegate();
14 | var version = context.plugin.version().UTF8String();
15 | var assets;
16 |
17 | // Preset sources
18 | var sources = [
19 | { name: "Global Presets", assets: MSPersistentAssetCollection.sharedGlobalAssets()},
20 | { name: "Document Presets", assets: doc.documentData().assets()},
21 | ];
22 | var sourceNames = [ sources[0].name, sources[1].name ];
23 | var libs = app.librariesController().availableLibraries();
24 |
25 | // Add presets from libraries, if any, to preset sources
26 | if (libs.length > 0) {
27 | sourceNames.push("--");
28 | for (var i = 0; i < libs.length; i++) {
29 | var libAssets = libs[i].document().assets();
30 | if (libAssets.colorAssets().length > 0 || libAssets.gradientAssets().length > 0) {
31 | sources.push({ name: libs[i].name(), assets: libAssets });
32 | sourceNames.push(libs[i].name())
33 | }
34 | }
35 | }
36 |
37 | // Create dialog
38 | var dialog = NSAlert.alloc().init();
39 | dialog.setMessageText("Save Palette");
40 | dialog.addButtonWithTitle("Save");
41 | dialog.addButtonWithTitle("Cancel");
42 |
43 | // Create custom view and fields
44 | var customView = NSView.alloc().initWithFrame(NSMakeRect(0, 0, 200, 180));
45 |
46 | var labelSource = createLabel(NSMakeRect(0, 150, 200, 25), 12, false, 'Source:');
47 | customView.addSubview(labelSource);
48 |
49 | var selectSource = createSelect(NSMakeRect(0, 125, 200, 25), sourceNames)
50 | customView.addSubview(selectSource);
51 |
52 | var labelFillTypes = createLabel(NSMakeRect(0, 83, 200, 25), 12, false, 'Fill Types:');
53 | customView.addSubview(labelFillTypes);
54 |
55 | var checkboxColors = createCheckbox(NSMakeRect(0, 60, 200, 25), "Flat Colors", "colors", true, true);
56 | customView.addSubview(checkboxColors);
57 |
58 | var checkboxGradients = createCheckbox(NSMakeRect(0, 37, 200, 25), "Gradients", "gradients", true, true);
59 | customView.addSubview(checkboxGradients);
60 |
61 | var checkboxImages = createCheckbox(NSMakeRect(0, 14, 200, 25), "Pattern Fills", "images", true, true);
62 | customView.addSubview(checkboxImages);
63 |
64 | // Set checkboxes to disabled if no presets exist in selected section
65 | function setCheckboxStates(selectSource) {
66 |
67 | // var assets;
68 | for (var i = 0; i < sources.length; i++) {
69 | if (selectSource.titleOfSelectedItem() == sources[i].name) {
70 | assets = sources[i].assets;
71 | }
72 | }
73 |
74 | var showColors = (assets.colorAssets().length > 0 ? true : false);
75 | checkboxColors.setState(showColors ? NSOnState : NSOffState);
76 | checkboxColors.setEnabled(showColors);
77 |
78 | var showGradients = (assets.gradientAssets().length > 0 ? true : false);
79 | checkboxGradients.setState(showGradients ? NSOnState : NSOffState);
80 | checkboxGradients.setEnabled(showGradients);
81 |
82 | var showImages = (assets.images().length > 0 ? true : false);
83 | checkboxImages.setState(showImages ? NSOnState : NSOffState);
84 | checkboxImages.setEnabled(showImages);
85 | }
86 |
87 | // set initial chekcbox states
88 | setCheckboxStates(selectSource);
89 |
90 | // Listen for select box change event
91 | selectSource.setCOSJSTargetFunction(function(sender) {
92 | setCheckboxStates(selectSource)
93 | });
94 |
95 | // Add custom view to dialog
96 | dialog.setAccessoryView(customView);
97 |
98 | // Open dialog and exit if user selects Cancel
99 | if (dialog.runModal() != NSAlertFirstButtonReturn) {
100 | return;
101 | }
102 |
103 | // Get Presets from selected section
104 | // if (selectSource.indexOfSelectedItem() == 0) {
105 | // assets = doc.documentData().assets();
106 | // } else if (selectSource.indexOfSelectedItem() == 1) {
107 | // assets = MSPersistentAssetCollection.sharedGlobalAssets();
108 | // }
109 |
110 | var colorAssets = checkboxColors.state() ? assets.colorAssets() : [];
111 | var gradientAssets = checkboxGradients.state() ? assets.gradientAssets() : [];
112 | var images = checkboxImages.state() ? assets.images() : [];
113 |
114 | // Check to make sure there are presets available
115 | if (colorAssets.length <= 0 && images.length <= 0 && gradientAssets.length <= 0) {
116 | NSApp.displayDialog("No presets available!");
117 | return;
118 | }
119 |
120 | // Create save dialog and set properties
121 | var save = NSSavePanel.savePanel();
122 | save.setNameFieldStringValue("untitled.sketchpalette");
123 | save.setAllowedFileTypes(["sketchpalette"]);
124 | save.setAllowsOtherFileTypes(false);
125 | save.setExtensionHidden(false);
126 |
127 | // Open save dialog and run if Save was clicked
128 | if (save.runModal()) {
129 |
130 | // Build palettes
131 | var colorPalette = [], gradientPalette = [], imagePalette = [];
132 |
133 | // Colors
134 | for (var i = 0; i < colorAssets.length; i++) {
135 | var colorName = colorAssets[i].name() ? colorAssets[i].name().UTF8String() : null
136 | colorPalette.push({
137 | name: colorName,
138 | red: colorAssets[i].color().red(),
139 | green: colorAssets[i].color().green(),
140 | blue: colorAssets[i].color().blue(),
141 | alpha: colorAssets[i].color().alpha()
142 | });
143 | }
144 |
145 | // Pattern fills
146 | for (var i = 0; i < images.length; i++) {
147 | var data = images[i].data()
148 | var nsdata = NSData.dataWithData(data);
149 | var base64Color = nsdata.base64EncodedStringWithOptions(0).UTF8String();
150 | imagePalette.push({data: base64Color});
151 | }
152 |
153 | // Gradients
154 | for (var i = 0; i < gradientAssets.length; i++) {
155 | var gradient_stops = [];
156 | for (var j = 0; j < gradientAssets[i].gradient().stops().length; j++) {
157 | stop_color = {
158 | _class: "color",
159 | red: gradientAssets[i].gradient().stops()[j].color().red(),
160 | green: gradientAssets[i].gradient().stops()[j].color().green(),
161 | blue: gradientAssets[i].gradient().stops()[j].color().blue(),
162 | alpha: gradientAssets[i].gradient().stops()[j].color().alpha()
163 | };
164 | gradient_stops.push({
165 | _class: "gradientStop",
166 | color: stop_color,
167 | position: gradientAssets[i].gradient().stops()[j].position()
168 | });
169 | }
170 | var gradientName = gradientAssets[i].name() ? gradientAssets[i].name().UTF8String() : null
171 | gradientPalette.push({
172 | name: gradientName,
173 | _class: "gradient",
174 | elipseLength: gradientAssets[i].gradient().elipseLength(),
175 | from: "{" + gradientAssets[i].gradient().from().x + "," + gradientAssets[i].gradient().from().y + "}",
176 | to: "{" + gradientAssets[i].gradient().to().x + "," + gradientAssets[i].gradient().to().y + "}",
177 | stops: gradient_stops,
178 | gradientType: gradientAssets[i].gradient().gradientType()
179 | // shouldSmoothenOpacity: gradients[i].shouldSmoothenOpacity() ? true : false
180 | });
181 | }
182 |
183 | // Assemble file contents
184 |
185 | var fileData = {
186 | "compatibleVersion": "2.0", // min plugin version to load palette
187 | "pluginVersion": version, // plugin version used to save palette
188 | "colors": colorPalette,
189 | "gradients": gradientPalette,
190 | "images": imagePalette
191 | };
192 |
193 | // Write file to chosen file path
194 |
195 | var filePath = save.URL().path();
196 | var file = NSString.stringWithString(JSON.stringify(fileData));
197 |
198 | file.writeToFile_atomically_encoding_error(filePath, true, NSUTF8StringEncoding, null);
199 |
200 | }
201 | }
202 |
203 |
204 | //-------------------------------------------------------------------------------------------------------------
205 | // Load palette
206 | //-------------------------------------------------------------------------------------------------------------
207 |
208 |
209 | function loadPalette(context) {
210 |
211 | var app = NSApp.delegate();
212 | var doc = context.document;
213 | var version = context.plugin.version().UTF8String();
214 | var fileTypes = ["sketchpalette"];
215 |
216 | // Open file picker to choose palette file
217 | var open = NSOpenPanel.openPanel();
218 | open.setAllowedFileTypes(fileTypes);
219 | open.setCanChooseDirectories(true);
220 | open.setCanChooseFiles(true);
221 | open.setCanCreateDirectories(true);
222 | open.setTitle("Choose a file");
223 | open.setPrompt("Choose");
224 | open.runModal();
225 |
226 | // Read contents of file into NSString, then to JSON
227 | var filePath = open.URLs().firstObject().path();
228 | var fileContents = NSString.stringWithContentsOfFile(filePath);
229 | var paletteContents = JSON.parse(fileContents.toString());
230 | var compatibleVersion = paletteContents.compatibleVersion;
231 |
232 | // Check for presets in file, else set to empty array
233 | var colorPalette = paletteContents.colors ? paletteContents.colors : [];
234 | var gradientPalette = paletteContents.gradients ? paletteContents.gradients : [];
235 | var imagePalette = paletteContents.images ? paletteContents.images : [];
236 | var colorAssets = [], gradientAssets = [], images = [];
237 |
238 | // Check if plugin is out of date and incompatible with a newer palette version
239 | if (compatibleVersion && compatibleVersion > version) {
240 | NSApp.displayDialog("Your plugin is out of date. Please update to the latest version of Sketch Palettes.");
241 | return;
242 | }
243 |
244 | // Check for older hex code palette version
245 | if (!compatibleVersion || compatibleVersion < 1.4) {
246 | // Convert hex colors to MSColors
247 | for (var i = 0; i < colorPalette.length; i++) {
248 | colors.push(MSImmutableColor.colorWithSVGString(colorPalette[i]).newMutableCounterpart());
249 | }
250 | } else {
251 |
252 | // Colors Fills: convert rgba colors to MSColors
253 | if (colorPalette.length > 0) {
254 | for (var i = 0; i < colorPalette.length; i++) {
255 | var colorName = colorPalette[i].name ? colorPalette[i].name : null;
256 | var mscolor = MSColor.colorWithRed_green_blue_alpha(
257 | colorPalette[i].red,
258 | colorPalette[i].green,
259 | colorPalette[i].blue,
260 | colorPalette[i].alpha
261 | );
262 | colorAssets.push(MSColorAsset.alloc().initWithAsset_name(mscolor, colorName));
263 | }
264 | }
265 |
266 | // Pattern Fills: convert base64 strings to MSImageData objects
267 | if (imagePalette.length > 0) {
268 | for (var i = 0; i < imagePalette.length; i++) {
269 | var nsdata = NSData.alloc().initWithBase64EncodedString_options(imagePalette[i].data, 0);
270 | var nsimage = NSImage.alloc().initWithData(nsdata);
271 | // var msimage = MSImageData.alloc().initWithImageConvertingColorSpace(nsimage);
272 | var msimage = MSImageData.alloc().initWithImage(nsimage);
273 | images.push(msimage);
274 | };
275 | }
276 |
277 | // Gradient Fills: build MSGradientStop and MSGradient objects
278 | if (gradientPalette.length > 0) {
279 | for (var i = 0; i < gradientPalette.length; i++) {
280 |
281 | // Create gradient stops
282 | var gradient = gradientPalette[i];
283 | var stops = [];
284 | for (var j = 0; j < gradient.stops.length; j++) {
285 | var color = MSColor.colorWithRed_green_blue_alpha(
286 | gradient.stops[j].color.red,
287 | gradient.stops[j].color.green,
288 | gradient.stops[j].color.blue,
289 | gradient.stops[j].color.alpha
290 | );
291 | stops.push(MSGradientStop.stopWithPosition_color_(gradient.stops[j].position, color));
292 | }
293 |
294 | // Create gradient object and set basic properties
295 | var msgradient = MSGradient.new();
296 | msgradient.setGradientType(gradient.gradientType);
297 | // msgradient.shouldSmoothenOpacity = gradient.shouldSmoothenOpacity;
298 | msgradient.elipseLength = gradient.elipseLength;
299 | msgradient.setStops(stops);
300 |
301 | // Parse From and To values into arrays e.g.: from: "{0.1,-0.43}" => fromValue = [0.1, -0.43]
302 | var fromValue = gradient.from.slice(1,-1).split(",");
303 | var toValue = gradient.to.slice(1,-1).split(",");
304 |
305 | // Set CGPoint objects as From and To values
306 | msgradient.setFrom({ x: fromValue[0], y: fromValue[1] });
307 | msgradient.setTo({ x: toValue[0], y: toValue[1] });
308 |
309 | var gradientName = gradientPalette[i].name ? gradientPalette[i].name : null;
310 | gradientAssets.push(MSGradientAsset.alloc().initWithAsset_name(msgradient, gradientName));
311 |
312 | }
313 | }
314 |
315 | }
316 |
317 | // Create dialog
318 | var dialog = NSAlert.alloc().init();
319 | dialog.setMessageText("Load Palette");
320 | dialog.addButtonWithTitle("Load");
321 | dialog.addButtonWithTitle("Cancel");
322 |
323 | // Create custom view and fields
324 | var customView = NSView.alloc().initWithFrame(NSMakeRect(0, 0, 200, 180));
325 |
326 | var labelSource = createLabel(NSMakeRect(0, 150, 200, 25), 12, false, 'Source:');
327 | customView.addSubview(labelSource);
328 |
329 | var selectSource = createSelect(NSMakeRect(0, 125, 200, 25), ["Document Presets", "Global Presets"])
330 | customView.addSubview(selectSource);
331 |
332 | var labelFillTypes = createLabel(NSMakeRect(0, 83, 200, 25), 12, false, 'Fill Types:');
333 | customView.addSubview(labelFillTypes);
334 |
335 | var showColors = (colorPalette.length > 0) ? true : false);
336 | var checkboxColors = createCheckbox(NSMakeRect(0, 60, 200, 25), "Flat Colors", "colors", showColors, showColors);
337 | customView.addSubview(checkboxColors);
338 |
339 | var showGradients = (gradientPalette.length > 0) ? true : false);
340 | var checkboxGradients = createCheckbox(NSMakeRect(0, 37, 200, 25), "Gradients", "gradients", showGradients, showGradients);
341 | customView.addSubview(checkboxGradients);
342 |
343 | var showImages = (imagePalette.length > 0 ? true : false);
344 | var checkboxImages = createCheckbox(NSMakeRect(0, 14, 200, 25), "Pattern Fills", "images", showImages, showImages);
345 | customView.addSubview(checkboxImages);
346 |
347 | // Add custom view to dialog
348 | dialog.setAccessoryView(customView);
349 |
350 | // Open dialog and exit if user hits cancel.
351 | if (dialog.runModal() != NSAlertFirstButtonReturn) return;
352 |
353 | // Get target picker section
354 | if (selectSource.indexOfSelectedItem() == 0) {
355 | var assets = doc.documentData().assets();
356 | } else if (selectSource.indexOfSelectedItem() == 1) {
357 | var assets = MSPersistentAssetCollection.sharedGlobalAssets();
358 | }
359 |
360 | // Append presets
361 | if (colorAssets.length > 0) assets.addColorAssets(colorAssets);
362 | if (images.length > 0) assets.setImages(assets.images().slice().concat(images));
363 | if (gradientAssets.length > 0) assets.addGradientAssets(gradientAssets);
364 |
365 | doc.inspectorController().reload();
366 | app.refreshCurrentDocument();
367 |
368 | }
369 |
370 |
371 | //-------------------------------------------------------------------------------------------------------------
372 | // Clear palette
373 | //-------------------------------------------------------------------------------------------------------------
374 |
375 |
376 | function clearPalette(context) {
377 |
378 | var doc = context.document;
379 | var selection = context.selection;
380 | var app = NSApp.delegate();
381 | var version = context.plugin.version().UTF8String();
382 |
383 | // Create dialog
384 | var dialog = NSAlert.alloc().init();
385 | dialog.setMessageText("Clear Palette");
386 | dialog.addButtonWithTitle("Clear");
387 | dialog.addButtonWithTitle("Cancel");
388 |
389 | // Create view to hold custom fields
390 | var customView = NSView.alloc().initWithFrame(NSMakeRect(0, 0, 200, 180));
391 |
392 | var labelSource = createLabel(NSMakeRect(0, 150, 200, 25), 12, false, 'Source:');
393 | customView.addSubview(labelSource);
394 |
395 | var selectSource = createSelect(NSMakeRect(0, 125, 200, 25), ["Document Presets", "Global Presets"])
396 | customView.addSubview(selectSource);
397 |
398 | var labelFillTypes = createLabel(NSMakeRect(0, 83, 200, 25), 12, false, 'Fill Types:');
399 | customView.addSubview(labelFillTypes);
400 |
401 | var checkboxColors = createCheckbox(NSMakeRect(0, 60, 200, 25), "Flat Colors", "colors", true, true);
402 | customView.addSubview(checkboxColors);
403 |
404 | var checkboxGradients = createCheckbox(NSMakeRect(0, 37, 200, 25), "Gradients", "colors", true, true);
405 | customView.addSubview(checkboxGradients);
406 |
407 | var checkboxImages = createCheckbox(NSMakeRect(0, 14, 200, 25), "Pattern Fills", "images", true, true);
408 | customView.addSubview(checkboxImages);
409 |
410 | // Add custom view to dialog
411 | dialog.setAccessoryView(customView);
412 |
413 | // Open dialog and exit if user hits cancel.
414 | if (dialog.runModal() != NSAlertFirstButtonReturn) return;
415 |
416 | // Get target picker section
417 | if (selectSource.indexOfSelectedItem() == 0) {
418 | var assets = doc.documentData().assets();
419 | } else if (selectSource.indexOfSelectedItem() == 1) {
420 | var assets = MSPersistentAssetCollection.sharedGlobalAssets();
421 | }
422 |
423 | // Clear presets in chosen sections
424 | if (checkboxColors.state()) assets.setColorAssets([]);
425 | if (checkboxImages.state()) assets.setImages([]);
426 | if (checkboxGradients.state()) assets.setGradientAssets([]);
427 |
428 | doc.inspectorController().reload();
429 | app.refreshCurrentDocument();
430 |
431 | }
432 |
--------------------------------------------------------------------------------
/Sketch Palettes.sketchplugin/Contents/Sketch/util.js:
--------------------------------------------------------------------------------
1 |
2 | function rect(x,y,w,h) {
3 | var rect = NSMakeRect(x,y,w,h)
4 | return rect;
5 | }
6 |
7 | function createLabel(frame, size, bold, text) {
8 | var label = NSTextField.alloc().initWithFrame(frame);
9 | label.setStringValue(text);
10 | label.setBezeled(false);
11 | label.setDrawsBackground(false);
12 | label.setEditable(false);
13 | label.setSelectable(false);
14 | if (bold) {
15 | label.setFont(NSFont.boldSystemFontOfSize(size));
16 | }
17 | else {
18 | label.setFont(NSFont.systemFontOfSize(size));
19 | }
20 | return label;
21 | }
22 |
23 |
24 | function createSelect(frame, items) {
25 | var select = NSPopUpButton.alloc().initWithFrame(frame);
26 | for (var i = 0; i < items.length; i++) {
27 | if (items[i] == "--") {
28 | select.menu().addItem(NSMenuItem.separatorItem())
29 | } else {
30 | select.addItemWithTitle(items[i])
31 | }
32 | }
33 | return select;
34 | }
35 |
36 |
37 | function createCheckbox(frame, name, value, onstate, enabled) {
38 | var checkbox = NSButton.alloc().initWithFrame(frame);
39 | checkbox.setButtonType(NSSwitchButton);
40 | // checkbox.setBezelStyle(1);
41 | checkbox.setTitle(name);
42 | checkbox.setTag(value);
43 | checkbox.setState(onstate ? NSOnState : NSOffState);
44 | checkbox.setEnabled(enabled);
45 | return checkbox;
46 | }
--------------------------------------------------------------------------------
/appcast.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Sketch Palettes
5 | http://sparkle-project.org/files/sparkletestcast.xml
6 | A Sketch plugin for exporting and importing fill presets. It supports colors, gradients, and pattern fills.
7 | en
8 | -
9 | Version 2.22
10 |
11 |
13 | Popover now stays open and updates to automatically show new presets when a palette is loaded
14 |
15 | ]]>
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/palettes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andrewfiorillo/sketch-palettes/5b6bfa6eb25cb3244a9e6a226df259e8fb31fc2c/palettes.png
--------------------------------------------------------------------------------