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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@edteam/edui

v1.4.6-beta

Published

Libreria de componentes para React siguiendo la Guia de estilos de EDteam

Readme

EDui

Libreria de componentes para React siguiendo la Guia de estilos de EDteam

Instalación

Para poder usar EDui primero se deben de tener instaladas las librerías node-sass, ed-grid y edteam-style-guides, una vez instaladas estas librerías se puede instalar EDui

npm install node-sass ed-grid edteam-style-guides @edteam/edui --save
or
yarn add node-sass ed-grid edteam-style-guides @edteam/edui

Se instalan ed-grid y edteam-style-guides para que la libreria se independiente de la versión actual de la guia de estilos y de EDgrid, es decir que la libreria en su bundle no incluye ninguna hoja css.

Uso en proyectos React

Primero se debe de crear un archivo sass donde se importen la guia de estilos y EDgrid

  // styles.scss
  //----- Importación de EDgrid y guía de estilos -----//
  @import '~ed-grid/ed-grid';
  @import '~edteam-style-guides/edteam-style-guides';

Y ahora se importa esta hoja de estilos en el archivo principal de la aplicación.

import React from "react"
import "./styles.scss" // La ruta donde esta la hoja de estilos

function App() {
	return (
		<>
			{/**Contenido de la aplicación**/}
		</>
	)
}

Uso en proyectos Nextjs

Se debe de instalar @zeit/next-sass para configurar sass en proyectos de Nextjs y configurar este plugin en el next.config.js

  // next.config.js
  const withSass = require('@zeit/next-sass')
  module.exports = withSass()

En el archivo styles.scss se pone el mismo contenido que en el ejemplo pasado

  // styles.scss
  //----- Importación de EDgrid y guía de estilos -----//
  @import '~ed-grid/ed-grid';
  @import '~edteam-style-guides/edteam-style-guides';

Y se puede importar esta hoja de estilos normalmente en nuestras paginas de Nextjs

  import React, {Component} from 'react'
  import "../styles/styles.scss"

  export default class extends Component {
    render() {
      return(
        <div className="ed-container">
          <h1>My fisrt page with Next.js and EDgrid</h1>
        </div>
      )
    }
  }

Componentes

Actualmente se tienen construidos los siguientes componentes

  • EDgrid
  • EDcontainer
  • EDitem
  • Banner
  • Topbar
  • Button
  • Table
  • Modal
  • Input
  • TextArea
  • Select
  • FormItem
  • Card

En Progreso

  • Tabs
  • Carousel

Generalidades

Todos los componentes reciben todas las propiedades válidas que se le puedan dar a los elementos HTML que renderizan, por ejemplo al componente Button se le puede pasar de manera normal propiedades como id, onClick, entre otras. Además que a todos se les puede pasar la propiedad ref para dar valor a alguna referencia de React. Ejemplo

const SampleComponent = () => (
  <>
    <Button onClick={/**Funcion*/} id="my-button" ref={myRef} className="content"></Button>
    <Form onSubmit={/*Funcion*/} ref={formRef}></Form>
    <Modal id="my-modal" ></Modal>
  </>
)

Y de esta manera con todos los componentes.

Colores

Algunos componentes reciben como propiedad el color del que será su fondo, esos posibles colores son:

  • first
  • second
  • third
  • accent
  • dark

Nota: En caso de recibir un valor incorrecto o no recibir ningún valor se tomara como valor por defecto first. Para más información visitar la Guía de estilos

EDgrid

Props

| Nombre | Tipo | Descripción | | ------------- |:-------------:| -----:| | gap | Number | Valor del gap que tendrá el grid, acepta valores entre 0 y 4 | rowsGap | bool | Indica si las filas del grid van a tener un gap entre ellas | | as | string | Indica que etiqueta HTML va a renderizar el EDgrid, por defecto es un div | | small | Number | Indica el numero de columnas que va tener el grid en pantallas pequeñas | | medium | Number | Indica el numero de columnas que va tener el grid en pantallas medianas | | large | Number | Indica el numero de columnas que va tener el grid en pantallas grandes |

Ejemplo

	import { EDgrid } from '@edteam/edui'
	//...
	const MyComponent = () => (
		<EDgrid small={1} medium={4} gap={2} rowsGap as="article">
			<div>1</div>
			<div>2</div>
			<div>3</div>
			<div>4</div>
			<div>5</div>
		</EDgrid>
	);

EDcontainer

Ejemplo:

	import { EDcontainer } from '@edteam/edui'
	//...
	const MyComponent = () => (
		<EDcontainer>
		{/**Hijos, que deberian ser EDitem**/}
		</EDcontainer>
	);

EDitem

Props

