@acvl/frontend-components 0.0.67 → 0.0.69

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/index.d.ts CHANGED
@@ -672,6 +672,28 @@ interface MainDrawerV2Props {
672
672
  width?: number | string;
673
673
  /** Lado desde el que entra el panel. Por defecto `"right"`. */
674
674
  anchor?: DrawerProps["anchor"];
675
+ /**
676
+ * `"temporary"` (por defecto) flota sobre la página con backdrop, y se cierra con
677
+ * Escape o al hacer clic fuera.
678
+ *
679
+ * `"docked"` se queda acoplado en el flujo: no hay backdrop ni modal, y el panel
680
+ * ocupa su propio hueco encogiendo a lo que tenga al lado, de modo que se puede
681
+ * seguir trabajando en la página con el panel abierto.
682
+ *
683
+ * Se pinta en el hueco que reserva `MainLayout` —al costado de la pantalla— sin
684
+ * importar desde dónde se declare: viaja hasta ahí por portal (ver
685
+ * `SidePanelHostContext`), así que una grilla enterrada en el contenido abre un panel
686
+ * de pantalla completa igual que el `sidePanel` del layout. Sin `MainLayout` arriba se
687
+ * queda donde esté declarado.
688
+ *
689
+ * El hueco es uno solo y se turnan: abrir un panel encoge al que estuviera puesto, y
690
+ * cerrarlo le devuelve el turno. Nunca se reparten el ancho entre varios.
691
+ *
692
+ * En acoplado el ancho se anima al abrir y cerrar, y `anchor` sólo decide de qué
693
+ * lado va el tirador de arrastre: la posición la fija el contenedor. `slotProps.drawer`
694
+ * y `slotProps.paper` no aplican —no hay `Drawer` ni `Paper` que configurar.
695
+ */
696
+ variant?: "temporary" | "docked";
675
697
  /**
676
698
  * Añade un tirador en el borde interior del panel para arrastrar su tamaño. Mientras el
677
699
  * usuario no lo arrastre, `width` manda; en cuanto lo hace, el tamaño arrastrado la pisa
@@ -681,7 +703,10 @@ interface MainDrawerV2Props {
681
703
  resizable?: boolean;
682
704
  /** Tamaño mínimo en px al que se puede arrastrar. Por defecto `320`. */
683
705
  minWidth?: number;
684
- /** Tamaño máximo en px. Por defecto, el viewport menos un margen para el backdrop. */
706
+ /**
707
+ * Tamaño máximo en px. Por defecto, el viewport menos un margen: lo justo para dejar
708
+ * backdrop que clicar en el flotante, y un hueco de trabajo de verdad en el acoplado.
709
+ */
685
710
  maxWidth?: number;
686
711
  /**
687
712
  * Recuerda el tamaño arrastrado bajo esta clave en `localStorage`, de modo que sobreviva a
@@ -750,8 +775,52 @@ interface MainDrawerV2Props {
750
775
  * Con `resizable`, el borde interior lleva un tirador: se arrastra con el puntero, se ajusta
751
776
  * con las flechas cuando tiene el foco y vuelve a `width` con doble clic. Con
752
777
  * `widthStorageKey`, además, el tamaño se recuerda entre visitas.
778
+ *
779
+ * Con `variant="docked"` el mismo panel se acopla en el flujo en vez de flotar: sin backdrop,
780
+ * encogiendo a lo que tenga al lado en lugar de taparlo, de modo que la página de atrás sigue
781
+ * usable con el panel abierto. Ver el `sidePanel` de `MainLayout`.
782
+ */
783
+ declare function MainDrawer$1({ open, onClose, title, subtitle, children, width, anchor, variant, resizable, minWidth, maxWidth, widthStorageKey, onWidthChange, disableBackdropClose, hideCloseButton, disableGutters, pageBackgroundColor, chromeBackgroundColor, contentGap, contentBorderRadius, slots, slotProps, }: MainDrawerV2Props): react_jsx_runtime.JSX.Element;
784
+
785
+ interface SidePanelHost {
786
+ /**
787
+ * El nodo donde `MainLayout` reserva sitio para los paneles acoplados, o `null` si no
788
+ * hay a dónde viajar —porque ya se está dentro del hueco, que es el caso de lo que se
789
+ * pasa por `sidePanel`—.
790
+ */
791
+ element: HTMLElement | null;
792
+ /**
793
+ * Anuncia si este panel está abierto. Sólo se muestra uno a la vez, y el último en
794
+ * anunciarse es el que manda: hay un único hueco y repartirlo entre varios los deja a
795
+ * todos angostos, además de empujar la página fuera de la pantalla.
796
+ *
797
+ * La identidad la pone el propio panel (un `useId`). Hay que soltar el turno al
798
+ * desmontar, o el hueco se queda esperando a un panel que ya no existe.
799
+ */
800
+ registrar: (id: string, abierto: boolean) => void;
801
+ /**
802
+ * Los paneles abiertos, en el orden en que pidieron el hueco. El último lo tiene; los
803
+ * demás esperan encogidos su turno.
804
+ *
805
+ * Es la pila entera y no sólo el de encima porque un panel también necesita saber si
806
+ * hay algo debajo: es lo que convierte su botón de cerrar en un "volver".
807
+ */
808
+ pila: string[];
809
+ }
810
+ /**
811
+ * Cómo llega un panel acoplado al costado de la pantalla, y cómo se turnan entre ellos.
812
+ *
813
+ * Un panel acoplado tiene que salir al costado, y quien lo abre casi nunca está ahí: una
814
+ * grilla vive dentro del contenido, varios niveles abajo. Dejarlo donde se declara lo
815
+ * pintaría dentro de la página, que es justo lo que no se quiere; así que un
816
+ * `MainDrawer_v2` con `variant="docked"` se teletransporta (portal) hasta `element`.
817
+ *
818
+ * Fuera de un `MainLayout` el contexto es `null`: el panel se pinta donde esté declarado y
819
+ * no se turna con nadie.
753
820
  */
754
- declare function MainDrawer$1({ open, onClose, title, subtitle, children, width, anchor, resizable, minWidth, maxWidth, widthStorageKey, onWidthChange, disableBackdropClose, hideCloseButton, disableGutters, pageBackgroundColor, chromeBackgroundColor, contentGap, contentBorderRadius, slots, slotProps, }: MainDrawerV2Props): react_jsx_runtime.JSX.Element;
821
+ declare const SidePanelHostContext: React.Context<SidePanelHost | null>;
822
+ /** El hueco de paneles acoplados del layout, o `null` si no hay ninguno arriba. */
823
+ declare const useSidePanelHost: () => SidePanelHost | null;
755
824
 
756
825
  declare module "@mui/x-data-grid" {
757
826
  interface ToolbarPropsOverrides {
@@ -1134,9 +1203,30 @@ interface _HistorialDrawerProps {
1134
1203
  open: boolean;
1135
1204
  handleDrawer: () => void;
1136
1205
  endpoint?: string;
1206
+ /**
1207
+ * Cómo se coloca el panel. Por defecto `"docked"`: se acopla al costado de la pantalla y
1208
+ * encoge la página en vez de taparla, que es lo que pide el historial —se abre justo para
1209
+ * cotejar lo que dice contra el registro que se está mirando, y con el panel encima había
1210
+ * que cerrarlo entre campo y campo—.
1211
+ *
1212
+ * `"temporary"` lo devuelve a flotar sobre la página, con backdrop y modal. Hace falta
1213
+ * donde no haya un `MainLayout_v2` arriba que le reserve el hueco: sin él, el acoplado se
1214
+ * pinta donde esté declarado, o sea dentro de la propia página.
1215
+ */
1216
+ variant?: MainDrawerV2Props["variant"];
1217
+ /** Ancho del panel en px. Por defecto el de `MainDrawer_v2` (600). */
1218
+ width?: number | string;
1219
+ /**
1220
+ * Permite arrastrar el borde interior para cambiar el ancho. Activo por defecto: acoplado,
1221
+ * el panel le quita sitio a la página, así que cuánto se lleva tiene que poder decidirlo
1222
+ * quien lo está usando. El ancho arrastrado se recuerda entre visitas.
1223
+ */
1224
+ resizable?: boolean;
1225
+ /** Dónde se recuerda el ancho arrastrado. Cadena vacía para no recordarlo. */
1226
+ widthStorageKey?: string;
1137
1227
  }
1138
1228
 
1139
- interface HistorialDrawerProps extends Pick<_HistorialDrawerProps, "endpoint"> {
1229
+ interface HistorialDrawerProps extends Pick<_HistorialDrawerProps, "endpoint" | "variant" | "width"> {
1140
1230
  iconButtonProps?: IconButtonProps;
1141
1231
  }
1142
1232
  declare const HistorialDrawer: React__default.FC<HistorialDrawerProps>;
@@ -1766,6 +1856,41 @@ declare const ControlledAmountWithCurrency: {
1766
1856
  formatDetail({ fieldData, extraProps, data, name, }: DetailRenderProps): string;
1767
1857
  };
1768
1858
 
1859
+ interface ControlledColorProps {
1860
+ /** Ruta del color en el formulario. */
1861
+ name: string;
1862
+ /** Control de react-hook-form (lo inyecta el `EditField` de la página). */
1863
+ control?: any;
1864
+ /** `readOnly` no es prop de `TextField`, pero el `EditField` lo inyecta ahí. */
1865
+ fieldProps?: TextFieldProps$1 & {
1866
+ readOnly?: boolean;
1867
+ };
1868
+ extraProps?: {
1869
+ /** Colores de acceso rápido. Por defecto, la paleta de la librería. */
1870
+ presets?: string[];
1871
+ /** Muestra el botón de "Sin color". Por defecto `true`. */
1872
+ clearable?: boolean;
1873
+ };
1874
+ }
1875
+ /**
1876
+ * Campo de color en hexadecimal. Se puede escribir el hex a mano o abrirlo
1877
+ * desde la muestra de la izquierda, que despliega la paleta de accesos rápidos
1878
+ * y el selector del sistema para cualquier otro color.
1879
+ *
1880
+ * El valor que guarda en el formulario es siempre una cadena `#RRGGBB` (o `""`
1881
+ * si se quita el color), que es lo que espera el backend.
1882
+ *
1883
+ * ```ts
1884
+ * {
1885
+ * name: "color_en_calendario",
1886
+ * label: "Color en calendario",
1887
+ * type: ControlledColor,
1888
+ * gridProps: { size: { xs: 12, md: 4 } },
1889
+ * }
1890
+ * ```
1891
+ */
1892
+ declare const ControlledColor: ControlledInput<ControlledColorProps>;
1893
+
1769
1894
  /**
1770
1895
  * `ControlledDate` de v2. Reutiliza el renderizado de edición de v1 (no se
1771
1896
  * duplica su lógica) y añade el renderizado de detalle mediante `formatDetail`,
@@ -1826,6 +1951,12 @@ interface SubsectionProps {
1826
1951
  description?: string;
1827
1952
  first?: boolean;
1828
1953
  slotProps?: {
1954
+ /**
1955
+ * Grid raíz de la subsección. Su `size`/`offset` —por defecto `12`— resuelve igual que el
1956
+ * de un campo: contra el ancho del formulario cuando este corre en modo contenedor, así
1957
+ * que un `{ xs: 12, md: 6 }` parte el formulario en dos columnas cuando *el formulario*
1958
+ * es ancho, no cuando lo es la pantalla.
1959
+ */
1829
1960
  parentGrid?: Partial<GridProps>;
1830
1961
  };
1831
1962
  fields?: FieldProps[];
@@ -1972,6 +2103,11 @@ declare const formGridSx: (size: GridProps["size"], offset?: GridProps["offset"]
1972
2103
  *
1973
2104
  * `inline-size`, nunca `size`: el `Collapse` de `Subsection` anima midiendo `clientHeight`, y
1974
2105
  * contener el eje de bloque lo rompería.
2106
+ *
2107
+ * Se puede anidar reusando el mismo nombre: un elemento nunca resuelve sus propias
2108
+ * `@container` contra sí mismo, sino contra el contenedor ancestro más cercano. Así una
2109
+ * subsección con `size` responsivo mide contra el formulario mientras sus campos miden contra
2110
+ * ella.
1975
2111
  */
1976
2112
  declare const formContainerSx: (containerName?: string) => CSSObject;
1977
2113
 
@@ -1989,13 +2125,16 @@ interface DetailFormProps {
1989
2125
  /** Height factor passed to the loading spinner. Defaults to `0.7`. */
1990
2126
  loadingHeight?: number;
1991
2127
  /**
1992
- * What each field's `size` breakpoints resolve against.
2128
+ * What the `size` breakpoints inside the form resolve against — each field's, and each
2129
+ * subsection's own (`slotProps.parentGrid.size`).
1993
2130
  *
1994
2131
  * `"viewport"` is MUI's own behaviour. `"container"` resolves them against the width of
1995
2132
  * *this form*, so one section definition serves a full page, a `maxWidth="sm"` dialog and a
1996
2133
  * 460px drawer without a hand-picked size per shell — and re-flows live as the drawer is
1997
2134
  * dragged. Note that it makes the `<form>` a CSS containment context, so a `slotProps.form`
1998
- * that overrides `width` with a content-dependent value would no longer resolve.
2135
+ * that overrides `width` with a content-dependent value would no longer resolve. A
2136
+ * subsection that asks for a width of its own becomes, in turn, the container its own fields
2137
+ * resolve against.
1999
2138
  * @default "viewport"
2000
2139
  */
2001
2140
  responsiveTo?: "viewport" | "container";
@@ -2063,6 +2202,15 @@ interface DetailFormDrawerProps {
2063
2202
  width?: number | string;
2064
2203
  /** Side the drawer slides in from. Defaults to `"right"`. */
2065
2204
  anchor?: DrawerProps["anchor"];
2205
+ /**
2206
+ * `"temporary"` (the default) floats over the page. `"docked"` takes its own space at
2207
+ * the side of the screen and shrinks the app instead of covering it, so the page behind
2208
+ * stays usable — see `MainDrawer_v2`.
2209
+ *
2210
+ * Docked drops the modal: nothing stops the user from touching the page while the form
2211
+ * is open, so a drawer that guards unsaved edits behind the backdrop no longer does.
2212
+ */
2213
+ variant?: MainDrawerV2Props["variant"];
2066
2214
  /**
2067
2215
  * Let the user drag the drawer's inner edge to resize it. Forwarded to `MainDrawer_v2`
2068
2216
  * along with the four props below — see it for the full behaviour.
@@ -2080,9 +2228,10 @@ interface DetailFormDrawerProps {
2080
2228
  /** Fires with the final dragged width in px, or `null` when a double click resets it. */
2081
2229
  onWidthChange?: (width: number | null) => void;
2082
2230
  /**
2083
- * What each field's `size` breakpoints resolve against. Defaults to `"container"`: a drawer
2084
- * is narrow by construction, so viewport breakpoints would pick the wide-screen value and
2085
- * cram the fields — and they would not react to a drag either.
2231
+ * What the `size` breakpoints of the fields — and of the subsections themselves — resolve
2232
+ * against. Defaults to `"container"`: a drawer is narrow by construction, so viewport
2233
+ * breakpoints would pick the wide-screen value and cram the fields — and they would not
2234
+ * react to a drag either.
2086
2235
  * @see DetailFormProps.responsiveTo
2087
2236
  */
2088
2237
  responsiveTo?: DetailFormProps["responsiveTo"];
@@ -2120,7 +2269,7 @@ interface DetailFormDrawerProps {
2120
2269
  * `labels.saveAndNext`. Guardar sits outside the `<form>` and submits via the native
2121
2270
  * `form={formId}` attribute; Guardar ↓ submits by hand, so the implicit Enter stays Guardar.
2122
2271
  */
2123
- declare function DetailFormDrawer({ open, onClose, title, api, form, sections, pageType, startInEdit, recordKey, permissionsPath, onSuccess, navigation, width, anchor, resizable, minWidth, maxWidth, widthStorageKey, onWidthChange, responsiveTo, containerBreakpoints, labels, slots, slotProps, }: DetailFormDrawerProps): react_jsx_runtime.JSX.Element;
2272
+ declare function DetailFormDrawer({ open, onClose, title, api, form, sections, pageType, startInEdit, recordKey, permissionsPath, onSuccess, navigation, width, anchor, variant, resizable, minWidth, maxWidth, widthStorageKey, onWidthChange, responsiveTo, containerBreakpoints, labels, slots, slotProps, }: DetailFormDrawerProps): react_jsx_runtime.JSX.Element;
2124
2273
 
2125
2274
  interface DrawerGridDrawerConfig {
2126
2275
  /** Shared field layout, used by every mode. Same shape as `DetailPage_v2`'s `form`/`sections`. */
@@ -2129,6 +2278,21 @@ interface DrawerGridDrawerConfig {
2129
2278
  permissionsPath?: string;
2130
2279
  /** Panel width. Defaults to the drawer's own default (600). */
2131
2280
  width?: number | string;
2281
+ /**
2282
+ * How the panel sits on the screen. Defaults to `"temporary"`: it floats over the page,
2283
+ * modal, the way it always has.
2284
+ *
2285
+ * `"docked"` gives it its own space at the side and shrinks the app instead of covering
2286
+ * it, so the grid stays visible next to the record. Worth it where the row and the list
2287
+ * are read together; it costs two things, both from dropping the modal:
2288
+ *
2289
+ * - Nothing stops the user from re-sorting, filtering or paging the grid while the
2290
+ * drawer is open, and the footer navigator walks the rows it sampled when the record
2291
+ * opened. It stays on the list the user was reading, which is usually what's wanted,
2292
+ * but it can no longer claim to match what's on screen.
2293
+ * - Unsaved edits are no longer fenced off by the backdrop.
2294
+ */
2295
+ variant?: DetailFormDrawerProps["variant"];
2132
2296
  /**
2133
2297
  * Let the user drag the drawer's inner edge to resize it. The dragged width is remembered
2134
2298
  * across openings under a key derived from the grid's own storage key — override it with
@@ -2232,8 +2396,13 @@ interface DrawerGridProps {
2232
2396
  }
2233
2397
  /**
2234
2398
  * A `ServerGrid_v2` whose rows and create button open a `DetailFormDrawer_v2` instead of
2235
- * navigating to a full page — without giving up the full-page routes. A row click and the
2236
- * create menu's "Manual" option both open the drawer; Ctrl/Cmd+click still opens the full
2399
+ * navigating to a full page — without giving up the full-page routes.
2400
+ *
2401
+ * The panel floats over the page by default. `drawer.variant: "docked"` gives it its own
2402
+ * space at the side instead, shrinking the app so the grid stays visible next to the
2403
+ * record; read that prop before switching, the two differ in more than looks.
2404
+ *
2405
+ * A row click and the create menu's "Manual" option both open the drawer; Ctrl/Cmd+click still opens the full
2237
2406
  * page in a new tab, Alt+click opens it in the same tab, and the record drawer carries an
2238
2407
  * "open full page" button — so the routes stay reachable either way. Grids whose rows have
2239
2408
  * no route of their own turn all three off with `drawer.showOpenFullPage: false`.
@@ -2283,11 +2452,45 @@ interface ConfirmDialogProps {
2283
2452
  * confirmar puede mostrar estado de carga mientras se resuelve la acción. */
2284
2453
  declare function ConfirmDialog({ open, titulo, mensaje, confirmLabel, cancelLabel, confirmColor, confirmIcon, isLoading, onConfirm, onClose, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
2285
2454
 
2455
+ interface ActionsMenuProps {
2456
+ delete?: {
2457
+ mutation: any;
2458
+ disableNavBack?: boolean;
2459
+ };
2460
+ historial?: {
2461
+ endpoint?: string;
2462
+ /** Defaults to `"docked"` — the panel takes its own space beside the page. */
2463
+ variant?: _HistorialDrawerProps["variant"];
2464
+ /** Panel width in px. Defaults to 600. */
2465
+ width?: number | string;
2466
+ };
2467
+ extraButtons?: {
2468
+ title: string;
2469
+ icon: ReactNode;
2470
+ onClick: () => void;
2471
+ }[];
2472
+ }
2473
+
2286
2474
  interface DetailPageV2Props {
2287
2475
  api: DetailFormApi;
2288
2476
  form: DetailFormConfig["form"];
2289
2477
  sections: DetailFormConfig["sections"];
2290
2478
  pageType: PageType;
2479
+ /**
2480
+ * What the `size` breakpoints of the fields — and of the subsections themselves — resolve
2481
+ * against. Defaults to `"container"`: the width of the form, not of the screen.
2482
+ *
2483
+ * A full page is no longer the whole viewport minus the sidebar — a docked side panel
2484
+ * takes its share of it — so the screen stopped being a good proxy for how much room
2485
+ * the fields actually have. Against the form they re-flow as that room changes, with
2486
+ * no re-render: the breakpoint ladder is CSS.
2487
+ *
2488
+ * `"viewport"` restores MUI's own behaviour for a page that needs it.
2489
+ * @see DetailFormProps.responsiveTo
2490
+ */
2491
+ responsiveTo?: DetailFormProps["responsiveTo"];
2492
+ /** @see DetailFormProps.containerBreakpoints */
2493
+ containerBreakpoints?: DetailFormProps["containerBreakpoints"];
2291
2494
  slots?: {
2292
2495
  button?: ReactNode;
2293
2496
  extraButtons?: {
@@ -2308,9 +2511,12 @@ interface DetailPageV2Props {
2308
2511
  };
2309
2512
  cancel?: Partial<ButtonProps>;
2310
2513
  };
2311
- historial?: {
2312
- endpoint?: string;
2313
- };
2514
+ /**
2515
+ * The history panel opened from the actions menu. It docks beside the page rather
2516
+ * than floating over it, so the record stays readable next to what the history says
2517
+ * about it — see `ActionsMenuProps.historial` for how to change that.
2518
+ */
2519
+ historial?: ActionsMenuProps["historial"];
2314
2520
  permissionsPath?: string;
2315
2521
  deleteButton?: {
2316
2522
  disableNavBack?: boolean;
@@ -2333,9 +2539,9 @@ interface DetailFormDialogProps {
2333
2539
  /** Runs after a successful mutation, before the dialog closes. Receives the response. */
2334
2540
  onSuccess?: (response: any) => void;
2335
2541
  /**
2336
- * What each field's `size` breakpoints resolve against. Defaults to `"container"`: a
2337
- * `maxWidth="sm"` dialog is narrow by construction, so viewport breakpoints would pick the
2338
- * wide-screen value and cram the fields.
2542
+ * What the `size` breakpoints of the fields — and of the subsections themselves — resolve
2543
+ * against. Defaults to `"container"`: a `maxWidth="sm"` dialog is narrow by construction, so
2544
+ * viewport breakpoints would pick the wide-screen value and cram the fields.
2339
2545
  * @see DetailFormProps.responsiveTo
2340
2546
  */
2341
2547
  responsiveTo?: DetailFormProps["responsiveTo"];
@@ -2394,6 +2600,9 @@ interface MainLayoutPageHeaderProps extends PageHeaderProps {
2394
2600
  *
2395
2601
  * Atajo Shift+F: alterna pantalla completa (oculta navegación y encabezados).
2396
2602
  *
2603
+ * Con `sidePanel` el cascarón deja de ocupar el viewport entero y comparte la fila
2604
+ * con un panel acoplado a la derecha (ver esa prop).
2605
+ *
2397
2606
  * El estado plegado/expandido del sidebar de escritorio se guarda en
2398
2607
  * `localStorage` y se restaura al recargar (ver `sidebarStorageKey`).
2399
2608
  **/
@@ -2501,9 +2710,38 @@ interface MainLayoutProps {
2501
2710
  /** Contenido de cada snack de progreso. Por defecto una barra de progreso. */
2502
2711
  progressStatus?: (data: any) => ReactNode;
2503
2712
  };
2713
+ /**
2714
+ * Panel acoplado a la derecha del cascarón, a lo alto del viewport: al lado del
2715
+ * header, del sidebar y del contenido, no encima. Mientras esté abierto el
2716
+ * dashboard entero se encoge para dejarle sitio, así que la página de atrás sigue
2717
+ * usable —es la diferencia con un drawer, que la tapa—.
2718
+ *
2719
+ * Aquí sólo se le reserva el hueco; el panel maneja su propio ancho, su animación y
2720
+ * si está abierto o cerrado. Lo natural es un `MainDrawer_v2` con `variant="docked"`,
2721
+ * que además queda con el encabezado a la misma altura que la barra superior.
2722
+ *
2723
+ * El ancho que ocupe se publica en `SIDE_PANEL_WIDTH_VAR`, para que lo que esté fijo
2724
+ * al viewport pueda apartarse.
2725
+ */
2726
+ sidePanel?: ReactNode;
2504
2727
  /** Contenido a renderizar; por defecto el `<Outlet />` del router. */
2505
2728
  children?: ReactNode;
2506
2729
  }
2730
+ /**
2731
+ * Variable CSS con el ancho que ocupa ahora mismo el `sidePanel`, publicada en la raíz
2732
+ * del documento.
2733
+ *
2734
+ * El panel encoge el cascarón, pero no lo que está fijo al viewport —un FAB, los snacks
2735
+ * de progreso—, que quedaría debajo. Leyendo esta variable esos elementos se apartan
2736
+ * solos, y siguen el ancho aunque el panel se anime o el usuario lo arrastre:
2737
+ *
2738
+ * right: `calc(${theme.spacing(4)} + var(--acv-side-panel-width, 0px))`
2739
+ *
2740
+ * Va en `documentElement` porque buena parte de esos elementos se pintan en portales,
2741
+ * fuera del árbol del layout. Sin panel abierto vale `0px`, y fuera de este layout no
2742
+ * existe: de ahí que se lea siempre con un fallback.
2743
+ */
2744
+ declare const SIDE_PANEL_WIDTH_VAR = "--acv-side-panel-width";
2507
2745
  declare const MainLayout: (props: MainLayoutProps) => react_jsx_runtime.JSX.Element;
2508
2746
 
2509
2747
  /**
@@ -2612,5 +2850,5 @@ interface PulseDotProps {
2612
2850
  * contrario un color fijo. Se usa para indicar conexión/actividad en vivo. */
2613
2851
  declare function PulseDot({ active, inactiveColor, size, title }: PulseDotProps): react_jsx_runtime.JSX.Element;
2614
2852
 
2615
- export { APIContext, APIProvider, ActiveCell, ActiveIcon, Base, ButtonWithDrawer, COLOR_SCHEME_SELECTOR, CSVUpload, ConfirmDialog, ContentLayout, ControlledAddressAutocomplete, ControlledAmountWithCurrency, ControlledDate$1 as ControlledDate, ControlledDate as ControlledDate_v2, ControlledDropdown, ControlledFileField$1 as ControlledFileField, ControlledFileField as ControlledFileField_v2, FileUploadBox as ControlledFileUploadBox, ControlledNumber, ControlledPhoneNumber, ControlledSelect$1 as ControlledSelect, ControlledSelect as ControlledSelect_v2, ControlledSlider as ControlledSimpleSlider, ControlledSlider$1 as ControlledSlider, ControlledSwitch, ControlledText, ControlledTimePicker, ControlledToggleButtons, CoverPage, CreateButtonBase, CreateButtonWithMenuOptions, CrudDropdown, CustomNoRows, DEFAULT_FORM_BREAKPOINTS, DEFAULT_PAGINATION, DeleteButton, DeleteConfirmationDialog, DetailFormDialog as DetailFormDialog_v2, DetailFormDrawer as DetailFormDrawer_v2, DetailForm as DetailForm_v2, DetailPage$1 as DetailPage, DetailPage as DetailPage_v2, DrawerGrid as DrawerGrid_v2, EditButton, ExportCSV, ExtraButtons, FORM_CONTAINER_NAME, HistorialDrawer, KpiCard, LAYER_ORDER, ListPage, Loadable, LoadingComponent, Logo, MainDrawer, MainDrawer$1 as MainDrawer_v2, MainLayout, MenuItemWithLoading, ModuleCard, MoreOptions, MyGridEditSingleSelect, NavigationContext, NavigationProvider, NormalOrIcon, NotAllowed, NotFound, ObjectProgressStack, PAGE_SIZE_OPTIONS, Panel, PollingCountdownChip, PulseDot, SaveCancelButton, ServerGrid as ServerGrid_v2, StatusBadge, StyledMenu, Tabs, Transitions, TrueFalse, UncontrolledText, changeTitle, closeProgressSnack, composeGridProps, deleteColumn$1 as deleteColumn, deleteColumn as deleteColumn_v2, editColumn, filterQuery, formContainerSx, formGridSx, formParser, _default as headerReducer, manualCacheRefresh, mergeSettings, openProgressSnack, query, renderEditCellWithErrorTooltip, resolveInitialState, setErrors, _default$1 as snackProgressReducer, tags, theme, togglableFields, updateProgressSnackData, useAPI, useColorMode, useDetailForm, useHasPermission, useHasPermission_v2, useKeyboardShortcut, useMutationHandler, useNavigation, useServerGrid, valueLabel };
2616
- export type { APIcontextProps, AddressValue, AppTheme, ColorMode, ComoOpcionesProps, ConfirmDialogProps, ControlledInput, CustomFilterDef, CustomToolbarProps, DeleteGridColumnsProps$1 as DeleteGridColumnsProps, DetachedPage, DetailFormApi, DetailFormConfig, DetailFormController, DetailFormDialogProps, DetailFormDrawerNavigation, DetailFormDrawerProps, DetailFormProps, DetailFormStatus, DetailPageV2Props, DetailRenderProps, DrawerGridDrawerConfig, DrawerGridEditConfig, DrawerGridProps, EditGridColumnsProps, EditReadOnlyFields, FieldFilter, FieldProps$1 as FieldProps, FieldValidationProps, FilterInput, FormBreakpoint, FormGridSxOptions, GridArgs, GridColDefPropsOverrides, GridLayerContribution, GridLayerId, GridLayerMap, JSONFormProps, JSONParserProps, KeyboardShortcut, KpiCardProps, MainDrawerV2Props, MainLayoutPageHeaderProps, MainLayoutProps, MainLayoutSidebarFooterProps, MyDataGridProps, MyGridFilterModel, MyTab, MyTabProps, PageType, PanelProps, PollingCountdownChipProps, ProgressStatusProps, PulseDotProps, RowsSnapshot, ServerGridArgs, ServerGridCreateApi, ServerGridDataApi, ServerGridDeleteApi, ServerGridEditApi, ServerGridEditToggleApi, ServerGridHandle, ServerGridProps, ServerGridSnapshot, ServerGridState, UseColorModeResult, UseServerGridOptions };
2853
+ export { APIContext, APIProvider, ActiveCell, ActiveIcon, Base, ButtonWithDrawer, COLOR_SCHEME_SELECTOR, CSVUpload, ConfirmDialog, ContentLayout, ControlledAddressAutocomplete, ControlledAmountWithCurrency, ControlledColor, ControlledDate$1 as ControlledDate, ControlledDate as ControlledDate_v2, ControlledDropdown, ControlledFileField$1 as ControlledFileField, ControlledFileField as ControlledFileField_v2, FileUploadBox as ControlledFileUploadBox, ControlledNumber, ControlledPhoneNumber, ControlledSelect$1 as ControlledSelect, ControlledSelect as ControlledSelect_v2, ControlledSlider as ControlledSimpleSlider, ControlledSlider$1 as ControlledSlider, ControlledSwitch, ControlledText, ControlledTimePicker, ControlledToggleButtons, CoverPage, CreateButtonBase, CreateButtonWithMenuOptions, CrudDropdown, CustomNoRows, DEFAULT_FORM_BREAKPOINTS, DEFAULT_PAGINATION, DeleteButton, DeleteConfirmationDialog, DetailFormDialog as DetailFormDialog_v2, DetailFormDrawer as DetailFormDrawer_v2, DetailForm as DetailForm_v2, DetailPage$1 as DetailPage, DetailPage as DetailPage_v2, DrawerGrid as DrawerGrid_v2, EditButton, ExportCSV, ExtraButtons, FORM_CONTAINER_NAME, HistorialDrawer, KpiCard, LAYER_ORDER, ListPage, Loadable, LoadingComponent, Logo, MainDrawer, MainDrawer$1 as MainDrawer_v2, MainLayout, MenuItemWithLoading, ModuleCard, MoreOptions, MyGridEditSingleSelect, NavigationContext, NavigationProvider, NormalOrIcon, NotAllowed, NotFound, ObjectProgressStack, PAGE_SIZE_OPTIONS, Panel, PollingCountdownChip, PulseDot, SIDE_PANEL_WIDTH_VAR, SaveCancelButton, ServerGrid as ServerGrid_v2, SidePanelHostContext, StatusBadge, StyledMenu, Tabs, Transitions, TrueFalse, UncontrolledText, changeTitle, closeProgressSnack, composeGridProps, deleteColumn$1 as deleteColumn, deleteColumn as deleteColumn_v2, editColumn, filterQuery, formContainerSx, formGridSx, formParser, _default as headerReducer, manualCacheRefresh, mergeSettings, openProgressSnack, query, renderEditCellWithErrorTooltip, resolveInitialState, setErrors, _default$1 as snackProgressReducer, tags, theme, togglableFields, updateProgressSnackData, useAPI, useColorMode, useDetailForm, useHasPermission, useHasPermission_v2, useKeyboardShortcut, useMutationHandler, useNavigation, useServerGrid, useSidePanelHost, valueLabel };
2854
+ export type { APIcontextProps, AddressValue, AppTheme, ColorMode, ComoOpcionesProps, ConfirmDialogProps, ControlledInput, CustomFilterDef, CustomToolbarProps, DeleteGridColumnsProps$1 as DeleteGridColumnsProps, DetachedPage, DetailFormApi, DetailFormConfig, DetailFormController, DetailFormDialogProps, DetailFormDrawerNavigation, DetailFormDrawerProps, DetailFormProps, DetailFormStatus, DetailPageV2Props, DetailRenderProps, DrawerGridDrawerConfig, DrawerGridEditConfig, DrawerGridProps, EditGridColumnsProps, EditReadOnlyFields, FieldFilter, FieldProps$1 as FieldProps, FieldValidationProps, FilterInput, FormBreakpoint, FormGridSxOptions, GridArgs, GridColDefPropsOverrides, GridLayerContribution, GridLayerId, GridLayerMap, JSONFormProps, JSONParserProps, KeyboardShortcut, KpiCardProps, MainDrawerV2Props, MainLayoutPageHeaderProps, MainLayoutProps, MainLayoutSidebarFooterProps, MyDataGridProps, MyGridFilterModel, MyTab, MyTabProps, PageType, PanelProps, PollingCountdownChipProps, ProgressStatusProps, PulseDotProps, RowsSnapshot, ServerGridArgs, ServerGridCreateApi, ServerGridDataApi, ServerGridDeleteApi, ServerGridEditApi, ServerGridEditToggleApi, ServerGridHandle, ServerGridProps, ServerGridSnapshot, ServerGridState, SidePanelHost, UseColorModeResult, UseServerGridOptions };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acvl/frontend-components",
3
- "version": "0.0.67",
3
+ "version": "0.0.69",
4
4
  "description": "Component library for ACV frontend projects.",
5
5
  "homepage": "https://github.com/ACV-Logistics/acv-frontend-components#readme",
6
6
  "access": "public",