GithubHelp home page GithubHelp logo

at-import / toolkit Goto Github PK

View Code? Open in Web Editor NEW
910.0 58.0 69.0 1.13 MB

Toolkit for Responsive Web Design and Progressive Enhancement with Compass

License: Other

Ruby 4.77% CSS 92.44% HTML 0.12% JavaScript 2.66%

toolkit's Introduction

Toolkit Gem Version Build Status

Think of Toolkit as your swiss army knife for modern design and development. Those little bits and bobs that make your life easy and you want to reuse throughout projects but never really had a place to put? They're here, and they're designed to make your life happy. Toolkit is broken out into individual pieces, so grab what you want, grab what you need, or grab the lot; the choice is yours.

Table of Contents

  1. Basics
  1. Art
  2. Clearfix
  3. Colors
  1. DRY Mixins
  2. Font Helpers
  1. Intrinsic Ratios
  2. Kickstart
  3. Nested Context
  4. Parallax
  5. Reset
  6. RTL
  7. Settings
  8. Triangles
  9. Center
  10. Viewport
  11. Underline
  12. Target
  13. Set Multiple

Basics

Working with, and understanding how, Toolkit is fairly easy as long as you keep the following in mind:

Requirements

Toolkit is a Sass plugin available both as a Compass Extension or as Bower Package. To use, make sure you have Sass installed. Any Sass compiler that is feature-compatible with Sass 3.3 can be used with Toolkit, so feel free to use whatever you feel is best!

Installation

To install as a Compass extension, add the following to your Gemfile:

gem 'toolkit', '~>2.0'

Then, add require 'toolkit' to your config.rb file and @import "toolkit"; to your Sass file.

To install as a Bower package, run the following:

bower install sass-toolkit --save-dev

Even as an Eyeglass module!

npm install sass-toolkit --save-dev

Changing Settings

All of Toolkit's settings can be changed with a simple mixin. Whenever you would like to change a default, include the following mixin, and from then on out, whenever that default is needed, the value you've changed it to will be used:

@include toolkit-set('setting', value);

Extends

Where appropriate, Toolkit mixins provide an $extend option to allow the shared output of a mixin to be set to an extendable class instead of duplicating the properties. Toolkit is super smart about this and will create the extendable class in place where you first call the mixin, allowing you to not worry about blowing up your cascade if you use it. All mixins that have an extend setting can have a portion of their mixin extended. By default, mixins won't extend, but you can change that by changing their global setting or by passing $extend: true to the mixin.

Documentation Format

Each mixin/function definition looks like the following:

@include clearfix([$extend])

Settings

  • 'clearfix extend': false

Mixins start with @include, functions don't. Variables in [brackets] are optional. Settings are global setting variables that provide the defaults for optional variables, with their default.

Art

Create pixel art using CSS Box Shadows! Simply write a string with x for where you'd like a pixel, and where you wouldn't. When you want a new line, simply write \n. The "pixel" size is the size of one pixel and doesn't have to be px. Border radius will apply to each "pixel", as will color.

@include art($art[, $px-size, $color, $radius])

  • 'art pixel size': 1px
  • 'art color': black
  • 'art border radius': 0%

Clearfix

Use a clearfix to ensure a parent element that contains floated children encompasses its children. Toolkit's clearfix is a modern clearfix.

@include clearfix([$extend])

Settings

  • 'clearfix extend': false

Colors

Sass comes with a slew of great color functions, made even better by color schemer, but there are a few handy things missing to make working with groups of colors easier

Tint and Shade

While Sass's built in lighten and darken functions are great if you're looking not to change the base color, they aren't what designers think of when they think of lightening or darkening a color. The mental model for those is actually mixing white or black to lighten or darken a color. So, like so many others, we have a tint and shade function that will do just that. Simply pass the color and the amount you want. For instance, if you wanted a red that was 25% lighter or darker than the standard CSS red, you'd do one of the followings:

@include tint($color, $amount)

Settings

  • 'tint color': #fff

@include shade($color, $amount)

Settings

  • 'shade color': #000

Luma

Luma represented the brightness in an image (the "black-and-white" or achromatic portion of the image). As human vision is much more sensitive to luminance ("black and white") than it is to chromatic differences ("colors"), luma provides an effective means of determining how a human will react to the relative brightness of a color. The Luma functions are based on the conversion to the YIQ color space, with Y being luma (also, the only component used in black-and-white televisions). The luma function provided will return the luma value for a color, and the additional helpers can be used for common tasks related to luma, such as if one color's luma is greater than and equal to or less than or equal to a second colors, and the difference between two colors' luma.

@include luma($color)

@include luma-gte($color1, $color2)

@include luma-lte($color1, $color2)

@include luma-diff($color1, $color2)

Color Stacks

One technique for working with color that is very useful is to create color stacks that get either lighter or darker as they go, allowing me to easily create full color pallets with only a handful of base colors and then only needing to remember those base colors. These are called color stacks, and making them with Toolkit is super easy. A sample color stack, if written by hand, may look something like the following:

$red: red, #ff3f3f, #ff7f7f, #ffbfbf, #ffd8d8, #fff2f2;

This is a color stack for red that gets tinted as it goes (25%, 50%, 75%, 85%, 90%). To make figuring these out easier, there is the color-stack function that takes two required parameters, the main color you want to use and the secondary color you want to use (in the case of shading red, the main color would be red and the secondary color would be black), and a variable number of arguments of what percent you want them mixed. Tint stacks, shade stacks, and tint to shade stacks are also available.

@include color-shade($main, $secondary [, $amounts...])

Settings

  • 'color stack amounts': 25% 50% 75% 85% 90%

@include tint-stack($main [, $amounts...])

Settings

  • 'tint color': #fff
  • 'color stack amounts': 25% 50% 75% 85% 90%