| Nombre | Tipo | Descripción | | ------------- |:-------------:| -----:| | small | Number | Indica el porcentaje del contenedor que ocupara el elemento en pantallas pequeñas, recibe los múltiplos de 5 del 0 al 100 | | medium | Number | Indica el porcentaje del contenedor que ocupara el elemento en pantallas mediana, recibe los múltiplos de 5 del 0 al 100 | | large | Number | Indica el porcentaje del contenedor que ocupara el elemento en pantallas grandes, recibe los múltiplos de 5 del 0 al 100 |

Nota: Las propiedades small, medium y large tambien soportan definiciones por fracciones recibiendo el objeto de la forma { numerator: number, denominator: number } y además por defecto small tiene valor de 100 y tanto medium como large reciben el valor del último breakpoint declarado, por defecto medium tendrá el valor de small y large el valor que tenga medium.

Ejemplo:

	import { EDcontainer, EDitem } from '@edteam/edui'
	//...
	const MyComponent = () => (
		<EDcontainer>
			<EDitem small={100} medium={50}>
				<p>
					En un lugar de la Mancha, de cuyo nombre no quiero acordarme,
          no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero,
          adarga antigua, rocín flaco y galgo corredor.
				</p>
			</EDitem>
			<EDitem small={100} medium={25}>
				<p>
					En un lugar de la Mancha, de cuyo nombre no quiero acordarme,
          no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero,
          adarga antigua, rocín flaco y galgo corredor.
				</p>
			</EDitem>
      <EDitem small={100}
        medium={{ numerator: 1, denominator: 4 }}
      >
				<p>
					En un lugar de la Mancha, de cuyo nombre no quiero acordarme,
          no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero,
          adarga antigua, rocín flaco y galgo corredor.
				</p>
			</EDitem>
		</EDcontainer>
	);

Banner

Props

| Nombre | Tipo | Descripción | | ------------- |:-------------:| -----:| | color | string | Indica el color del banner, por defecto es first | | diagonal | bool | Indica si se le agregara diagonal al final del contenedor | | image | string | Url de imagen de fondo del banner | | imageAlt | string | Propiedad alt de la imagen de fondo |

Ejemplo:

import { Banner } from '@edteam/edui';

const MyComponent = () => (
	<Banner
    color="dark"
    image="https://images.pexels.com/photos/1981043/pexels-photo-1981043.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940"
    imageAlt="Test picture"
    diagonal
  >
    <h1>Banner</h1>
  </Banner>
);

Topbar

Props

| Nombre | Tipo | Descripción | | ------------- |:-------------:| -----:| | color | string | Indica color del topbar, recibe valores siguiendo los colores de EDteam|

Ejemplo:

import React from 'react';
import { Topbar } from '@edteam/edui';

const MyComponent = () => (
  <Topbar color="dark">
		Contenido
	</Topbar>
)

Button

Props

| Nombre | Tipo | Descripción | | ------------- |:-------------:| -----:| | color | string | Indica color del botón, recibe valores siguiendo los colores de EDteam| | tiny | bool | Indica si el botón será de tipo tiny | | micro | bool | Indica si el botón será de tipo micro | | full | bool | Indica si el botón ocupara todo el ancho disponible | | ghost | bool | Indica si el botón será de fondo transparente, y solo consta de borde y texto. |

Table

Props

| Nombre | Tipo | Descripción | | ------------- |:-------------:| -----:| | type | string | Indica color principal de la tabla| | responsive | bool | Indica si la tabla va a ser responsive, por defecto el valor es true|

Colores:

  • secondary
  • tertiary
  • accent
  • dark
  • default (first) Ejemplo:
import { Table } from '@edteam/edui';

const MyComponent = () => (
	<Table type='tertiary'>
		<tr>
			<th>ID</th>
			<th>Name</th>
			<th>Email</th>
			<th>Acciones</th>
		</tr>
		<tr>
			<td>1</td>
			<td>Alejandro</td>
			<td>[email protected]</td>
			<td>Aqui las acciones</td>
		</tr>
		<tr>
			<td>1</td>
			<td>Alejandro</td>
			<td>[email protected]</td>
			<td>Aqui las acciones</td>
		</tr>
		<tr>
			<td>1</td>
			<td>Alejandro</td>
			<td>[email protected]</td>
			<td>Aqui las acciones</td>
		</tr>
		<tr>
			<td>1</td>
			<td>Alejandro</td>
			<td>[email protected]</td>
			<td>Aqui las acciones</td>
		</tr>
	</Table>
);

Modal

Props

| Nombre | Tipo | Descripción | | ------------- |:-------------:| -----:| | open | bool | Indica si el modal va estar abierto| | close | func | Función que cierra el modal |

Ejemplo:

import React,{ useState } from 'React';
import { Modal, Button } from '@edteam/edui';

