@conectate/components (Conectate Components)
IMPORTANT: The Conectate Elements are a work in progress and subject to major changes.
@conectate/components is a collection of Web Components maintained by @herberthobregon that implement Material Design.
This repo builds and publishes one single npm package:
And components are imported by subpath, for example:
import "@conectate/components/ct-button"
import "@conectate/components/ct-icon/ct-icon-button.js"
Components
All components live under src/ and are exposed via subpath imports from @conectate/components.
Examples:
@conectate/components/ct-button
@conectate/components/ct-dialog
@conectate/components/ct-icon
@conectate/components/ct-icon/icon-list.js
Quick start with ct-button
1) Install
Install from NPM:
pnpm i @conectate/components
2) Write Raw HTML and JavaScript (without frameworks)
Import the component's JavaScript module, use the component in your HTML, and control it with JavaScript, just like you would with a built-in element such as <button>:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>My Example App</title>
<script src="./node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">
<body>
<ct-button id="myButton" raised>Click Me!</ct-button>
<script type="module">
import '@conectate/components/ct-button';
const button = document.querySelector('#myButton');
button.addEventListener('click', () => {
alert('You clicked!');
});
</script>
</body>
</html>
3) Serve
Serve your HTML with any server or build process that supports bare module specifier resolution (see next section):
npm install -g vite
vite
Bare module specifiers
The Conectate Elements are published as standard JavaScript modules that use bare module specifiers. Bare module specifiers are not yet supported by browsers, so it is necessary to use a tool that transforms
them to a path (for example from @conectate/components/ct-button to ./node_modules/@conectate/components/dist/ct-button/ct-button.js).
Deep imports (optional)
If you need a specific internal module, you can deep import it as long as it exists in the published dist/ output, for example:
import "@conectate/components/ct-button";
import "@conectate/components/ct-button/ct-button-menu.js";
import "@conectate/components/ct-icon/ct-icon-button.js";
Note: deep imports are more coupled to internal file layout. Prefer @conectate/components/<component> when possible.
Development (this repo)
pnpm install
pnpm demo
Build output is generated into dist/:
pnpm build
Two great choices for tools that do this are:
Fonts
Most applications should include the following tags in their main HTML file to ensure that text and icons
render correctly:
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet" />
The Conectate Elements default to using the Roboto font for text. This fonts are not automatically loaded, so it is the application's responsiblity to ensure that they are loaded.