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

aesy-components

v0.2.0

Published

Librería de componentes para Angular: standalone, basada en signals, integrada con Angular Forms y personalizable con variables CSS.

Readme

aesy-components

Librería de componentes para Angular (20, 21 y 22): standalone, OnPush, basada en signals e integrada con Angular Forms. Todo el aspecto se personaliza con variables CSS.

Componentes

| Componente | Selector | Documentación | |---|---|---| | Accordion | aesy-accordion, aesy-accordion-item | AccordionComponent.md | | Button | aesy-button | ButtonComponent.md | | Checkbox | aesy-checkbox | CheckboxComponent.md | | Datepicker | aesy-datepicker | DatepickerComponent.md | | Dialog | aesy-dialog, aesy-dialog-actions, DialogService | DialogComponent.md | | Input number | aesy-input-number | InputNumberComponent.md | | Input text | aesy-input-text | InputTextComponent.md | | Radio button | aesy-radio-button | RadioButtonComponent.md | | Select | aesy-select | SelectComponent.md | | Stepper | aesy-stepper, aesy-step | StepperComponent.md | | Table | aesy-table, ng-template[aesyTableCell] | TableComponent.md | | Toast | ToastService | ToastService.md | | Textarea | aesy-textarea | TextareaComponent.md |

Para verlos funcionando, con todos sus casos de uso, arranca el showcase del repositorio con npm run debugapp.

Instalación

npm install aesy-components

Dependencias (peer)

| Paquete | Versión | |---|---| | @angular/core, @angular/common | ^20.0.0 \|\| ^21.0.0 \|\| ^22.0.0 | | @angular/forms | Igual | | @angular/cdk | Igual (overlay del select y del datepicker, drag & drop de la tabla) | | @angular/router | Igual (solo lo usa la tabla, para persistFilters) |

Funciona con y sin zone.js. La librería se compila con Angular 20 (la versión mínima); por eso el repositorio está en Angular 20 y no en la última.

Tema CSS

Los controles de formulario comparten variables comunes (--aesy-form-controls-*) que se definen en :root. Importa el tema una vez en los estilos globales de tu aplicación:

/* styles.css */
@import 'aesy-components/theme/public-theme.css';

Para cambiar el aspecto de todos los controles, sobrescribe esas variables en :root; para uno solo, decláralas sobre el propio componente:

:root {
  --aesy-form-controls-radius: 0.75rem;
  --aesy-form-controls-border-color-focus: #3b3bf0;
}

aesy-select {
  --aesy-select-dropdown-option-selected-background: #3b3bf0;
}

Cada componente tiene además sus variables propias con el prefijo --aesy-<componente>-, documentadas en su .md. Más detalle sobre cómo sobrescribirlas en how-to-override-classes.md.

Uso

Los componentes son standalone: impórtalos directamente donde los uses.

import { ButtonComponent, SelectComponent, SelectOption } from 'aesy-components';

@Component({
  selector: 'app-profile',
  imports: [ButtonComponent, ReactiveFormsModule, SelectComponent],
  template: `
    <aesy-select label="País" [options]="COUNTRY_OPTIONS" [formControl]="countryControl" />
    <aesy-button type="success" label="Guardar" [disabled]="countryControl.invalid" (buttonClick)="onSaveButtonClicked()" />
  `
})
export class ProfileComponent {
  protected readonly COUNTRY_OPTIONS: SelectOption[] = [
    { label: 'España', value: 'ES' },
    { label: 'Francia', value: 'FR' }
  ];
  protected readonly countryControl = new FormControl<string | null>(null, { validators: [Validators.required] });

  protected onSaveButtonClicked(): void {}
}

Con o sin Angular Forms

Todos los controles de formulario funcionan de dos formas:

  • Con Angular Forms: [formControl] o formControlName. Detectan Validators.required (asterisco incluido) y muestran el mensaje de error al tocar el campo. Los validadores propios pueden definir su texto con { miError: { message: 'Texto del error' } }.
  • Sin Angular Forms: [(value)] y, para el error, invalid + errorMessage.

Tipos exportados

Además de los componentes, la librería exporta sus tipos públicos: AccordionAppearance, AccordionTogglePosition, AccordionHeadingLevel, ButtonType, DialogConfig, DialogRef, DialogRole, DialogSize, AESY_DIALOG_DATA, IconPosition, InputTextType, TextareaResize, RadioButtonOption, SelectOption, TableConfig, TableColumn (TableDataColumn | TableCustomColumn), TableColumnType, TableColumnAlign, TableSelectableConfig, TableCellContext, PaginationMeta, PaginationMetaRowsPerPage, RequestData, RowOrderChange, StepperOrientation, StepperLabelPosition, StepperSelectionChange, ToastOptions, ToastRef, ToastType, ToastPosition, ToastDismissReason, ToastGlobalConfig y provideAesyToastConfig.

Desarrollo

# Compilar la librería en dist/aesy-components
npm run generate-lib

# Compilar en modo watch y arrancar el showcase
npm run debugapp

# Simular la publicación: compila la librería y muestra qué se incluiría, sin publicar
# (antes de los dos: npm login y el debugapp parado)
npm run publish-lib-dry-run

# Publicar: sube la versión minor (0.1.0 → 0.2.0), compila y publica.
# Después, commitea el package.json de la librería con la versión nueva.
npm run publish-lib

Para añadir un componente nuevo, sigue el checklist del README del repositorio. Los problemas conocidos y mejoras pendientes están en PENDIENTES.md.

Licencia

MIT © amoradev