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

@brios-sorzu/components

v0.3.7

Published

Suite de componentes Brios UI para Angular y contratos compartidos

Readme

@brios-sorzu/components

Paquete unificado de componentes Brios Grid. La primera entrada disponible es Angular:

import {
  BriosGridComponent,
  BriosComboBoxComponent,
  BriosDatePickerComponent,
  BriosTabsComponent
} from '@brios-sorzu/components/angular';

La raíz también reexporta aliases útiles para TypeScript y funciones de datos:

import {
  BriosInput,
  BriosNumericInput,
  BriosComboBox,
  BriosDatePicker,
  BriosTreeView,
  BriosDateRangePicker,
  BriosFilterPanel,
  BriosDialog,
  BriosAlert,
  BriosAlertOutlet,
  BriosConfirmDialog,
  BriosToast,
  BriosLoadingOverlay,
  BriosFileUpload,
  BriosContextMenu,
  BriosCommandBar,
  BriosPagination
} from '@brios-sorzu/components';

Para usar componentes en @Component({ imports: [...] }), utiliza siempre el secondary entrypoint Angular. Así Angular puede analizar de forma estática el metadata standalone:

import { BriosInput, BriosDialog } from '@brios-sorzu/components/angular';

Los contratos sin framework se importan desde la entrada core:

import { GridController, GridLayoutEngine, filterRows, GridGroupEngine } from '@brios-sorzu/components/core';

Los exportadores también están disponibles desde la raíz del paquete único:

import { toCsv, toXlsx, toPdf } from '@brios-sorzu/components';

const columns = [
  { key: 'id', header: 'ID', dataType: 'number' },
  { key: 'total', header: 'Total', dataType: 'currency' }
] as const;
const csv = toCsv({ columns, rows });
const workbook = toXlsx({ columns, rows, sheetName: 'Clientes' });

toExcelXml soporta varias hojas, tipos básicos y numberFormat. toXlsxAsync permite exportaciones grandes con AbortSignal y onProgress. Todos los formatos aceptan hooks beforeRow, beforeCell y afterRow para filtrar o transformar datos antes de generarlos.

Todos los controles de datos implementan ControlValueAccessor, por lo que funcionan con ReactiveFormsModule y [(ngModel)]. Soportan estados disabled, readonly, required, invalid y pending, además de eventos valueChange cuando corresponde. También aceptan ariaLabel para uso standalone; dentro de BriosFormField se conserva la relación accesible generada por aria-labelledby. BriosFormField observa el NgControl proyectado para anunciar estados touched, dirty, pending y mensajes de validación comunes (required, minlength, maxlength, min, max y pattern). Los mensajes se pueden personalizar por clave con [errorMessages], por ejemplo:

<brios-form-field label="Cliente" [errorMessages]="{ required: 'Selecciona un cliente' }">
  <brios-combo-box formControlName="clientId" [options]="clients" />
</brios-form-field>

BriosDateRangePicker también implementa ControlValueAccessor para trabajar con rangos dentro de formularios reactivos o ngModel. BriosDateTimePicker acepta [timezone]="'utc'" para editar en un control nativo local y emitir/recibir valores ISO UTC. BriosNumericInput acepta [currency]="'MXN'", [locale]="'es-MX'" y [formatOnBlur]="true"; presenta moneda localizada y conserva un valor numérico para Reactive Forms o ngModel. BriosAutoComplete y BriosMultiSelect virtualizan sus opciones por defecto para evitar montar miles de elementos; ajusta [optionWindowSize] o desactívalo con [virtualizeOptions]="false" cuando necesites un comportamiento completamente renderizado. BriosOptionTemplateDirective (briosOptionTemplate) permite personalizar la presentación de opciones de BriosAutoComplete y BriosMultiSelect; su contexto expone option, selected y focused.

Los estados de BriosAutoComplete y BriosMultiSelect se pueden personalizar con briosDataTemplate="empty|loading|error|value". El contexto expone $implicit, value, error y retry; value se usa para personalizar el resumen de BriosMultiSelect.

