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 🙏

© 2025 – Pkg Stats / Ryan Hefner

groker

v1.5.2

Published

Una biblioteca de componentes reutilizables para React

Downloads

54

Readme

Groker

Groker es una biblioteca de componentes reutilizables para React que incluye íconos, utilidades de fecha y otros módulos útiles. Está diseñada para ser modular y fácil de integrar en proyectos modernos.

Instalación

Para instalar Groker, ejecuta el siguiente comando: npm install groker

Uso

Importacion de estilos del paquete

Antes de usar los componentes, asegúrate de importar los estilos globales del paquete en tu archivo principal (por ejemplo, main.jsx o index.js): import 'groker/dist/groker.css'; Esto aplicará los estilos necesarios para que los componentes se vean correctamente.

Importar Componentes

Puedes importar componentes, íconos y utilidades desde el paquete principal (groker) o desde módulos específicos (groker/components, groker/icons, etc.).

  • Opción 1: Importar desde el Paquete Principal Si prefieres simplicidad, puedes importar todo directamente desde 'groker':
import { ToggleSwitch } from 'groker'; // Componente
import { DarkMode_icon, LightMode_icon } from 'groker'; // Íconos
import { today } from 'groker'; // Utilidad de fecha
  • Opción 2: Importar desde Módulos Específicos Si prefieres modularidad, puedes importar desde módulos específicos:
import { ToggleSwitch } from 'groker/components'; // Componentes
import { DarkMode_icon, LightMode_icon } from 'groker/icons'; // Íconos
import { today } from 'groker/date'; // Utilidades de fecha

Ejemplo de Uso

Aquí tienes un ejemplo básico de cómo usar Groker en una aplicación React:

import React from 'react';
import ReactDOM from 'react-dom/client';
import 'groker/dist/groker.css'; // Importa los estilos globales
import { ToggleSwitch } from 'groker/components'; // Importa un componente
import { DarkMode_icon, LightMode_icon } from 'groker/icons'; // Importa íconos

function App() {
  const [isDarkMode, setIsDarkMode] = React.useState(false);

  return (
    <div>
      <h1>Groker Example</h1>
      <ToggleSwitch
        switcher={isDarkMode}
        onEvent={() => setIsDarkMode(!isDarkMode)}
      />
      <p>{isDarkMode ? 'Modo Oscuro' : 'Modo Claro'}</p>
      {isDarkMode ? <DarkMode_icon /> : <LightMode_icon />}
    </div>
  );
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);

Estructura del Paquete

  • groke/components: Componentes reutilizables como ToggleSwitch, ConfirmModal, etc.
  • groke/icons: Íconos como DarkMode_icon, LightMode_icon, Calendar, etc.
  • groke/date : Utilidades relacionadas con fechas, como today.
  • groke/dist/groker.css: Archivo CSS con los estilos globales del paquete.

Lista de Componentes, Funciones e Iconos

Componentes (groker/components)

  • ToggleSwitch : Un interruptor de on/off. image image
Props:
| Nombre      | Tipo       | Requerido | Descripción                                      | Valor por Defecto |
|-------------|------------|-----------|--------------------------------------------------|-------------------|
| `switcher`  | `boolean`  | No        | Indica si el interruptor está activado o no.     | -                 |
| `onEvent`   | `function` | No        | Función que se ejecuta cuando cambia el estado.  | -                 |
| `name`      | `string`   | No        | Nombre del input type checkbox.                  | ""                |
import { ToggleSwitch } from 'groker/components';

function App() {
  const [isTrue, setIsTrue] = React.useState(false)

  return (
    <div>
      <ToggleSwitch onEvent={() => console.log(`switched to ${isTrue}`)} switcher={isTrue}> name="my toggle switch" />
    </div>
  );
}

  • Button : Boton reutilizable con estilos predeterminados
Props:
| Nombre      | Tipo       | Requerido | Descripción                                      | Valor por Defecto |
|-------------|------------|-----------|--------------------------------------------------|-------------------|
| `children`  | `ReactNode`| Si        | Contenido renderizable dentro del componente.    | -                 |
| `onEvent`   | `function` | No        | Función que se ejecuta cuando se hace click.     | -                 |
| `className` | `string`   | No        | Clases de estilo customizables.                  | ""                |
| `theme`     | `string`   | No        | ligh/dark para uso de colores.                   | "light"           |
import { Button } from 'groker/components';

