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

artistic-elements

v1.1.6

Published

artistic web components

Downloads

11

Readme

Artistic Elements

rectangles

Artistic Elements is a collection of very simple Web Components to create art.

This project was born out of wanting to learn about:

  1. the Web Components API
  2. the differences between that and using Lit.dev
  3. modern tooling, namely:
    1. rollup.js
    2. @web/dev-server

These artistic components were a result of, years ago, creating swi{css}ted with Styled Components in React and then using that work as the base for these (Lit) Web Components.

Development

To view examples:

npm i
npm start

Open localhost:8000 to view available components.

Contributing

Feel the need to add a new component? Awesome. Follow these basic steps:

  1. Create a new branch from develop
  2. Create a new Lit component in src/artistic
    1. src/artistic/my-component
  3. Update src/index.ts to export your new component
    1. export { ArtisticMyComponent } from './artistic/my-component';
  4. Update examples/index.html to include your component following the pattern found in the file
  5. Create a new example file with some examples using attributes
  6. Update the README to include the necessary details
  7. Open a pull request to develop
    1. Be sure to include a screenshot of your new component in the pull request.

In Use

Using it and want to show your art? Open up a pull request to update this section by adding to the list.

  1. swissted
  2. art.koch.dev

Import

Importing via the CDN is as simple as including the index as a module in your HTML. This includes all the components.

Note: Remove '.min' from the path to use the unminified version from jsDeliver.

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/index.min.js"
></script>

Cherry picking is also possible by targeting the specific component. See examples below.

Importing for JavaScript where the * is one of the available component names: Circular, Rectangle, etc.

import { Artistic* } from 'artistic-elements';

Importing for React where the * is one of the available component names: Circular, Rectangle, etc.

import { Artistic* } from 'artistic-elements/dist/react';

Components

Circular

A simple circular object with a single color.

To create a circle, use the same values for width and height.

Attributes

| Attribute | Description | Type | Default | | --------- | ------------- | -------- | ------- | | width | object width | string | '10rem' | | height | object height | string | '10rem' | | color | object color | string | '#f0f' |

Import

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/artistic/circular.min.js"
></script>

HTML

<artistic-circular></artistic-circular>
<artistic-circular
  width="20rem"
  height="20rem"
  color="#fff"
></artistic-circular>

Javascript API

import { ArtisticCirular } from 'artistic-elements';

const circle = new ArtisticCirular();
circle.width = '20rem';
circle.height = '20rem';
circle.color = '#fff';
document.querySelector('main').append(circle);

React API

import { ArtisticCircular } from 'artistic-elements/dist/react';

<ArtisticCircular />
<ArtisticCircular width="20rem" height="20rem" color="#fff" />

Circular Gradient

A simple circular object with two colors, each color using 50% of the object.

Supply an angle in degrees to rotate.

To create a circle, use the same values for width and height.

Attributes

| Attribute | Description | Type | Default | | --------- | ------------------- | -------- | ------- | | width | object width | string | '10rem' | | height | object height | string | '10rem' | | angle | object rotation | string | '0deg' | | color | object first color | string | '#f0f' | | color2 | object second color | string | '#0f0' |

Import

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/artistic/circular-gradient.min.js"
></script>

HTML

<artistic-circular-gradient></artistic-circular-gradient>
<artistic-circular-gradient
  width="20rem"
  height="20rem"
  color="#439dc8"
  color2="#377e49"
  angle="90deg"
></artistic-circular-gradient>

Javascript API

import { ArtisticCircleGradient } from 'artistic-elements';

const circleGradient = new ArtisticCircleGradient();
circleGradient.width = '20rem';
circleGradient.height = '20rem';
circleGradient.color = '#fff';
circleGradient.color2 = '#000';
circleGradient.angle = '90deg';
document.querySelector('main').append(circleGradient);

React API

import { ArtisticCircularGradient } from 'artistic-elements/dist/react';

<ArtisticCircularGradient />
<ArtisticCircularGradient
  width="20rem"
  height="20rem"
  color="#fff"
  color2="#000"
  angle="90deg"
/>

Doughnut

A circle with a hole and a single color.

The diameter and lineWidth are used to calculate the overall size (width/height) in rem. TODO: choose px or rem?

const size = diameter - lineWidth * 2;

Ability to position absolutely if either a top or left value is supplied.

Attributes

