Convert a simple HTML syntax into tables compatible with Foundation for Emails.

Overview

Inky

Build Status npm version

Inky is an HTML-based templating language that converts simple HTML into complex, responsive email-ready HTML. Designed for Foundation for Emails.

Give Inky simple HTML like this:

<row>
  <columns large="6"></columns>
  <columns large="6"></columns>
</row>

And get complicated, but battle-tested, email-ready HTML like this:

<table class="row">
  <tbody>
    <tr>
      <th class="small-12 large-6 columns first">
        <table>
          <tr>
            <th class="expander"></th>
          </tr>
        </table>
      </th>
      <th class="small-12 large-6 columns first">
        <table>
          <tr>
            <th class="expander"></th>
          </tr>
        </table>
      </th>
    </tr>
  </tbody>
</table>

Installation

npm install inky --save-dev

Usage

Inky can be used standalone, as a Gulp plugin, or with a CLI. You can also access the Inky parser class directly.

Standalone

var inky = require('inky');

inky({
  src: 'src/pages/**/*.html',
  dest: 'dist'
}, function() {
  console.log('Done parsing.');
});

With Gulp

var inky = require('inky')

function parse() {
  gulp.src('src/pages/**/*.html')
    .pipe(inky())
    .pipe(gulp.dest('dist'));
}

Command Line

Install foundation-cli to get the foundation command.

Plugin Settings

  • src (String): Glob of files to process. You don't need to supply this when using Inky with Gulp.
  • dest (String): Folder to output processed files to. You don't need to supply this when using Inky with Gulp.
  • components (Object): Tag names for custom components. See custom components below to learn more.
  • columnCount (Number): Column count for the grid. Make sure your Foundation for Emails project has the same column count in the Sass as well.
  • cheerio (Object): cheerio settings (for available options please refer to cheerio project at github).

Custom Components

Inky simplifies the process of creating HTML emails by expanding out simple tags like <row> and <column> into full table syntax. The names of the tags can be changed with the components setting.

Here are the names of the defaults:

{
  button: 'button',
  row: 'row',
  columns: 'columns',
  container: 'container',
  inky: 'inky',
  blockGrid: 'block-grid',
  menu: 'menu',
  menuItem: 'item'
}

Programmatic Use

The Inky parser can be accessed directly for programmatic use. It takes in a Cheerio object of HTML, and gives you back a converted Cheerio object.

var Inky = require('inky').Inky;
var cheerio = require('cheerio');

var options = {};
var input = '<row></row>';

// The same plugin settings are passed in the constructor
var i = new Inky(options);
var html = cheerio.load(input)

// Now unleash the fury
var convertedHtml = i.releaseTheKraken(html);

