@kaufmann-lab/ui 0.1.27 → 0.1.28
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/package.json
CHANGED
|
@@ -220,11 +220,44 @@ declare class Button {
|
|
|
220
220
|
type AlertTone = 'info' | 'ok' | 'warn' | 'error';
|
|
221
221
|
/** Forma del aviso: `card` (default, con borde y esquinas) o `bar` (franja compacta de ancho completo). */
|
|
222
222
|
type AlertVariant = 'card' | 'bar';
|
|
223
|
+
/**
|
|
224
|
+
* Apariencia de la variante `card`: `tile` (default), `tint` o `rail`. Ver el
|
|
225
|
+
* JSDoc de `Alert` para cuándo usar cada una.
|
|
226
|
+
*/
|
|
227
|
+
type AlertAppearance = 'tile' | 'tint' | 'rail';
|
|
223
228
|
/**
|
|
224
229
|
* Banner contextual que vive dentro del flujo: validaciones, avisos de
|
|
225
230
|
* vencimiento, confirmaciones. Persiste hasta que se descarta o hasta que la
|
|
226
231
|
* condición que lo causó desaparece — para feedback efímero está el toast.
|
|
227
232
|
*
|
|
233
|
+
* Diseño sobrio: el título va en peso 600 con la tipografía de cuerpo y el
|
|
234
|
+
* mensaje con medida de lectura limitada, ambos en los neutros del sistema (el
|
|
235
|
+
* color del tono nunca se usa para texto). El ícono va centrado en vertical
|
|
236
|
+
* respecto al aviso. El color sale siempre de los tokens (`*-strong`), nunca de
|
|
237
|
+
* un input. Ninguna apariencia lleva borde ni acento lateral de color.
|
|
238
|
+
*
|
|
239
|
+
* `appearance` elige cómo se muestra el tono (solo aplica a `variant="card"`):
|
|
240
|
+
*
|
|
241
|
+
* - `tile` (default): aviso estándar dentro de pantallas y cards. Tarjeta de
|
|
242
|
+
* superficie y borde neutros; el color vive solo en el ícono, un tile sólido de
|
|
243
|
+
* 40px con glifo blanco.
|
|
244
|
+
*
|
|
245
|
+
* <kf-alert tone="warn" title="SOAT por vencer">Vence el 15/08.</kf-alert>
|
|
246
|
+
*
|
|
247
|
+
* - `tint`: aviso liviano sobre fondos neutros o en zonas densas, donde el tinte
|
|
248
|
+
* basta. Relleno suave del tono, sin borde ni tile; glifo de 24px en el color
|
|
249
|
+
* fuerte del tono.
|
|
250
|
+
*
|
|
251
|
+
* <kf-alert appearance="tint" tone="info">Cita confirmada para el jueves.</kf-alert>
|
|
252
|
+
*
|
|
253
|
+
* - `rail`: aviso destacado que debe notarse al primer vistazo, p. ej. errores o
|
|
254
|
+
* bloqueos. Panel de ícono de 56px a todo el alto, con el fondo del tono más
|
|
255
|
+
* intenso, y cuerpo neutro con borde neutro.
|
|
256
|
+
*
|
|
257
|
+
* <kf-alert appearance="rail" tone="error" title="Pago rechazado">
|
|
258
|
+
* Tu banco no autorizó el cargo.
|
|
259
|
+
* </kf-alert>
|
|
260
|
+
*
|
|
228
261
|
* `open` es two-way: el botón de cerrar lo pone en `false` y el componente
|
|
229
262
|
* deja de renderizar. El consumidor puede volver a abrirlo poniéndolo en
|
|
230
263
|
* `true` (ej. cuando la validación falla otra vez).
|
|
@@ -238,13 +271,16 @@ type AlertVariant = 'card' | 'bar';
|
|
|
238
271
|
* tonos y mismo `role` (`alert` para `error`/`warn`, `status` para el resto)
|
|
239
272
|
* que la variante `card`. Pensada para el borde de una página o de un panel
|
|
240
273
|
* (ej. "Estás viendo datos de otro cliente"), donde una tarjeta con margen
|
|
241
|
-
* sobra.
|
|
274
|
+
* sobra. `variant="bar"` ignora `appearance`: la franja siempre usa su propia
|
|
275
|
+
* superficie tintada.
|
|
242
276
|
*
|
|
243
277
|
* <kf-alert variant="bar" tone="warn" title="Modo suplantación">Viendo como Ana Pérez.</kf-alert>
|
|
244
278
|
*
|
|
245
|
-
* Los elementos con el atributo `kfAlertActions` se proyectan
|
|
246
|
-
*
|
|
247
|
-
* variante `bar`
|
|
279
|
+
* Los elementos con el atributo `kfAlertActions` se proyectan a la derecha del
|
|
280
|
+
* mensaje cuando hay ancho y, si no caben, en una fila propia bajo él, apilados
|
|
281
|
+
* y alineados al inicio (en la variante `bar` siempre van en fila propia). Si los
|
|
282
|
+
* envuelves en un solo `<div kfAlertActions>`, el aviso separa a sus hijos (12px).
|
|
283
|
+
* Sin ellos la zona no existe y el aviso queda igual.
|
|
248
284
|
*
|
|
249
285
|
* <kf-alert tone="warn" title="SOAT por vencer">
|
|
250
286
|
* Vence el 15/08.
|
|
@@ -255,7 +291,12 @@ declare class Alert {
|
|
|
255
291
|
readonly tone: _angular_core.InputSignal<AlertTone>;
|
|
256
292
|
/** `card` (default) o `bar` (franja compacta de ancho completo). */
|
|
257
293
|
readonly variant: _angular_core.InputSignal<AlertVariant>;
|
|
258
|
-
/**
|
|
294
|
+
/**
|
|
295
|
+
* `tile` (default), `tint` o `rail`. Solo aplica a `variant="card"`; `bar` la
|
|
296
|
+
* ignora. Se expone en el host como `data-appearance`.
|
|
297
|
+
*/
|
|
298
|
+
readonly appearance: _angular_core.InputSignal<AlertAppearance>;
|
|
299
|
+
/** Título (peso 600) arriba del mensaje. Vacío deja solo el contenido proyectado. */
|
|
259
300
|
readonly title: _angular_core.InputSignal<string>;
|
|
260
301
|
readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
261
302
|
/** Visibilidad, two-way: `[(open)]="hasError"`. */
|
|
@@ -266,8 +307,10 @@ declare class Alert {
|
|
|
266
307
|
*/
|
|
267
308
|
protected readonly ariaRole: _angular_core.Signal<"alert" | "status">;
|
|
268
309
|
protected readonly toneIcon: _angular_core.Signal<IconName>;
|
|
310
|
+
/** Glifo: 16px en `bar`, 20px en `tile` y 24px en `tint`/`rail`. */
|
|
311
|
+
protected readonly iconSize: _angular_core.Signal<IconSize>;
|
|
269
312
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Alert, never>;
|
|
270
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Alert, "kf-alert", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*", "[kfAlertActions]"], true, never>;
|
|
313
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Alert, "kf-alert", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*", "[kfAlertActions]"], true, never>;
|
|
271
314
|
}
|
|
272
315
|
|
|
273
316
|
type AlertRowTone = 'warn' | 'error' | 'neutral';
|
|
@@ -4720,6 +4763,8 @@ declare class Spinner {
|
|
|
4720
4763
|
}
|
|
4721
4764
|
|
|
4722
4765
|
type StatCardTone = 'primary' | 'success' | 'error' | 'purple' | 'warn' | 'info' | 'neutral';
|
|
4766
|
+
/** Tono de la insignia (`badge`): los roles semánticos de `kf-badge` salvo `service`. */
|
|
4767
|
+
type StatCardBadgeTone = 'neutral' | 'ok' | 'warn' | 'error' | 'info';
|
|
4723
4768
|
/** Densidad de la card: `'compact'` reduce el padding, el ícono y el valor. */
|
|
4724
4769
|
type StatCardDensity = 'default' | 'compact';
|
|
4725
4770
|
/**
|
|
@@ -4746,6 +4791,21 @@ type StatCardDensity = 'default' | 'compact';
|
|
|
4746
4791
|
* <kf-stat-card icon="clock" tone="warn" value="7" label="Por vencer" [bar]="35" hint="7 de 20"
|
|
4747
4792
|
* clickable [pressed]="filter() === 'due'" (cardClick)="toggle('due')" />
|
|
4748
4793
|
*
|
|
4794
|
+
* - `badge` (+ `badgeTone`, default `'neutral'`): insignia (`kf-badge`) a la
|
|
4795
|
+
* derecha de la etiqueta, para un estado puntual ("Urgente", "Nuevo"). Es
|
|
4796
|
+
* texto real en el DOM, así que un lector de pantalla lo lee tras la
|
|
4797
|
+
* etiqueta: el tono refuerza el significado, no lo porta solo. Si el
|
|
4798
|
+
* ancho no alcanza, baja a la línea siguiente en vez de recortarse. Sin
|
|
4799
|
+
* `badge` (o con texto vacío) la card no cambia. Funciona con `density`,
|
|
4800
|
+
* `clickable` y `loading`.
|
|
4801
|
+
*
|
|
4802
|
+
* <kf-stat-card icon="clock" tone="warn" value="7" label="Por vencer" badge="Urgente" badgeTone="error" />
|
|
4803
|
+
*
|
|
4804
|
+
* Alto: la card ocupa el 100% del alto de su contenedor cuando este lo fija
|
|
4805
|
+
* (celda de una grilla o ítem estirado de un flex), de modo que las cards de
|
|
4806
|
+
* una misma fila miden igual sin `::ng-deep`. En un contenedor de alto
|
|
4807
|
+
* automático mide lo que su contenido, como siempre.
|
|
4808
|
+
*
|
|
4749
4809
|
* `density` (`'default'` | `'compact'`): `'compact'` es la variante para
|
|
4750
4810
|
* pantallas angostas — padding de `--kf-space-md`, ícono de 40px y valor de
|
|
4751
4811
|
* `--kf-font-size-title-sm`, con el mismo contenido. Si la card mide 210px de
|
|
@@ -4761,7 +4821,7 @@ type StatCardDensity = 'default' | 'compact';
|
|
|
4761
4821
|
* `loading` (default `false`): mientras es `true` la card dibuja su esqueleto
|
|
4762
4822
|
* en vez del contenido, con el MISMO cascarón (borde, padding, ícono de 50px)
|
|
4763
4823
|
* y líneas del alto real de cada texto — valor, etiqueta y, si se pasaron,
|
|
4764
|
-
* nota, barra
|
|
4824
|
+
* nota, barra, `hint` e insignia —, así que al llegar los datos no hay salto de
|
|
4765
4825
|
* layout. Pasa los mismos inputs que usarás cargada para que el esqueleto
|
|
4766
4826
|
* reserve las mismas líneas. Marca la card con `aria-busy="true"`, no es
|
|
4767
4827
|
* clicable ni expone su texto a lectores de pantalla mientras carga.
|
|
@@ -4778,6 +4838,10 @@ declare class StatCard {
|
|
|
4778
4838
|
readonly bar: _angular_core.InputSignal<number | null | undefined>;
|
|
4779
4839
|
/** Texto secundario bajo la barra (o bajo la nota si no hay barra). */
|
|
4780
4840
|
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
4841
|
+
/** Texto de la insignia a la derecha de la etiqueta; vacío/ausente = sin insignia. */
|
|
4842
|
+
readonly badge: _angular_core.InputSignal<string | undefined>;
|
|
4843
|
+
/** Tono semántico de la insignia (`kf-badge`). */
|
|
4844
|
+
readonly badgeTone: _angular_core.InputSignal<StatCardBadgeTone>;
|
|
4781
4845
|
/**
|
|
4782
4846
|
* Estado de alternancia (`aria-pressed`) cuando la card es `clickable`.
|
|
4783
4847
|
* `null` (default) = no aplica: el atributo no se emite.
|
|
@@ -4793,7 +4857,7 @@ declare class StatCard {
|
|
|
4793
4857
|
protected readonly barTone: _angular_core.Signal<ProgressTone>;
|
|
4794
4858
|
protected readonly hasBar: _angular_core.Signal<boolean>;
|
|
4795
4859
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatCard, never>;
|
|
4796
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatCard, "kf-stat-card", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "note": { "alias": "note"; "required": false; "isSignal": true; }; "bar": { "alias": "bar"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "pressed": { "alias": "pressed"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; }, { "cardClick": "cardClick"; }, never, never, true, never>;
|
|
4860
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatCard, "kf-stat-card", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "note": { "alias": "note"; "required": false; "isSignal": true; }; "bar": { "alias": "bar"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "badgeTone": { "alias": "badgeTone"; "required": false; "isSignal": true; }; "pressed": { "alias": "pressed"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; }, { "cardClick": "cardClick"; }, never, never, true, never>;
|
|
4797
4861
|
}
|
|
4798
4862
|
|
|
4799
4863
|
/** Vocabulario semántico único de tono, compartido con `TextTone`. */
|
|
@@ -5537,4 +5601,4 @@ declare class ViewToggle {
|
|
|
5537
5601
|
}
|
|
5538
5602
|
|
|
5539
5603
|
export { ActionTile, AdminBadge, Alert, AlertRow, Avatar, Badge, Breadcrumb, BucketProgress, Button, Calendar, Card, Carousel, CarouselSlide, Checkbox, Chip, Collapsible, ContactPopover, ContentSlot, ContentState, ContentStateLoading, ContentViewer, CursorPager, DATA_TABLE_MAX_SKELETON_ROWS, DEFAULT_MILESTONE_TIMELINE_LABELS, DEFAULT_PAGE_SIZE_OPTIONS, DataTable, Divider, DocumentRow, Drawer, Dropdown, DropdownItem, DropdownPanel, EmptyState, EventTimeline, FeatureCard, Field, FieldLabel, FileInput, Filter, FilterChips, FolderTabs, FolderTabsPanel, Footer, FormatInputDirective, Icon, Input, JourneyStepper, LIST_TOOLBAR_HYSTERESIS, Link, ListToolbar, MetricCard, MilestoneTimeline, Modal, MultiSelect, NoteBlock, OptionList, PROGRESS_STATUS, PROGRESS_STATUS_LABEL, PageHeader, Pagination, Panel, PopoverDirective, PortalHeader, Progress, PulseDot, RowActions, SKELETON_PRESET_MAX_COUNT, SectionHeader, SectionNav, SectionNavItem, SectionNavSubsection, Segmented, Select, SelectableCardGroup, SidebarShell, Skeleton, SkeletonPreset, Spinner, StatCard, StatTile, StatusMark, StatusNode, StatusPill, Switch, TOAST_DEFAULT_DURATION_MS, Tabs, Text, Textarea, TileGrid, TimeSlotPicker, ToastHost, ToastService, TooltipDirective, ViewToggle, dataTableViewSignal, formatFileSize, resolveListToolbarMode };
|
|
5540
|
-
export type { AlertRowTone, AlertTone, AlertVariant, BreadcrumbItem, BucketProgressItem, CalendarDay, ContentStateKind, ContentStateLoad, ContentViewerType, DataTableCardRole, DataTableCellClick, DataTableColumn, DataTableDensity, DataTableItemLabel, DataTableSort, DataTableView, DividerOrientation, DocumentRowTone, DrawerRole, DrawerSide, DropdownItemTone, DropdownPanelRole, DropdownPanelVariant, EmptyStateTone, EventTimelineItem, EventTimelineTone, FileRejection, FileRejectionReason, FilterChipOption, FilterFieldChange, FilterFieldConfig, FilterFieldType, FilterValue, FolderTabOption, FooterLink, IconName, IconRotation, IconSize, InputBound, JourneyStep, JourneyStepStatus, JourneyStepperColorScheme, JourneyStepperOrientation, JourneyStepperSurface, LinkVariant, ListToolbarMode, MilestoneGroup, MilestoneItem, MilestoneTimelineLabels, ModalSize, MultiSelectOption, NoteBlockTone, OptionListOption, PageHeaderTitleSize, PaginationItem, PopoverPlacement, PortalHeaderAdminAction, PortalHeaderNavItem, ProgressSize, ProgressStatus, ProgressTone, RowAction, RowActionKind, RowActionsMode, SectionNavSubsectionData, SegmentedOption, SelectOption, SelectableCardOption, SidebarNavItemData, SkeletonPresetVariant, SkeletonVariant, SpinnerSize, StatCardDensity, StatCardTone, StatTileTone, StatTileVariant, SwitchSize, TabOption, TextAs, TextTone, TextVariant, TimeSlot, ToastAction, ToastOptions, ToastPromiseMessages, ToastState, ToastTone, TooltipPosition, ViewToggleOption };
|
|
5604
|
+
export type { AlertAppearance, AlertRowTone, AlertTone, AlertVariant, BreadcrumbItem, BucketProgressItem, CalendarDay, ContentStateKind, ContentStateLoad, ContentViewerType, DataTableCardRole, DataTableCellClick, DataTableColumn, DataTableDensity, DataTableItemLabel, DataTableSort, DataTableView, DividerOrientation, DocumentRowTone, DrawerRole, DrawerSide, DropdownItemTone, DropdownPanelRole, DropdownPanelVariant, EmptyStateTone, EventTimelineItem, EventTimelineTone, FileRejection, FileRejectionReason, FilterChipOption, FilterFieldChange, FilterFieldConfig, FilterFieldType, FilterValue, FolderTabOption, FooterLink, IconName, IconRotation, IconSize, InputBound, JourneyStep, JourneyStepStatus, JourneyStepperColorScheme, JourneyStepperOrientation, JourneyStepperSurface, LinkVariant, ListToolbarMode, MilestoneGroup, MilestoneItem, MilestoneTimelineLabels, ModalSize, MultiSelectOption, NoteBlockTone, OptionListOption, PageHeaderTitleSize, PaginationItem, PopoverPlacement, PortalHeaderAdminAction, PortalHeaderNavItem, ProgressSize, ProgressStatus, ProgressTone, RowAction, RowActionKind, RowActionsMode, SectionNavSubsectionData, SegmentedOption, SelectOption, SelectableCardOption, SidebarNavItemData, SkeletonPresetVariant, SkeletonVariant, SpinnerSize, StatCardBadgeTone, StatCardDensity, StatCardTone, StatTileTone, StatTileVariant, SwitchSize, TabOption, TextAs, TextTone, TextVariant, TimeSlot, ToastAction, ToastOptions, ToastPromiseMessages, ToastState, ToastTone, TooltipPosition, ViewToggleOption };
|
|
@@ -370,7 +370,7 @@ declare class MapView {
|
|
|
370
370
|
protected readonly isPreview: _angular_core.Signal<boolean>;
|
|
371
371
|
protected readonly containerRole: _angular_core.Signal<"img" | "region">;
|
|
372
372
|
/** Ver estado de carga/error real, más abajo (`status`). */
|
|
373
|
-
protected readonly status: _angular_core.WritableSignal<"
|
|
373
|
+
protected readonly status: _angular_core.WritableSignal<"error" | "loading" | "ready">;
|
|
374
374
|
/** Elección manual del consumidor final vía el control `mapStyle` — pisa
|
|
375
375
|
* `theme()` de forma sostenida (no vuelve a `theme()` sola) hasta que se
|
|
376
376
|
* destruya este `kf-map`; ver `resolvedTheme()`. */
|