| Attribute | Description | Type | Default | | --------- | -------------------- | -------- | ------- | | diameter | object diameter | number | 10 | | lineWidth | object border width | number | 1 | | color | object color | string | '#f0f' | | top | object top position | string | '0' | | left | object left position | string | '0' |

Import

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/artistic/doughnut.min.js"
></script>

HTML

<artistic-doughnut></artistic-doughnut>
<artistic-doughnut diameter="25" lineWidth="5" color="#000"></artistic-doughnut>

Javascript API

import { ArtisticDoughnut } from 'artistic-elements';

const doughnut = new ArtisticDoughnut();
doughnut.diameter = 25;
doughnut.height = 5;
doughnut.color = '#fff';
document.querySelector('main').append(doughnut);

React API

import { ArtisticDoughnut } from 'artistic-elements/dist/react';

<ArtisticDoughnut />
<ArtisticDoughnut diameter={25} height={5} color="#fff" />

Rectangle

A simple rectangle with a single color.

Ability to position absolutely if either a top or left value is supplied.

Ability to align which maps to align-self for flexbox.

Attributes

| Attribute | Description | Type | default | | ------------- | -------------------- | -------- | --------- | | width | object width | string | '10rem' | | height | object height | string | '10rem' | | color | object color | string | '#f0f' | | top | object top position | string | '0' | | left | object left position | string | '0' | | align | object alignment | string | 'initial' | | border-radius | object border radius | string | '0' |

Import

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/artistic/rectangle.min.js"
></script>

HTML

<artistic-rectangle></artistic-rectangle>
<artistic-rectangle
  width="60rem"
  height="5rem"
  color="#000"
  align="end"
></artistic-rectangle>

Javascript API

import { ArtisticRectangle } from 'artistic-elements';

const rectangle = new ArtisticRectangle();
rectangle.width = '60rem';
rectangle.height = '5rem';
rectangle.color = '#000';
rectangle.align = 'end';
document.querySelector('main').append(rectangle);

React API

import { ArtisticRectangular } from 'artistic-elements/dist/react';

<ArtisticRectangular />
<ArtisticRectangular
  width="60rem"
  height="5rem"
  color="#000"
  align="end"
/>

Rectangle Gradient

A simple rectangular object with two colors, each color using 50% of the object.

Ability to position absolutely if either a top or left value is supplied.

Ability to align which maps to align-self for flexbox.

Attributes

| Attribute | Description | Type | default | | ------------- | -------------------- | -------- | --------- | | width | object width | string | '10rem' | | height | object height | string | '10rem' | | angle | object rotation | string | '0deg' | | color | object first color | string | '#f0f' | | color2 | object second color | string | '#0f0' | | top | object top position | string | '0' | | left | object left position | string | '0' | | align | object alignment | string | 'initial' | | border-radius | object border radius | string | '0' |

Import

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/artistic/rectangle-gradient.min.js"
></script>

HTML

<artistic-rectangle-gradient></artistic-rectangle-gradient>
<artistic-rectangle-gradient
  width="60rem"
  height="5rem"
  color="#000"
  color2="#fff"
></artistic-rectangle-gradient>

Javascript API

import { ArtisticRectangleGradient } from 'artistic-elements';

const rectangleGradient = new ArtisticRectangleGradient();
rectangleGradient.width = '60rem';
rectangleGradient.height = '5rem';
rectangleGradient.color = '#000';
rectangleGradient.color2 = '#fff';
document.querySelector('main').append(rectangleGradient);

React API

import { ArtisticRectangleGradient } from 'artistic-elements/dist/react';

<ArtisticRectangleGradient />
<ArtisticRectangleGradient
  width="60rem"
  height="5rem"
  color="#000"
  color2="fff"
/>

Triangle Rectangle

Uses the css border trick to create a rectangular object made up of 4 triangles.

To create a square, use the same values for width and height.

The borderStyle defaults to solid. Any valid value for border-style is acceptable.

The colors map to each of the borders (top, right, bottom, left).

Attributes

| Attribute | Description | Type | Default | | ----------- | --------------------- | -------- | ------- | | width | object width | number | 10 | | height | object height | number | 10 | | borderStyle | object border-style | string | 'solid' | | topColor | top triangle color | string | '#f0f' | | rightColor | right triangle color | string | '#0f0' | | bottomColor | bottom triangle color | string | '#ff0' | | leftColor | left triangle color | string | '#00f' |

