npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@radval/stencil

v0.0.1

Published

Customizable transactional and marketing email templates

Downloads

81

Readme

Dependencies GitHub Issues Contributions welcome License

Why?

Coding responsive HTML that works on all email clients is daunting and time consuming. stencil helps you create beautiful emails in just a couple of lines of code.

Install

npm install @radval/stencil
//or
yarn add @radval/stencil

Usage

const Stencil = require('@radval/stencil')


const stencil = new Stencil('transactional')
const html = stencil.render({
    heading: 'Welcome, Jane! 🎉',
    message: 'We’ve heard you like emails!',
})

Each stencil email has the same structure: header, body, footer. The header has a logo, heading (title), message and an action button. The footer contains social media links, the business address and the unsubscribe message.

Check out stencil.email to see how each template looks!

There are 4 body categories:

  • welcome: Adds a list of tasks or next steps to follow.
  • transactional: Suited for password resets, account-related alerts, event-driven notifications and so on.
  • confirmation: Adds a confirmation code.
  • newsletter: Adds an articles list, each having an image, title, subtile, description and action button.

Customization

There are several ways in which you can customize stencil emails: beyond text you can change the color theme and each image and icon. Customization is done by passing a view object to the render method. Keep in mind that all the urls you're using have to be publicly available so that the recipient of your emails can see them. Also, all of the properties are optional, although without some of them the email would make little sense.

Here's what you can tweak:

Top-level views

Sent directly to the render method.

General

| Name | Description | Type | | :---------------- | :------------------------------------------------ | :---------------------- | | title | The title that shows up in web browsers tab | string | | preview | The preview that shows up in email clients lists | string | | font | The global font | font | | logo | The logo | image | | banner | A image banner appearing under the logo | image | | action | The header main button's action | action | | heading | The header's title | string/html | | message | The header's message | string/html | | social | The footer's social media links | array<social> | | businessAddress | The business address below the social media links | address | | unsubscribe | The unsubscribe message | string/html |

Welcome

| Name | Description | Type | | :------ | :------------------------ | :------------- | | steps | A todo or next steps list | steps |

Confirmation

| Name | Description | Type | | :----- | :-------------------- | :---------- | | code | The confirmation code | string/html |

Newsletter

| Name | Description | Type | | :--------- | :----------------- | :------------------------- | | articles | A list of articles | array<article> |

Objects

These are used by the view's properties (see above)

Font

| Name | Description | Type | | :----- | :-------------------------------- | :----- | | name | The font name, (e.g. Roboto) | string | | url | The font URL (publicly available) | string |

Image

| Name | Description | Type | | :------- | :----------------------------------------------------- | :----- | | width | The width (don't forget the CSS units i.e. 100px) | string | | height | The height (don't forget the CSS units i.e. 100px) | string | | src | The image URL (publicly available) | string |

Action

| Name | Description | Type | | :------ | :--------------- | :----- | | label | The button label | string | | href | The target URL | string |

Social

| Name | Description | Type | | :----- | :------------------------- | :------------------------------------------------------------------------ | | name | Provider name | one of twitter, facebook, instagram, pinterest, tiktok, whatsapp, youtube | | href | The target social page URL | string |

Address

| Name | Description | Type | | :----------- | :------------------------------------------------------------ | :----- | | firstLine | The address first line (e.g. Bohemian Inc, 221B Baker Street) | string | | secondLine | The address second line (e.g. London, United Kingdom) | string |

Steps

| Name | Description | Type | | :------ | :----------------------- | :-------------------------- | | title | The title above the list | string/html | | items | List items | array<steps-item> |

Steps item

| Name | Description | Type | | :------------ | :------------------- | :------------- | | icon | The item icon | image | | description | The item description | string/html |

Article

| Name | Description | Type | | :--------- | :------------------------ | :--------------- | | icon | The article icon | image | | title | The article title | string/html | | subtitle | The article subtitle | string/html | | preview | The article short preview | string/html | | action | The item description | action |