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

@dotrino/topbar

v0.5.0

Published

Web Component <dotrino-topbar>: la barra superior estándar del ecosistema Dotrino (marca + volver + acciones + idioma + perfil + moneda de support) en un solo componente. Autohosteado, sin JS de terceros ni cookies.

Readme

@dotrino/topbar

Parte del ecosistema Dotrino. Sin anuncios, sin cookies, sin rastreo.

La barra superior estándar del ecosistema Dotrino, en un solo Web Component. Deja de reimplementar (y de desviar) el header en cada app.

Empaqueta, en el orden y comportamiento normados (CONVENCIONES §5/§6/§9):

[◀ volver] [icono + nombre]   … acciones de la app …   [ES|EN] [perfil] [🪙 support]

con la segunda fila de acciones en móvil, env(safe-area-inset-*), Shadow DOM (sin JS de terceros ni cookies) y estética oscura tematizable. Reúne las tres piezas compartidas para que la app importe una sola cosa:

  • @dotrino/nav → chevron de volver + captura del botón físico Android / gesto iOS / atrás del navegador.
  • @dotrino/support → moneda de soporte/donación.
  • Botón de perfil opcional (apps con identidad): emite dotrino-profile; la app abre su <dotrino-profile> y le pasa el avatar del perfil activo.

Uso

Vanilla:

<script type="module" src="https://cdn.jsdelivr.net/npm/@dotrino/[email protected]/src/index.js"></script>

<dotrino-topbar brand="Mi App" icon="/icon.svg"
  support-repo="imdotrino/mi-app"
  support-discord="https://discord.gg/D648uq7cth"
  profile>
  <!-- (opcional) botones de acción de tu app -->
  <button>Nueva</button>
</dotrino-topbar>

Vue 3 / Vite (npm):

import '@dotrino/topbar'
<dotrino-topbar brand="Mi App" icon="/icon.svg" :avatar="avatar" profile
  @dotrino-profile="openMyProfile" @dotrino-lang="e => lang = e.detail.lang">
  <button @click="nueva">Nueva</button>
</dotrino-topbar>

Atributos

| Atributo | Qué hace | |---|---| | brand | nombre de la marca | | icon | URL del icono de marca | | brand-href | destino al pulsar la marca (default ./) | | lang | es | en | auto (default auto); persiste y refleja document.documentElement.lang | | home | fallback de "volver" (default https://dotrino.com) | | no-back | oculta el chevron de volver | | no-lang | oculta el toggle de idioma | | profile | muestra el botón de perfil (§6.1) | | avatar | data-URI del avatar del perfil activo (si falta: silueta) | | support-href | URL de support (default https://ko-fi.com/dotrino) | | support-repo | repo para el botón "reportar" del support | | support-discord | invitación de Discord del support | | support-contact | pasa contact a <dotrino-support> | | no-support | oculta la moneda de support |

Eventos (bubbles, composed)

  • dotrino-lang{ lang } al cambiar de idioma
  • dotrino-profile → al pulsar el botón de perfil

Slot

El slot por defecto son los botones de acción de tu app (van al medio, entre la marca y las acciones estándar).

Temas

Variables CSS en el host: --dotrino-topbar-bg, --dotrino-topbar-border, --dotrino-topbar-text, --dotrino-topbar-muted, --dotrino-topbar-accent.

Licencia MIT.