Import

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/artistic/triangle-rectangle.min.js"
></script>

HTML

<artistic-triangle-rectangle></artistic-triangle-rectangle>
<artistic-triangle-rectangle
  width="20"
  height="20"
  topColor="#63fd86"
  rightColor="#8601ff"
  bottomColor="#35e8c2"
  leftColor="#63fd86"
></artistic-triangle-rectangle>

Javascript API

import { ArtisticTriangleRectangle } from 'artistic-elements';

const square = new ArtisticTriangleRectangle();
square.width = '20';
square.height = '20';
square.topColor = '#63fd86';
square.rightColor = '#8601ff';
square.bottomColor = '#35e8c2';
square.leftColor = '#63fd86';
document.querySelector('main').append(square);

React API

import { ArtisticTriangleRectangular } from 'artistic-elements/dist/react';

<ArtisticTriangleRectangular />
<ArtisticTriangleRectangular
  width={20}
  height={20}
  topColor="#63fd86"
  rightColor="#8601ff"
  bottomColor="#35e8c2"
  leftColor="#63fd86"
/>

Triangle Up

CSS border trick to create a triangle object that points up with a single color.

height determines overall height of the triangle.

widthLeft and widthRight determine the left and right width (50% each), respectively.

If the height is 2x the value of widthLeft and widthRight (and both widthLeft and widthRight are the same value), the triangle will fit in a square with the top point at the midway point of the top side of the square. This is the default behavior.

Attributes

| Attribute | Description | Type | Default | | ---------- | ----------------------- | -------- | ------- | | widthLeft | object left side width | string | '5rem' | | widthRight | object right side width | string | '5rem' | | height | object height | string | '10rem' | | color | object color | string | '#0f0' |

Import

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/artistic/triangle-up.min.js"
></script>

HTML

<artistic-triangle-up></artistic-triangle-up>
<artistic-triangle-up
  widthLeft="10rem"
  widthRight="10rem"
  height="20rem"
  color="#fff"
></artistic-triangle-up>

Javascript API

import { ArtisticTriangleUp } from 'artistic-elements';

const triangleUp = new ArtisticTriangleUp();
triangleUp.widthLeft = '10rem';
triangleUp.widthRight = '10rem';
triangleUp.height = '20rem';
triangleUp.color = '#fff';
document.querySelector('main').append(triangleUp);

React API

import { ArtisticTriangleUp } from 'artistic-elements/dist/react';

<ArtisticTriangleUp />
<ArtisticTriangleUp
  widthLeft="10rem"
  widthRight="10rem"
  height="20rem"
  color="#fff"
/>

Triangle Down

CSS border trick to create a triangle object that points down with a single color.

height determines overall height of the triangle.

widthLeft and widthRight determine the left and right width (50% each), respectively.

If the height is 2x the value of widthLeft and widthRight (and both widthLeft and widthRight are the same value), the triangle will fit in a square with the bottom point at the midway point of the bottom side of the square. This is the default behavior.

Attributes

| Attribute | Description | Type | Default | | ---------- | ----------------------- | -------- | ------- | | widthLeft | object left side width | string | '5rem' | | widthRight | object right side width | string | '5rem' | | height | object height | string | '10rem' | | color | object color | string | '#0f0' |

Import

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/artistic/triangle-down.min.js"
></script>

HTML

<artistic-triangle-down></artistic-triangle-down>
<artistic-triangle-down
  widthLeft="10rem"
  widthRight="10rem"
  height="20rem"
  color="#fff"
></artistic-triangle-down>

Javascript API

import { ArtisticTriangleDown } from 'artistic-elements';

const triangleDown = new ArtisticTriangleDown();
triangleDown.widthLeft = '10rem';
triangleDown.widthRight = '10rem';
triangleDown.height = '20rem';
triangleDown.color = '#fff';
document.querySelector('main').append(triangleDown);

React API

import { ArtisticTriangleDown } from 'artistic-elements/dist/react';

<ArtisticTriangleDown />
<ArtisticTriangleDown
  widthLeft="10rem"
  widthRight="10rem"
  height="20rem"
  color="#fff"
/>

Triangle Left

CSS border trick to create a triangle object that points to the left with a single color.

width determines overall width of the triangle.

heightTop and heightBottom determine the top and bottom height (50% each), respectively.

If the width is 2x the value of heightTop and heightBottom (and both heightTop and heightBottom are the same value), the triangle will fit in a square with the left point at the midway point of the left side of the square. This is the default behavior.

