@sfperusacdev/sf-ui 0.3.0 → 0.3.2
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/dist/sf-ui.css +1 -1
- package/dist/sf-ui.js +4759 -2720
- package/dist/sf-ui.js.map +1 -1
- package/dist/sf-ui.umd.cjs +9 -8
- package/dist/sf-ui.umd.cjs.map +1 -1
- package/dist/theme/densidad.css +290 -0
- package/dist/theme/neon.css +185 -0
- package/dist/theme/temas.css +345 -0
- package/dist/types/src/components/cards/Badge.d.ts +7 -1
- package/dist/types/src/components/cards/MetricBar.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/cards/MetricBar.d.ts +5 -3
- package/dist/types/src/components/cards/MetricBar.disposiciones.test.d.ts +1 -0
- package/dist/types/src/components/cards/ProfileCard.d.ts +27 -0
- package/dist/types/src/components/cards/ProfileCard.test.d.ts +1 -0
- package/dist/types/src/components/cards/QuoteCard.d.ts +11 -0
- package/dist/types/src/components/cards/QuoteCard.test.d.ts +1 -0
- package/dist/types/src/components/cards/index.d.ts +6 -2
- package/dist/types/src/components/cards/types.d.ts +19 -0
- package/dist/types/src/components/charts/Chart.colores.test.d.ts +1 -0
- package/dist/types/src/components/charts/Chart.d.ts +1 -1
- package/dist/types/src/components/charts/ChartLegend.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/charts/ChartLegend.d.ts +22 -1
- package/dist/types/src/components/charts/index.d.ts +1 -1
- package/dist/types/src/components/charts/types.d.ts +5 -0
- package/dist/types/src/components/dashboard/DonutGauge.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/dashboard/DonutGauge.d.ts +5 -1
- package/dist/types/src/components/dashboard/DonutGauge.degradado.test.d.ts +1 -0
- package/dist/types/src/components/dashboard/MetricTile.d.ts +24 -0
- package/dist/types/src/components/dashboard/MetricTile.sinDesborde.test.d.ts +1 -0
- package/dist/types/src/components/dashboard/MetricTile.test.d.ts +1 -0
- package/dist/types/src/components/dashboard/Seleccion.test.d.ts +1 -0
- package/dist/types/src/components/dashboard/StageFlow.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/dashboard/StageFlow.d.ts +43 -0
- package/dist/types/src/components/dashboard/StageFlow.test.d.ts +1 -0
- package/dist/types/src/components/dashboard/StateChain.d.ts +28 -0
- package/dist/types/src/components/dashboard/StateChain.test.d.ts +1 -0
- package/dist/types/src/components/dashboard/StateChain.vertical.test.d.ts +1 -0
- package/dist/types/src/components/dashboard/Stepper.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/dashboard/Stepper.d.ts +3 -1
- package/dist/types/src/components/dashboard/Stepper.icono.test.d.ts +1 -0
- package/dist/types/src/components/dashboard/index.d.ts +6 -0
- package/dist/types/src/components/dashboard/types.d.ts +4 -0
- package/dist/types/src/components/display/AuditTimeline.cadena.test.d.ts +1 -0
- package/dist/types/src/components/display/AuditTimeline.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/display/AuditTimeline.d.ts +7 -1
- package/dist/types/src/components/display/CheckList.d.ts +19 -0
- package/dist/types/src/components/display/CheckList.srOnly.test.d.ts +1 -0
- package/dist/types/src/components/display/CheckList.test.d.ts +1 -0
- package/dist/types/src/components/display/MediaGallery.d.ts +41 -0
- package/dist/types/src/components/display/MediaGallery.test.d.ts +1 -0
- package/dist/types/src/components/display/MediaPanel.d.ts +4 -1
- package/dist/types/src/components/display/RecordList.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/display/RecordList.compacta.test.d.ts +1 -0
- package/dist/types/src/components/display/RecordList.d.ts +15 -2
- package/dist/types/src/components/display/Timeline.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/display/Timeline.columnas.test.d.ts +1 -0
- package/dist/types/src/components/display/Timeline.d.ts +22 -1
- package/dist/types/src/components/display/Timeline.horizontal.test.d.ts +1 -0
- package/dist/types/src/components/display/index.d.ts +8 -4
- package/dist/types/src/components/display/mediaGalleryFoco.d.ts +1 -0
- package/dist/types/src/components/display/mediaGalleryFoco.test.d.ts +1 -0
- package/dist/types/src/components/layout/AppShell.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/layout/AppShell.d.ts +8 -2
- package/dist/types/src/components/layout/Tabs.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/layout/Tabs.d.ts +5 -2
- package/dist/types/src/components/layout/Tabs.test.d.ts +1 -0
- package/dist/types/src/components/layout/ThemePicker.d.ts +23 -0
- package/dist/types/src/components/layout/ThemePicker.test.d.ts +1 -0
- package/dist/types/src/components/layout/WorkspaceHeader.d.ts +31 -0
- package/dist/types/src/components/layout/WorkspaceHeader.test.d.ts +1 -0
- package/dist/types/src/components/layout/index.d.ts +5 -1
- package/dist/types/src/components/overlays/Drawer.d.ts +5 -2
- package/dist/types/src/components/overlays/Foco.test.d.ts +1 -0
- package/dist/types/src/components/overlays/Modal.d.ts +4 -1
- package/dist/types/src/components/overlays/colorTexto.test.d.ts +1 -0
- package/dist/types/src/components/overlays/useFocoDeCapa.d.ts +8 -0
- package/dist/types/src/components/overlays/useOverlayStack.consulta.test.d.ts +1 -0
- package/dist/types/src/components/overlays/useOverlayStack.d.ts +10 -0
- package/dist/types/src/components/table/CustomTable.d.ts +14 -1
- package/dist/types/src/components/table/CustomTable.densidad.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/table/CustomTable.densidad.test.d.ts +1 -0
- package/dist/types/src/components/table/index.d.ts +1 -1
- package/dist/types/src/components/visualization/IntegrationFlow.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/visualization/IntegrationFlow.d.ts +61 -0
- package/dist/types/src/components/visualization/IntegrationFlow.paneles.test.d.ts +1 -0
- package/dist/types/src/components/visualization/IntegrationFlow.sinRecorte.test.d.ts +1 -0
- package/dist/types/src/components/visualization/IntegrationFlow.test.d.ts +1 -0
- package/dist/types/src/components/visualization/RelationGraph.caracterizacion.test.d.ts +1 -0
- package/dist/types/src/components/visualization/RelationGraph.d.ts +65 -0
- package/dist/types/src/components/visualization/RelationGraph.orbita.test.d.ts +1 -0
- package/dist/types/src/components/visualization/RelationGraph.test.d.ts +1 -0
- package/dist/types/src/components/visualization/SeleccionNodos.test.d.ts +1 -0
- package/dist/types/src/components/visualization/disponerOrbita.d.ts +29 -0
- package/dist/types/src/components/visualization/disponerRadial.d.ts +19 -0
- package/dist/types/src/components/visualization/index.d.ts +4 -0
- package/dist/types/src/theme/temas.test.d.ts +1 -0
- package/dist/types/src/utils/devWarning.d.ts +2 -0
- package/dist/types/src/utils/devWarning.test.d.ts +1 -0
- package/dist/types/src/utils/exportTableXlsx.d.ts +7 -1
- package/dist/types/src/utils/exportTableXlsx.notas.test.d.ts +1 -0
- package/dist/types/src/utils/foco.d.ts +9 -0
- package/dist/types/src/utils/identidadColeccion.d.ts +11 -0
- package/dist/types/src/utils/identidadColeccion.test.d.ts +1 -0
- package/dist/types/src/utils/useAnchoContenedor.d.ts +22 -0
- package/dist/types/src/utils/useAnchoContenedor.test.d.ts +1 -0
- package/package.json +5 -2
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { BadgeVariant } from '../cards/types';
|
|
3
|
+
export type StageFlowEffect = {
|
|
4
|
+
label: string;
|
|
5
|
+
variant?: BadgeVariant;
|
|
6
|
+
};
|
|
7
|
+
export type StageFlowItem = {
|
|
8
|
+
/** Identidad de la etapa, única en `items`. Es la que recibe `onSelect`. */
|
|
9
|
+
key: string;
|
|
10
|
+
title: string;
|
|
11
|
+
/** Rótulo superior (ej. una fecha). */
|
|
12
|
+
eyebrow?: string;
|
|
13
|
+
icon?: ReactNode;
|
|
14
|
+
/** Cifra grande de la etapa (ej. un conteo de un embudo). */
|
|
15
|
+
value?: string | number;
|
|
16
|
+
note?: string;
|
|
17
|
+
/** Efecto de la etapa (ej. "+ Competencia"), pintado con `Badge`. */
|
|
18
|
+
effect?: StageFlowEffect;
|
|
19
|
+
/** Color de categoría de la etapa (borde y ícono). Por defecto, la paleta de categorías en orden. */
|
|
20
|
+
color?: string;
|
|
21
|
+
};
|
|
22
|
+
export type StageFlowProps = {
|
|
23
|
+
items: StageFlowItem[];
|
|
24
|
+
/** Etapa seleccionada, controlada por el host. Una clave que no existe no marca nada. */
|
|
25
|
+
selectedKey?: string;
|
|
26
|
+
/** Pide seleccionar una etapa (no significa abrirla). Sin él no hay controles. */
|
|
27
|
+
onSelect?: (key: string) => void;
|
|
28
|
+
ariaLabel?: string;
|
|
29
|
+
emptyMessage?: string;
|
|
30
|
+
/** `card` (por defecto): tarjetas con borde superior del color. `ring`: sin tarjeta; ícono en anillo grande con halo,
|
|
31
|
+
* rótulo en el color, título centrado y el efecto como pastilla rellena del color (su `variant` no se usa). */
|
|
32
|
+
variant?: StageFlowVariant;
|
|
33
|
+
/** Ancho mínimo por etapa, en rem, para ir en fila. Por defecto 10 en `card` y 6.5 en `ring`. */
|
|
34
|
+
minStageWidth?: number;
|
|
35
|
+
className?: string;
|
|
36
|
+
};
|
|
37
|
+
export type StageFlowVariant = "card" | "ring";
|
|
38
|
+
/**
|
|
39
|
+
* Etapas en tarjetas unidas por flechas, en el orden recibido. La flecha es decorativa y solo dice «la siguiente en
|
|
40
|
+
* este orden»: no es tiempo, causa ni avance (eso es `Stepper`). En fila si el contenedor da al menos 10rem por etapa;
|
|
41
|
+
* si no, en columna.
|
|
42
|
+
*/
|
|
43
|
+
export declare const StageFlow: ({ items, selectedKey, onSelect, ariaLabel, emptyMessage, variant, minStageWidth, className, }: StageFlowProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type StateChainItem = {
|
|
3
|
+
key: string;
|
|
4
|
+
label: string;
|
|
5
|
+
icon?: ReactNode;
|
|
6
|
+
/** Color propio del estado. Por defecto, la paleta de categorías en orden. */
|
|
7
|
+
color?: string;
|
|
8
|
+
/** Texto bajo el estado (ej. «Desde 12 Mar 2021»). */
|
|
9
|
+
caption?: ReactNode;
|
|
10
|
+
};
|
|
11
|
+
/** `dot`: círculo relleno con el nombre debajo. `ring`: anillo grande con ícono y nombre dentro. */
|
|
12
|
+
export type StateChainVariant = "dot" | "ring";
|
|
13
|
+
export type StateChainProps = {
|
|
14
|
+
items: StateChainItem[];
|
|
15
|
+
/** Estado actual: se marca con `aria-current` y, en `ring`, con una insignia de verificación. */
|
|
16
|
+
currentKey?: string;
|
|
17
|
+
variant?: StateChainVariant;
|
|
18
|
+
/** Con `onSelect` cada estado es un botón (aria-pressed según `selectedKey`). */
|
|
19
|
+
onSelect?: (key: string) => void;
|
|
20
|
+
selectedKey?: string;
|
|
21
|
+
ariaLabel?: string;
|
|
22
|
+
className?: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Cadena de estados (máquina de estados): cada estado con su color y una flecha hacia el siguiente. No es
|
|
26
|
+
* un proceso con pasos completados (para eso, `Stepper`).
|
|
27
|
+
*/
|
|
28
|
+
export declare const StateChain: ({ items, currentKey, variant, onSelect, selectedKey, ariaLabel, className, }: StateChainProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -8,7 +8,9 @@ type StepperProps = {
|
|
|
8
8
|
/** Subrayado de acento en el paso activo (wizard CEO / transporte). */
|
|
9
9
|
variant?: StepperVariant;
|
|
10
10
|
onStepClick?: (key: string) => void;
|
|
11
|
+
/** Nombre accesible de la lista de pasos. Por defecto "Progreso". */
|
|
12
|
+
ariaLabel?: string;
|
|
11
13
|
className?: string;
|
|
12
14
|
};
|
|
13
|
-
export declare const Stepper: ({ steps, activeKey, orientation, size, variant, onStepClick, className, }: StepperProps) => import('react').JSX.Element;
|
|
15
|
+
export declare const Stepper: ({ steps, activeKey, orientation, size, variant, onStepClick, ariaLabel, className, }: StepperProps) => import('react').JSX.Element;
|
|
14
16
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -4,6 +4,10 @@ export { TramoCard } from './TramoCard';
|
|
|
4
4
|
export type { TramoCardTipo } from './TramoCard';
|
|
5
5
|
export { StatCard } from './StatCard';
|
|
6
6
|
export type { StatCardSize } from './StatCard';
|
|
7
|
+
export { StateChain } from './StateChain';
|
|
8
|
+
export type { StateChainItem, StateChainProps, StateChainVariant } from './StateChain';
|
|
9
|
+
export { MetricTile } from './MetricTile';
|
|
10
|
+
export type { MetricTileLayout, MetricTileProps } from './MetricTile';
|
|
7
11
|
export { Calendar } from './Calendar';
|
|
8
12
|
export { MONTH_NAMES, WEEKDAY_LABELS, toLocalYMD, parseYMD, buildMonthGrid } from './calendarUtils';
|
|
9
13
|
export { DonutGauge, DonutGaugeRow } from './DonutGauge';
|
|
@@ -37,3 +41,5 @@ export type { DrilldownKPICardProps, DrilldownAlertItem, DrilldownAlertListProps
|
|
|
37
41
|
export { DetailSection } from './DetailSection';
|
|
38
42
|
export type { DetailSectionProps, DetailSectionRow, DetailSectionTone, DetailSectionDensity } from './DetailSection';
|
|
39
43
|
export type { StepStatus, StepItem, CalendarBadgeVariant, CalendarDayBadge, DonutGaugeSize, DashboardCardVariant, DashboardCardState, EventStatus, EventItem, AlertRowItem, AlertRowSeverity, AlertRowListHeaderLabels, AlertActionItem, AlertDensity, StatBarItem, } from './types';
|
|
44
|
+
export { StageFlow } from './StageFlow';
|
|
45
|
+
export type { StageFlowEffect, StageFlowItem, StageFlowProps, StageFlowVariant } from './StageFlow';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
/** "warning" y "opportunity" son aditivos (ej. cadena de decisiones tipo Domino Flow: un paso puede
|
|
2
3
|
* señalar un riesgo detectado o una oportunidad, no solo "hecho/pendiente/error"). */
|
|
3
4
|
export type StepStatus = "completed" | "active" | "pending" | "error" | "warning" | "opportunity";
|
|
@@ -9,6 +10,9 @@ export type StepItem = {
|
|
|
9
10
|
/** Valor o consecuencia de este paso (ej. "EXCEL", "+20 usuarios") — se pinta junto al label cuando
|
|
10
11
|
* viene. Sin `value`, el render es idéntico al de antes. */
|
|
11
12
|
value?: string;
|
|
13
|
+
/** Ícono decorativo en lugar del número. El estado se mantiene visible (marca en la esquina para completado, error,
|
|
14
|
+
* advertencia y oportunidad; anillo para el activo) y se agrega al nombre accesible del paso. */
|
|
15
|
+
icon?: ReactNode;
|
|
12
16
|
};
|
|
13
17
|
export type CalendarBadgeVariant = "primary" | "warning" | "danger" | "success" | "neutral";
|
|
14
18
|
export type CalendarDayBadge = {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -8,13 +8,19 @@ export type AuditTimelineItem = {
|
|
|
8
8
|
detail?: ReactNode;
|
|
9
9
|
eventType?: AuditEventType;
|
|
10
10
|
icon?: ReactNode;
|
|
11
|
+
/** Solo en `variant="chain"`: color del paso. Por defecto, la paleta de categorías en orden. */
|
|
12
|
+
color?: string;
|
|
11
13
|
};
|
|
14
|
+
/** `default`: historial de movimientos (publicado). `chain`: cadena de pasos con ícono grande en círculo de color,
|
|
15
|
+
* `actor` como título del paso, `action` y `detail` debajo, la hora a la derecha y una flecha de color entre pasos. */
|
|
16
|
+
export type AuditTimelineVariant = "default" | "chain";
|
|
12
17
|
export type AuditTimelineProps = {
|
|
13
18
|
items: AuditTimelineItem[];
|
|
14
19
|
sectionTitle?: string;
|
|
15
20
|
eventCountLabel?: string;
|
|
16
21
|
ariaLabel?: string;
|
|
17
22
|
emptyMessage?: string;
|
|
23
|
+
variant?: AuditTimelineVariant;
|
|
18
24
|
className?: string;
|
|
19
25
|
};
|
|
20
|
-
export declare const AuditTimeline: ({ items, sectionTitle, eventCountLabel, ariaLabel, emptyMessage, className, }: AuditTimelineProps) => import('react').JSX.Element;
|
|
26
|
+
export declare const AuditTimeline: ({ items, sectionTitle, eventCountLabel, ariaLabel, emptyMessage, variant, className, }: AuditTimelineProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type CheckListItem = {
|
|
2
|
+
key: string;
|
|
3
|
+
label: string;
|
|
4
|
+
checked: boolean;
|
|
5
|
+
};
|
|
6
|
+
export type CheckListProps = {
|
|
7
|
+
items: CheckListItem[];
|
|
8
|
+
/** `inline` (por defecto): en una fila que pasa de línea si no cabe. `stacked`: una debajo de otra. */
|
|
9
|
+
layout?: "inline" | "stacked";
|
|
10
|
+
checkedLabel?: string;
|
|
11
|
+
uncheckedLabel?: string;
|
|
12
|
+
/** Con `onSelect` cada condición es un botón (aria-pressed según `selectedKey`). */
|
|
13
|
+
onSelect?: (key: string) => void;
|
|
14
|
+
selectedKey?: string;
|
|
15
|
+
ariaLabel?: string;
|
|
16
|
+
className?: string;
|
|
17
|
+
};
|
|
18
|
+
/** Lista de solo lectura de condiciones cumplidas o pendientes (no es un control de formulario). */
|
|
19
|
+
export declare const CheckList: ({ items, layout, checkedLabel, uncheckedLabel, onSelect, selectedKey, ariaLabel, className, }: CheckListProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export type MediaGalleryKind = "image" | "pdf" | "video" | "other";
|
|
2
|
+
export type MediaGalleryItem = {
|
|
3
|
+
/** Identidad del archivo, única en `items`. El visor la sigue al cambiar `items`. */
|
|
4
|
+
key: string;
|
|
5
|
+
kind: MediaGalleryKind;
|
|
6
|
+
/** Texto alternativo de la imagen (o nombre del archivo si no es imagen). */
|
|
7
|
+
alt: string;
|
|
8
|
+
/** Archivo completo. Solo una imagen con `src` se abre en el visor interno. */
|
|
9
|
+
src?: string;
|
|
10
|
+
/** Miniatura propia (ej. la primera página de un PDF). Por defecto, el `src` de una imagen. */
|
|
11
|
+
thumbnailSrc?: string;
|
|
12
|
+
caption?: string;
|
|
13
|
+
sublabel?: string;
|
|
14
|
+
};
|
|
15
|
+
export type MediaGalleryProps = {
|
|
16
|
+
items: MediaGalleryItem[];
|
|
17
|
+
/** Abre las imágenes con `src` en el visor interno. Por defecto `true`. */
|
|
18
|
+
viewer?: boolean;
|
|
19
|
+
/** Abre todo lo que el visor no abre (PDF, vídeo, otros, imágenes sin `src` o todo si `viewer` es `false`). Lo
|
|
20
|
+
* reemplaza: la galería no hace nada más. Sin él, esos elementos no son accionables. */
|
|
21
|
+
onItemOpen?: (item: MediaGalleryItem) => void;
|
|
22
|
+
ariaLabel?: string;
|
|
23
|
+
viewerTitle?: string;
|
|
24
|
+
emptyMessage?: string;
|
|
25
|
+
/** Ancho mínimo de cada miniatura antes de pasar a menos columnas (longitud CSS). Por defecto 8rem. */
|
|
26
|
+
minThumbnailWidth?: string;
|
|
27
|
+
className?: string;
|
|
28
|
+
};
|
|
29
|
+
type Devolucion = {
|
|
30
|
+
clave: string;
|
|
31
|
+
generacion: number;
|
|
32
|
+
};
|
|
33
|
+
/** Una devolución de foco solo se evalúa con el visor cerrado y si es de la última apertura: una reapertura la descarta. */
|
|
34
|
+
export declare const devolucionVigente: (devolucion: Devolucion | null, generacionVigente: number, visorAbierto: boolean) => devolucion is Devolucion;
|
|
35
|
+
/**
|
|
36
|
+
* Cuadrícula de miniaturas con visor de imágenes. La galería no descarga ni llama servicios: lo que no abre el visor lo
|
|
37
|
+
* abre el host con `onItemOpen`. El visor usa `Modal` y su pila (Escape, capas, scroll); el foco lo gestiona la galería.
|
|
38
|
+
* Contrato completo: doc 184, Anexo B.3.
|
|
39
|
+
*/
|
|
40
|
+
export declare const MediaGallery: ({ items, viewer, onItemOpen, ariaLabel, viewerTitle, emptyMessage, minThumbnailWidth, className, }: MediaGalleryProps) => import('react').JSX.Element;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ImgHTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
export type MediaPanelOverlay = "none" | "gradient-bottom" | "gradient-top" | "dark";
|
|
3
3
|
export type MediaPanelFit = "cover" | "contain";
|
|
4
|
+
export type MediaPanelContentStyle = "default" | "script";
|
|
4
5
|
export type MediaPanelProps = {
|
|
5
6
|
src: string;
|
|
6
7
|
alt: string;
|
|
@@ -12,6 +13,8 @@ export type MediaPanelProps = {
|
|
|
12
13
|
overlay?: MediaPanelOverlay;
|
|
13
14
|
/** Contenido superpuesto (ej. un título editorial) — se ancla abajo a la izquierda por defecto. */
|
|
14
15
|
children?: ReactNode;
|
|
16
|
+
/** "script" pinta el contenido superpuesto con la letra manuscrita del tema (`--sf-font-script`), en blanco. */
|
|
17
|
+
contentStyle?: MediaPanelContentStyle;
|
|
15
18
|
rounded?: boolean;
|
|
16
19
|
loading?: "lazy" | "eager";
|
|
17
20
|
/** Se muestra si `src` falla al cargar (ej. un icono o texto). Sin `fallback`, un error de carga
|
|
@@ -26,4 +29,4 @@ export type MediaPanelProps = {
|
|
|
26
29
|
* cercano era `Avatar`, pensado para fotos de perfil pequeñas, y `Carousel`, que es un slideshow
|
|
27
30
|
* genérico sin tratamiento de imagen).
|
|
28
31
|
*/
|
|
29
|
-
export declare const MediaPanel: ({ src, alt, aspectRatio, fit, overlay, children, rounded, loading, fallback, className, imgProps, }: MediaPanelProps) => import('react').JSX.Element;
|
|
32
|
+
export declare const MediaPanel: ({ src, alt, aspectRatio, fit, overlay, children, contentStyle, rounded, loading, fallback, className, imgProps, }: MediaPanelProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,26 +1,39 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
+
import { BadgeAppearance } from '../cards/Badge';
|
|
2
3
|
import { BadgeVariant } from '../cards/types';
|
|
3
4
|
export type RecordListIconTone = "info" | "warning" | "success" | "neutral";
|
|
4
5
|
export type RecordListItemProps = {
|
|
5
6
|
id?: string;
|
|
6
7
|
icon?: ReactNode;
|
|
7
8
|
iconTone?: RecordListIconTone;
|
|
9
|
+
/** Color propio del ícono (sin caja de fondo, con halo). Gana sobre `iconTone`. */
|
|
10
|
+
iconColor?: string;
|
|
11
|
+
/** Columna fija antes del título (ej. la fecha). */
|
|
12
|
+
meta?: ReactNode;
|
|
8
13
|
title: ReactNode;
|
|
9
14
|
subtitle?: ReactNode;
|
|
10
15
|
badge?: {
|
|
11
16
|
label: string;
|
|
12
17
|
variant?: BadgeVariant;
|
|
13
18
|
dot?: boolean;
|
|
19
|
+
appearance?: BadgeAppearance;
|
|
20
|
+
color?: string;
|
|
14
21
|
};
|
|
15
22
|
actions?: ReactNode;
|
|
23
|
+
/** Con `onClick`, ícono, columna `meta`, título y subtítulo forman un botón (el `badge` y `actions` quedan fuera). */
|
|
24
|
+
onClick?: () => void;
|
|
25
|
+
selected?: boolean;
|
|
16
26
|
className?: string;
|
|
17
27
|
};
|
|
18
28
|
export type RecordListProps = {
|
|
19
29
|
title?: ReactNode;
|
|
20
30
|
action?: ReactNode;
|
|
21
31
|
items: RecordListItemProps[];
|
|
32
|
+
/** "compact": filas de una línea, sin caja propia, separadas por una línea. */
|
|
33
|
+
density?: RecordListDensity;
|
|
22
34
|
className?: string;
|
|
23
35
|
ariaLabel?: string;
|
|
24
36
|
};
|
|
25
|
-
export
|
|
26
|
-
export declare const
|
|
37
|
+
export type RecordListDensity = "default" | "compact";
|
|
38
|
+
export declare const RecordListItem: ({ icon, iconTone, iconColor, meta, title, subtitle, badge, actions, onClick, selected, className, }: RecordListItemProps) => import('react').JSX.Element;
|
|
39
|
+
export declare const RecordList: ({ title, action, items, density, className, ariaLabel }: RecordListProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -7,11 +7,32 @@ export type TimelineItem = {
|
|
|
7
7
|
time?: ReactNode;
|
|
8
8
|
status?: TimelineStatus;
|
|
9
9
|
icon?: ReactNode;
|
|
10
|
+
/** Color propio del marcador (y del tramo de línea que sale de él). Gana sobre `status`. */
|
|
11
|
+
color?: string;
|
|
12
|
+
/** Columna intermedia a la derecha del cuerpo (ej. el impacto del evento). */
|
|
13
|
+
meta?: ReactNode;
|
|
14
|
+
/** Columna final (ej. un `Badge` de estado). */
|
|
15
|
+
aside?: ReactNode;
|
|
16
|
+
/** Con `onClick` el título es un botón que abre el detalle del elemento. */
|
|
17
|
+
onClick?: () => void;
|
|
10
18
|
};
|
|
19
|
+
export type TimelineOrientation = "vertical" | "horizontal";
|
|
11
20
|
export type TimelineProps = {
|
|
12
21
|
items: TimelineItem[];
|
|
13
22
|
ariaLabel?: string;
|
|
14
23
|
emptyMessage?: string;
|
|
24
|
+
/** "vertical" (por defecto) o "horizontal": la misma lista con los marcadores sobre una línea. Solo se muestra
|
|
25
|
+
* horizontal si el contenedor da al menos 8rem por elemento; si no, o si no se puede medir, queda vertical. */
|
|
26
|
+
orientation?: TimelineOrientation;
|
|
27
|
+
/** Ancho mínimo por elemento, en rem, para mostrar la horizontal. Por defecto 8. */
|
|
28
|
+
minItemWidth?: number;
|
|
29
|
+
/** Solo horizontal: "center" centra marcador y textos bajo el marcador; con ícono, el ícono va sobre la línea y un
|
|
30
|
+
* punto del mismo color marca la línea. */
|
|
31
|
+
align?: "start" | "center";
|
|
32
|
+
/** "top" pone la hora antes del título. */
|
|
33
|
+
timePosition?: "inline" | "top";
|
|
34
|
+
/** "cards": cada elemento en su propia tarjeta (solo vertical). */
|
|
35
|
+
variant?: "default" | "cards";
|
|
15
36
|
className?: string;
|
|
16
37
|
};
|
|
17
|
-
export declare const Timeline: ({ items, ariaLabel, emptyMessage, className }: TimelineProps) => import('react').JSX.Element;
|
|
38
|
+
export declare const Timeline: ({ items, ariaLabel, emptyMessage, orientation, minItemWidth, align, timePosition, variant, className, }: TimelineProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { Avatar, AvatarGroup } from './Avatar';
|
|
2
2
|
export type { AvatarProps, AvatarGroupProps, AvatarSize, AvatarVariant, AvatarShape } from './Avatar';
|
|
3
3
|
export { AuditTimeline } from './AuditTimeline';
|
|
4
|
-
export type { AuditEventType, AuditTimelineItem, AuditTimelineProps } from './AuditTimeline';
|
|
4
|
+
export type { AuditEventType, AuditTimelineItem, AuditTimelineProps, AuditTimelineVariant } from './AuditTimeline';
|
|
5
5
|
export { RecordList, RecordListItem } from './RecordList';
|
|
6
|
-
export type { RecordListIconTone, RecordListItemProps, RecordListProps } from './RecordList';
|
|
6
|
+
export type { RecordListDensity, RecordListIconTone, RecordListItemProps, RecordListProps } from './RecordList';
|
|
7
7
|
export { LiveChip } from './LiveChip';
|
|
8
8
|
export type { LiveChipProps } from './LiveChip';
|
|
9
9
|
export { LiveStatusBar } from './LiveStatusBar';
|
|
@@ -11,8 +11,12 @@ export type { LiveStatusBarProps, LiveStatusMetric } from './LiveStatusBar';
|
|
|
11
11
|
export { PassengerBoardCard } from './PassengerBoardCard';
|
|
12
12
|
export type { PassengerBoardCardProps } from './PassengerBoardCard';
|
|
13
13
|
export { Timeline } from './Timeline';
|
|
14
|
-
export type { TimelineItem, TimelineProps, TimelineStatus } from './Timeline';
|
|
14
|
+
export type { TimelineItem, TimelineOrientation, TimelineProps, TimelineStatus } from './Timeline';
|
|
15
15
|
export { Carousel } from './Carousel';
|
|
16
16
|
export type { CarouselProps } from './Carousel';
|
|
17
|
+
export { CheckList } from './CheckList';
|
|
18
|
+
export type { CheckListItem, CheckListProps } from './CheckList';
|
|
17
19
|
export { MediaPanel } from './MediaPanel';
|
|
18
|
-
export type { MediaPanelFit, MediaPanelOverlay, MediaPanelProps } from './MediaPanel';
|
|
20
|
+
export type { MediaPanelContentStyle, MediaPanelFit, MediaPanelOverlay, MediaPanelProps } from './MediaPanel';
|
|
21
|
+
export { MediaGallery } from './MediaGallery';
|
|
22
|
+
export type { MediaGalleryItem, MediaGalleryKind, MediaGalleryProps } from './MediaGallery';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { esEnfocableValido, siguienteEnContencion, tabulables } from '../../utils/foco';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -15,6 +15,8 @@ export type AppShellNavItem = {
|
|
|
15
15
|
* detrás de bandera o permiso, donde la definición del menú es estática.
|
|
16
16
|
*/
|
|
17
17
|
hidden?: boolean;
|
|
18
|
+
/** 1 = subopción del ítem anterior: va con sangría y en letra menor. */
|
|
19
|
+
level?: 0 | 1;
|
|
18
20
|
};
|
|
19
21
|
export type AppShellCategory = {
|
|
20
22
|
id: string;
|
|
@@ -75,6 +77,7 @@ export type AppShellExitToModulesAction = {
|
|
|
75
77
|
ariaLabel?: string;
|
|
76
78
|
icon?: ReactNode;
|
|
77
79
|
};
|
|
80
|
+
export type AppShellLayout = "rail" | "sidebar";
|
|
78
81
|
export type AppShellProps = {
|
|
79
82
|
categories: AppShellCategory[];
|
|
80
83
|
activeItemId: string;
|
|
@@ -82,6 +85,9 @@ export type AppShellProps = {
|
|
|
82
85
|
brand?: ReactNode;
|
|
83
86
|
topBar?: ReactNode;
|
|
84
87
|
children: ReactNode;
|
|
88
|
+
/** "rail" (por defecto): riel de categorías y submenú de la categoría activa. "sidebar": una sola columna con
|
|
89
|
+
* `brand` arriba y los ítems de todas las categorías; con más de una categoría, cada grupo lleva su título. */
|
|
90
|
+
layout?: AppShellLayout;
|
|
85
91
|
submenuCollapsed?: boolean;
|
|
86
92
|
onSubmenuCollapsedChange?: (collapsed: boolean) => void;
|
|
87
93
|
submenuFooter?: ReactNode;
|
|
@@ -101,12 +107,12 @@ export type AppShellProps = {
|
|
|
101
107
|
className?: string;
|
|
102
108
|
contentClassName?: string;
|
|
103
109
|
};
|
|
104
|
-
export declare const AppShell: ({ categories, activeItemId, onChange, brand, topBar, children, submenuCollapsed, onSubmenuCollapsedChange, submenuFooter, showSubmenuHeader, showDefaultTopBar, topBarContext, branchSelector, themeToggle, notifications, moduleLauncher, userMenu, helpAction, exitToModulesAction, className, contentClassName, }: AppShellProps) => import('react').JSX.Element;
|
|
110
|
+
export declare const AppShell: ({ categories, activeItemId, onChange, brand, topBar, children, layout, submenuCollapsed, onSubmenuCollapsedChange, submenuFooter, showSubmenuHeader, showDefaultTopBar, topBarContext, branchSelector, themeToggle, notifications, moduleLauncher, userMenu, helpAction, exitToModulesAction, className, contentClassName, }: AppShellProps) => import('react').JSX.Element;
|
|
105
111
|
/**
|
|
106
112
|
* @deprecated Use `AppShell` instead. `AppBarContainer` remains as temporary
|
|
107
113
|
* compatibility alias and is scheduled for removal in the next major release.
|
|
108
114
|
*/
|
|
109
|
-
export declare const AppBarContainer: ({ categories, activeItemId, onChange, brand, topBar, children, submenuCollapsed, onSubmenuCollapsedChange, submenuFooter, showSubmenuHeader, showDefaultTopBar, topBarContext, branchSelector, themeToggle, notifications, moduleLauncher, userMenu, helpAction, exitToModulesAction, className, contentClassName, }: AppShellProps) => import('react').JSX.Element;
|
|
115
|
+
export declare const AppBarContainer: ({ categories, activeItemId, onChange, brand, topBar, children, layout, submenuCollapsed, onSubmenuCollapsedChange, submenuFooter, showSubmenuHeader, showDefaultTopBar, topBarContext, branchSelector, themeToggle, notifications, moduleLauncher, userMenu, helpAction, exitToModulesAction, className, contentClassName, }: AppShellProps) => import('react').JSX.Element;
|
|
110
116
|
/**
|
|
111
117
|
* @deprecated Use `AppShellProps` instead.
|
|
112
118
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -11,7 +11,10 @@ type TabsProps = {
|
|
|
11
11
|
value: string;
|
|
12
12
|
onChange: (id: string) => void;
|
|
13
13
|
className?: string;
|
|
14
|
-
|
|
14
|
+
/** "pills": cada pestaña en su propia píldora con borde; la activa, rellena. */
|
|
15
|
+
variant?: "underline" | "segmented" | "accentUnderline" | "pills";
|
|
16
|
+
/** "sm": pestañas bajas para la cabecera de una tarjeta. */
|
|
17
|
+
size?: "md" | "sm";
|
|
15
18
|
};
|
|
16
|
-
export declare const Tabs: ({ tabs, value, onChange, className, variant }: TabsProps) => import('react').JSX.Element;
|
|
19
|
+
export declare const Tabs: ({ tabs, value, onChange, className, variant, size }: TabsProps) => import('react').JSX.Element;
|
|
17
20
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type ThemePickerOption = {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
/** Dos colores de muestra (fondo y acento) para reconocer el tema. */
|
|
5
|
+
swatch: [string, string];
|
|
6
|
+
};
|
|
7
|
+
export type ThemePickerMode = "light" | "dark";
|
|
8
|
+
export type ThemePickerProps = {
|
|
9
|
+
themes: ThemePickerOption[];
|
|
10
|
+
value: string;
|
|
11
|
+
onChange: (id: string) => void;
|
|
12
|
+
mode: ThemePickerMode;
|
|
13
|
+
onModeChange: (mode: ThemePickerMode) => void;
|
|
14
|
+
/** false: solo las muestras de color; el nombre queda como texto accesible y en el `title`. */
|
|
15
|
+
showLabels?: boolean;
|
|
16
|
+
ariaLabel?: string;
|
|
17
|
+
className?: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Selector de tema de color (radio) y de modo claro u oscuro (interruptor). Solo informa la elección: quien lo usa
|
|
21
|
+
* aplica `data-skin` y `data-theme` en el <html> (ver theme/temas.css).
|
|
22
|
+
*/
|
|
23
|
+
export declare const ThemePicker: ({ themes, value, onChange, mode, onModeChange, showLabels, ariaLabel, className, }: ThemePickerProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { NotificationItem } from '../overlays';
|
|
3
|
+
import { BreadcrumbItem } from './Breadcrumb';
|
|
4
|
+
export type WorkspaceHeaderSearch = {
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
value?: string;
|
|
7
|
+
onChange?: (value: string) => void;
|
|
8
|
+
onSubmit?: (value: string) => void;
|
|
9
|
+
ariaLabel?: string;
|
|
10
|
+
};
|
|
11
|
+
export type WorkspaceHeaderUser = {
|
|
12
|
+
name: string;
|
|
13
|
+
role?: string;
|
|
14
|
+
avatarSrc?: string;
|
|
15
|
+
initials?: string;
|
|
16
|
+
};
|
|
17
|
+
export type WorkspaceHeaderProps = {
|
|
18
|
+
title: string;
|
|
19
|
+
subtitle?: string;
|
|
20
|
+
breadcrumb?: BreadcrumbItem[];
|
|
21
|
+
search?: WorkspaceHeaderSearch;
|
|
22
|
+
notifications?: {
|
|
23
|
+
items: NotificationItem[];
|
|
24
|
+
onItemClick?: (item: NotificationItem) => void;
|
|
25
|
+
};
|
|
26
|
+
user?: WorkspaceHeaderUser;
|
|
27
|
+
/** Botones bajo la zona de herramientas, alineados a la derecha. */
|
|
28
|
+
actions?: ReactNode;
|
|
29
|
+
className?: string;
|
|
30
|
+
};
|
|
31
|
+
export declare const WorkspaceHeader: ({ title, subtitle, breadcrumb, search, notifications, user, actions, className, }: WorkspaceHeaderProps) => import('react').JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -14,6 +14,10 @@ export type { VisibilityProps } from './Visibility';
|
|
|
14
14
|
export { Separator } from './Separator';
|
|
15
15
|
export type { SeparatorOrientation, SeparatorProps } from './Separator';
|
|
16
16
|
export { Breadcrumb } from './Breadcrumb';
|
|
17
|
+
export { WorkspaceHeader } from './WorkspaceHeader';
|
|
18
|
+
export { ThemePicker } from './ThemePicker';
|
|
19
|
+
export type { ThemePickerMode, ThemePickerOption, ThemePickerProps } from './ThemePicker';
|
|
20
|
+
export type { WorkspaceHeaderProps, WorkspaceHeaderSearch, WorkspaceHeaderUser } from './WorkspaceHeader';
|
|
17
21
|
export type { BreadcrumbItem, BreadcrumbProps } from './Breadcrumb';
|
|
18
22
|
export { Accordion } from './Accordion';
|
|
19
23
|
export type { AccordionItemDef, AccordionProps, AccordionType } from './Accordion';
|
|
@@ -39,4 +43,4 @@ export { WeekdayToggleStrip } from './WeekdayToggleStrip';
|
|
|
39
43
|
export type { WeekdayToggleStripProps, WeekdayOption } from './WeekdayToggleStrip';
|
|
40
44
|
export type { UnitSelectorOption, UnitSelectorProps } from './UnitSelector';
|
|
41
45
|
export { AppShell, AppBarContainer } from './AppShell';
|
|
42
|
-
export type { AppShellCategory, AppShellNavItem, AppShellProps, AppShellBranchSelector, AppShellExitToModulesAction, AppShellHelpAction, AppShellModuleLauncher, AppShellModuleLauncherItem, AppShellThemeToggle, AppShellTopBarContext, AppShellUserMenu, AppBarContainerProps, } from './AppShell';
|
|
46
|
+
export type { AppShellCategory, AppShellNavItem, AppShellProps, AppShellBranchSelector, AppShellExitToModulesAction, AppShellHelpAction, AppShellLayout, AppShellModuleLauncher, AppShellModuleLauncherItem, AppShellThemeToggle, AppShellTopBarContext, AppShellUserMenu, AppBarContainerProps, } from './AppShell';
|
|
@@ -15,9 +15,12 @@ export type DrawerProps = {
|
|
|
15
15
|
height?: CSSProperties["height"];
|
|
16
16
|
headerVariant?: OverlayHeaderVariant;
|
|
17
17
|
closeOnOverlay?: boolean;
|
|
18
|
+
/** Al cerrar, devuelve el foco al control que lo tenía al abrir si quedó perdido. `false` si quien lo usa decide
|
|
19
|
+
* adónde vuelve el foco. */
|
|
20
|
+
restoreFocus?: boolean;
|
|
18
21
|
className?: string;
|
|
19
22
|
};
|
|
20
|
-
export declare const Drawer: ({ open, onClose, side, title, subtitle, icon, children, footer, subheader, width, height, headerVariant, closeOnOverlay, className, }: DrawerProps) => import('react').ReactPortal | null;
|
|
23
|
+
export declare const Drawer: ({ open, onClose, side, title, subtitle, icon, children, footer, subheader, width, height, headerVariant, closeOnOverlay, restoreFocus, className, }: DrawerProps) => import('react').ReactPortal | null;
|
|
21
24
|
/** Alias de `Drawer` — patrón shadcn Sheet (panel lateral o inferior). */
|
|
22
|
-
export declare const Sheet: ({ open, onClose, side, title, subtitle, icon, children, footer, subheader, width, height, headerVariant, closeOnOverlay, className, }: DrawerProps) => import('react').ReactPortal | null;
|
|
25
|
+
export declare const Sheet: ({ open, onClose, side, title, subtitle, icon, children, footer, subheader, width, height, headerVariant, closeOnOverlay, restoreFocus, className, }: DrawerProps) => import('react').ReactPortal | null;
|
|
23
26
|
export type SheetProps = DrawerProps;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -22,9 +22,12 @@ export type ModalProps = {
|
|
|
22
22
|
/** Oculta cabecera estándar (título, subtítulo, icono y cerrar) cuando el consumidor renderiza cabecera propia en el body. */
|
|
23
23
|
hideHeader?: boolean;
|
|
24
24
|
closeOnOverlay?: boolean;
|
|
25
|
+
/** Al cerrar, devuelve el foco al control que lo tenía al abrir si quedó perdido. `false` si quien lo usa decide
|
|
26
|
+
* adónde vuelve el foco. */
|
|
27
|
+
restoreFocus?: boolean;
|
|
25
28
|
className?: string;
|
|
26
29
|
};
|
|
27
|
-
export declare const Modal: ({ open, onClose, title, subtitle, icon, children, footer, subheader, size, maxWidth, width, headerVariant, hideHeader, closeOnOverlay, className, }: ModalProps) => import('react').ReactPortal | null;
|
|
30
|
+
export declare const Modal: ({ open, onClose, title, subtitle, icon, children, footer, subheader, size, maxWidth, width, headerVariant, hideHeader, closeOnOverlay, restoreFocus, className, }: ModalProps) => import('react').ReactPortal | null;
|
|
28
31
|
type UseModalOptions = {
|
|
29
32
|
onOpen?: () => void;
|
|
30
33
|
onClose?: () => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Foco de un diálogo de la pila (Modal, Drawer). Al abrir, enfoca el primer control del panel salvo que un hijo ya haya
|
|
4
|
+
* movido el foco dentro (el visor de MediaGallery enfoca su «Cerrar»). Mientras es la capa superior, Tab no sale del
|
|
5
|
+
* panel; si otro manejador ya atendió el Tab (preventDefault), no interviene. Al cerrar, si el foco quedó perdido,
|
|
6
|
+
* vuelve al control que tenía el foco al abrir.
|
|
7
|
+
*/
|
|
8
|
+
export declare const useFocoDeCapa: (abierto: boolean, idCapa: string, panel: RefObject<HTMLElement | null>, devolver?: boolean) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
import { RefObject } from 'react';
|
|
2
2
|
export declare const OverlayParentContext: import('react').Context<string | null>;
|
|
3
3
|
export declare const useOverlayStack: (abierto: boolean, onClose: () => void, raiz: RefObject<HTMLDivElement | null>) => string;
|
|
4
|
+
/** Capa superior registrada en la pila del documento, o `null`. Lectura pura: uso interno de sf-ui. */
|
|
5
|
+
export declare const overlaySuperior: (documento: Document) => {
|
|
6
|
+
id: string;
|
|
7
|
+
raiz: HTMLElement;
|
|
8
|
+
} | null;
|
|
9
|
+
/**
|
|
10
|
+
* Avisa después de cada alta y baja en la pila del documento. Devuelve la baja (idempotente). Cada suscripción es
|
|
11
|
+
* propia aunque se repita la función. Uso interno de sf-ui.
|
|
12
|
+
*/
|
|
13
|
+
export declare const suscribirPilaOverlays: (documento: Document, oyente: () => void) => () => void;
|