@acvl/frontend-components 0.0.69 → 0.0.71

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
@@ -953,17 +953,17 @@ declare const LoadingComponent: React__default.FC<LoadingComponentProps>;
953
953
  /**
954
954
  * Muestra el logo de la empresa
955
955
  *
956
- * El archivo de marca es un JPG con fondo blanco, bola roja y letras negras: tal
957
- * cual, en modo oscuro se ve un recuadro blanco. Como no hay versión clara del
958
- * archivo, en oscuro se recolorea por CSS a blanco sobre transparente.
956
+ * El archivo de marca es un PNG con fondo transparente, bola roja y letras
957
+ * negras. En claro va tal cual; en oscuro las letras negras desaparecerían
958
+ * contra el fondo, así que se recolorea por CSS a blanco.
959
959
  **/
960
960
  interface LogoProps {
961
961
  /** Altura máxima en px. */
962
962
  maxHeight?: number;
963
963
  /**
964
- * Logo alternativo para modo oscuro. Lo suyo es un SVG o PNG blanco con fondo
965
- * transparente: en cuanto exista, pasarlo aquí sustituye el recoloreado por
966
- * el archivo de verdad sin tocar nada más.
964
+ * Logo alternativo para modo oscuro. Lo suyo es una versión blanca de la
965
+ * marca: en cuanto exista, pasarla aquí sustituye el recoloreado por el
966
+ * archivo de verdad sin tocar nada más.
967
967
  */
968
968
  darkSrc?: string;
969
969
  }