@include shade-stack($main [, $amounts...])

Settings

  • 'shade color': #000
  • 'color stack amounts': 25% 50% 75% 85% 90%

@include tint-shade-stack($main [, $amounts...])

Settings

  • 'tint color': 75% 50% 25%
  • 'shade color': #000
  • 'tint shade amounts': 75% 50% 25%

Color Scales

Color scales allow you to step from one color to another in even steps. Color scale will scale your first color to your second color evenly by hue, saturation, lightness, and alpha. Hue will take the fastest path around the color wheel

@include color-scale($main, $secondary [, $steps...])

Settings

  • 'color scale steps': 6

DRY Mixins

The pattern that inspired the A List Apart article DRY-ing Out Your Sass Mixins, now available for you to use in your projects! The full writeup on the why can be found in the article, and examples can be found all throughout Toolkit.

@include dynamic-extend($id) { @content }

The dynamic-extend mixin is the core mixin for dynamically creating placeholder selectors and extending them directly.

@include mixin-dryer($id [,$extend: true]) { @content }

The mixin-dryer mixin is a one-stop-shop mixin for working with the whole pattern. It wraps the contents of the static portion of the pattern into a single mixin. If you don't think someone would want to use the static mixin on its own, simply drop mixin-dryer into your core mixin and you're good to go! The button example from A List Apart can be written with this mixin as follows:

@mixin button($color, $extend: true) {
  background-color: $color;
  border-color: mix(black, $color, 25%);

  &:hover {
    background-color: mix(black, $color, 15%);
    border-color: mix($black, $color, 40%);
  }

  @include mixin-dryer('button', $extend) {
    border: 1px solid;
    border-radius: 5px;
    padding: .25em .5em;

    &:hover {
      cursor: pointer;
    }
  }
}

Font Helpers

Web fonts are absolutely awesome, but working with them can be a bit tricky. Ligatures are super powerful and make fonts that that support them even more beautiful, but aren't on by default. Webfonts are awesome, but you need to wait for them to download and that can cause a Flash of Unstyled Text, which can be jarring and unpleasant. Toolkit provides some tools to ease this.

Enable Ligatures

A simple mixin to enable ligatures

@include enable-ligatures([$extend])

Settings

  • 'ligature extend': false

Font Face

A mixin to make writing @font-face declarations easy. $files should be a map where the key is the file extensions and the value is the path. If using Compass, paths should be relative to your font directory (fonts_dir in config.rb). If Compass is available, this mixin can inline the woff file, thus caching it with your CSS

@include font-face($name, $files [, $weight, $style, $inline-woff])

Settings

  • 'font face weight': normal
  • 'font face style': normal
  • 'font face inline woff': false

Icon Font

A mixin for applying a core set of styling for icon fonts, based on styling form fonts generated by Icomoon. Setting $speak: false will optionally apply the speak: none property.

@include icon-font($font-stack, [, $speak, $extend])

Settings

  • 'icon font speak': false
  • 'icon font extend': false

Content Fade In

