@trackunit/react-components 0.1.321-alpha-05e60997159.0 → 0.1.323

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/index.cjs.js CHANGED
@@ -3257,6 +3257,18 @@ const EmptyState = ({ title, description, altText, image, customImageSrc, action
3257
3257
  jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [customImageSrc ? (jsxRuntime.jsx("img", { alt: altText, className: cvaImgStyles(), height: 200, src: customImageSrc, width: 200 })) : (jsxRuntime.jsx(ImageSource, { height: 200, width: 200 })), title ? jsxRuntime.jsx(Heading, { variant: "secondary", children: title }) : null, description ? jsxRuntime.jsx(Text, { align: "center", children: description }) : null, action] })) }));
3258
3258
  };
3259
3259
 
3260
+ const cvaEmptyValue = cssClassVarianceUtilities.cvaMerge(["text-gray-400"]);
3261
+
3262
+ /**
3263
+ * Show intentionality in empty values in the UI
3264
+ *
3265
+ * @param {EmptyValueProps} props - The props for the EmptyValue component
3266
+ * @returns {JSX.Element} EmptyValue component
3267
+ */
3268
+ const EmptyValue = ({ className, dataTestId }) => {
3269
+ return (jsxRuntime.jsx("div", { className: cvaEmptyValue({ className }), "data-testid": dataTestId, children: "-" }));
3270
+ };
3271
+
3260
3272
  const cvaExternalLink = cssClassVarianceUtilities.cvaMerge(["underline", "text-primary-600", "hover:text-primary-500"]);
3261
3273
 
3262
3274
  /**
@@ -4492,7 +4504,7 @@ const ValueBar = ({ value, min = 0, max = 100, unit, size = "small", levelColors
4492
4504
  };
4493
4505
 
4494
4506
  const cvaVirtualizedListContainer = cssClassVarianceUtilities.cvaMerge(["h-full", "overflow-auto"]);
4495
- const cvaVirtualizedList = cssClassVarianceUtilities.cvaMerge(["relative"]);
4507
+ const cvaVirtualizedList = cssClassVarianceUtilities.cvaMerge(["relative", "m-1"]);
4496
4508
  const cvaVirtualizedListItem = cssClassVarianceUtilities.cvaMerge(["absolute", "top-0", "left-0", "w-full"], {
4497
4509
  variants: {
4498
4510
  separator: {
@@ -4500,9 +4512,14 @@ const cvaVirtualizedListItem = cssClassVarianceUtilities.cvaMerge(["absolute", "
4500
4512
  line: ["[&:not(:last-child)]:border-b", "border-gray-200"],
4501
4513
  none: "",
4502
4514
  },
4515
+ focused: {
4516
+ true: ["rounded-lg", "outline", "outline-2", "outline-blue-600"],
4517
+ false: "",
4518
+ },
4503
4519
  },
4504
4520
  defaultVariants: {
4505
4521
  separator: "none",
4522
+ focused: false,
4506
4523
  },
4507
4524
  });
4508
4525
 
@@ -4516,23 +4533,72 @@ const cvaVirtualizedListItem = cssClassVarianceUtilities.cvaMerge(["absolute", "
4516
4533
  * @property {(index: number) => JSX.Element} children - A function that takes an index and returns the JSX element to be rendered at said index.
4517
4534
  * @property {loadingIndicator} [loadingIndicator="spinner"] - The type of loading indicator in the list.
4518
4535
  * @property {skeletonLinesHeight} [skeletonLinesHeight="2rem"] - The height of the skeleton lines.
4536
+ * @property {(index: number) => void} [onRowClick] - A function that is called when a row is clicked.
4537
+ * @property {(index: number) => void} [onRowSelect] - A function that is called when a row is selected with spacebar.
4519
4538
  */