@@ -983,11 +983,10 @@ interface MyTabProps {
983
983
  /**
984
984
  * Alto que se ajusta al contenido, con `ALTO` de tope, en vez del alto fijo de siempre.
985
985
  *
986
- * El default arma la cadena de altos con porcentajes: el contenedor mide `ALTO`, el de
987
- * los paneles 93.5% de él y cada panel 100% del anterior. Eso sólo funciona con un alto
988
- * definido arriba — si el contenedor midiera `100%` de un padre sin alto, toda la cadena
989
- * resuelve a `auto` y lo de adentro (un DataGrid, por ejemplo) crece con su contenido y
990
- * se desborda.
986
+ * El default llena el alto del padre y reparte por flex: los botones ceden lo suyo y el
987
+ * resto se lo queda el contenido. Si el padre no tiene alto definido —un `Tabs` dentro
988
+ * de un formulario o de un cajón—, ese `100%` resuelve a `auto` y toda la cadena se
989
+ * quedaría sin alto, así que ahí entra `ALTO` como mínimo.
991
990
  *
992
991
  * Con `fitContent` la cadena es flex: el contenedor no fija alto, sólo `maxHeight`, y
993
992
  * cada eslabón va con `flex: 1 1 auto` + `minHeight: 0` para poder encoger. Las pestañas
@@ -1374,6 +1373,12 @@ interface CustomFilterDef {
1374
1373
  defaultValue?: any;
1375
1374
  }
1376
1375
 
1376
+ /**
1377
+ * Where the filter panel renders. `"drawer"` (the default) docks it to the right of the rows;
1378
+ * `"popper"` floats it off the toolbar button, the way it used to.
1379
+ */
1380
+ type FiltersVariant = "drawer" | "popper";
1381
+
1377
1382
  /**
1378
1383
  * What the grid hands its RTK lazy query — the corrected `GridArgs`.
1379
1384
  *
@@ -1500,6 +1505,30 @@ interface ServerGridProps {
1500
1505
  * filter. The grid has no notion of who is looking at it.
1501
1506
  */
1502
1507
  customFilters?: CustomFilterDef[];
1508
+ /**
1509
+ * Where the filters panel goes. Defaults to `"drawer"`: docked to the right of the
1510
+ * rows, taking its own column, so a filter and what it did to the list are on screen
1511
+ * together and the panel survives being used — applying no longer dismisses it.
1512
+ *
1513
+ * `"popper"` is the old floating panel, hanging off the toolbar button.
1514
+ *
1515
+ * A grid too narrow to dock into falls back to the popper on its own, so this rarely
1516
+ * needs setting for width's sake alone — see `filtersMinGridWidth`.
1517
+ */
1518
+ filtersVariant?: FiltersVariant;
1519
+ /** Width of the docked filters panel, in px. Defaults to `340`. Ignored by the popper. */
1520
+ filtersWidth?: number;
1521
+ /**
1522
+ * How much room the rows must keep for the panel to dock at all, in px. Defaults to
1523
+ * `480`.
1524
+ *
1525
+ * The grid measures itself — not the window, since the same grid is a full page on one
1526
+ * route and a panel inside a drawer on the next — and falls back to the popper whenever
1527
+ * `filtersWidth` wouldn't leave this much behind. Raise it for grids with wide columns
1528
+ * that need more room before the trade is worth it; `0` turns the fallback off and
1529
+ * docks at any width.
1530
+ */
1531
+ filtersMinGridWidth?: number;
1503
1532
  /** Skip session persistence entirely. */
1504
1533
  dontSaveState?: boolean;
1505
1534
  /**
@@ -1625,6 +1654,13 @@ interface ServerGridState {
1625
1654
  /** Toolbar collapse, hoisted here so shortcuts can reopen a collapsed toolbar. */
1626
1655
  toolbarExpanded: boolean;
1627
1656
  setToolbarExpanded: Dispatch<SetStateAction<boolean>>;
1657
+ /**
1658
+ * Whether the filter panel is showing. Up here rather than in the toolbar because the
1659
+ * docked panel is a sibling of the grid, not a child of the button that opens it — and
1660
+ * because Ctrl+Shift+F has to reach it from a collapsed toolbar either way.
1661
+ */
1662
+ filtersOpen: boolean;
1663
+ setFiltersOpen: Dispatch<SetStateAction<boolean>>;
1628
1664
  /** Exactly what was last sent to the server. Also feeds the CSV export. */
1629
1665
  args: ServerGridArgs;
1630
1666
  refetch: () => void;
@@ -1732,6 +1768,22 @@ interface DeleteGridColumnsProps {
1732
1768
  */
1733
1769
  declare const deleteColumn: (props: DeleteGridColumnsProps) => GridColDefPropsOverrides[];
1734
1770
 
1771
+ type ChipColor = "primary" | "secondary" | "error" | "warning" | "info" | "success";
1772
+ type ChipOption = {
1773
+ value: string;
1774
+ label: string;
1775
+ };
1776
+ declare const resolveChipOption: (value: unknown, options: ChipOption[]) => ChipOption | undefined;
1777
+ type ChipCellProps = {
1778
+ value?: unknown;
1779
+ options: ChipOption[];
1780
+ colors?: Record<string, ChipColor>;
1781
+ };
1782
+ declare const ChipCell: ({ value, options, colors }: ChipCellProps) => react_jsx_runtime.JSX.Element | null;
1783
+ declare const renderChipCell: (options: ChipOption[], colors?: Record<string, ChipColor>) => ({ value }: {
1784
+ value?: unknown;
1785
+ }) => react_jsx_runtime.JSX.Element;
1786
+
1735
1787
  /**
1736
1788
  * Datos que recibe el renderizado de detalle de un input. Es un subconjunto de
1737
1789
  * `FieldProps` (los campos que necesita la vista de solo lectura), más un
@@ -2154,6 +2206,27 @@ interface DetailFormProps {
2154
2206
  */
2155
2207
  declare function DetailForm({ controller, formId, storageKey, loadingHeight, responsiveTo, containerBreakpoints, slotProps, }: DetailFormProps): react_jsx_runtime.JSX.Element;
2156
2208
 
2209
+ /**
2210
+ * An action the consumer hangs off a record's chrome — cerrar, revertir, descargar el PDF —
2211
+ * next to the ones the shell provides on its own (editar, eliminar, historial).
2212
+ *
2213
+ * The same shape drives every shell that shows a record, so the buttons of a full page can be
2214
+ * handed to its drawer without rewriting them (see `resolveExtraButtons`).
2215
+ */
2216
+ interface DetailExtraButton {
2217
+ /** Mode the action belongs to. `"all"` shows it in every one. */
2218
+ pageType: PageType | "all";
2219
+ title: string;
2220
+ icon: ReactNode;
2221
+ /** Receives the loaded record — `undefined` in create mode, where there is none yet. */
2222
+ onClick: (data: any) => void;
2223
+ /**
2224
+ * Condition on top of `pageType`, checked against the loaded record. Typically one of its
2225
+ * own flags (`puede_cerrar`), so what the backend allows is what the user sees.
2226
+ */
2227
+ display?: (data: any) => boolean;
2228
+ }
2229
+
2157
2230
  interface DetailFormDrawerNavigation {
2158
2231
  /** Open the previous record of the list the drawer is walking. */
2159
2232
  onPrev: () => void;
@@ -2192,6 +2265,18 @@ interface DetailFormDrawerProps {
2192
2265
  permissionsPath?: string;
2193
2266
  /** Runs after a successful mutation, before the drawer closes. Receives the response. */
2194
2267
  onSuccess?: (response: any) => void;
2268
+ /**
2269
+ * Acciones propias del registro —cerrar, revertir, descargar su PDF—, las mismas que
2270
+ * `DetailPage_v2` recibe en `slots.extraButtons` y con la misma forma, para que un registro
2271
+ * traiga sus acciones se abra en su página o en el cajón.
2272
+ *
2273
+ * Van en un menú "⋮" de la cabecera —no como iconos sueltos— porque la cabecera del cajón
2274
+ * es angosta y ya carga Editar, Eliminar y lo que venga en `slots.headerActions`; el menú
2275
+ * además las nombra, igual que el de la página completa. Se filtran contra el modo que el
2276
+ * cajón muestra *en ese momento*: entrar a editar esconde las de `"detail"`, como en la
2277
+ * página. `display` y `onClick` reciben el registro cargado.
2278
+ */
2279
+ extraButtons?: DetailExtraButton[];
2195
2280
  /**
2196
2281
  * Footer record navigator: prev/next arrows (Alt+↑ / Alt+↓) that step through a list of
2197
2282
  * sibling records — e.g. the rows of the grid the drawer was opened from — without
@@ -2262,14 +2347,16 @@ interface DetailFormDrawerProps {
2262
2347
  * A record form inside a side drawer. Reuses the same `useDetailForm` engine and
2263
2348
  * `DetailForm` body as `DetailPage_v2`, and `MainDrawer_v2` for the chrome — so it frames
2264
2349
  * the form exactly like every other v2 drawer. What it adds on top is the per-record
2265
- * furniture: edit/delete in the header, and a footer holding the form actions and, when
2350
+ * furniture: edit/delete in the header — plus the record's own actions, when the consumer
2351
+ * hands them over in `extraButtons`, in a "⋮" menu beside them — and a footer holding the
2352
+ * form actions and, when
2266
2353
  * `navigation` is given, a prev/next record navigator (Alt+↑ / Alt+↓) plus "Guardar ↓"
2267
2354
  * (Alt+Shift+↓) — a save that steps to the next record instead of closing, so a column can be
2268
2355
  * captured down a list in one pass without the hands leaving the keyboard. Rename it with
2269
2356
  * `labels.saveAndNext`. Guardar sits outside the `<form>` and submits via the native
2270
2357
  * `form={formId}` attribute; Guardar ↓ submits by hand, so the implicit Enter stays Guardar.
2271
2358
  */
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;
2359
+ declare function DetailFormDrawer({ open, onClose, title, api, form, sections, pageType, startInEdit, recordKey, permissionsPath, onSuccess, extraButtons, navigation, width, anchor, variant, resizable, minWidth, maxWidth, widthStorageKey, onWidthChange, responsiveTo, containerBreakpoints, labels, slots, slotProps, }: DetailFormDrawerProps): react_jsx_runtime.JSX.Element;
2273
2360
 
2274
2361
  interface DrawerGridDrawerConfig {
2275
2362
  /** Shared field layout, used by every mode. Same shape as `DetailPage_v2`'s `form`/`sections`. */
@@ -2343,6 +2430,14 @@ interface DrawerGridDrawerConfig {
2343
2430
  mutation: any;
2344
2431
  };
2345
2432
  };
2433
+ /**
2434
+ * Acciones propias del registro —las mismas que su página completa recibe en
2435
+ * `DetailPage_v2`'s `slots.extraButtons`, y con la misma forma—, en un menú "⋮" de la
2436
+ * cabecera del cajón. Se filtran por modo y por `display(registro)`, así que las de la
2437
+ * página se pasan tal cual: abrir el renglón en el cajón deja de ser una versión recortada
2438
+ * de abrirlo en su página.
2439
+ */
2440
+ extraButtons?: DetailExtraButton[];
2346
2441
  /** Runs after any successful create/edit (e.g. side effects; the grid refetches via RTK tag invalidation). */
2347
2442
  onSaved?: (response: any) => void;
2348
2443
  /**
@@ -2469,6 +2564,8 @@ interface ActionsMenuProps {
2469
2564
  icon: ReactNode;
2470
2565
  onClick: () => void;
2471
2566
  }[];
2567
+ /** Tamaño del botón que abre el menú. `"small"` para las cabeceras del cajón. */
2568
+ size?: "small" | "medium";
2472
2569
  }
2473
2570
 
2474
2571
  interface DetailPageV2Props {
@@ -2493,13 +2590,14 @@ interface DetailPageV2Props {
2493
2590
  containerBreakpoints?: DetailFormProps["containerBreakpoints"];
2494
2591
  slots?: {
2495
2592
  button?: ReactNode;
2496
- extraButtons?: {
2497
- pageType: PageType | "all";
2498
- title: string;
2499
- icon: ReactNode;
2500
- onClick: (data: any) => void;
2501
- display?: (data: any) => boolean;
2502
- }[];
2593
+ /**
2594
+ * Acciones propias del registro, junto a las del armazón. En `"detail"` viven dentro
2595
+ * del menú de acciones; en alta y edición, como iconos al lado de Guardar.
2596
+ *
2597
+ * Las mismas se le pueden pasar al cajón de `DrawerGrid_v2` (`drawer.extraButtons`),
2598
+ * para que el registro traiga sus acciones se abra donde se abra.
2599
+ */
2600
+ extraButtons?: DetailExtraButton[];
2503
2601
  badge?: string;
2504
2602
  };
2505
2603
  slotProps?: {
@@ -2671,8 +2769,8 @@ interface MainLayoutProps {
2671
2769
  /**
2672
2770
  * Separación en px entre el contorno y el panel de contenido, a la derecha
2673
2771
  * y abajo (arriba y a la izquierda el contenido va a ras del header y del
2674
- * sidebar). Se descuenta de la altura del área de trabajo para que el
2675
- * contenido siga cabiendo sin scroll extra.
2772
+ * sidebar). Al ser margen del scroll container, el área de trabajo lo
2773
+ * descuenta sola y el contenido sigue cabiendo sin scroll extra.
2676
2774
  */
2677
2775
  contentGap?: number;
2678
2776
  /**
@@ -2850,5 +2948,5 @@ interface PulseDotProps {
2850
2948
  * contrario un color fijo. Se usa para indicar conexión/actividad en vivo. */
2851
2949
  declare function PulseDot({ active, inactiveColor, size, title }: PulseDotProps): react_jsx_runtime.JSX.Element;
2852
2950
 
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 };
2951
+ export { APIContext, APIProvider, ActiveCell, ActiveIcon, Base, ButtonWithDrawer, COLOR_SCHEME_SELECTOR, CSVUpload, ChipCell, 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, renderChipCell, renderEditCellWithErrorTooltip, resolveChipOption, resolveInitialState, setErrors, _default$1 as snackProgressReducer, tags, theme, togglableFields, updateProgressSnackData, useAPI, useColorMode, useDetailForm, useHasPermission, useHasPermission_v2, useKeyboardShortcut, useMutationHandler, useNavigation, useServerGrid, useSidePanelHost, valueLabel };
2952
+ export type { APIcontextProps, AddressValue, AppTheme, ChipCellProps, ChipColor, ChipOption, ColorMode, ComoOpcionesProps, ConfirmDialogProps, ControlledInput, CustomFilterDef, CustomToolbarProps, DeleteGridColumnsProps$1 as DeleteGridColumnsProps, DetachedPage, DetailExtraButton, 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.69",
3
+ "version": "0.0.71",
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",