Attributes

| Attribute | Description | Type | Default | | ------------ | ----------------------- | -------- | ------- | | heightTop | object left side width | string | '5rem' | | heightBottom | object right side width | string | '5rem' | | width | object height | string | '10rem' | | color | object color | string | '#0f0' |

Import

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/artistic/triangle-left.min.js"
></script>

HTML

<artistic-triangle-left></artistic-triangle-left>
<artistic-triangle-left
  heightTop="10rem"
  heightBottom="10rem"
  width="20rem"
  color="#fff"
></artistic-triangle-left>

Javascript API

import { ArtisticTriangleLeft } from 'artistic-elements';

const triangleLeft = new ArtisticTriangleLeft();
triangleDown.heightTop = '10rem';
triangleDown.heightBottom = '10rem';
triangleDown.width = '20rem';
triangleDown.color = '#fff';
document.querySelector('main').append(triangleDown);

React API

import { ArtisticTriangleLeft } from 'artistic-elements/dist/react';

<ArtisticTriangleLeft />
<ArtisticTriangleLeft
  heightTop="10rem"
  heightBottom="10rem"
  width="20rem"
  color="#fff"
/>

Triangle Right

CSS border trick to create a triangle object that points to the right with a single color.

width determines overall width of the triangle.

heightTop and heightBottom determine the top and bottom height (50% each), respectively.

If the width is 2x the value of heightTop and heightBottom (and both heightTop and heightBottom are the same value), the triangle will fit in a square with the right point at the midway point of the right side of the square. This is the default behavior.

Attributes

| Attribute | Description | Type | Default | | ------------ | ----------------------- | -------- | ------- | | heightTop | object left side width | string | '5rem' | | heightBottom | object right side width | string | '5rem' | | width | object height | string | '10rem' | | color | object color | string | '#0f0' |

Import

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/artistic/triangle-right.min.js"
></script>

HTML

<artistic-triangle-right></artistic-triangle-right>
<artistic-triangle-right
  heightTop="10rem"
  heightBottom="10rem"
  width="20rem"
  color="#fff"
></artistic-triangle-right>

Javascript API

import { ArtisticTriangleRight } from 'artistic-elements';

const triangleRight = new ArtisticTriangleRight();
triangleRight.heightTop = '10rem';
triangleRight.heightBottom = '10rem';
triangleRight.width = '20rem';
triangleRight.color = '#fff';
document.querySelector('main').append(triangleRight);

React API

import { ArtisticTriangleRight } from 'artistic-elements/dist/react';

<ArtisticTriangleRight />
<ArtisticTriangleRight
  heightTop="10rem"
  heightBottom="10rem"
  width="20rem"
  color="#fff"
/>

Radial Circular Gradient

A simple circular object which supports an array of colors with a corresponding array of stops.

Colors array used to create a radial gradient.

Stops array values between 0 and 1.

Stops array must have the same length as the colors array.

To create a circle, use the same values for width and height.

Attributes

| Attribute | Description | Type | Default | | --------- | ------------------------------------------- | -------- | ---------------- | | width | object width | string | '10rem' | | height | object height | string | '10rem' | | colors | object colors for radial-gradient | array | ["#f0f", "#ff0"] | | stops | object position of color in radial-gradient | array | [0, 1] |

Import

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/artistic-elements/dist/artistic/circular-gradient.min.js"
></script>

HTML

<artistic-radial-circular-gradient></artistic-radial-circular-gradient>
<artistic-radial-circular-gradient
  width="20rem"
  height="20rem"
  colors='["#f0f", "#0f0"]'
  stops="[0, 1]"
></artistic-radial-circular-gradient>

Javascript API

import { ArtisticRadialCircleGradient } from 'artistic-elements';

const radialCircleGradient = new ArtisticRadialCircleGradient();
radialCircleGradient.width = '20rem';
radialCircleGradient.height = '20rem';
radialCircleGradient.colors = ['#f0f', '#ff0'];
radialCircleGradient.stops = [0, 1];
document.querySelector('main').append(radialCircleGradient);

React API

import { ArtisticRadialCircleGradient } from 'artistic-elements/dist/react';

<ArtisticRadialCircleGradient />
<ArtisticRadialCircleGradient
  width="20rem"
  height="20rem"
  colors={["#f0f", "#0f0"]}
  stops={[0, 1]}
/>