4520
- const VirtualizedList = ({ count, rowHeight = 40, pagination, children, className, dataTestId, separator = "none", loadingIndicator = "spinner", skeletonLinesHeight = "2rem", }) => {
4539
+ const VirtualizedList = ({ count, rowHeight = 40, pagination, children, className, dataTestId, separator = "none", loadingIndicator = "spinner", skeletonLinesHeight = "2rem", onRowClick, onRowSelectToggle: onRowSelect, }) => {
4521
4540
  var _a;
4522
4541
  const containerRef = React.useRef(null);
4542
+ const listRef = React.useRef(null);
4543
+ const [focusedIndex, setFocusedIndex] = React.useState(null);
4523
4544
  const { fetchMoreOnBottomReached, getVirtualItems, getTotalSize, measureElement } = reactTablePagination.useInfiniteScroll({
4524
4545
  pagination: pagination || reactTablePagination.noPagination,
4525
4546
  containerRef,
4526
4547
  rowSize: ((_a = pagination === null || pagination === void 0 ? void 0 : pagination.pageInfo) === null || _a === void 0 ? void 0 : _a.hasNextPage) && pagination.isLoading ? count + 1 : count,
4527
4548
  rowHeight,
4528
4549
  });
4550
+ React.useEffect(() => {
4551
+ const handleKeyDown = (event) => {
4552
+ var _a;
4553
+ const shiftKey = event.shiftKey;
4554
+ const jumpCount = focusedIndex && shiftKey ? Math.min(5, count - focusedIndex - 1) : 1;
4555
+ switch (event.code) {
4556
+ case "ArrowDown":
4557
+ event.preventDefault();
4558
+ if (focusedIndex !== null && focusedIndex < count - 1) {
4559
+ setFocusedIndex(focusedIndex + jumpCount);
4560
+ }
4561
+ else if (focusedIndex === null) {
4562
+ setFocusedIndex(0);
4563
+ }
4564
+ break;
4565
+ case "ArrowUp":
4566
+ event.preventDefault();
4567
+ if (focusedIndex !== null && focusedIndex > 0) {
4568
+ setFocusedIndex(focusedIndex - jumpCount);
4569
+ }
4570
+ break;
4571
+ case "Space":
4572
+ if (onRowSelect && focusedIndex !== null) {
4573
+ event.preventDefault();
4574
+ onRowSelect(focusedIndex);
4575
+ }
4576
+ break;
4577
+ }
4578
+ // Auto-scroll focused item into view
4579
+ const focusedElement = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(`[data-index="${focusedIndex}"]`);
4580
+ if (focusedElement) {
4581
+ focusedElement.scrollIntoView({ behavior: "smooth", block: "nearest" });
4582
+ }
4583
+ };
4584
+ const listElement = listRef.current;
4585
+ if (listElement) {
4586
+ listElement.addEventListener("keydown", handleKeyDown);
4587
+ }
4588
+ return () => {
4589
+ if (listElement) {
4590
+ listElement.removeEventListener("keydown", handleKeyDown);
4591
+ }
4592
+ };
4593
+ }, [focusedIndex, count, onRowSelect]);
4529
4594
  return (jsxRuntime.jsx("div", { className: cvaVirtualizedListContainer({ className }), "data-testid": dataTestId,
4530
4595
  // eslint-disable-next-line local-rules/no-typescript-assertion
4531
- onScroll: e => fetchMoreOnBottomReached(e.target), ref: containerRef, children: jsxRuntime.jsx("ul", { className: cvaVirtualizedList(), style: { height: `${getTotalSize()}px` }, children: getVirtualItems().map(virtualRow => {
4596
+ onScroll: e => fetchMoreOnBottomReached(e.target), ref: containerRef, children: jsxRuntime.jsx("ul", { className: cvaVirtualizedList(), ref: listRef, style: { height: `${getTotalSize()}px`, outline: "none" }, tabIndex: 0, children: getVirtualItems().map((virtualRow, index) => {
4532
4597
  const isLoaderRow = virtualRow.index > count - 1;
4533
- return (jsxRuntime.jsx("li", { className: cvaVirtualizedListItem({ separator }), "data-index": virtualRow.index, ref: measureElement, style: {
4598
+ const focused = focusedIndex === index;
4599
+ return (jsxRuntime.jsx("li", { className: cvaVirtualizedListItem({ separator, focused }), "data-index": virtualRow.index, onClick: () => onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(virtualRow.index), ref: measureElement, style: {
4534
4600
  transform: `translateY(${virtualRow.start}px)`,
4535
- }, children: isLoaderRow ? ((pagination === null || pagination === void 0 ? void 0 : pagination.isLoading) ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [loadingIndicator === "spinner" && jsxRuntime.jsx(Spinner, { centering: "horizontally", containerClassName: "p-4" }), loadingIndicator === "skeletonLines" && (jsxRuntime.jsx(SkeletonLines, { height: skeletonLinesHeight, lines: 3, width: "full" }))] })) : null) : (children(virtualRow.index)) }, virtualRow.key));
4601
+ }, children: isLoaderRow ? ((pagination === null || pagination === void 0 ? void 0 : pagination.isLoading) ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [loadingIndicator === "spinner" && jsxRuntime.jsx(Spinner, { centering: "horizontally", containerClassName: "p-4" }), loadingIndicator === "skeletonLines" && (jsxRuntime.jsx(SkeletonLines, { height: skeletonLinesHeight, lines: 3, width: "full" }))] })) : null) : (children(index)) }, virtualRow.key));
4536
4602
  }) }) }));