// The return value is a Cheerio object. Get the string value with .html()
convertedHtml.html();
Comments
  • Standalone / Browser build

    Standalone / Browser build

    Would it be possible to have a standalone build of inky, similar to https://github.com/Daniel15/babel-standalone ?

    I'd like to create a rails plugin to use inky within the asset pipeline.

    I might be able to implement this myself if someone could outline where to start and/or generally how to accomplish it.

    feature help wanted 
    opened by bolandrm 12
  • handle mustache curly braces

    handle mustache curly braces

    I use foundation-emails / inky to generate email templates. These templates have {{tags}} inside and are filled with mustache data before sending it.

    In inky template I have this line: <button href="{{buttonUrl}}">{{buttonText}}</button>

    but compiling with inky completely drop my {{tags}}: <table class="button text-center"><tr><td><table><tr><td></td></tr></table></td></tr></table>

    desidered result: <table class="button text-center"><tr><td><table><tr><td><a href="{{buttonUrl}}">{{buttonText}}</a></td></tr></table></td></tr></table>

    Best regards, Luca

    feature 
    opened by luposky 12
  • Add new spacer component

    Add new spacer component

    Suggesting a component used for accurate vertical spacing.

    It would be used that way : <spacer size="10"></spacer> and generates a battle-tested <table class="spacer"><tbody><tr><td height="10px" style="font-size:10px;mso-line-height-rule: exactly;line-height:10px;">&nbsp;</td></tr></tbody></table>

    I feel this kind of component can be helpful in the framework because it allows an easy way of managing padding/margins without ever using them (usually unreliable on outlook). For instance it's very nice to make separations between blocks (even with different background colors), or even between elements in a single column.

    I will make a pr to the foundation for emails repo because a css rule is also needed (100% width)

    feature 
    opened by acezard 10
  • Add optional 'target' attribute for <button>

    Add optional 'target' attribute for

    <button> components needs the ability to be passed a target attribute (that will be passed to the resulting <a> element), which could be set to _blank for use in the "view in browser" version of emails.

    See zurb/foundation-emails#432 for discussion.

    feature 
    opened by ClementParis016 9
  • expander class breaks full-width image

    expander class breaks full-width image

    Hi,

    Inky automatically generates an expander class. This causes some problems when I try to show an image in a table cell.

    <row> <columns small="5" large="5"> <p>some text</p> </columns> <columns small="5" large="5"> <img src="http://link-to-image.png" width="218" height="40" > </columns> </row> <row> <columns small="10" large="10"> <img src="http://link-to-image.jpg" > </columns> </row>

    Both images cover only half width of the table cell instead of the full width. This happens in multiple clients.

    After running the inline css, I manually deleted every expander cell. When I checked in Litmus, all the clients showed the correct result.

    I am not sure why this expander cell is added? Is there a way to prevent inky from creating the expander class? Or is there a workaround?

    thx!

    bug 
    opened by leffi7 8
  • Allow contextual sizes for Spacer

    Allow contextual sizes for Spacer

    This code allows you to add a size-sm and/or size-lg attribute to a <spacer> tag to have different sized spaces on small/large screens. The result is two <spacer>s rendered in HTML, with the show/hide-for-large classes applied to each.

    feature 
    opened by ethanmay 7
  • Support for cheerio options

    Support for cheerio options

    Right now, releaseTheKraken() replaces " with &quot; (and other entties as well).

    Issue 1: componentFactory should use elem.html() instead of $.html(elem)

    Issue 2: it should be possible to pass cherio options to the inky() function --> already done on master

    opened by dherges 7
  • Inky escapes/converts single quote causing errors if used with another template language

    Inky escapes/converts single quote causing errors if used with another template language

    I am using Jinja2 template language for final html rendering. Everything works fine until i need to use strings as function arguments. Inky escapes/converts them causing Jinja2 error:

    <img src="{{ user.get_image('xs') }}">
    

    Result:

    <img src="{{ user.image_url(&apos;xs&apos;) }}">
    

    Which causes: TemplateSyntaxError at ... ("unexpected char u'&' at 14467",)

    Any workaround or way to stop escaping single quotes? Thank you.

    bug duplicate help wanted 
    opened by darklow 6
  • Fixes #120 - Updates vinyl-fs to latest version 3.0.3

    Fixes #120 - Updates vinyl-fs to latest version 3.0.3

    Fixes #120

    Dependabot has recently been natively pulled into Github and is flagging braces package as a security vulnerability. This is a dependency of vinyl-fs and has been flagged in issue #120

    Proposal

    Update vinyl-fs to 3.0.3. This updates the glob-stream dependency to 6.1.0, which removes the dependency on micromatch and braces which has the vulnerability.

    image

    Other uses of braces are using newer versions πŸ‘

    image

    Context

    Issue #120

    Hello Inky maintaining team,

    I started using Inky in a project and running npm audit I realised that there is a vulnerability in a dependency chain. Here is the audit result of project using inky@^1.3.7:

    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ Low           β”‚ Regular Expression Denial of Service                         β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ Package       β”‚ braces                                                       β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ Patched in    β”‚ >=2.3.1                                                      β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ Dependency of β”‚ inky                                                         β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ Path          β”‚ inky > vinyl-fs > glob-stream > micromatch > braces          β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ More info     β”‚ https://npmjs.com/advisories/786                             β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    

    I was looking for the best approach to fix that and seems that updating vinyl-fs to 3.0.* will do the trick: every other 2.* versions use a vulnerable version of braces at the end, and 3 doesn't. Since it's a major update I suppose the team need to check if there's some change to do to make it still working.

    If possible, I can contribute with code too, since I'm interested on see this working in a project that have a vulnerabilities check at their pipeline.

    Additional context:

    Security vulnerability

    image

    Packages affected

    image |

    opened by jwmunn 5
  • Allow to add attributes to buttons and spacers

    Allow to add attributes to buttons and spacers

    opened by yvmarques 5
  • Vulnerability in vinyl-fs used version

    Vulnerability in vinyl-fs used version

    Hello Inky maintaining team,

    I started using Inky in a project and running npm audit I realised that there is a vulnerability in a dependency chain. Here is the audit result of project using inky@^1.3.7:

    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ Low           β”‚ Regular Expression Denial of Service                         β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ Package       β”‚ braces                                                       β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ Patched in    β”‚ >=2.3.1                                                      β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ Dependency of β”‚ inky                                                         β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ Path          β”‚ inky > vinyl-fs > glob-stream > micromatch > braces          β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ More info     β”‚ https://npmjs.com/advisories/786                             β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    

    I was looking for the best approach to fix that and seems that updating vinyl-fs to 3.0.* will do the trick: every other 2.* versions use a vulnerable version of braces at the end, and 3 doesn't. Since it's a major update I suppose the team need to check if there's some change to do to make it still working.

    If possible, I can contribute with code too, since I'm interested on see this working in a project that have a vulnerabilities check at their pipeline.

    opened by vncdias 4
  • Bump qs from 6.5.2 to 6.5.3

    Bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump shell-quote from 1.7.2 to 1.7.3

    Bump shell-quote from 1.7.2 to 1.7.3

    Bumps shell-quote from 1.7.2 to 1.7.3.

    Changelog

    Sourced from shell-quote's changelog.

    1.7.3

    • Fix a security issue where the regex for windows drive letters allowed some shell meta-characters to escape the quoting rules. (CVE-2021-42740)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump copy-props from 2.0.4 to 2.0.5

    Bump copy-props from 2.0.4 to 2.0.5

    Bumps copy-props from 2.0.4 to 2.0.5.

    Release notes

    Sourced from copy-props's releases.

    2.0.5

    Fix

    • Avoids prototype pollution (#7)

    Doc

    • Update license years.
    • Transfer ownership to Gulp Team (#6)

    Build

    • Update dependencies: each-props (>=1.3.2), is-plain-object (>=5.0.0).

    Test

    • Expand test versions to v11γ€œv14.
    Changelog

    Sourced from copy-props's changelog.

    Changelog

    3.0.1 (2021-10-31)

    Bug Fixes

    • ci: Rename prettierignore typo & avoid formatting web (192badf)
    • Update dependencies (ba8a51c)

    3.0.0 (2021-09-25)

    ⚠ BREAKING CHANGES

    • Normalize repository, dropping node <10.13 support (#8)

    Miscellaneous Chores

    • Normalize repository, dropping node <10.13 support (#8) (85b1165)
    Commits
    • 40b7974 2.0.5
    • 2c738f5 Fix: Avoids prototype pollution (#7)
    • 4cac863 Merge: Transfer ownership to Gulp Team (#6)
    • 54a791d Doc: Transfer ownership to Gulp Team
    • 196fc9e Merge: Update dependencies and expand ci test versions (#5)
    • e89907f Test: Update npm to v4 when nodejs is v5 because of npm install error.
    • e970322 Test: Run coveralls when nodejs >= 6 because of its supports
    • 063e534 Test: Add nodejs v11-v14 into ci test versions
    • 72270af Doc: Update license years
    • f60b928 Build: Update versions of dependencies
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Passing inline styles down from an Inky component causes sass styles to be overwritten

    Passing inline styles down from an Inky component causes sass styles to be overwritten

    I'm using Inky with Auth0 email templates. Auth0 uses handlebars for variable substitution. For one of our components, we need to pass in a brand color variable that looks like: {{ organization.branding.colors.primary }}. Is there a clean way to pass this as an inline style for the background color? Something like

    <button href="..." style="background-color: {{{{raw}}}}{{ organization.branding.colors.primary }}{{{{/raw}}}}">

    almost works, but it ends up overwriting the existing styles supplied by the component. Does Inky support combing of inline styles instead of overwriting them? If not, this may be a nice to have feature.

    opened by ryanfrawley 0
Releases(v1.4.2)
  • v1.4.1(Jul 21, 2020)

  • v1.4.0(Jul 21, 2020)

    Inky v1.4.0 is the first release in over 4 years! This merges in a bunch of changes from over the years and updates the underlying libs.

    Full Release Compare

    Bug Fixes

    • πŸ› Remove data-parsed attributes from html output
    • πŸ› Fix gap issue in Outlook 2016
    • πŸ› Fix spacer component on Outlook and Windows Mail clients
    • πŸ› Updated libraries and dependencies

    Featured Enhancements

    • πŸš€ Support for <hr> elements
    • πŸš€ Support for button attributes
    • πŸš€ Support for table attributes

    Contributors

    Thanks to the amazing people who contributed code or documentation to the 1.4.0 release. Foundation for Emails wouldn't happen without you!

    Source code(tar.gz)
    Source code(zip)
  • v1.3.6(Jun 30, 2016)

    A huge release, from new implementations, features, and bug fixes. This is a changelog for Inky based on the Foundation for Emails 2.2 release. Check out the entire Foundation for Emails 2.2 release.

    Features

    • Buttons can now have target attributes - https://github.com/zurb/inky/pull/42
    • You can now vertically align content in columns and Source order - HTML attributes can now be passed to row’s and columns - https://github.com/zurb/inky/pull/45
    • Spacer height can now be controlled by media query in HTML - https://github.com/zurb/inky/pull/36 Thanks to @ethanmay
    • Added data-attribute no-expander to to disable the .expander - https://github.com/zurb/inky/pull/29
    • Menu items can now have target attributes - https://github.com/zurb/inky/pull/54 fixes #465
    • <raw> Inky tag to ignore parsing handlebars and other things that should not be changed - https://github.com/zurb/inky/issues/28

    Bug fixes

    • Prevents character encoding in many places - https://github.com/zurb/inky/pull/37
    • Adds default spacer size if none is specified - https://github.com/zurb/inky/commit/c17a9145f71c6747168f840206439eb3033ffc93

    If you're into seeing all the commits, you'll find them here: https://github.com/zurb/foundation-emails/compare/v1.3.5...v1.3.6

    Contributors

    Here are the folks who made this release possible. If you want to contribute, check out our contributing page on the Foundation site, or browse the help wanted issue tag on GitHub.

    • Ethan May - @ethanmay
    • Sankalp Agrawal - @iamsankalp
    • Brandon Barringer - @brandonbarringer
    • Clement Paris - @ClementParis016
    • Rafi Benkual - @rafibomb
    • Kevin Ball - @kball

    *The Bismarck Sea lies in the southwestern Pacific Ocean to the north of the island of Papua New Guinea and to the south of the Bismarck Archipelago and Admiralty Islands. Like the Bismarck archipelago, it is named in honor of the German chancellor Otto von Bismarck. The Bismarck archipelago extends round to the east and north of the sea, enclosing the Bismarck Sea and separating it from the Pacific Ocean. To the south it is linked to the Solomon Sea by the Vitiaz Strait. It was the site of a major Japanese naval defeat in the Battle of the Bismarck Sea during World War II on 3 and 4 March 1943.

    image

    Source code(tar.gz)
    Source code(zip)
  • v1.3.5(Apr 21, 2016)

  • v1.3.0(Mar 21, 2016)

    This release adds Foundation for Emails as an explicit dependency of Inky. This is to ensure you're always using the correct version of Inky.

    The dependency is currently 2.0.0-rc.4.

    Source code(tar.gz)
    Source code(zip)
  • v1.2.6(Mar 21, 2016)

    • The .expander in a <column> is now only used if the column is full-width (i.e., large="12").
    • Updated <menu> to new syntax in Foundation for Emails, which fixes various display issues in Outlook.
    • Updated <center> to apply the class .float-center instead of .text-center to <menu>, and to correctly apply align="center"
    • Updated <callout> to use <th> instead of <td>.
    Source code(tar.gz)
    Source code(zip)
  • v1.2.3(Mar 10, 2016)

  • v1.2.2(Mar 7, 2016)

    • The parser's logic has been greatly simplified. This specifically fixes an issue with <center> tags causing an infinite loop, which would crash the parser.
    • Use <td>s instead of <th>s in callouts.
    • When the <center> tag is used, the .center class is now added to any existing classes on the child elements, instead of overwriting the class attribute entirely.
    Source code(tar.gz)
    Source code(zip)
  • v1.2.1(Mar 4, 2016)

  • v1.2.0(Mar 4, 2016)

  • v1.1.0(Mar 4, 2016)

    • Added a cutom <center> tag which applies the .center class and align="center" attribute to the immediate child of the tag. Thanks @jacobjpope!
    • Prevent errors when parsing inline elements or special characters.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Feb 29, 2016)

  • v1.0.0-rc.4(Feb 18, 2016)

    • The parser can now handle full HTML documentsβ€”thanks @ragboyjr!
    • When applying classes to <columns>, prevent the classes from sometimes being comma-separated in the final output.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-rc.3(Feb 18, 2016)

  • v1.0.0-rc.2(Feb 17, 2016)

  • v1.0.0-rc.1(Feb 11, 2016)

    • Pruned unused internal functions from the parser.
    • Remove code for <callout> element, which is now just handled by a class.
    • Updated <button> output to support changes to expanded button syntax.
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Feb 11, 2016)

  • v0.3.0(Feb 11, 2016)

    • When using the Inky parser directly, settings are now passed in the constructor instead of a separate function.
    • Removed the attributes option.
    • Renamed zfTags option to components.
    • Renamed grid option to columnCount.
    • Added a command line wrapper, which can be used by installing Inky globally.
    Source code(tar.gz)
    Source code(zip)
Owner
Foundation
The most advanced responsive front-end framework in the world.
Foundation
1KB lightweight, fast & powerful JavaScript templating engine with zero dependencies. Compatible with server-side environments like node.js, module loaders like RequireJS and all web browsers.

JavaScript Templates Contents Demo Description Usage Client-side Server-side Requirements API tmpl() function Templates cache Output encoding Local he

Sebastian Tschan 1.7k Jan 3, 2023
Variation-template - Variation is a PSD template that is covered into a web template using HTML5, CSS3, Bootstrapv4.6, JavaScript.

Variation Template Design Variation is a PSD website template. In this project this template is designed with HTML. Deployment This site is deployed a

Bipronath Saha 1 Jan 1, 2022
A declarative, HTML-based language that makes building web apps fun

A declarative, HTML-based language that makes building web apps fun ?? Docs βˆ™ Try Online βˆ™ Contribute βˆ™ Get Support Intro Marko is HTML re-imagined as

Marko 12k Jan 3, 2023
HTML Framework that allows you not to write JavaScript code.

EHTML (or Extended HTML) can be described as a set of custom elements that you can put on HTML page for different purposes and use cases. The main ide

Guseyn Ismayylov 172 Dec 22, 2022
Obsidian To HTML, A template for building obsidian style notes to a static site

oth (Obsidian To HTML) This is a template for publishing obsidian notes as a static site. The goal of the project is to stay minimal, since this is a

Ulisse mini 11 Nov 4, 2022
A simple boilerplate for Express + EJS projects.

Express + EJS Boilerplate This is a simple boilerplate for Express + EJS projects. ?? Summary Install Basic Structure Technologies Preview ??️ Install

null 4 Apr 28, 2022
This is a simple ticket system bot using discord.js v13 and node.js v17. It works with buttons and slashcommands.

Ticket-bot This is an simple ticket system bot using discord.js v13. If you find an error or need support, go to my discord server and open a ticket >

Cristhian 14 Jan 2, 2023
Shrinks any large data tables into compact and responsive tables

jquery.table-shrinker A Jquery plugin to make HTML Table responsive across all devices, the right way! Demo Click here to see the demo, remember to re

null 29 Sep 11, 2022
Project to manage multiple emails at once with lots of customization. You can send and receive emails. Desktop notifications can be modified.

Technologies Used React Redux Tailwind CSS Features Admin dashboard User settings and or user dashboard send emails recive emails Connections through

Multi Email 9 Dec 17, 2022
An Obsidian plugin to paste Excel tables as Markdown tables in Obsidian editor.

Obsidian Excel to Markdown Table An Obsidian plugin to paste Excel tables as Markdown tables in Obsidian editor. Demo You can paste the copied Excel d

Ganessh Kumar 108 Jan 4, 2023
Grupprojekt fΓΆr kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet fΓΆr kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide FΓΆr information om hur utv

Svante Jonsson IT-HΓΆgskolan 3 May 18, 2022
Hemsida fΓΆr personer i Sverige som kan och vill erbjuda boende till mΓ€nniskor pΓ₯ flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo fΓΆr kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Vite plugin to convert markdown to html with front-matter extraction and build-time syntax highlighting

Vite plugin to convert markdown to html with front-matter extraction and build-time syntax highlighting

Saurabh Daware 9 Sep 18, 2022
Jspreadsheet is a lightweight vanilla javascript plugin to create amazing web-based interactive tables and spreadsheets compatible with other spreadsheet software.

Jspreadsheet CE v4: The JavaScript spreadsheet Jexcel CE has been renamed to Jspreadsheet CE News Important: Please import jspreadsheet.css (jexcel.cs

null 6.2k Dec 19, 2022
The perfect library for adding search, sort, filters and flexibility to tables, lists and various HTML elements. Built to be invisible and work on existing HTML.

List.js Perfect library for adding search, sort, filters and flexibility to tables, lists and various HTML elements. Built to be invisible and work on

Jonny StrΓΆmberg 10.9k Jan 1, 2023
Tailwind CSS for HTML emails.

Mailwind Tailwind CSS for HTML emails. Tailwind makes it very easy to design websites, why not use it to design HTML emails? I've been using this at v

Soheil Rashidi 2.8k Jan 2, 2023
Graphs/networks turned into tables

(IMP NOTE FOR CONTRIBUTORS: PLEASE DON'T FORMAT THE CODE, IT'S DIFFICULT FOR ME TO FIND THE CHANGES. THANK YOU!) Graph to Table You must have seen gra

null 12 Oct 20, 2022
Magically convert a simple text input into a cool tag list with this jQuery plugin.

jQuery Tags Input Plugin Do you use tags to organize content on your site? This plugin will turn your boring tag list into a magical input that turns

XOXCO 2.3k Dec 23, 2022
Live searching/filtering for HTML tables in a jQuery plugin

jQuery Filter Table Plugin This plugin will add a search filter to tables. When typing in the filter, any rows that do not contain the filter will be

Sunny Walker 175 Oct 29, 2022