@kaufmann-lab/ui 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -26
- package/fesm2022/kaufmann-lab-ui.mjs +807 -326
- package/fesm2022/kaufmann-lab-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/kaufmann-lab-ui.d.ts +63 -6
package/package.json
CHANGED
|
@@ -2,11 +2,23 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { AfterContentInit, TemplateRef, AfterViewInit } from '@angular/core';
|
|
3
3
|
import { ControlValueAccessor } from '@angular/forms';
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Nombre de cada ícono del design system. Página 5 del PDF fija un set de
|
|
7
|
+
* 59; `eye-off` es una extensión propia por fuera de ese set, agregada para
|
|
8
|
+
* el toggle de mostrar/ocultar contraseña de `Input` — no hay un ícono de
|
|
9
|
+
* "ojo tachado" en la spec original porque esa interacción no estaba
|
|
10
|
+
* contemplada ahí.
|
|
11
|
+
*
|
|
12
|
+
* Separado de `Icon.ts` a propósito: este type es el contrato público que
|
|
13
|
+
* comparten `Icon`, `icons/index.ts` (registro) y cualquier componente que
|
|
14
|
+
* reciba un `IconName` (`Button`, `MetricCard`, etc.) — no debería requerir
|
|
15
|
+
* importar el componente `Icon` completo solo para tipar una prop.
|
|
16
|
+
*/
|
|
17
|
+
type IconName = 'activity' | 'alert-circle' | 'alert-octagon' | 'alert-triangle' | 'award' | 'bar-chart' | 'bell' | 'bus' | 'calculator' | 'calendar' | 'car' | 'cart' | 'check' | 'check-circle' | 'check-square' | 'chevron-down' | 'chevron-left' | 'chevron-left-bar' | 'chevron-right' | 'clipboard' | 'clock' | 'credit-card' | 'download' | 'edit' | 'external-link' | 'eye' | 'eye-off' | 'file' | 'filter' | 'gauge' | 'gift' | 'grid' | 'history' | 'inbox' | 'layers' | 'list' | 'map' | 'map-pin' | 'menu' | 'mic' | 'mic-off' | 'more-vertical' | 'pause' | 'phone' | 'play' | 'plus' | 'search' | 'settings' | 'shield-check' | 'sort' | 'star' | 'ticket' | 'tool' | 'trash' | 'truck' | 'upload-cloud' | 'user' | 'user-search' | 'video' | 'x';
|
|
18
|
+
|
|
7
19
|
type IconSize = 'sm' | 'md' | 'lg';
|
|
8
20
|
/**
|
|
9
|
-
* Ícono de trazo del design system —
|
|
21
|
+
* Ícono de trazo del design system — 60 glyphs (59 de la página 5 + `eye-off`), grilla 24×24,
|
|
10
22
|
* grosor de trazo 1.9px. Referencia un sprite SVG embebido (ver
|
|
11
23
|
* `icon-sprite.ts`) vía `<use>`, así que no hay peso de red adicional por
|
|
12
24
|
* cada instancia: el sprite se inyecta al DOM una única vez, la primera
|
|
@@ -577,6 +589,22 @@ declare class DataTable<T = unknown> {
|
|
|
577
589
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTable<any>, "kf-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; "cardable": { "alias": "cardable"; "required": false; "isSignal": true; }; "defaultView": { "alias": "defaultView"; "required": false; "isSignal": true; }; "render": { "alias": "render"; "required": false; "isSignal": true; }; "cellTemplates": { "alias": "cellTemplates"; "required": false; "isSignal": true; }; }, { "rowClick": "rowClick"; }, never, ["[empty]", "[footer]"], true, never>;
|
|
578
590
|
}
|
|
579
591
|
|
|
592
|
+
type DividerOrientation = 'horizontal' | 'vertical';
|
|
593
|
+
/**
|
|
594
|
+
* Línea separadora decorativa entre bloques de contenido (ej. columnas de
|
|
595
|
+
* metadata en `kf-company-selector`). `vertical` necesita que el contenedor
|
|
596
|
+
* padre sea flex/grid con altura definida — se estira con `align-self:
|
|
597
|
+
* stretch`; sin eso no tiene alto propio y no se ve.
|
|
598
|
+
*
|
|
599
|
+
* <kf-divider />
|
|
600
|
+
* <kf-divider orientation="vertical" />
|
|
601
|
+
*/
|
|
602
|
+
declare class Divider {
|
|
603
|
+
readonly orientation: _angular_core.InputSignal<DividerOrientation>;
|
|
604
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Divider, never>;
|
|
605
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Divider, "kf-divider", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
606
|
+
}
|
|
607
|
+
|
|
580
608
|
/**
|
|
581
609
|
* Placeholder para una sección sin contenido. Dos tonos, con anatomía
|
|
582
610
|
* distinta (páginas 27-28 del design system, que los trata como piezas
|
|
@@ -780,6 +808,16 @@ declare class FolderTabs {
|
|
|
780
808
|
* <kf-input label="Correo" formControlName="email"
|
|
781
809
|
* [invalid]="email.invalid && email.touched"
|
|
782
810
|
* [errorMessage]="email.touched && email.hasError('required') ? 'Ingresa tu correo.' : undefined" />
|
|
811
|
+
*
|
|
812
|
+
* `toggleable` solo tiene efecto cuando `type="password"`: agrega un botón
|
|
813
|
+
* de ojo al final del campo que alterna la visibilidad del valor tipeado
|
|
814
|
+
* (cambia el `type` real del `<input>` nativo entre `password` y `text`,
|
|
815
|
+
* nunca expone el valor en el DOM de otra forma). El botón es `type="button"`
|
|
816
|
+
* — nunca dispara submit del form contenedor — y anuncia su acción con
|
|
817
|
+
* `aria-label` dinámico y `aria-pressed`, ya que es un toggle, no un botón
|
|
818
|
+
* de una sola acción.
|
|
819
|
+
*
|
|
820
|
+
* <kf-input type="password" label="Contraseña" toggleable formControlName="password" />
|
|
783
821
|
*/
|
|
784
822
|
declare class Input implements ControlValueAccessor, AfterViewInit {
|
|
785
823
|
private static nextId;
|
|
@@ -798,6 +836,8 @@ declare class Input implements ControlValueAccessor, AfterViewInit {
|
|
|
798
836
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
799
837
|
readonly type: _angular_core.InputSignal<string>;
|
|
800
838
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
839
|
+
/** Agrega el botón de mostrar/ocultar — sin efecto si `type` no es `"password"`. */
|
|
840
|
+
readonly toggleable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
801
841
|
protected readonly inputId: string;
|
|
802
842
|
protected readonly hintId: string;
|
|
803
843
|
protected readonly errorId: string;
|
|
@@ -807,6 +847,17 @@ declare class Input implements ControlValueAccessor, AfterViewInit {
|
|
|
807
847
|
private readonly disabledByForm;
|
|
808
848
|
/** Disabled real: por input() directo o por el FormControl asociado. */
|
|
809
849
|
protected readonly isDisabled: _angular_core.Signal<boolean>;
|
|
850
|
+
/** Estado interno del toggle — irrelevante si `showPasswordToggle()` es false. */
|
|
851
|
+
protected readonly passwordVisible: _angular_core.WritableSignal<boolean>;
|
|
852
|
+
/** El botón solo tiene sentido si el campo realmente es de contraseña. */
|
|
853
|
+
protected readonly showPasswordToggle: _angular_core.Signal<boolean>;
|
|
854
|
+
/**
|
|
855
|
+
* `type` real que recibe el `<input>` nativo: igual a `type()` salvo
|
|
856
|
+
* cuando el toggle está activo y visible, donde pasa a `text` para
|
|
857
|
+
* mostrar el valor en claro sin cambiar `type()` en sí (evita que un
|
|
858
|
+
* consumidor que lee `type()` desde afuera vea un valor inconsistente).
|
|
859
|
+
*/
|
|
860
|
+
protected readonly effectiveType: _angular_core.Signal<string>;
|
|
810
861
|
private onChange;
|
|
811
862
|
private onTouched;
|
|
812
863
|
ngAfterViewInit(): void;
|
|
@@ -816,8 +867,14 @@ declare class Input implements ControlValueAccessor, AfterViewInit {
|
|
|
816
867
|
setDisabledState(isDisabled: boolean): void;
|
|
817
868
|
protected onInput(rawValue: string): void;
|
|
818
869
|
protected onBlur(): void;
|
|
870
|
+
/**
|
|
871
|
+
* Alterna la visibilidad del valor. No dispara `onBlur`/pierde el foco:
|
|
872
|
+
* el botón vive dentro del mismo `.kf-input__field`, así que un click acá
|
|
873
|
+
* no debe tratarse como si el usuario hubiese abandonado el campo.
|
|
874
|
+
*/
|
|
875
|
+
protected onTogglePasswordVisibility(): void;
|
|
819
876
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Input, never>;
|
|
820
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Input, "kf-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
877
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Input, "kf-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "toggleable": { "alias": "toggleable"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
821
878
|
}
|
|
822
879
|
|
|
823
880
|
/**
|
|
@@ -1524,5 +1581,5 @@ declare class ViewToggle {
|
|
|
1524
1581
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ViewToggle, "kf-view-toggle", never, { "view": { "alias": "view"; "required": true; "isSignal": true; }; }, { "viewChange": "viewChange"; }, never, never, true, never>;
|
|
1525
1582
|
}
|
|
1526
1583
|
|
|
1527
|
-
export { ActionTile, AdminBadge, Alert, Avatar, Badge, Breadcrumb, Button, Card, Carousel, CarouselSlide, Checkbox, Chip, CompanySelector, ContentSlot, ContentState, DataTable, EmptyState, FeatureCard, Field, FieldLabel, FilterChips, FolderTabs, Icon, Input, MetricCard, Modal, MultiSelect, PageHeader, Pagination, Panel, PortalHeader, ReserveBlock, SectionHeader, Segmented, Select, SelectMenu, Skeleton, Spinner, StatTile, StatusPill, Tabs, ToastHost, ToastService, VehicleHeader, ViewToggle };
|
|
1528
|
-
export type { AlertTone, BreadcrumbItem, CompanySelectorMeta, ContentStateKind, ContentStateLoad, DataTableCardRole, DataTableColumn, DataTableView, FolderTabOption, IconName, IconSize, MultiSelectOption, PaginationItem, PortalHeaderAdminAction, PortalHeaderNavItem, SegmentedOption, SelectMenuOption, SkeletonVariant, SpinnerSize, TabOption, ToastOptions, ToastPromiseMessages, ToastState, ToastTone, VehicleHeaderStatus, ViewToggleOption };
|
|
1584
|
+
export { ActionTile, AdminBadge, Alert, Avatar, Badge, Breadcrumb, Button, Card, Carousel, CarouselSlide, Checkbox, Chip, CompanySelector, ContentSlot, ContentState, DataTable, Divider, EmptyState, FeatureCard, Field, FieldLabel, FilterChips, FolderTabs, Icon, Input, MetricCard, Modal, MultiSelect, PageHeader, Pagination, Panel, PortalHeader, ReserveBlock, SectionHeader, Segmented, Select, SelectMenu, Skeleton, Spinner, StatTile, StatusPill, Tabs, ToastHost, ToastService, VehicleHeader, ViewToggle };
|
|
1585
|
+
export type { AlertTone, BreadcrumbItem, CompanySelectorMeta, ContentStateKind, ContentStateLoad, DataTableCardRole, DataTableColumn, DataTableView, DividerOrientation, FolderTabOption, IconName, IconSize, MultiSelectOption, PaginationItem, PortalHeaderAdminAction, PortalHeaderNavItem, SegmentedOption, SelectMenuOption, SkeletonVariant, SpinnerSize, TabOption, ToastOptions, ToastPromiseMessages, ToastState, ToastTone, VehicleHeaderStatus, ViewToggleOption };
|