0.1.6 • Published 5 months ago

@ehubbell/html v0.1.6

Weekly downloads
-
License
ISC
Repository
github
Last release
5 months ago

Overview

This library provides a wrapper around HTML5 elements that allows you to pass in a tailwind property for className rollups. This allows us to remove duplicate classNames while allowing you to override base classNames through inheritance. The end result is fewer libraries (no need for clsx or classnames) and an HTML-library built for a composable, and organized, DX.

Prerequisites

  • Node
  • Tailwind

Installation

npm install @ehubbell/html

Usage

import { Button } from '@ehubbell/html';

const Btn = ({ type, onClick, tailwind, className }) => (
  <Button
    type={type}
    onClick={onClick}
    tailwind={{
      bgColor: 'bg-blue-500',
      color: 'text-white',
      fontSize: 'text-sm',
      hover: 'hover:bg-blue-400',
      spacing: 'px-3 py-1.5',
      ...tailwind
    }}
    className={className ? className : 'btn-primary'}>
    Click me
  </Button>
);

How it works

  • The library wraps core HTML5 element
  • Every element accepts it's standard HTML attributes
  • Every element also accepts two additional properties [name, tailwind]
  • The name property gets converted to the data-name attibute for better DOM tree navigation
  • The tailwind property accepts an arbitrary object, defined by you, containing tailwind className values
  • The library will then rollup that object into a className string and pass it to the HTML element while removing duplicates
  • The end result is a fun, composable and organized DX bjuilt for tailwind projects.

Supported HTML Elements

HTML Elements (A–C)HTML Elements (D–H)HTML Elements (I–M)HTML Elements (N–S)HTML Elements (T–Z)
<a><data><iframe><nav><table>
<abbr><datalist><img><noscript><tbody>
<address><dd><input><object><td>
<area><del><ins><ol><template>
<article><details><kbd><optgroup><textarea>
<aside><dfn><label><option><tfoot>
<audio><dialog><legend><output><th>
<b><div><li><p><thead>
<base><dl><link><param><time>
<bdi><dt><main><picture><title>
<bdo><em><map><pre><tr>
<blockquote><embed><mark><progress><track>
<body><fieldset><menu><q><u>
<br><figcaption><meta><rp><ul>
<button><figure><meter><rt><var>
<canvas><footer><ruby><video>
<caption><form><s><wbr>
<cite><h1> to <h6><samp>
<code><head><script>
<header><section>
<hr><select>
<small>
<source>
<span>
<strong>
<style>
<sub>
<summary>
<sup>

Development

This project is designed for development using the yalc library.

  • npm run dev
  • switch to project
  • npx yalc add @playbooks/theme
  • You may need to restart your application server
  • After that, this library will hot reload into the consuming application

Scripts

  • We've included a couple of helpful scripts for faster development.
  • deploy: npm run deploy -- 'commit message'
  • publish: npm run publish -- 'commit message' [major|minor|patch]

Husky

  • Husky configuration is setup to lint and format the repo on every commit
  • Edit the .husky/pre-commit file to change your settings

Author

Notes

To see this library in action, checkout the following projects:

0.1.6

5 months ago

0.1.5

5 months ago

0.1.4

5 months ago

0.1.3

5 months ago

0.1.2

5 months ago

0.1.1

5 months ago

0.1.0

5 months ago

0.0.16

5 months ago

0.0.15

5 months ago

0.0.14

5 months ago

0.0.13

5 months ago

0.0.12

5 months ago

0.0.11

5 months ago

0.0.10

5 months ago

0.0.9

5 months ago

0.0.8

5 months ago

0.0.6

5 months ago

0.0.5

5 months ago

0.0.4

5 months ago