<brios-multi-select [options]="tags" [loading]="loading" [error]="loadError">
  <ng-template briosDataTemplate="value" let-value="value">
    {{ value?.length || 0 }} etiquetas
  </ng-template>
  <ng-template briosDataTemplate="empty">No hay coincidencias</ng-template>
  <ng-template briosDataTemplate="error" let-error="error" let-retry="retry">
    {{ error }} <button type="button" (click)="retry()">Reintentar</button>
  </ng-template>
</brios-multi-select>

BriosOverlayService expone posicionamiento con colisión básica contra el viewport y recalcula al hacer scroll o resize. BriosDropdown lo usa internamente y acepta un trigger proyectado con el atributo [trigger]. Los tokens --brios-z-dropdown, --brios-z-tooltip, --brios-z-dialog, --brios-z-toast y --brios-z-context-menu permiten integrarlo en aplicaciones con otros overlays. Los textos accesibles de árbol y toast se pueden personalizar con expandLabel, collapseLabel y closeLabel. Para cambiar textos compartidos dinámicamente, inyecta BriosLocaleService:

import { BriosLocaleService } from '@brios-sorzu/components/angular';

constructor(readonly locale: BriosLocaleService) {}

locale.setLocale('en-US', { close: 'Close', expand: 'Expand', collapse: 'Collapse' });

La grilla incluye footer de resumen, fórmulas, column chooser, filtros por operador y valores únicos, edición de filas y selección masiva, eventos de commit/cancelación, formato condicional, prefetch/cache remoto y menú contextual.

También expone BriosGridGroupTemplateDirective para personalizar grupos y subtotales, además de pasteAtomic, confirmPaste y pasteComplete para controlar pegados multi-celda con validación, confirmación y rollback. BriosGridValidationTemplateDirective permite personalizar el contenido de los errores de celda. Cuando un GridDataSource rechaza una actualización y resolveConflict no reconcilia la fila, BriosGrid emite remoteConflict y expone remoteConflictState; el banner integrado ofrece reabrir la edición o descartar el conflicto.

La referencia completa por componente está en docs/docs-API-COMPONENTES.md.

La suite visual también incluye BriosTreeView, BriosCalendar, BriosDateRangePicker, BriosFilterPanel, BriosAlert, BriosToast, BriosConfirmDialog, BriosLoadingOverlay, BriosFileUpload, BriosContextMenu y BriosCommandBar.

Para alertas globales, registra una sola vez <brios-alert-outlet></brios-alert-outlet> en la aplicación y usa BriosAlertService.show(...) desde cualquier endpoint o flujo.

Panel de filtros externo:

fields = [
  { key: 'status', label: 'Estado', type: 'select', options: [
    { value: 'Activo', label: 'Activo' },
    { value: 'Pendiente', label: 'Pendiente' }
  ] },
  { key: 'minBalance', label: 'Saldo mínimo', type: 'number' }
];
filters = {};
<brios-filter-panel
  [fields]="fields"
  [value]="filters"
  (valueChange)="filters = $event"
  (applied)="applyFilters()"
  (cleared)="clearFilters()">
</brios-filter-panel>

Ejemplo mínimo de edición:

<brios-grid
  [items]="rows"
  [columns]="columns"
  [showFooter]="true"
  [showColumnChooser]="true"
  [allowRowEditing]="true"
  [allowRowAdding]="true"
  [allowRowRemoving]="true">
</brios-grid>

Incluye los componentes de datos, controles visuales y la grilla existente. Importa theme.css una vez en la aplicación para activar los tokens visuales:

{ "styles": ["@brios-sorzu/components/theme.css"] }

Los paquetes @brios-sorzu/core y @brios-sorzu/angular son las entradas modulares nuevas. Los paquetes anteriores @brios-grid/* continúan disponibles como aliases de compatibilidad.

@brios-sorzu/components/angular es un secondary entrypoint Angular real del paquete; esto permite que el linker de Angular analice los componentes standalone al instalar el tarball desde cero.

Esta versión soporta Angular. React y Vue están explícitamente fuera del alcance actual.