@kaufmann-lab/ui 0.1.18 → 0.1.19

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaufmann-lab/ui",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
4
4
  "description": "Shared Angular component library for the Kaufmann frontends",
5
5
  "license": "MIT",
6
6
  "author": "Kaufmann Lab",
@@ -247,6 +247,15 @@ declare class QuotePicker<T = unknown> {
247
247
  * <kf-button actions icon="calendar">Reservar hora</kf-button>
248
248
  * <kf-button actions variant="outline" icon="list">Ver agenda</kf-button>
249
249
  * </kf-reserve-block>
250
+ *
251
+ * Para apps con router: escuchar `actionClick` y llamar
252
+ * `event.preventDefault()` antes de `router.navigateByUrl(...)`. El
253
+ * `actionHref` se mantiene igual para que click-medio, "abrir en pestaña
254
+ * nueva" y el hover de la barra de estado sigan funcionando.
255
+ *
256
+ * <kf-reserve-block title="¿Necesitas mantención?" actionLabel="Agenda tu reserva aquí"
257
+ * actionHref="/taller/agendar"
258
+ * (actionClick)="$event.preventDefault(); router.navigateByUrl('/taller/agendar')" />
250
259
  */
251
260
  declare class ReserveBlock {
252
261
  readonly emptyLabel: _angular_core.InputSignal<string>;
@@ -256,8 +265,14 @@ declare class ReserveBlock {
256
265
  readonly actionHref: _angular_core.InputSignal<string | undefined>;
257
266
  /** La invitación se estira para llenar la tarjeta (ej. junto a "Total de vehículos"). */
258
267
  readonly grow: _angular_core.InputSignalWithTransform<boolean, unknown>;
268
+ /**
269
+ * Click en el link de la invitación. Incluye el `MouseEvent` para que un
270
+ * consumidor con router pueda cortar la navegación nativa — mismo patrón
271
+ * que `itemClick` de `kf-breadcrumb`, sin depender de `@angular/router`.
272
+ */
273
+ readonly actionClick: _angular_core.OutputEmitterRef<MouseEvent>;
259
274
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ReserveBlock, never>;
260
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ReserveBlock, "kf-reserve-block", never, { "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "actionHref": { "alias": "actionHref"; "required": false; "isSignal": true; }; "grow": { "alias": "grow"; "required": false; "isSignal": true; }; }, {}, never, ["[actions]"], true, never>;
275
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ReserveBlock, "kf-reserve-block", never, { "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "actionHref": { "alias": "actionHref"; "required": false; "isSignal": true; }; "grow": { "alias": "grow"; "required": false; "isSignal": true; }; }, { "actionClick": "actionClick"; }, never, ["[actions]"], true, never>;
261
276
  }
262
277
 
263
278
  /**
@@ -383,6 +383,102 @@ declare class BucketProgress {
383
383
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BucketProgress, "kf-bucket-progress", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "summary": { "alias": "summary"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
384
384
  }
385
385
 
386
+ /** Una celda ya resuelta de la grilla del mes. */
387
+ interface CalendarDay {
388
+ /** ISO date, `YYYY-MM-DD`. */
389
+ iso: string;
390
+ day: number;
391
+ inMonth: boolean;
392
+ selectable: boolean;
393
+ selected: boolean;
394
+ marked: boolean;
395
+ today: boolean;
396
+ ariaLabel: string;
397
+ }
398
+ /**
399
+ * Selector de fecha de un solo mes, con grilla semanal que parte en lunes.
400
+ *
401
+ * Las fechas viajan como strings ISO (`YYYY-MM-DD`, y `YYYY-MM` para el mes
402
+ * visible) y se calculan en UTC, así la zona horaria del navegador nunca
403
+ * corre una fecha un día.
404
+ *
405
+ * `availableDates` en `null` deja seleccionable toda fecha dentro de
406
+ * `min`/`max`; un arreglo deja seleccionables SOLO esas fechas (el resto se
407
+ * rinde deshabilitado). `markedDates` es independiente: agrega un punto
408
+ * marcador sin afectar si la fecha se puede elegir.
409
+ *
410
+ * Patrón WAI-ARIA `grid` con roving tabindex: las flechas mueven por
411
+ * día/semana, Home/End van al inicio/fin de la semana y PageUp/PageDown
412
+ * cambian de mes; el foco cruza los límites del mes.
413
+ *
414
+ * <kf-calendar
415
+ * [(value)]="date"
416
+ * [(month)]="month"
417
+ * [min]="today"
418
+ * [availableDates]="freeDates()"
419
+ * [markedDates]="eventDates()"
420
+ * [loading]="loadingAvailability()"
421
+ * >
422
+ * <p footer>Leyenda</p>
423
+ * </kf-calendar>
424
+ */
425
+ declare class Calendar {
426
+ private static nextId;
427
+ /** Fecha seleccionada, ISO `YYYY-MM-DD`. */
428
+ readonly value: _angular_core.ModelSignal<string | null>;
429
+ /** Mes visible, `YYYY-MM`. En `null` se deriva de `value` y, si no hay, de hoy. */
430
+ readonly month: _angular_core.ModelSignal<string | null>;
431
+ /** Fecha mínima seleccionable (inclusive), ISO. */
432
+ readonly min: _angular_core.InputSignal<string | null>;
433
+ /** Fecha máxima seleccionable (inclusive), ISO. */
434
+ readonly max: _angular_core.InputSignal<string | null>;
435
+ /** `null`: toda fecha dentro de `min`/`max` es seleccionable. Arreglo: solo esas fechas. */
436
+ readonly availableDates: _angular_core.InputSignal<readonly string[] | null>;
437
+ /** Fechas con punto marcador, independiente de si son seleccionables. */
438
+ readonly markedDates: _angular_core.InputSignal<readonly string[]>;
439
+ /** Reemplaza el "hoy" local (tests/SSR), ISO. */
440
+ readonly today: _angular_core.InputSignal<string | null>;
441
+ /** Atenúa la grilla y bloquea la selección mientras carga la disponibilidad. */
442
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
443
+ readonly ariaLabel: _angular_core.InputSignal<string>;
444
+ /** Los 12 nombres de mes, partiendo en enero. */
445
+ readonly monthNames: _angular_core.InputSignal<readonly string[]>;
446
+ /** Las 7 iniciales visibles de los días, partiendo en lunes. */
447
+ readonly weekdayLabels: _angular_core.InputSignal<readonly string[]>;
448
+ /** Los 7 nombres completos de los días, partiendo en lunes — se usan en los nombres accesibles. */
449
+ readonly weekdayNames: _angular_core.InputSignal<readonly string[]>;
450
+ /** Se agrega al nombre accesible de una fecha marcada. */
451
+ readonly markedLabel: _angular_core.InputSignal<string>;
452
+ readonly previousMonthLabel: _angular_core.InputSignal<string>;
453
+ readonly nextMonthLabel: _angular_core.InputSignal<string>;
454
+ private readonly host;
455
+ private readonly injector;
456
+ private readonly focusedDate;
457
+ protected readonly titleId: string;
458
+ protected readonly todayIso: _angular_core.Signal<string>;
459
+ protected readonly displayedMonth: _angular_core.Signal<string>;
460
+ protected readonly title: _angular_core.Signal<string>;
461
+ private readonly minMonth;
462
+ private readonly maxMonth;
463
+ protected readonly canGoPrevious: _angular_core.Signal<boolean>;
464
+ protected readonly canGoNext: _angular_core.Signal<boolean>;
465
+ private readonly availableSet;
466
+ private readonly markedSet;
467
+ protected readonly weeks: _angular_core.Signal<CalendarDay[][]>;
468
+ /** La única celda con `tabindex="0"` (roving tabindex). */
469
+ protected readonly activeDate: _angular_core.Signal<string>;
470
+ previousMonth(): void;
471
+ nextMonth(): void;
472
+ protected selectDay(day: CalendarDay): void;
473
+ protected onDayFocus(iso: string): void;
474
+ protected onDayKeydown(event: KeyboardEvent, iso: string): void;
475
+ private focusDay;
476
+ private isMonthNavigable;
477
+ private buildDay;
478
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Calendar, never>;
479
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Calendar, "kf-calendar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "month": { "alias": "month"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "availableDates": { "alias": "availableDates"; "required": false; "isSignal": true; }; "markedDates": { "alias": "markedDates"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "monthNames": { "alias": "monthNames"; "required": false; "isSignal": true; }; "weekdayLabels": { "alias": "weekdayLabels"; "required": false; "isSignal": true; }; "weekdayNames": { "alias": "weekdayNames"; "required": false; "isSignal": true; }; "markedLabel": { "alias": "markedLabel"; "required": false; "isSignal": true; }; "previousMonthLabel": { "alias": "previousMonthLabel"; "required": false; "isSignal": true; }; "nextMonthLabel": { "alias": "nextMonthLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "month": "monthChange"; }, never, ["[footer]"], true, never>;
480
+ }
481
+
386
482
  /**
387
483
  * Contenedor base con esquinas redondeadas y sombra sutil — la base visual
388
484
  * de paneles, tarjetas de métrica, tablas y bloques de contenido de todo el
@@ -1670,6 +1766,9 @@ declare class Input implements ControlValueAccessor, AfterViewInit {
1670
1766
  readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
1671
1767
  readonly type: _angular_core.InputSignal<string>;
1672
1768
  readonly placeholder: _angular_core.InputSignal<string>;
1769
+ /** Teclado virtual sugerido en mobile (ej. `"numeric"` para montos o
1770
+ * kilometraje) — sin valor, el navegador decide según `type`. */
1771
+ readonly inputmode: _angular_core.InputSignal<string | undefined>;
1673
1772
  /** Agrega el botón de mostrar/ocultar — sin efecto si `type` no es `"password"`. */
1674
1773
  readonly toggleable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1675
1774
  protected readonly inputId: string;
@@ -1708,7 +1807,7 @@ declare class Input implements ControlValueAccessor, AfterViewInit {
1708
1807
  */
1709
1808
  protected onTogglePasswordVisibility(): void;
1710
1809
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Input, never>;
1711
- 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; }; "readonly": { "alias": "readonly"; "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>;
1810
+ 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; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "toggleable": { "alias": "toggleable"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1712
1811
  }
1713
1812
 
1714
1813
  type JourneyStepStatus = 'done' | 'current' | 'delayed' | 'pending';
@@ -2087,6 +2186,16 @@ declare class Pagination {
2087
2186
  * <kf-action-tile-row icon="download" title="Pagos" description="Revisa tu estado de cuenta y realiza pagos." />
2088
2187
  * </kf-panel>
2089
2188
  *
2189
+ * Para apps con router: escuchar `actionClick` y llamar
2190
+ * `event.preventDefault()` antes de `router.navigateByUrl(...)`. El
2191
+ * `actionHref` se mantiene igual para que click-medio, "abrir en pestaña
2192
+ * nueva" y el hover de la barra de estado sigan funcionando.
2193
+ *
2194
+ * <kf-panel title="Mis documentos por pagar" actionLabel="Ir a pagos" actionHref="/pagos"
2195
+ * (actionClick)="$event.preventDefault(); router.navigateByUrl('/pagos')">
2196
+ * …
2197
+ * </kf-panel>
2198
+ *
2090
2199
  * El host y el `kf-card` interno son flex column con `flex:1` de punta a
2091
2200
  * punta — si un grid/flex externo estira `kf-panel` a la altura de un
2092
2201
  * hermano más alto, el contenido proyectado hereda esa altura en vez de
@@ -2098,8 +2207,14 @@ declare class Panel {
2098
2207
  readonly title: _angular_core.InputSignal<string>;
2099
2208
  readonly actionLabel: _angular_core.InputSignal<string | undefined>;
2100
2209
  readonly actionHref: _angular_core.InputSignal<string | undefined>;
2210
+ /**
2211
+ * Click en el link de acción. Incluye el `MouseEvent` para que un
2212
+ * consumidor con router pueda cortar la navegación nativa — mismo patrón
2213
+ * que `itemClick` de `kf-breadcrumb`, sin depender de `@angular/router`.
2214
+ */
2215
+ readonly actionClick: _angular_core.OutputEmitterRef<MouseEvent>;
2101
2216
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Panel, never>;
2102
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Panel, "kf-panel", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "actionHref": { "alias": "actionHref"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2217
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Panel, "kf-panel", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "actionHref": { "alias": "actionHref"; "required": false; "isSignal": true; }; }, { "actionClick": "actionClick"; }, never, ["*"], true, never>;
2103
2218
  }
2104
2219
 
2105
2220
  /** Un ítem de navegación de la barra de marca. `icon` es opcional y solo se
@@ -2234,10 +2349,11 @@ declare class PortalHeader {
2234
2349
 
2235
2350
  /** Mismo vocabulario que `Badge.tone`/`TextTone` (menos `info`/`service`,
2236
2351
  * que no aplican a un valor de progreso): `neutral` es el color de marca
2237
- * por defecto (sin implicar buen/mal estado), `ok`/`warn`/`error` sí
2238
- * comunican severidad. La librería no conoce el dominio que produce ese
2352
+ * por defecto (sin implicar buen/mal estado), `primary` es el color
2353
+ * primario para un avance de proceso (ej. una carga), y `ok`/`warn`/`error`
2354
+ * sí comunican severidad. La librería no conoce el dominio que produce ese
2239
2355
  * valor (SLA, storage, lo que sea) — el consumidor decide qué tone usar. */
2240
- type ProgressTone = 'neutral' | 'ok' | 'warn' | 'error';
2356
+ type ProgressTone = 'neutral' | 'primary' | 'ok' | 'warn' | 'error';
2241
2357
  /**
2242
2358
  * Barra de progreso de un solo valor (0-100%) con color por severidad —
2243
2359
  * para un porcentaje simple, a diferencia de `kf-bucket-progress`, que
@@ -2860,12 +2976,18 @@ declare class StatTile {
2860
2976
  readonly description: _angular_core.InputSignal<string | undefined>;
2861
2977
  readonly actionLabel: _angular_core.InputSignal<string | undefined>;
2862
2978
  readonly actionHref: _angular_core.InputSignal<string | undefined>;
2979
+ /**
2980
+ * Click en el link de la variante CTA. Incluye el `MouseEvent` para que un
2981
+ * consumidor con router pueda cortar la navegación nativa — mismo patrón
2982
+ * que `actionClick` de `kf-panel`, sin depender de `@angular/router`.
2983
+ */
2984
+ readonly actionClick: _angular_core.OutputEmitterRef<MouseEvent>;
2863
2985
  /** Texto real de la nota. `null` significa "no reservar la línea": pasa
2864
2986
  * solo cuando el consumidor no declaró ni nota ni placeholder. */
2865
2987
  protected readonly noteText: _angular_core.Signal<string | null>;
2866
2988
  protected readonly noteIsPlaceholder: _angular_core.Signal<boolean>;
2867
2989
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatTile, never>;
2868
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatTile, "kf-stat-tile", never, { "cta": { "alias": "cta"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "note": { "alias": "note"; "required": false; "isSignal": true; }; "notePlaceholder": { "alias": "notePlaceholder"; "required": false; "isSignal": true; }; "valueMissing": { "alias": "valueMissing"; "required": false; "isSignal": true; }; "hasProjectedValue": { "alias": "hasProjectedValue"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "actionHref": { "alias": "actionHref"; "required": false; "isSignal": true; }; }, {}, never, ["[valueContent]"], true, never>;
2990
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatTile, "kf-stat-tile", never, { "cta": { "alias": "cta"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "note": { "alias": "note"; "required": false; "isSignal": true; }; "notePlaceholder": { "alias": "notePlaceholder"; "required": false; "isSignal": true; }; "valueMissing": { "alias": "valueMissing"; "required": false; "isSignal": true; }; "hasProjectedValue": { "alias": "hasProjectedValue"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "actionHref": { "alias": "actionHref"; "required": false; "isSignal": true; }; }, { "actionClick": "actionClick"; }, never, ["[valueContent]"], true, never>;
2869
2991
  }
2870
2992
 
2871
2993
  /**
@@ -3073,6 +3195,55 @@ declare class TileGrid {
3073
3195
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TileGrid, "kf-tile-grid", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
3074
3196
  }
3075
3197
 
3198
+ interface TimeSlot {
3199
+ value: string;
3200
+ /** Texto visible; por defecto, `value`. */
3201
+ label?: string;
3202
+ disabled?: boolean;
3203
+ /** Los horarios con el mismo `group` se rinden juntos bajo esa etiqueta, en orden de aparición. */
3204
+ group?: string;
3205
+ }
3206
+ /**
3207
+ * Grilla de horarios seleccionables con semántica de radiogroup: un solo tab
3208
+ * stop, las flechas mueven y seleccionan (saltando los deshabilitados) y
3209
+ * Home/End van al primer/último horario habilitado.
3210
+ *
3211
+ * Si algún horario declara `group`, se rinde un subgrupo con etiqueta por
3212
+ * cada grupo distinto; si no, una sola grilla plana.
3213
+ *
3214
+ * <kf-time-slot-picker
3215
+ * ariaLabel="Horario"
3216
+ * [slots]="[{ value: '09:00', group: 'Mañana' }, { value: '15:30', group: 'Tarde', disabled: true }]"
3217
+ * [(value)]="time"
3218
+ * [loading]="loadingSlots()"
3219
+ * />
3220
+ */
3221
+ declare class TimeSlotPicker {
3222
+ private static nextId;
3223
+ readonly slots: _angular_core.InputSignal<readonly TimeSlot[]>;
3224
+ readonly value: _angular_core.ModelSignal<string | null>;
3225
+ readonly ariaLabel: _angular_core.InputSignal<string>;
3226
+ /** Muestra chips de carga en lugar de los horarios. */
3227
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
3228
+ readonly emptyLabel: _angular_core.InputSignal<string>;
3229
+ private readonly host;
3230
+ private readonly idPrefix;
3231
+ protected readonly skeletons: number[];
3232
+ protected readonly groups: _angular_core.Signal<{
3233
+ id: string;
3234
+ label: string | null;
3235
+ slots: readonly TimeSlot[];
3236
+ }[]>;
3237
+ /** Valores habilitados en orden visual — la secuencia de navegación por teclado. */
3238
+ private readonly enabledValues;
3239
+ /** El único chip con `tabindex="0"` (roving tabindex). */
3240
+ protected readonly tabStop: _angular_core.Signal<string>;
3241
+ protected select(slot: TimeSlot): void;
3242
+ protected onKeydown(event: KeyboardEvent, current: string): void;
3243
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimeSlotPicker, never>;
3244
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeSlotPicker, "kf-time-slot-picker", never, { "slots": { "alias": "slots"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
3245
+ }
3246
+
3076
3247
  /**
3077
3248
  * Visual tone of a toast. Maps to the state tokens in
3078
3249
  * projects/ui/src/tokens/base.css. `loading` has no auto-dismiss and shows an
@@ -3284,5 +3455,5 @@ declare class ViewToggle {
3284
3455
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ViewToggle, "kf-view-toggle", never, { "view": { "alias": "view"; "required": true; "isSignal": true; }; }, { "viewChange": "viewChange"; }, never, never, true, never>;
3285
3456
  }
3286
3457
 
3287
- export { ActionTile, AdminBadge, Alert, AlertRow, Avatar, Badge, Breadcrumb, BucketProgress, Button, Card, Carousel, CarouselSlide, Checkbox, Chip, Collapsible, ContactPopover, ContentSlot, ContentState, ContentViewer, DEFAULT_PAGE_SIZE_OPTIONS, DataTable, Divider, DocumentRow, Drawer, Dropdown, DropdownItem, DropdownPanel, EmptyState, EventTimeline, FeatureCard, Field, FieldLabel, Filter, FilterChips, FolderTabs, FolderTabsPanel, Footer, FormatInputDirective, Icon, Input, JourneyStepper, Link, MetricCard, Modal, MultiSelect, NoteBlock, PageHeader, Pagination, Panel, PortalHeader, Progress, PulseDot, RowActions, SectionHeader, SectionNav, SectionNavItem, SectionNavSubsection, Segmented, Select, SelectableCardGroup, SidebarShell, Skeleton, Spinner, StatCard, StatTile, StatusPill, Tabs, Text, Textarea, TileGrid, ToastHost, ToastService, TooltipDirective, ViewToggle, dataTableViewSignal };
3288
- export type { AlertRowTone, AlertTone, BreadcrumbItem, BucketProgressItem, ContentStateKind, ContentStateLoad, ContentViewerType, DataTableCardRole, DataTableColumn, DataTableDensity, DataTableSort, DataTableView, DividerOrientation, DocumentRowTone, DrawerSide, DropdownItemTone, DropdownPanelVariant, EventTimelineItem, EventTimelineTone, FilterFieldChange, FilterFieldConfig, FilterFieldType, FilterValue, FolderTabOption, FooterLink, IconName, IconRotation, IconSize, JourneyStep, JourneyStepStatus, JourneyStepperColorScheme, JourneyStepperSurface, LinkVariant, MultiSelectOption, NoteBlockTone, PageHeaderTitleSize, PaginationItem, PortalHeaderAdminAction, PortalHeaderNavItem, ProgressTone, RowAction, RowActionKind, RowActionsMode, SectionNavSubsectionData, SegmentedOption, SelectableCardOption, SidebarNavItemData, SkeletonVariant, SpinnerSize, StatCardTone, StatTileTone, StatTileVariant, TabOption, TextAs, TextTone, TextVariant, ToastAction, ToastOptions, ToastPromiseMessages, ToastState, ToastTone, TooltipPosition, ViewToggleOption };
3458
+ export { ActionTile, AdminBadge, Alert, AlertRow, Avatar, Badge, Breadcrumb, BucketProgress, Button, Calendar, Card, Carousel, CarouselSlide, Checkbox, Chip, Collapsible, ContactPopover, ContentSlot, ContentState, ContentViewer, DEFAULT_PAGE_SIZE_OPTIONS, DataTable, Divider, DocumentRow, Drawer, Dropdown, DropdownItem, DropdownPanel, EmptyState, EventTimeline, FeatureCard, Field, FieldLabel, Filter, FilterChips, FolderTabs, FolderTabsPanel, Footer, FormatInputDirective, Icon, Input, JourneyStepper, Link, MetricCard, Modal, MultiSelect, NoteBlock, PageHeader, Pagination, Panel, PortalHeader, Progress, PulseDot, RowActions, SectionHeader, SectionNav, SectionNavItem, SectionNavSubsection, Segmented, Select, SelectableCardGroup, SidebarShell, Skeleton, Spinner, StatCard, StatTile, StatusPill, Tabs, Text, Textarea, TileGrid, TimeSlotPicker, ToastHost, ToastService, TooltipDirective, ViewToggle, dataTableViewSignal };
3459
+ export type { AlertRowTone, AlertTone, BreadcrumbItem, BucketProgressItem, CalendarDay, ContentStateKind, ContentStateLoad, ContentViewerType, DataTableCardRole, DataTableColumn, DataTableDensity, DataTableSort, DataTableView, DividerOrientation, DocumentRowTone, DrawerSide, DropdownItemTone, DropdownPanelVariant, EventTimelineItem, EventTimelineTone, FilterFieldChange, FilterFieldConfig, FilterFieldType, FilterValue, FolderTabOption, FooterLink, IconName, IconRotation, IconSize, JourneyStep, JourneyStepStatus, JourneyStepperColorScheme, JourneyStepperSurface, LinkVariant, MultiSelectOption, NoteBlockTone, PageHeaderTitleSize, PaginationItem, PortalHeaderAdminAction, PortalHeaderNavItem, ProgressTone, RowAction, RowActionKind, RowActionsMode, SectionNavSubsectionData, SegmentedOption, SelectableCardOption, SidebarNavItemData, SkeletonVariant, SpinnerSize, StatCardTone, StatTileTone, StatTileVariant, TabOption, TextAs, TextTone, TextVariant, TimeSlot, ToastAction, ToastOptions, ToastPromiseMessages, ToastState, ToastTone, TooltipPosition, ViewToggleOption };
Binary file