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

@demaarco/ui

v0.2.1

Published

Librería UI moderna, accesible y reutilizable para React y TypeScript.

Downloads

51

Readme

@demaarco/ui

Librería UI moderna para React y TypeScript, preparada para publicar en npm y consumir desde apps Next.js, Vite o React. Incluye componentes accesibles, estilos con Tailwind CSS, variantes con class-variance-authority, composición de clases con cn(), Storybook, Vitest y bundles ESM/CJS.

Instalación

npm install @demaarco/ui

Instala también las peer dependencies si tu proyecto no las tiene todavía:

npm install react react-dom

Uso

Importa el CSS global una vez en el entrypoint de tu app.

Next.js App Router:

// app/layout.tsx
import "@demaarco/ui/styles.css";

Vite o React:

// src/main.tsx
import "@demaarco/ui/styles.css";

Importa componentes desde el entrypoint principal:

import { Button, Card, CardContent, CardHeader, CardTitle } from "@demaarco/ui";

export function Example() {
  return (
    <Card className="max-w-sm">
      <CardHeader>
        <CardTitle>Plan Pro</CardTitle>
      </CardHeader>
      <CardContent>
        <Button>Empezar</Button>
      </CardContent>
    </Card>
  );
}

También puedes hacer imports por componente para optimizar el consumo:

import { Button } from "@demaarco/ui/button";

Componentes incluidos

Catálogo completo (55 componentes). Imports recomendados por subpath, p. ej. @demaarco/ui/button.

| | | | | |---|---|---|---| | Accordion | Alert | AlertDialog | AppShell | | AspectRatio | Avatar | Badge | Breadcrumb | | Button | Card | Checkbox | Collapsible | | Combobox | Command | Container | ContextMenu | | CopyButton | DateInput | Dialog | DropdownMenu | | Empty | Field | FileInput | Header | | HoverCard | Input | InputGroup | Kbd | | Label | Link | List | Meter | | NavigationMenu | Pagination | Popover | Progress | | RadioGroup | ScrollArea | Select | Separator | | Sheet | Sidebar | Skeleton | Slider | | Spinner | Steps | Switch | Table | | Tabs | Tag | Textarea | Toast | | ToggleGroup | Toolbar | Tooltip | |

Utilidades adicionales: cn() desde el entry principal y @demaarco/ui/color para tokens de color accesibles.

Explora previews, props e imports en la documentación interactiva:

npm run docs

Esto levanta una app Vite en http://localhost:5173/ que consume @demaarco/ui desde el workspace.

Desarrollo

Instala dependencias desde la raíz del repo:

npm install

Comandos principales:

npm run dev -w @demaarco/ui
npm run build -w @demaarco/ui
npm run test -w @demaarco/ui
npm run storybook -w @demaarco/ui
npm run lint -w @demaarco/ui
npm run docs

Crear nuevos componentes

  1. Crea una carpeta en src/components/nombre-componente.
  2. Añade nombre-componente.tsx, nombre-componente.test.tsx, nombre-componente.stories.tsx e index.ts.
  3. Usa forwardRef cuando el componente exponga un nodo DOM o primitivo nativo / Floating UI.
  4. Acepta siempre className.
  5. Define variantes con cva.
  6. Combina clases con cn().
  7. Exporta el componente desde src/index.ts.
  8. Añade un entrypoint en tsup.config.ts y un subpath en package.json si quieres permitir imports como @demaarco/ui/nombre-componente.

Publicación en npm

Actualiza metadatos antes de publicar:

  • Completa name si vas a usar otro scope.
  • Revisa author, repository, homepage y bugs antes de publicar.
  • Asegúrate de tener acceso al scope de npm.

Login:

npm login

Build y publicación:

npm run build -w @demaarco/ui
npm publish -w @demaarco/ui --access public

El script prepublishOnly ejecuta lint, tests y build antes de publicar.

Versionado SemVer

Usa semantic versioning:

  • Patch: 0.1.1 para fixes compatibles.
  • Minor: 0.2.0 para componentes o props nuevas compatibles.
  • Major: 1.0.0 para cambios incompatibles.

Comandos útiles:

npm version patch -w @demaarco/ui
npm version minor -w @demaarco/ui
npm version major -w @demaarco/ui

Monorepo con pnpm o Turborepo

La librería ya vive en packages/ui, por lo que puede migrar fácilmente a workspaces.

Para pnpm, crea pnpm-workspace.yaml en la raíz:

packages:
  - "packages/*"

Para Turborepo, añade turbo.json:

{
  "$schema": "https://turbo.build/schema.json",
  "tasks": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": ["dist/**"]
    },
    "test": {
      "dependsOn": ["build"]
    },
    "lint": {}
  }
}

Después puedes añadir apps en apps/web, consumir la librería con el workspace protocol y compartir scripts desde la raíz.

{
  "dependencies": {
    "@demaarco/ui": "workspace:*"
  }
}