One of the big challenges of working with webfonts is the Flash of Unstyled Text. It happens when webfonts get applied after content is already rendered on the page, usually causing a jarring jump when they are. To help combat this, Google and Typekit teamed up to create WebFont Loader, a JavaScript library to add Font Events that you can hook in to using CSS and JavaScript to know whether your webfonts are loading, have successfully loaded, or have failed to load. As Typekit suggests, these can be utilized to more effectively take control over your staying and prevent FOUT. The content-fade-in mixin will set your content to a 0 opacity (allowing the page to paint correctly even while it's not visible) and when a loading class has been removed, will fade your content in to an opacity of 1.

@include content-fade-in([$duration, $loading, $extend])

Settings

  • 'fade in duration': 1s
  • 'fade in loading class': '.wf-loading'
  • 'fade in extend': false

Intrinsic Ratios

What is an intrinsic ratio you may ask? Well Thierry Koblentz wrote a great A List Apart article explaining it all in great detail; go read it. In a nutshell, however, it's a way to force any child elements to fluidly scale at a given ratio, including videos and frames, making awesome responsive happiness. If you just want to change the ratio, use the intrinsic-ratio-ratio mixin.

@include intrinsic-ratio([$ratio, $width, $elements, $position, $extend])

@include ir([$ratio, $width, $elements, $position, $extend])

Settings

  • 'intrinsic ratio': 16/9
  • 'intrinsic ratio width': 100%
  • 'intrinsic ratio elements': '> *'
  • 'intrinsic ratio position': top
  • 'intrinsic ratio extend': false

@include intrinsic-ratio-ratio([$ratio, $width, $position])

@include ir-ratio([$ratio, $width, $position])

Settings

  • 'intrinsic ratio': 16/9
  • 'intrinsic ratio width': 100%
  • 'intrinsic ratio position': top

Kickstart

Importing the kickstart partial with @import "toolkit/kickstart"; will add the following common styles to your project:

html {
  -moz-box-sizing: border-box;
       box-sizing: border-box;
}

*, *:before, *:after {
  box-sizing: inherit;
}

embed,
img,
object,
video {
  max-width: 100%;
  height: auto;
}

Nested Context

Sometimes we may be inside of an element but need something the width of its parent.

Basic nested context

This is easy with fixed widths because then we can just make the child the width we want it but percentages change with each new context. With just a little bit of math we can pretty easily figure out what context we are in and it is condensed in the nested-context() function. Simply write how wide your current container is and it will figure out how wide it’s parent is like nested-context(30%) will give you a percentage to match the parent. Sometimes you are multiple levels deep and in that case, you can just list the levels nested-context(80% 60% 33%) and result in a percentage matching that of the 3rd parent up. See the nested context and centered nested context examples.

nested-context([$contexts])

Settings

  • 'nested context contexts': 100%

@include nested-context([$contexts, $position])

Settings

  • 'nested context contexts': 100%
  • 'nested context position': left

Parallax

The concept of the parallax effect is simple, things closer to the viewer move faster while things further away move slower. Leveraging 3D transforms, this effect can be implemented without any JavaScript. You need to initialize your parallax container before being able to parallax an item. By default iOS parallax is on but setting it to false will turn on smooth scrolling within that element and no parallax effect will be shown.

The parallax mixin puts elements into real perspective and scales them back down to 100% so images and text will not have any distortion. Items will shift both vertically and horizontally in layouts to achieve the appropriate perspective. With @include init(), if $element: this, the current element will be initialized; if $element: '.class'|'#id', the respective element will be placed at the root of the stylesheet (not nested under the current selector). @include init() can be called from the root of your stylesheet.

@include parallax-init([$perspective, $element, $parallax-ios])

Settings

  • 'parallax perspective': 1
  • 'parallax element': 'body'
  • 'parallax ios': true

@include parallax([$distance, $perspective])

Settings

  • 'parallax perspective': 1
  • 'parallax distance': 0

Reset

Importing the reset partial with @import "toolkit/reset"; will add a CSS Reset in based on work done by Nicholas Gallagher and Jonathan Neal, Richard Clark, and Tim Murtaugh, and some other things that are useful. Also includes the kickstart.

RTL

Quickly and easily write your left-to-right and right-to-left properties with one mixin! Works for *-left and *-right properties, as well as shorthand syntaxes.

@include rtl($property, $value)

Settings

While the standard $variable: value !default for allowing users the ability to change defaults in a system is okay, it can become cumbersome quickly. Cascading user changes is hard, doesn't always work as expected, and for large systems all of those settings pollute the global namespace. These setting functions and mixins make it easy to work with setting in the same way that Toolkit does. We're even dogfooding here, using these internally to work with Toolkit's settings! And none of our tests broke when we made the transition!

User Setting Exists

Used to see if a user has set a setting. Will return true or false.

user-setting-exists($setting)

Pass in a comma separated list of user settings you would like to test. Will return a map where the keys are the settings and the values are their respective state.

user-setting-exists-multiple($settings...)

Setting Get

Used to retrieve a setting. Will attempt to find the user setting first, and if a user hasn't set a value for that setting, will use the default setting. Returns the value of the setting

setting-get($setting)

Pass in a comma separated list of user settings you would like to retrieve. Will return a map where the keys are the settings and the values are their respective values.

setting-get-multiple($setting...)

Setting Set

Used to set a setting. Returns true. The function and the mixins take the same input.

setting-set($setting, $value)

@include setting-set($setting, $value)

@include setting-change($setting, $value)

Used to set multiple settings at once. The input should be a map where the key is the setting and the value is the value of said setting.

setting-set-multiple($settings)

@include setting-set-multiple($settings)

@include setting-change-multiple($settings)

Setting Clear

Used to clear a single user setting. Will return true. The function and the mixins take the same input.

setting-clear($setting)

@include setting-clear($setting)

Pass in a comma separated list of user settings you would like to clear. Will return true. The function and the mixins take the same input.

setting-clear-multiple($settings...)

@include setting-clear-multiple($settings...)

Used to clear all user settings. Will return true. The function and the mixins take the same input.

setting-reset()

@include setting-reset()

Setting Pick

The most common usecase of actually needing to determine the setting to use is within a custom function or mixin. The recommended way of doing this is to provide a default value of null for arguments that are controlled by settings, then check to see if that value is null and, if not, get the correct setting. The setting pick functions do this.

setting-pick($setting, $input)

Used to pick multiple settings at once. The input should be a map where the key is the setting and the value is the input to be tested. Will return a map where the keys are the setting and the value is the determined value.

setting-pick-multiple($settings)

@mixin button($size, $color: null) {
  $color: setting-pick('button color', $color);
  // ... rest of stuff goes here
}

Setting Defaults

Congratulations! You now have an API for working with setting that you didn't need to write! Awesome! But how do you actually make global settings to use? Well, simple. Create a map of your settings, the keys being the setting name, the values being the value of the setting, and merge it into the $GlobalSettings variable. This will put them in the global setting namespace. If you would like your variables namespaced, it's recommended that you write wrapper functions for the setting functions for your plugin.

@import "toolkit";

$MyAwesomePluginSettings: (
  'button color': #b4d455,
  'mug fill color': #c0ffee
);

$GlobalSettings: map-merge($GlobalSettings, $MyAwesomePluginSettings);

// ... The rest of your awesome plugin stuff here

Triangles

You love em! Triangles! Now create them using just CSS! Turn any element or pseudo element into a triangle just by using the @include triangle;. It's perfect for flags, speech bubbles, and arrows.

Width and height just stretch the triangle to match a width or height. You can use any units you want although percentages don't work so well. Angle is where the point of the triangle is drawn opposing one side. This is a little diffucult to explain, so here is a gif. If the width and height are not uniform, then the angle will be stretched to match the triangles proportions. The mixin also supports keywords like top, top right, right and so on for the angle. The triangle will point in the direction you give it.

triangle

triangle example

@include triangle([$color, $height, $width, $angle])

Settings

  • 'triangle color': #000
  • 'triangle height': 1em
  • 'triangle width': 1em
  • 'triangle angle': 0

Center

We can do [insert seemingly impossible thing here] but we can't even center with CSS

Unfunny people on the Internet

Yes, Flexbox will give us a native way to center things when it finally arrives, but until then, and for all of the browsers that don't support Flexbox, a few handy mixins for centering vertically, horizontally, or both!

Vertical Center

Vertical center anything, literally anything, with the vertical-center mixin. Based on Sebastian Ekström’s vertical align technique.

@include vertical-center([$midpoint, $extend])

Settings

  • 'vertical midpoint': 50%
  • 'vertical extend': false

Horizontal Center

Horizontal center anything, literally anything, with the horizontal-center mixin. Based on Sebastian Ekström’s vertical align technique for fixed position items and good 'ol margin: 0 auto for everything else.

@include horizontal-center([$midpoint, $fixed, $extend])

Settings

  • 'horizontal fixed': false (fixed position item)
  • 'horizontal extend': false
  • 'horizontal midpoint': 0%
  • 'horizontal fixed midpoint': 50% (midpoint for fixed position item)

Absolute Center

I want it in the middle. The absolute middle. The middle of the middle of the middle. The absolute middle of the middle of the middle of the middle.

@include absolute-center([$vertical, $horizontal, $fixed, $extend])

Settings

  • 'absolute center fixed': false (fixed position item)
  • 'absolute center extend': false
  • 'absolute center vertical midpoint': 50%
  • 'absolute center fixed horizontal': 0%
  • 'absolute center fixed horizontal midpoint': 50% (horizontal midpoint for fixed position item)

Viewport

Currently in the Draft stage, but being implemented by Microsoft is the CSS directive @viewport. This mixin simply provides prefixing.

@include viewport { @content }

Underline

Create beautiful underlines à la Medium! Now with the ability to clear descenders!

@include underline([$background, $color, $clear-descenders, $distance, $width])

Settings

  • 'underline background': #f00
  • 'underline color': #00e
  • 'underline clear descenders': true
  • 'underline distance': 1 (unitless number)
  • 'underline width': 2 (unitless number)
  • 'underline extend': false

Target

Creates specially formatted comments for use with gulp-css-target

@include target($target) { @content }

Set Multiple

Applies the same property to multiple values.

@include set-multiple($value, $property-list);

  .box {
    @include set-multiple(50%, width height);
  }
  .box {
    width: 50%;
    height: 50%;
  }

License

Copyright (C) 2011-2015 by Sam Richard

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

toolkit's People

Contributors

adamnbowen avatar alanmoo avatar barraponto avatar jedfoster avatar jlong avatar lolmaus avatar panyamin avatar patik avatar roborn avatar robovirtuoso avatar scottkellum avatar snugug avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

toolkit's Issues

CodeKit Error on Compile

I created a new project using the command line:

compass create <my_project> -r toolkit --using toolkit/susy

Then load the project into CodeKit.

I then add a line of code into _design.scss:

a{
   padding:10px;
}

and receive this error:

Compass was unable to compile one or more files in the project: 

LoadError on line 31 of /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb: no such file to load -- toolkit
Run with --trace to see the full backtrace

(This action was triggered by a change to _design.scss)

Add support for WOFF2 fonts

The @font-face mixin currently does not allow for WOFF2 format fonts - they are now supported by Chrome and Opera.

Intrinsic ratio applied to embedded Youtube/Vimeo links not working

I've embedded youtube and vimeo links in a Wordpress TinyMCE post. Then i tried to apply an intrinsic ratio to the iframe ( to get the video span 100% of the width and behave fluidly):

.news-text > iframe {
    @include intrinsic-ratio(16/9, 100%, 'iframe');
}

But no matter what i try 16/9, or 4/3 or 500/281 (the specified extends in the iframe markup), 1.77935942, all the time the video isn't displayed, only the space spanned and freed of other content. would a wrapper be necessary? or isn't the intrinsic ratio working with embedded videos and a solution like fitvids would be necessary? Best regards Ralf

[support req] How is style guide supposed to be used?

Hi!

Templates contain a style guide partials section. How is it supposed to be used?

A comment there suggests both design and layout code should go there.

If it is solely a recommendation on how to theme the website, then why is it getting imported?

PS Thank you!

Remove ::after and ::before for default box-sizing behaviour

I suggest the *::after and *::before pseudoclass selectors for box-sizing (in _border-box.scss) to be removed or made optional. They may lead to slow style recalculation on mobile platforms (I had this as an issue with iOS 6 in Safari). I think it's acceptable that when using these pseudoclasses that we can specify the box-sizing method seperately.

It's not such a big issue because we can just leave away the border-box includes, but it easily gets forgotten.

Cannot install via Bower - color-schemer version

$ bower install sass-toolkit
bower cached        git://github.com/Team-Sass/toolkit.git#1.3.8
bower validate      1.3.8 against git://github.com/Team-Sass/toolkit.git#*
bower not-cached    git://github.com/Team-Sass/color-schemer.git#>=0.2.3
bower resolve       git://github.com/Team-Sass/color-schemer.git#>=0.2.3
bower cached        git://github.com/Snugug/Sassy-Strings.git#1.0.0
bower validate      1.0.0 against git://github.com/Snugug/Sassy-Strings.git#*
bower cached        git://github.com/Team-Sass/breakpoint.git#2.3.0
bower validate      2.3.0 against git://github.com/Team-Sass/breakpoint.git#>=2.0.2
bower ENORESTARGET  No tag found that was able to satisfy >=0.2.3

Additional error details:
No versions found in git://github.com/Team-Sass/color-schemer.git

Duplicate selector using enhance-with degrade-from

http://sassmeister.com/gist/7197433

We currently make an extensive use of the svg-background mixin for a project.
But I discovered there are a ton of duplicate and noneffective selectors.

This is coming from the fact we use are relying on extending a set of base classes.

It happens when we extend a class with the svg-background inside. Which in turn use the enhance-with and degrade-from mixins.

See gist.

I'm wondering how we could prevent this.

EDIT: Well this is not a Toolkit specific issue actually.

Is it possible to display a Picturefill image without any bars and span residuals with the intrinsic ratio mixin?

I've tried around quite a bit but somehow it is kind of tricky to apply the intrinsic ratio mixin to a picturefill markup. If I try a single image everything lays out fine.

<div class="ir">
    <img src="/img/fp-580x270.jpg" alt="fp">
</div>
.ir {
    @include intrinsic-ratio(2.14814815, 100%);
}
*, *:before, *:after {
outline: 1px solid red;
}
body,
html {
    height:100%;
    line-height:1.4;
    padding:0;
    margin:0;
    background:lightyellow;
}

.container {
     max-width:750px;
     margin: 2em auto 0 auto;
}
img {
    width:100%;
    max-width:100%;
    height: auto;
}

bildschirmfoto 2014-03-01 um 05 30 25

a clean display - a wrapping div the ratio mixin is applied to - all fine. But the problem is on the picturefill side you dont have a single wrapping element but subelements as well. I tried to bypass by adding the class name to the inner spans and ended up with an empty box

<span data-picture data-alt="fp">
    <span class="intrinsic" data-src="/img/fp-338x157.jpg"></span>
    <span class="intrinsic" data-src="/img/fp-507x236.jpg" data-media="(min-device-pixel-ratio: 1.5)"></span>
    <span class="intrinsic" data-src="/img/fp-676x315.jpg" data-media="(min-device-pixel-ratio: 2.0)"></span>
    <noscript>
        <img src="/img/fp-loesungen-1160x540.jpg" alt="fp">
    </noscript>
</span>

bildschirmfoto 2014-03-01 um 05 42 34

If I added the selector to the outer span and removed the intrinsic class from the inner, using an attribute selector .intrinsic[attr^=data-alt] for the mixin I ended up with an image displayed:

bildschirmfoto 2014-03-01 um 05 45 27

On the downside there is still an empty bar beneath the image in contrast to the "regular" image from the beginning as well as the outline for an empty span. Is there a way to display an Picturefill image in the same clean manner like the first image? Best regards Ralf

"Rainbow" Border Mixin

Might be a bit niche, but it's a nice little mixin to create multicolored stripes.

From this article by Hugo Giraudel.

Seems like it could play nicely with Color Stacks.

Selector not found when using retina-background

(Aurora theme)
On _variables.scss:

$logos: 'logos';
$icons: 'icons';
@include sprite-map-generator($logos);
@include sprite-map-generator($icons);

_design.scss

.icon-facebook{
   @include retina-background($icons, 'facebook');
}
>>> Change detected at 17:01:01 to: partials/design/_design.scss
unchanged assets/img/logos-sfa92f4f300.png
unchanged assets/img/icons-sd014756106.png
unchanged assets/img/icons-sd014756106.png
unchanged assets/img/icons_2x-s246af13964.png
WARNING on line 138 of /var/lib/gems/1.9.1/gems/toolkit-1.0.0/stylesheets/toolkit/_pe.scss: ".ie6 #block-block-3 .iconzzz" failed to @extend "%icons-image-map-fallback".
  The selector "%icons-image-map-fallback" was not found.
  This will be an error in future releases of Sass.
  Use "@extend %icons-image-map-fallback !optional" if the extend should be able to fail.

WARNING on line 138 of /var/lib/gems/1.9.1/gems/toolkit-1.0.0/stylesheets/toolkit/_pe.scss: ".ie7 #block-block-3 .iconzzz" failed to @extend "%icons-image-map-fallback".
  The selector "%icons-image-map-fallback" was not found.
  This will be an error in future releases of Sass.
  Use "@extend %icons-image-map-fallback !optional" if the extend should be able to fail.

WARNING on line 138 of /var/lib/gems/1.9.1/gems/toolkit-1.0.0/stylesheets/toolkit/_pe.scss: ".ie8 #block-block-3 .iconzzz" failed to @extend "%icons-image-map-fallback".
  The selector "%icons-image-map-fallback" was not found.
  This will be an error in future releases of Sass.
  Use "@extend %icons-image-map-fallback !optional" if the extend should be able to fail.

overwrite assets/css/style.css

Any ideas?
Thanks!

Tint and Shade now in Compass

I believe the tint() and shade() functions in Toolkit are identical to the ones now in Compass (1, 2). Since Toolkit requires Compass, these can probably be removed.

WARNING: The compass/css3/shared module has been deprecated

Got this warning:

WARNING: The compass/css3/shared module has been deprecated.
You can silence this warning by importing compass/css3/deprecated-support instead.
Please be aware that module will be removed in the next release.
         on line 1 of /home/yuvilio/.rvm/gems/ruby-2.0.0-p247@ruby247/gems/compass-core-1.0.0.alpha.16/stylesheets/compass/css3/\
_shared.scss
         from line 1 of /home/yuvilio/.rvm/gems/ruby-2.0.0-p247@ruby247/gems/toolkit-1.3.8/stylesheets/toolkit/_box-sizing.scss
         from line 4 of /home/yuvilio/.rvm/gems/ruby-2.0.0-p247@ruby247/gems/toolkit-1.3.8/stylesheets/toolkit/_border-box.scss
         from line 9 of /home/yuvilio/.rvm/gems/ruby-2.0.0-p247@ruby247/gems/toolkit-1.3.8/stylesheets/_toolkit.scss
         from line 1 of /home/yuvilio/ws/apps/laravel/lab/slider/public/sasslab/scss/styles.scss

Tested with this stack:

$ compass --version
Compass 1.0.0.alpha.17
Copyright (c) 2008-2014 Chris Eppstein
Released under the MIT License.
Compass is charityware.
Please make a tax deductable donation for a worthy cause: http://umdf.org/compass
$ sass --version
Sass 3.3.0.rc.2 (Maptastic Maple)
$ ruby --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
$

str-replace($find, $replace, $input) not working

ahoy,

it seems like str-replace is not working. given the following input

$find: 'hello';
$replace: 'ahoy';
$input: 'hello Toolkit!';

@debug str-replace($find, $replace, $input);

the output is DEBUG: hello. basically, it seems to return the $find string no matter what.

my current Bundler versions are:

Using sass (3.2.12) 
Using compass (0.12.2) 
Using toolkit (1.3.8) 
Using bundler (1.3.5) 

thanks

box-sizing: border-box; not applied in all browsers :(

I'm getting this in my compiled CSS

/* line 36, ../../../../../../../../gems/gems/toolkit-1.3.8/stylesheets/toolkit/_box-sizing.scss */
*, *:after, *:before {
  box-sizing: border-box;
}

Which does not include the -moz and -webkit prefixed versions that are otherwise recommended: http://www.paulirish.com/2012/box-sizing-border-box-ftw/

I think it usually does, so there might be some version issue here. For this instance, I have the following installed:

  • breakpoint (2.0.7)
  • bundler (1.3.5)
  • chunky_png (1.2.8)
  • color-schemer (0.2.7)
  • compass (0.12.2)
  • compass-blend-modes (0.0.2)
  • compass-normalize (1.4.3)
  • fssm (0.2.10)
  • modular-scale (1.0.6)
  • sass (3.2.11)
  • sassy-buttons (0.2.6)
  • sassy-math (1.5)
  • sassy-strings (1.0.0)
  • singularitygs (1.1.2)
  • toolkit (1.3.8)

Diff versions of SASS conflicting

Installing the toolkit today, I get this error in the terminal when compass watch:

" Unable to activate toolkit-2.5.2, because sass-3.2.19 conflicts with sass (~> 3.3.0)"

Change the image path for SVG Background mixin

When using the "SVG Background" mixin I can't seem to get the URL to point to my image correctly when not inline and when using a PNG fallback. The sprites are generated but the paths are incorrect with my structure.

Everything seems to function correctly but my image path is different and I am getting background-image: url("/images/logos/menu/iq.svg?1384230060");

That is correct except I need the path to be "../images" rather than "/images".

I checked the config.rb and I have images_dir = "images" set which is correct. Is there any way to change that through the mixin or elsehwere?

Box-sizing gets added once or twice without any @include

Today I wanted to create a stripped down test case to try something in Singularity with placeholder selectors. Thereby i ran into something completely different. ;)

I've created a test project folder only containing a config.rb file with the following required plugins:

require "sassy-math";          //v1.5 
require "modular-scale";      //v1.0.6
require "breakpoint";           //v2.0.7
require "toolkit";                 //v1.3.8
require "singularitygs";        //v1.1.2
require "singularity-extras";  //v0.0.3

Aside that, i've only created a scss folder and a css folder and monitored the whole thing with codekit. Then i've created a a style.scss file with the following code:

@import 'compass';
@import 'modular-scale';
@import 'singularitygs';
@import 'singularity-extras';
@import 'breakpoint';
@import 'toolkit';

which lead to the following css:

*, *:after, *:before {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  *behavior: url('../css/../behaviors/box-sizing/boxsizing.php'); }

*, *:after, *:before {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  *behavior: url('../css/../behaviors/box-sizing/boxsizing.php'); }

img, video {
  max-width: 100%;
  height: auto; }

the other variants i've tried:

@import 'compass';
@import 'modular-scale';
//@import 'singularitygs';
//@import 'singularity-extras';
@import 'breakpoint';
@import 'toolkit';

lead to

*, *:after, *:before {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  *behavior: url('../css/../behaviors/box-sizing/boxsizing.php'); }

img, video {
  max-width: 100%;
  height: auto; }

The following to variants

@import 'compass';
@import 'modular-scale';
@import 'singularitygs';
@import 'singularity-extras';
@import 'breakpoint';
//@import 'toolkit';
@import 'compass';
@import 'modular-scale';
//@import 'singularitygs';
//@import 'singularity-extras';
@import 'breakpoint';
//@import 'toolkit';

lead to no css output - the expected behaviour i suppose. Cuz basically i've thought Toolkit would require an include (@include box-sizing('border-box');) to apply box-sizing at all or is it regular behaviour? Cheers Ralf

"intrinsic-ratio" mixin fails without arguments

The readme allows using +intrinsic-ratio without arguments:

.ratio-16-9 {
  @include intrinsic-ratio;
}

But when i do, i receive an error:

 error sass/style.sass (Line 27 of _fluid-media.scss: Undefined operation: "1/true times 100%".)

To overcome the issue, i have to specify the ratio explicitly, then it works.

Broken Behavior path

When I compile my CSS, I see this broken path for legacy browsers:

*, *:after, *:before {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  *behavior: url('/app/assets/css/../behaviors/box-sizing/boxsizing.php');
}

Is that supposed to be there?

Sprite and SVG background functions in 2.x

I've just updated to 2.x toolkit and noticed the sprite and SVG background mixins have been removed. Are available anywhere else? Can you suggest alternatives if there are better implementations out there?

Gem::ImpossibleDependenciesError when installing toolkit

I was unsure whether to raise this on this project, as it relates to out-of-sync dependencies across a number of team sass projects.

When I attempt to gem install toolkit in a clean/empty gemset I get:


ERROR:  While executing gem ... (Gem::ImpossibleDependenciesError)
    compass-0.12.2 requires sass (~> 3.1) but it conflicted:
  Activated sass-3.2.12 instead of (~> 3.3.0.rc.2) via:
    breakpoint-2.3.0, singularitygs-1.1.2, toolkit-1.3.7

Equal height giving error

I'm getting an error while trying to use the equal height mixin.
I would like to create a single line to break up my two column layout using the below code

.main{
    $widths: 25%;
    $colors: red;
    @include equal-height-columns($widths, $colors);
}

But am getting this error message in the terminal: /Library/Ruby/Gems/1.8/gems/toolkit-0.2.6/stylesheets/toolkit/_equal-height-columns.scss:40 DEBUG: red, red 25%

Any ideas what I might be doing wrong?

Details:
Sass 3.2.7
Compass 0.12.2
Breakpoint 1.3

Consider updating kickstart's box-sizing code.

Consider implementing the "slightly better" box sizing suggested by Chris Coyier.
http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/

html {
  box-sizing: border-box;
}

*, *:before, *:after {
  box-sizing: inherit;
}

I've run into the need to fight the inheritance for 3rd party libraries that expect box-sizing: content-box and this technique removed the need to define box-sizing: content-box multiple times for elements nested inside a larger component.

Improve triangle

Currently triangle does not work if there is no content: ''; next to @include triangle();. Also, second and third argument should probably be switched, as it is standard to write X axis value (width) first and Y axis value (height) second. See http://cssarrowplease.com/ for code that always works.

Underlines being misplaced in Chrome for Android with font size change

Hi there. I've noticed that (at least on my own site) the underlines sometimes get placed partway up the letters instead of underneath. From what I can tell, this has something to do with setting Chrome's default font size as something other than 100% (I have it set to 125% on my tablet). It also doesn't happen on every page load, and seems to only happen when revisiting a cached page, while cold loaded pages don't really have this issue. I suspect what's happening is that the underlines are being placed as if the font size was 100%, while the actual font size is some other size. Basically, it looks like Chrome is using incorrect sizes for the em units the underline uses for the background gradient. Has anyone else run into this issue, and if so, any way to avoid it?

Cold loaded, with underlines where they should be:
screenshot_2014-08-25-12-03-33

Cache loaded, with underlines appearing about halfway through the letters:
screenshot_2014-08-25-12-02-53

Don’t write styles by default

Toolkit writes a far amount of CSS by default that can cause problems when importing it into existing projects. Would be nice if styles could be added with something like @import toolkit; @include toolkit; instead of just @import toolkit;.

Dual-licensing too vague (and possibly irrelevant)

Project is dual-licensed under MIT and GPL.

The MIT part is ambiguous - there are multiple licenses are labelled as "MIT", but that one is spelled out in the LICENSE file as being what unambiguously could be labelled as "Expat".

The GPL part is ambiguous too - and is not spelled out, just references the GNU web page for that license. What is missing is which version, and if permitted to replace with newer versions or not.

...but technically dual-licensing should not be needed anyway, since Expat is compatible with GPLv2 and newer.

In short: Please consider either changing the "GPL" to e.g. "GPL-2+" (or the full paragraph recommended by GNU and listed at the bottom of their license page), or simply drop the GPL licensing as superfluous.

Warning message when wrapping SVG background image in breakpoint

I have SVG background working great but as soon as I wrap them in a breakpoint I get a "DEPRECATION WARNING".

DEPRECATION WARNING on line 108 of /Users/jeremy/.rvm/gems/ruby-2.0.0-p353/gems/toolkit-1.3.8/stylesheets/toolkit/_pe.scss:
  @extending an outer selector from within @media is deprecated.
  You may only @extend selectors within the same directive.
  This will be an error in Sass 3.3.
  It can only work once @extend is supported natively in the browser.

Here's the code that triggers that warning message.

.icon-mytest {
  @include breakpoint($bp-small, $no-query: true) {
    @include svg-background($icons, 'mytest');
  }
}

The code compiles correctly and everything works but I'm wondering how to get around it throwing an error each time and how to code this a bit differently.

I tried creating a mixin with "content: "TEST";" and calling it in the breakpoint rather than the SVG and I didn't receive any errors. And looking at the error message it points to Toolkit. I've tried moving the call to the SVG to a silent placeholder too with no luck.

For reference I'm running:
Compass 0.12.2
Sass 3.2.10
Toolkit-1.3.8
Breakpoint 2.0.7

Any help is appreciated.

Triangles Are Broken

Input Sass:

@include triangle(red, 30px, 270);

Output CSS

display: block;
width: 0;
height: 0;
border: 0 solid transparent;
border-bottom-color: red;
border-width: 0 135 30px 135;

The border-width property is wrong, and changing the 135s to 135px does not produce the correct triangle,

Don't add border-box to all elements

I know, it sounds like madness, but sometimes I don't want to add:

*, *:after, *:before {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  *behavior: url('/stylesheets/../behaviors/box-sizing/boxsizing.php');
} 

But I couldn't work out how to not add it - Is there a way?

replace-text-pe mixin - text showing in IE9

Hi Snugug,
I've been using the @mixin replace-text-pe, but then I noticed that in IE9 it shows the text on top of the image.

I noticed that h5bp changed their image replacement technique h5bp/html5-boilerplate@aa0396e to use http://nicolasgallagher.com/another-css-image-replacement-technique/

So I thought maybe I could try that new technique after seeing https://github.com/Snugug/toolkit/blob/master/compass/stylesheets/toolkit/_pe.scss#L235, but I don't know how to extend those mixins.

Could you show me an example of how to extend those mixins to use a different image-replacement technique? I'm referring to %replace-text-pe-squish and %replace-text-pe-hide

Thank you

Toolkit Error

In my project I use @import toolkit-no-css, but in the css output I get what's below. Does anyone have any suggestions?

*, *:after, *:before {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  *behavior: url('../behaviors/box-sizing/boxsizing.php');
}

.comment__content, .breadcrumb, .action-links, .block--nav-bar .menu, .clearfix, .pager, .site-branding, .field--type-taxonomy-term-reference .field__items {
  /* for IE 6/7 */
  *zoom: expression(this.runtimeStyle.zoom="1", this.appendChild(document.createElement("br")).style.cssText="clear:both;font:0/0 serif");
  /* non-JS fallback */
  *zoom: 1;
}

.comment__content:before, .breadcrumb:before, .action-links:before, .block--nav-bar .menu:before, .clearfix:before, .pager:before, .site-branding:before, .field--type-taxonomy-term-reference .field__items:before, .comment__content:after, .breadcrumb:after, .action-links:after, .block--nav-bar .menu:after, .clearfix:after, .pager:after, .site-branding:after, .field--type-taxonomy-term-reference .field__items:after {
  content: ".";
  display: block;
  height: 0;
  overflow: hidden;
}

.comment__content:after, .breadcrumb:after, .action-links:after, .block--nav-bar .menu:after, .clearfix:after, .pager:after, .site-branding:after, .field--type-taxonomy-term-reference .field__items:after {
  clear: both;
}

Can't create project using Compass v0.13.alpha.0

this is the error I get in terminal

/Users/schapman/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.5/lib/bundler/shared_helpers.rb:22:in `default_gemfile': Could not locate Gemfile (Bundler::GemfileNotFound)
    from /Users/schapman/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.5/lib/bundler.rb:213:in `default_gemfile'
    from /Users/schapman/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.5/lib/bundler.rb:164:in `root'
    from /Users/schapman/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.5/lib/bundler.rb:123:in `load'
    from /Users/schapman/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.5/lib/bundler.rb:114:in `setup'
    from /Users/schapman/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.5/lib/bundler.rb:119:in `require'
    from /Users/schapman/.rvm/gems/ruby-1.9.3-p194/gems/compass-0.13.alpha.0/bin/compass:25:in `<top (required)>'
    from /Users/schapman/.rvm/gems/ruby-1.9.3-p194/bin/compass:19:in `load'
    from /Users/schapman/.rvm/gems/ruby-1.9.3-p194/bin/compass:19:in `<main>'
    from /Users/schapman/.rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `eval'
    from /Users/schapman/.rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `<main>'

font-face mixin collides with identically named mixin from Compass, but with different syntax

Toolkit has a very useful font-face mixin, but if you're used to using Compass, you might be used to using their @import font-face([…]).

Problem is that the two different versions have different syntax, and if you have both Toolkit and Compass loaded, which one gets used is not quite clear.

So if I use this syntax (which would work with the font-face from Compass):

@include font-face("Fira Sans", font-files(
  "fira_sans/firasans-book.woff",
  "fira_sans/firasans-book.ttf"
), "fira_sans/firasans-book.eot");

I get this error from Toolkit:

error sass/print.scss (Line 36 of .vendor/bundle/ruby/2.0.0/gems/toolkit-2.6.0/stylesheets/toolkit/_fonts.scss: $map: (("url('../fonts/fira_sans/firasans-book.woff?1408878462')" "format('woff')"), ("url('../fonts/fira_sans/firasans-book.ttf?1408878462')" "format('truetype')")) is not a map for 'map-has-key')

I don't really know how this can be handled. Perhaps the Toolkit version could be modified to also work with Compass' font-files() structure?

Bump Compass version to 0.13.alpha.4

I will be bumping the version of Compass to 0.13.alpha.4 because the animation module is required for the carousels. We can either remove the need for the animation modules or we need to bump up our required version of Compass.

So I am bumping the version to 0.13.alpha.4 unless there is any objection.

Can we have an example of what you can *do* with a colour stack?

I just have a question on actual usage for color stacks - I love the concept, but am a little lost on actually using the results. As far as I can tell, per the code in the readme, you can set a variable with the colour stack function:

$red-blue: colour-stack(red, blue, 25%, 50%, 75%, 100%);

Sooooo - what can you now do with your $red-blue variable? Since the processed SCSS results in

red, #bf003f, #7f007f, #3f00bf, blue;

Which, is great. But you really can't pass that as a value into your implementation, unless there is a way to use SASS variables with multiple values that I'm not aware of.

I guess I would just love to see a little more explanation on usage. Or, put more bluntly: You invoke colour-stack - now what?

Thank you for a great set of tools! Like I say, I love this idea, and want to use it - I'm just not quite grasping how to use the results.

@extend error _fluid-media.scss

Hi there,

I'm getting an error from LiveReload when I first try and import Toolkit.

I've added require "Toolkit" into my config.rb and added @import "Toolkit" at the top of my screen.scss. When I save this file I get the following error from LiveReload:

error sass/screen.scss (Line 25 of _fluid-media.scss: Invalid CSS after " @extend ": expected selector_sequence, was "%intrinsic-rati...")

I do have an import for the basic Compass clearfix underneath but removing this stills throws the same error. I don't have a _fluid-media.scss partial either so I have no idea where this error is coming from!

I hope you can help

Regards

Dan

Error on Toolkit install on Sass 3.2.13 and Compass 0.12.2 - Sass requires Listen ~1.1.0

I am running Sass 3.2.13 and Compass 0.12.2 on OSX 10.8.5. with Ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0] and Gem 1.3.6 . I had a few gem issues especially with Modular Scale. Finally lead to a striped down and simple gem set up preceded with a clean install (Just installed Sass/Compass, Breakpoint and Modular Scale):

*** LOCAL GEMS ***

breakpoint (2.0.7)
chunky_png (1.2.9)
compass (0.12.2)
fssm (0.2.10)
modular-scale (2.0.0.alpha4)
sass (3.2.13)

@scottkellum already helped me over at the modular scale repo to figure things out. One of the only two remaining gems i need is Toolkit. I wanted to install the latest version of Toolki able to run with stable Sass and Compass, like i did with Breakpoint 2.0.7, until the new Sass and Compass versions go final . Unfortunately no matter which version i try to install (1.3.8 oder 1.1.0):

sudo gem install toolkit -v 1.x.x

i get:

ERROR:  Error installing toolkit:
    sass requires listen (~> 1.1.0, runtime)

Unable to install toolkit at all. :( Is there a way to get Toolkit running again on stable Sass and Compass? Cuz Listen seems a Sass related gem which wasn't installed along with stable Sass. Best regards Ralf

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.