4537
4603
  };
4538
4604
 
@@ -4624,6 +4690,7 @@ exports.CompletionStatusIndicator = CompletionStatusIndicator;
4624
4690
  exports.CopyableText = CopyableText;
4625
4691
  exports.Drawer = Drawer;
4626
4692
  exports.EmptyState = EmptyState;
4693
+ exports.EmptyValue = EmptyValue;
4627
4694
  exports.ExternalLink = ExternalLink;
4628
4695
  exports.Heading = Heading;
4629
4696
  exports.Icon = Icon;
package/index.esm.js CHANGED
@@ -3225,6 +3225,18 @@ const EmptyState = ({ title, description, altText, image, customImageSrc, action
3225
3225
  jsxs(Fragment, { children: [customImageSrc ? (jsx("img", { alt: altText, className: cvaImgStyles(), height: 200, src: customImageSrc, width: 200 })) : (jsx(ImageSource, { height: 200, width: 200 })), title ? jsx(Heading, { variant: "secondary", children: title }) : null, description ? jsx(Text, { align: "center", children: description }) : null, action] })) }));
3226
3226
  };
3227
3227
 
3228
+ const cvaEmptyValue = cvaMerge(["text-gray-400"]);
3229
+
3230
+ /**
3231
+ * Show intentionality in empty values in the UI
3232
+ *
3233
+ * @param {EmptyValueProps} props - The props for the EmptyValue component
3234
+ * @returns {JSX.Element} EmptyValue component
3235
+ */
3236
+ const EmptyValue = ({ className, dataTestId }) => {
3237
+ return (jsx("div", { className: cvaEmptyValue({ className }), "data-testid": dataTestId, children: "-" }));
3238
+ };
3239
+
3228
3240
  const cvaExternalLink = cvaMerge(["underline", "text-primary-600", "hover:text-primary-500"]);
3229
3241
 
3230
3242
  /**
@@ -4460,7 +4472,7 @@ const ValueBar = ({ value, min = 0, max = 100, unit, size = "small", levelColors
4460
4472
  };
4461
4473
 
4462
4474
  const cvaVirtualizedListContainer = cvaMerge(["h-full", "overflow-auto"]);
4463
- const cvaVirtualizedList = cvaMerge(["relative"]);
4475
+ const cvaVirtualizedList = cvaMerge(["relative", "m-1"]);
4464
4476
  const cvaVirtualizedListItem = cvaMerge(["absolute", "top-0", "left-0", "w-full"], {
4465
4477
  variants: {
4466
4478
  separator: {
@@ -4468,9 +4480,14 @@ const cvaVirtualizedListItem = cvaMerge(["absolute", "top-0", "left-0", "w-full"
4468
4480
  line: ["[&:not(:last-child)]:border-b", "border-gray-200"],
4469
4481
  none: "",
4470
4482
  },
4483
+ focused: {
4484
+ true: ["rounded-lg", "outline", "outline-2", "outline-blue-600"],
4485
+ false: "",
4486
+ },
4471
4487
  },
4472
4488
  defaultVariants: {
4473
4489
  separator: "none",
4490
+ focused: false,
4474
4491
  },
4475
4492
  });
4476
4493
 
@@ -4484,23 +4501,72 @@ const cvaVirtualizedListItem = cvaMerge(["absolute", "top-0", "left-0", "w-full"
4484
4501
  * @property {(index: number) => JSX.Element} children - A function that takes an index and returns the JSX element to be rendered at said index.
4485
4502
  * @property {loadingIndicator} [loadingIndicator="spinner"] - The type of loading indicator in the list.
4486
4503
  * @property {skeletonLinesHeight} [skeletonLinesHeight="2rem"] - The height of the skeleton lines.
4504
+ * @property {(index: number) => void} [onRowClick] - A function that is called when a row is clicked.
4505
+ * @property {(index: number) => void} [onRowSelect] - A function that is called when a row is selected with spacebar.
4487
4506
  */