function App() {
  return (
    <div>
      {/* Children como texto */}
      <Button theme="light" onEvent={() => alert('¡Clic!')}>
        Botón Primario
      </Button>

      {/* Children como JSX */}
      <Button theme="dark" className="your-custom-button-class">
        <span style={{ color: 'white' }}>Botón Secundario</span>
      </Button>

      {/* Children como un número */}
      <Button>42</Button>
    </div>
  );
}

  • ConfirmModal : Ventana modal que permite confirmar o rechazar. image
Props:
| Nombre      | Tipo       | Requerido | Descripción                                      | Valor por Defecto |
|-------------|------------|-----------|--------------------------------------------------|-------------------|
| `isOpen`    | `boolean`  | Si        | Indica si el modal está abierto o no.            | false             |
| `onClose`   | `function` | Si        | Función que se ejecuta cuando cambia el estado.  | -                 |
| `onConfirm` | `function` | Si        | Función que se ejecuta cuando cambia el estado.  | -                 |
| `message`   | `string`   | Si        | Texto que se muestra en el componente.           | ""                |
| `className` | `string`   | No        | Clases de estilo customizables.                  | ""                |
| `theme`     | `string`   | No        | ligh/dark para uso de colores.                   | "light"           |
import React from 'react'
import { ConfirmModal } from 'groker/components';

function App() {
  const [isModalOpen, setIsModalOpen] = React.useState(false) // Estado para el modal

  const cunstomHandlerThatOpensTheModal = () => {
    // ... mas logica a ejecutar
    setIsModalOpen(true) // Abre el modal
  }

  const customHandlerWhenConfirms = () => {
    // ... mas logica a ejecutar
    setIsModalOpen(false) // Cierra el modal
  }

  const customHandlerThatClosesModal = () => {
    // ... mas logica a ejecutar
    setIsModalOpen(false) // Cierra el modal
  }

  return (
    <div>
      <ConfirmModal
        isOpen={isModalOpen}
        onClose={customHandlerThatClosesModal}
        onConfirm={customHandlerWhenConfirms}
        message={`¿Estás seguro de que deseas realizar esta acción"?`}
        theme={theme}
      />
 </div>
  );
}

  • AlertModal : Ventana modal informativa solo permite confirmar. image
Props:
| Nombre      | Tipo       | Requerido | Descripción                                      | Valor por Defecto |
|-------------|------------|-----------|--------------------------------------------------|-------------------|
| `isOpen`    | `boolean`  | Si        | Función que se ejecuta cuando cambia el estado.  | -                 |
| `onClose`   | `function` | Si        | Función que se ejecuta cuando cambia el estado.  | -                 |
| `message`   | `string`   | Si        | Texto que se muestra en el componente.           | ""                |
| `className` | `string`   | No        | Clases de estilo customizables.                  | ""                |
| `theme`     | `string`   | No        | ligh/dark para uso de colores.                   | "light"           |
import React from 'react'
import { AlertModal } from 'groker/components';

function App() {
  const [isModalOpen, setIsModalOpen] = React.useState(false) // Estado para el modal
  const theme = 'dark'

  const cunstomHandlerThatOpensTheModal = () => {
    // ... mas logica a ejecutar
    setIsModalOpen(true) // Abre el modal
  }

  const customHandlerThatClosesModal = () => {
    // ... mas logica a ejecutar
    setIsModalOpen(false) // Cierra el modal
  }

  return (
    <div>
      <AlertModal
        isOpen={isModalOpen}
        onClose={customHandlerThatClosesModal}
        message={`Alerta! estas por realizar una acción`}
        theme={theme}
      />
 </div>
  );
}

  • TextInput : Input de texto con estilos predeterminados image