function MyComponent() {
	const [open, setOpen] = useState(false);

	function closeModal() {
		setOpen(false)
	}

	function openModal() {
		setOpen(true)
	}

	return (
		<>
			<Modal open={open} close={closeModal}>
				<h2>EDmodal</h2>
			</Modal>
			<Button onClick={openModal}>Abrir modal</Button>
		</>
	)
}

Elementos del formulario

Tanto Select, los inputs, el textarea funcionan de manera normal como cualquier elemento html. Ejemplo:


const FormSample = () => (
  <Form>
    <Form.FormItem>
      <Form.Input type="text" placeholder="Input your name" id="name" />
    </Form.FormItem>
    <Form.FormItem as="article">
      <Form.Input type="email" placeholder="Input your email" />
    </Form.FormItem>
    <Form.FormItem>
      <Form.Input type="password" placeholder="Input your password" />
    </Form.FormItem>
    <Button full type="submit">
      Submit
    </Button>
  </Form>
);

Nota: El mismo ejemplo puede ser desarrollado usando el componente EDgrid y al igual que el EDgrid FormItem, puede recibir la props as para indicar la etiqueta HTML que va a representar, la cual sera por defecto div.

const FormSample = () => (
  <Form>
    <EDgrid small={1} medium={2} gap={2} rowsGap>
      <Form.Input type="text" placeholder="Input your name" id="name" />
      <Form.Input type="text" placeholder="Input your lastname" id="lastname" />
      <Form.Input type="text" placeholder="Input your city" id="city" />
      <Form.Input type="text" placeholder="Input your country" id="country" />
      <Form.Select>
        <option>America</option>
        <option>Europe</option>
      </Form.Select>
      <Form.TextArea
        placeholder="Input your biography"
        className="s-cols-1 m-cols-2"
      />
      <Button full type="submit" className="s-cols-1 m-cols-2">
        Submit
      </Button>
    </EDgrid>
  </Form>
);

Card

Los elementos del card al igual que los elementos de formulario estan construidos utilizando el patrón de Compound Components asi que el marcado que al final se elija es totalmente a elección del usuario de la librería

Card Props

| Nombre | Tipo | Descripción | | ------------- |:-------------:| -----:| | as | string | Indica que etiqueta HTML va a renderizar el contenedor del card, por defecto es un article | | horizontal | bool | Indica si el card va a estar en modo vertical, por defecto es false |

Card.Header Props

| Nombre | Tipo | Descripción | | ------------- |:-------------:| -----:| | className | string | Indica las clases css del contenedor | | image | string | Indica la imagen que va a ser renderizada | | imageClass | string | Indica las clases css de la imagen | | alt | string | Indica la propiedad alt de la etiqueta img |

Opcionalmente el card puede recibir hijos

Card.Title Props

| Nombre | Tipo | Descripción | | ------------- |:-------------:| -----:| | as | string | Indica que etiqueta HTML va a renderizar el título, por defecto es un h3 |

Ejemplo: Card normal*

	<Card>
		<Card.Body>
			<Card.Header image="https://drupal.ed.team/sites/default/files/styles/16_9_medium/public/imagenes-cdn-edteam/2019-10/figma-desde-cero-poster.png" />
			{ /* O tambien en lugar de pasar la imagen y para más control sobre el marcado se puede pasar como hijo */ }
			<Card.Header>
				<div className="img-container s-ratio-16-9">
					<img
						src="https://drupal.ed.team/sites/default/files/styles/16_9_medium/public/imagenes-cdn-edteam/2019-09/adobe-xd.png"
						className="s-radius-tl-1 s-radius-tr-1"
						alt="Adobe XD"
					/>
				</div>
			</Card.Header>
			<Card.Content>
				<Card.Title>Figma Desde Cero</Card.Title>
				<p className="small s-mb-0">
					Aprende a diseñar interfaces de usuario interactivas e impactantes
				</p>
			</Card.Content>
		</Card.Body>
		<Card.Footer>
			<p className="s-mb-0">Álvaro Felipe</p>
			<div className="s-to-right color first-color s-cross-center">
				<b>$ 20 USD</b>
			</div>
		</Card.Footer>
	</Card>

Card horizontal

	<Card horizontal>
		<Card.Body>
			<Card.Header image="https://drupal.ed.team/sites/default/files/styles/16_9_medium/public/imagenes-cdn-edteam/2019-10/figma-desde-cero-poster.png" />
			<Card.Content>
				<Card.Title>Figma Desde Cero</Card.Title>
				<p className="small s-mb-0">
					Aprende a diseñar interfaces de usuario interactivas
				</p>
			</Card.Content>
		</Card.Body>
		<Card.Footer>
			<p className="s-mb-0">Álvaro Felipe</p>
			<div className="s-to-right color first-color s-cross-center">
				<b>$ 20 USD</b>
			</div>
		</Card.Footer>
	</Card>