4488
- const VirtualizedList = ({ count, rowHeight = 40, pagination, children, className, dataTestId, separator = "none", loadingIndicator = "spinner", skeletonLinesHeight = "2rem", }) => {
4507
+ const VirtualizedList = ({ count, rowHeight = 40, pagination, children, className, dataTestId, separator = "none", loadingIndicator = "spinner", skeletonLinesHeight = "2rem", onRowClick, onRowSelectToggle: onRowSelect, }) => {
4489
4508
  var _a;
4490
4509
  const containerRef = useRef(null);
4510
+ const listRef = useRef(null);
4511
+ const [focusedIndex, setFocusedIndex] = useState(null);
4491
4512
  const { fetchMoreOnBottomReached, getVirtualItems, getTotalSize, measureElement } = useInfiniteScroll({
4492
4513
  pagination: pagination || noPagination,
4493
4514
  containerRef,
4494
4515
  rowSize: ((_a = pagination === null || pagination === void 0 ? void 0 : pagination.pageInfo) === null || _a === void 0 ? void 0 : _a.hasNextPage) && pagination.isLoading ? count + 1 : count,
4495
4516
  rowHeight,
4496
4517
  });
4518
+ useEffect(() => {
4519
+ const handleKeyDown = (event) => {
4520
+ var _a;
4521
+ const shiftKey = event.shiftKey;
4522
+ const jumpCount = focusedIndex && shiftKey ? Math.min(5, count - focusedIndex - 1) : 1;
4523
+ switch (event.code) {
4524
+ case "ArrowDown":
4525
+ event.preventDefault();
4526
+ if (focusedIndex !== null && focusedIndex < count - 1) {
4527
+ setFocusedIndex(focusedIndex + jumpCount);
4528
+ }
4529
+ else if (focusedIndex === null) {
4530
+ setFocusedIndex(0);
4531
+ }
4532
+ break;
4533
+ case "ArrowUp":
4534
+ event.preventDefault();
4535
+ if (focusedIndex !== null && focusedIndex > 0) {
4536
+ setFocusedIndex(focusedIndex - jumpCount);
4537
+ }
4538
+ break;
4539
+ case "Space":
4540
+ if (onRowSelect && focusedIndex !== null) {
4541
+ event.preventDefault();
4542
+ onRowSelect(focusedIndex);
4543
+ }
4544
+ break;
4545
+ }
4546
+ // Auto-scroll focused item into view
4547
+ const focusedElement = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(`[data-index="${focusedIndex}"]`);
4548
+ if (focusedElement) {
4549
+ focusedElement.scrollIntoView({ behavior: "smooth", block: "nearest" });
4550
+ }
4551
+ };
4552
+ const listElement = listRef.current;
4553
+ if (listElement) {
4554
+ listElement.addEventListener("keydown", handleKeyDown);
4555
+ }
4556
+ return () => {
4557
+ if (listElement) {
4558
+ listElement.removeEventListener("keydown", handleKeyDown);
4559
+ }
4560
+ };
4561
+ }, [focusedIndex, count, onRowSelect]);
4497
4562
  return (jsx("div", { className: cvaVirtualizedListContainer({ className }), "data-testid": dataTestId,
4498
4563
  // eslint-disable-next-line local-rules/no-typescript-assertion
4499
- onScroll: e => fetchMoreOnBottomReached(e.target), ref: containerRef, children: jsx("ul", { className: cvaVirtualizedList(), style: { height: `${getTotalSize()}px` }, children: getVirtualItems().map(virtualRow => {
4564
+ onScroll: e => fetchMoreOnBottomReached(e.target), ref: containerRef, children: jsx("ul", { className: cvaVirtualizedList(), ref: listRef, style: { height: `${getTotalSize()}px`, outline: "none" }, tabIndex: 0, children: getVirtualItems().map((virtualRow, index) => {
4500
4565
  const isLoaderRow = virtualRow.index > count - 1;
4501
- return (jsx("li", { className: cvaVirtualizedListItem({ separator }), "data-index": virtualRow.index, ref: measureElement, style: {
4566
+ const focused = focusedIndex === index;
4567
+ return (jsx("li", { className: cvaVirtualizedListItem({ separator, focused }), "data-index": virtualRow.index, onClick: () => onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(virtualRow.index), ref: measureElement, style: {
4502
4568
  transform: `translateY(${virtualRow.start}px)`,
4503
- }, children: isLoaderRow ? ((pagination === null || pagination === void 0 ? void 0 : pagination.isLoading) ? (jsxs(Fragment, { children: [loadingIndicator === "spinner" && jsx(Spinner, { centering: "horizontally", containerClassName: "p-4" }), loadingIndicator === "skeletonLines" && (jsx(SkeletonLines, { height: skeletonLinesHeight, lines: 3, width: "full" }))] })) : null) : (children(virtualRow.index)) }, virtualRow.key));
4569
+ }, children: isLoaderRow ? ((pagination === null || pagination === void 0 ? void 0 : pagination.isLoading) ? (jsxs(Fragment, { children: [loadingIndicator === "spinner" && jsx(Spinner, { centering: "horizontally", containerClassName: "p-4" }), loadingIndicator === "skeletonLines" && (jsx(SkeletonLines, { height: skeletonLinesHeight, lines: 3, width: "full" }))] })) : null) : (children(index)) }, virtualRow.key));
4504
4570
  }) }) }));
4505
4571
  };
4506
4572
 
@@ -4577,4 +4643,4 @@ const cvaClickable = cvaMerge([
4577
4643
  },
4578
4644
  });
4579
4645
 
4580
- export { Alert, Badge, Breadcrumb, BreadcrumbContainer, BreadcrumbItem, Button, Card, CardBody, CardFooter, CardHeader, Collapse, CompletionStatusIndicator, CopyableText, Drawer, EmptyState, ExternalLink, Heading, Icon, IconButton, Indicator, KPICard, MenuItem, MenuList, Modal, ModalBackdrop, MoreMenu, Notice, PackageNameStoryComponent, Page, PageContent, PageHeader, Pagination, Popover, PopoverContent, PopoverTitle, PopoverTrigger, Prompt, ROLE_CARD, SectionHeader, Sidebar, SkeletonLines, Spacer, Spinner, StarButton, Tab, TabContent, TabList, Tabs, Tag, Text, Timeline, TimelineElement, Tooltip, ValueBar, VirtualizedList, WidgetBody, cvaButton, cvaButtonPrefixSuffix, cvaButtonSpinner, cvaButtonSpinnerContainer, cvaClickable, cvaIconButton, cvaIndicator, cvaIndicatorIcon, cvaIndicatorIconBackground, cvaIndicatorLabel, cvaIndicatorPing, cvaMenuItem, cvaMenuItemLabel, cvaMenuItemPrefix, cvaMenuItemSuffix, docs, getDevicePixelRatio, getValueBarColorByValue, iconColorNames, iconPalette, setLocalStorage, useClickOutside, useContainerProps, useContinuousTimeout, useDebounce, useDevicePixelRatio, useGeometry, useHover, useIsFirstRender, useIsFullscreen, useIsTextCutOff, useLocalStorage, useLocalStorageReducer, useModal, useOptionallyElevatedState, useOverflowItems, usePopoverContext, usePrompt, useResize, useSelfUpdatingRef, useTimeout, useVisibilityChange };
4646
+ export { Alert, Badge, Breadcrumb, BreadcrumbContainer, BreadcrumbItem, Button, Card, CardBody, CardFooter, CardHeader, Collapse, CompletionStatusIndicator, CopyableText, Drawer, EmptyState, EmptyValue, ExternalLink, Heading, Icon, IconButton, Indicator, KPICard, MenuItem, MenuList, Modal, ModalBackdrop, MoreMenu, Notice, PackageNameStoryComponent, Page, PageContent, PageHeader, Pagination, Popover, PopoverContent, PopoverTitle, PopoverTrigger, Prompt, ROLE_CARD, SectionHeader, Sidebar, SkeletonLines, Spacer, Spinner, StarButton, Tab, TabContent, TabList, Tabs, Tag, Text, Timeline, TimelineElement, Tooltip, ValueBar, VirtualizedList, WidgetBody, cvaButton, cvaButtonPrefixSuffix, cvaButtonSpinner, cvaButtonSpinnerContainer, cvaClickable, cvaIconButton, cvaIndicator, cvaIndicatorIcon, cvaIndicatorIconBackground, cvaIndicatorLabel, cvaIndicatorPing, cvaMenuItem, cvaMenuItemLabel, cvaMenuItemPrefix, cvaMenuItemSuffix, docs, getDevicePixelRatio, getValueBarColorByValue, iconColorNames, iconPalette, setLocalStorage, useClickOutside, useContainerProps, useContinuousTimeout, useDebounce, useDevicePixelRatio, useGeometry, useHover, useIsFirstRender, useIsFullscreen, useIsTextCutOff, useLocalStorage, useLocalStorageReducer, useModal, useOptionallyElevatedState, useOverflowItems, usePopoverContext, usePrompt, useResize, useSelfUpdatingRef, useTimeout, useVisibilityChange };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/react-components",
3
- "version": "0.1.321-alpha-05e60997159.0",
3
+ "version": "0.1.323",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { CommonProps } from "../../common/CommonProps";
3
+ export interface EmptyValueProps extends CommonProps {
4
+ }
5
+ /**
6
+ * Show intentionality in empty values in the UI
7
+ *
8
+ * @param {EmptyValueProps} props - The props for the EmptyValue component
9
+ * @returns {JSX.Element} EmptyValue component
10
+ */
11
+ export declare const EmptyValue: ({ className, dataTestId }: EmptyValueProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const cvaEmptyValue: (props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string;
@@ -13,6 +13,8 @@ export interface VirtualizedListProps extends CommonProps {
13
13
  separator?: Separator;
14
14
  loadingIndicator?: LoadingIndicator;
15
15
  skeletonLinesHeight?: string;
16
+ onRowClick?: (index: number) => void;
17
+ onRowSelectToggle?: (index: number) => void;
16
18
  }
17
19
  /**
18
20
  * Render a performant virtualized list of items. Optionally with infinite scrolling.
@@ -24,6 +26,8 @@ export interface VirtualizedListProps extends CommonProps {
24
26
  * @property {(index: number) => JSX.Element} children - A function that takes an index and returns the JSX element to be rendered at said index.
25
27
  * @property {loadingIndicator} [loadingIndicator="spinner"] - The type of loading indicator in the list.
26
28
  * @property {skeletonLinesHeight} [skeletonLinesHeight="2rem"] - The height of the skeleton lines.
29
+ * @property {(index: number) => void} [onRowClick] - A function that is called when a row is clicked.
30
+ * @property {(index: number) => void} [onRowSelect] - A function that is called when a row is selected with spacebar.
27
31
  */
28
- export declare const VirtualizedList: ({ count, rowHeight, pagination, children, className, dataTestId, separator, loadingIndicator, skeletonLinesHeight, }: VirtualizedListProps) => JSX.Element;
32
+ export declare const VirtualizedList: ({ count, rowHeight, pagination, children, className, dataTestId, separator, loadingIndicator, skeletonLinesHeight, onRowClick, onRowSelectToggle: onRowSelect, }: VirtualizedListProps) => JSX.Element;
29
33
  export {};
@@ -2,4 +2,5 @@ export declare const cvaVirtualizedListContainer: (props?: import("class-varianc
2
2
  export declare const cvaVirtualizedList: (props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string;
3
3
  export declare const cvaVirtualizedListItem: (props?: ({
4
4
  separator?: "alternating" | "line" | "none" | null | undefined;
5
+ focused?: boolean | null | undefined;
5
6
  } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
@@ -7,6 +7,7 @@ export * from "./CompletionStatusIndicator/CompletionStatusIndicator";
7
7
  export * from "./CopyableText";
8
8
  export * from "./Drawer/Drawer";
9
9
  export * from "./EmptyState/EmptyState";
10
+ export * from "./EmptyValue/EmptyValue";
10
11
  export * from "./ExternalLink/ExternalLink";
11
12
  export * from "./Heading";
12
13
  export * from "./Icon/Icon";