Props:
| Nombre         | Tipo       | Requerido | Descripción                                      | Valor por Defecto |
|----------------|------------|-----------|--------------------------------------------------|-------------------|
| `label`        | `string`   | Si        | Texto que se muestra en el margen sup del comp.  | -                 |
| `defaultValue` | `string`   | No        | Valor por defecto a mostrar.                     | ""                |
| `onChangeEvent`| `function` | Si        | Funcion que se ejecuta en el evento change.      | "void"            |
| `type`         | `string`   | No        | Tipo de input text | number.                     | "text"            |
| `name`         | `string`   | No        | Nombre para el input.                            | ""                |
| `className`    | `string`   | No        | Clases de estilo customizables.                  | ""                |
| `theme`        | `string`   | No        | ligh/dark para uso de colores.                   | "light"           |
import React from 'react'
import { TextInput } from 'groker/components';

function App() {
  const theme = 'light'

  return (
    <div>
     <TextInput
        label="Nombre"
        defaultValue={'Un Input de Texto'}
        name="name"
        theme={theme}
        onChangeEvent={myCustomHandler}
     />
   </div>
  );
}

  • DateInput : Input de fecha con estilos predeterminados
Props:
| Nombre         | Tipo       | Requerido | Descripción                                      | Valor por Defecto |
|----------------|------------|-----------|--------------------------------------------------|-------------------|
| `onChangeEvent`| `function` | Si        | Funcion que se ejecuta cuando cambia el valor.   | -                 |
| `label`        | `string`   | No        | Texto que se muestra en el margen sup del comp.  | -                 |
| `iconSize`     | `number`   | No        | Valor para icono de calendario (px).             | 30                |
| `className`    | `string`   | No        | Clases de estilo customizables.                  | ""                |
| `theme`        | `string`   | No        | ligh/dark para uso de colores.                   | "light"           |
import React from 'react'
import { TextInput } from 'groker/components';
import { inputsFormat, calendarFormat } from 'groker/dates';

function App() {
  const [selectedDate, setSelectedDate] = React.useState(new Date())

  const handleChangeEvent = e => {
    setSelectedDate(e.target.value)
  }

  return (
    <div>
     <DateInput
        label="Seleccionar Fecha"
        onChangeEvent={handleChangeEvent}
      />
   </div>
  );
}

  • Selector : Selector de opciones con estilos predeterminados
Props:
| Nombre         | Tipo       | Requerido | Descripción                                      | Valor por Defecto |
|----------------|------------|-----------|--------------------------------------------------|-------------------|
| `list`         | `array`    | Si        | Array de string|number que se mostraran listadas | -                 |
| `onChangeEvent`| `function` | No        | Funcion que se ejecuta cuando cambia el valor.   | -                 |
| `defaultValue` | `string`   | No        | Valor por defecto seleccionado.                  | ""                |
| `label`        | `string`   | No        | Texto que se muestra en el margen sup del comp.  | ""                |
| `className`    | `string`   | No        | Clases de estilo customizables.                  | ""                |
| `theme`        | `string`   | No        | ligh/dark para uso de colores.                   | "light"           |
import React from 'react'
import { Selector } from 'groker/components';

function App() {

  // lista con strings, numeros o un mix ✔️
  const listaValida = ['opcion 1', 'otra opcion', 3, 8, 'flores']

  // lista con valores invalidos ❌
  const listaInvalida = [ {}, [], 'no va a listarse', () => {} ]

  return (
    <div>
     <Selector
        onChangeEvent={() => {...}}
        list={listaValida}
      />
   </div>
  );
}

Funciones (groker/date)

  • calendarFormat(): param String (algun formato de fecha) returns DD/MM/YY
  • inputsFormat(): param String (algun formato de fecha) returns YYYY-MM-DD
  • isoFormat(): param String (algun formato de fecha) returns YYYY-MM-DDThh:mm:ss.sssZ
  • today: returns YYYY-MM-DD

Iconos (groker/icons)

  • Arrow_left
  • Calendar
  • Chevron_left
  • Chevron_right
  • Cloud_arrou_up
  • DarkMode
  • LightMode
  • Edit_icon
  • Ellipsis_vertical
  • Exclamation_circle
  • Eye

Contribuciones

Si deseas contribuir al desarrollo de Groker, sigue estos pasos:

  1. Clona el repositorio: git clone https://github.com/tu-usuario/groker.git
  2. Instala las dependencias: npm install
  3. Realiza tus cambios y prueba localmente: npm run build link
  4. Envia un pull request con tus mejoras.