@trackunit/react-components 0.1.286 → 0.1.289

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
@@ -23,6 +23,7 @@ var reactRouter = require('@tanstack/react-router');
23
23
  var reactHelmetAsync = require('react-helmet-async');
24
24
  var reactTabs = require('@radix-ui/react-tabs');
25
25
  var dateFns = require('date-fns');
26
+ var reactTablePagination = require('@trackunit/react-table-pagination');
26
27
  var isEqual = require('lodash/isEqual');
27
28
 
28
29
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -3210,39 +3211,6 @@ const useModal = ({ closeOnOutsideClick } = {}) => {
3210
3211
  };
3211
3212
  };
3212
3213
 
3213
- const cvaPage = cssClassVarianceUtilities.cvaMerge(["grid", "h-full"], {
3214
- variants: {
3215
- layout: {
3216
- content: ["grid-rows-1"],
3217
- "header-content": "grid-rows-min-fr",
3218
- "sidebar-content": ["grid-cols-[360px_minmax(0,1fr)]", "grid-rows-1"],
3219
- none: [],
3220
- },
3221
- },
3222
- defaultVariants: {
3223
- layout: "none",
3224
- },
3225
- });
3226
- const cvaPageContent = cssClassVarianceUtilities.cvaMerge(["overflow-auto", "p-4", "md:p-6", "lg:p-8"]);
3227
-
3228
- /**
3229
- * Renders the page component. Adds padding and layout to the page.
3230
- */
3231
- const Page = ({ layout, className, children, dataTestId }) => {
3232
- return (jsxRuntime.jsx("div", { className: cvaPage({ className, layout }), "data-testid": dataTestId || "page", children: children }));
3233
- };
3234
-
3235
- /**
3236
- * Renders the content of a page.
3237
- * Applies padding to content. To be used within a <Page/>
3238
- *
3239
- * @param {PageContentProps} props - The component props.
3240
- * @returns {React.ReactNode} - The rendered component.
3241
- */
3242
- const PageContent = ({ className, children, dataTestId }) => {
3243
- return (jsxRuntime.jsx("div", { className: cvaPageContent({ className }), "data-testid": dataTestId || "page-content", children: children }));
3244
- };
3245
-
3246
3214
  const cvaNotice = cssClassVarianceUtilities.cvaMerge(["flex", "items-center"]);
3247
3215
  const cvaNoticeLabel = cssClassVarianceUtilities.cvaMerge(["pl-1", "pr-1", "font-medium", "text-sm"], {
3248
3216
  variants: {
@@ -3298,6 +3266,39 @@ const Notice = (_a) => {
3298
3266
  return (jsxRuntime.jsx(Tooltip, { className: className, disabled: withLabel, label: label, placement: "bottom", children: jsxRuntime.jsxs("div", Object.assign({ "aria-label": label, className: cvaNotice(), "data-testid": dataTestId }, rest, { children: [jsxRuntime.jsx("div", { className: cvaNoticeIcon({ color }), "data-testid": dataTestId ? `${dataTestId}-icon` : "notice-icon", children: icon }), label !== undefined && withLabel ? (jsxRuntime.jsx("div", { className: cvaNoticeLabel({ color }), "data-testid": dataTestId ? `${dataTestId}-label` : "notice-label", children: label })) : null] })) }));
3299
3267
  };
3300
3268
 
3269
+ const cvaPage = cssClassVarianceUtilities.cvaMerge(["grid", "h-full"], {
3270
+ variants: {
3271
+ layout: {
3272
+ content: ["grid-rows-1"],
3273
+ "header-content": "grid-rows-min-fr",
3274
+ "sidebar-content": ["grid-cols-[360px_minmax(0,1fr)]", "grid-rows-1"],
3275
+ none: [],
3276
+ },
3277
+ },
3278
+ defaultVariants: {
3279
+ layout: "none",
3280
+ },
3281
+ });
3282
+ const cvaPageContent = cssClassVarianceUtilities.cvaMerge(["overflow-auto", "p-4", "md:p-6", "lg:p-8"]);
3283
+
3284
+ /**
3285
+ * Renders the page component. Adds padding and layout to the page.
3286
+ */
3287
+ const Page = ({ layout, className, children, dataTestId }) => {
3288
+ return (jsxRuntime.jsx("div", { className: cvaPage({ className, layout }), "data-testid": dataTestId || "page", children: children }));
3289
+ };
3290
+
3291
+ /**
3292
+ * Renders the content of a page.
3293
+ * Applies padding to content. To be used within a <Page/>
3294
+ *
3295
+ * @param {PageContentProps} props - The component props.
3296
+ * @returns {React.ReactNode} - The rendered component.
3297
+ */
3298
+ const PageContent = ({ className, children, dataTestId }) => {
3299
+ return (jsxRuntime.jsx("div", { className: cvaPageContent({ className }), "data-testid": dataTestId || "page-content", children: children }));
3300
+ };
3301
+
3301
3302
  const cvaPageHeaderContainer = cssClassVarianceUtilities.cvaMerge(["bg-white", "tu-page-header"], {
3302
3303
  variants: {
3303
3304
  withBorder: {
@@ -3828,6 +3829,49 @@ const ValueBar = ({ value, min = 0, max = 100, unit, size = "small", levelColors
3828
3829
  return (jsxRuntime.jsx("svg", { className: cvaValueBar({ size, className }), "data-testid": dataTestId, role: "img", children: jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("rect", { className: cvaValueBarProgress({ fill: "background" }), "data-testid": "value-bar-svg-rect-0", rx: "5", width: `${barWidth}%` }), jsxRuntime.jsx("rect", { className: cvaValueBarProgress(), "data-testid": "value-bar-svg-rect-1", fill: barFillColor, rx: "5", width: `${score * barWidth}%` }), showValue && size === "large" ? (jsxRuntime.jsxs("text", { className: cvaValueBarText({ size }), fill: valueColor !== null && valueColor !== void 0 ? valueColor : "white", x: "12", y: "23", children: [Number(value.toFixed(1)), unit || ""] })) : null, showValue && size === "small" ? (jsxRuntime.jsxs("text", { className: cvaValueBarText({ size }), fill: valueColor !== null && valueColor !== void 0 ? valueColor : uiDesignTokens.color("NEUTRAL", 400, "CSS"), x: `${barWidth + 2}%`, y: "11", children: [Number(value.toFixed(1)), unit || ""] })) : null] }) }));
3829
3830
  };
3830
3831
 
3832
+ const cvaVirtualizedListContainer = cssClassVarianceUtilities.cvaMerge(["h-full", "overflow-auto"]);
3833
+ const cvaVirtualizedList = cssClassVarianceUtilities.cvaMerge(["relative"]);
3834
+ const cvaVirtualizedListItem = cssClassVarianceUtilities.cvaMerge(["absolute", "top-0", "left-0", "w-full"], {
3835
+ variants: {
3836
+ separator: {
3837
+ alternating: ["even:bg-slate-100"],
3838
+ line: ["[&:not(:last-child)]:border-b", "border-gray-200"],
3839
+ none: "",
3840
+ },
3841
+ },
3842
+ defaultVariants: {
3843
+ separator: "none",
3844
+ },
3845
+ });
3846
+
3847
+ /**
3848
+ * Render a performant virtualized list of items. Optionally with infinite scrolling.
3849
+ *
3850
+ * @property {number} count - The total number of items in the list.
3851
+ * @property {number} [rowHeight="40"] - The estimated height of each row in the list.
3852
+ * @property {RelayPagination | undefined} pagination - Pagination configuration for the list.
3853
+ * @property {separator} [separator="line"] - The separator style between items in the list.
3854
+ * @property {(index: number) => JSX.Element} children - A function that takes an index and returns the JSX element to be rendered at said index.
3855
+ */
3856
+ const VirtualizedList = ({ count, rowHeight = 40, pagination, children, className, dataTestId, separator = "none", }) => {
3857
+ var _a;
3858
+ const containerRef = React.useRef(null);
3859
+ const { fetchMoreOnBottomReached, getVirtualItems, getTotalSize, measureElement } = reactTablePagination.useInfiniteScroll({
3860
+ pagination: pagination || reactTablePagination.noPagination,
3861
+ containerRef,
3862
+ rowSize: ((_a = pagination === null || pagination === void 0 ? void 0 : pagination.pageInfo) === null || _a === void 0 ? void 0 : _a.hasNextPage) && pagination.isLoading ? count + 1 : count,
3863
+ rowHeight,
3864
+ });
3865
+ return (jsxRuntime.jsx("div", { className: cvaVirtualizedListContainer({ className }), "data-testid": dataTestId,
3866
+ // eslint-disable-next-line local-rules/no-typescript-assertion
3867
+ onScroll: e => fetchMoreOnBottomReached(e.target), ref: containerRef, children: jsxRuntime.jsx("ul", { className: cvaVirtualizedList(), style: { height: `${getTotalSize()}px` }, children: getVirtualItems().map(virtualRow => {
3868
+ const isLoaderRow = virtualRow.index > count - 1;
3869
+ return (jsxRuntime.jsx("li", { className: cvaVirtualizedListItem({ separator }), "data-index": virtualRow.index, ref: measureElement, style: {
3870
+ transform: `translateY(${virtualRow.start}px)`,
3871
+ }, children: isLoaderRow ? ((pagination === null || pagination === void 0 ? void 0 : pagination.isLoading) ? (jsxRuntime.jsx(Spinner, { centering: "horizontally", containerClassName: "p-4" })) : null) : (children(virtualRow.index)) }, virtualRow.key));
3872
+ }) }) }));
3873
+ };
3874
+
3831
3875
  const cvaWidgetBodyDensityContainer = cssClassVarianceUtilities.cvaMerge([
3832
3876
  "@container",
3833
3877
  "flex",
@@ -4463,6 +4507,7 @@ exports.Timeline = Timeline;
4463
4507
  exports.TimelineElement = TimelineElement;
4464
4508
  exports.Tooltip = Tooltip;
4465
4509
  exports.ValueBar = ValueBar;
4510
+ exports.VirtualizedList = VirtualizedList;
4466
4511
  exports.WidgetBody = WidgetBody;
4467
4512
  exports.cvaButton = cvaButton;
4468
4513
  exports.cvaButtonPrefixSuffix = cvaButtonPrefixSuffix;
package/index.esm.js CHANGED
@@ -20,6 +20,7 @@ import { Link, useBlocker } from '@tanstack/react-router';
20
20
  import { HelmetProvider, Helmet } from 'react-helmet-async';
21
21
  import { Trigger, Content, List, Root } from '@radix-ui/react-tabs';
22
22
  import { format, formatDistance } from 'date-fns';
23
+ import { useInfiniteScroll, noPagination } from '@trackunit/react-table-pagination';
23
24
  import isEqual from 'lodash/isEqual';
24
25
 
25
26
  const docs = {
@@ -3179,39 +3180,6 @@ const useModal = ({ closeOnOutsideClick } = {}) => {
3179
3180
  };
3180
3181
  };
3181
3182
 
3182
- const cvaPage = cvaMerge(["grid", "h-full"], {
3183
- variants: {
3184
- layout: {
3185
- content: ["grid-rows-1"],
3186
- "header-content": "grid-rows-min-fr",
3187
- "sidebar-content": ["grid-cols-[360px_minmax(0,1fr)]", "grid-rows-1"],
3188
- none: [],
3189
- },
3190
- },
3191
- defaultVariants: {
3192
- layout: "none",
3193
- },
3194
- });
3195
- const cvaPageContent = cvaMerge(["overflow-auto", "p-4", "md:p-6", "lg:p-8"]);
3196
-
3197
- /**
3198
- * Renders the page component. Adds padding and layout to the page.
3199
- */
3200
- const Page = ({ layout, className, children, dataTestId }) => {
3201
- return (jsx("div", { className: cvaPage({ className, layout }), "data-testid": dataTestId || "page", children: children }));
3202
- };
3203
-
3204
- /**
3205
- * Renders the content of a page.
3206
- * Applies padding to content. To be used within a <Page/>
3207
- *
3208
- * @param {PageContentProps} props - The component props.
3209
- * @returns {React.ReactNode} - The rendered component.
3210
- */
3211
- const PageContent = ({ className, children, dataTestId }) => {
3212
- return (jsx("div", { className: cvaPageContent({ className }), "data-testid": dataTestId || "page-content", children: children }));
3213
- };
3214
-
3215
3183
  const cvaNotice = cvaMerge(["flex", "items-center"]);
3216
3184
  const cvaNoticeLabel = cvaMerge(["pl-1", "pr-1", "font-medium", "text-sm"], {
3217
3185
  variants: {
@@ -3267,6 +3235,39 @@ const Notice = (_a) => {
3267
3235
  return (jsx(Tooltip, { className: className, disabled: withLabel, label: label, placement: "bottom", children: jsxs("div", Object.assign({ "aria-label": label, className: cvaNotice(), "data-testid": dataTestId }, rest, { children: [jsx("div", { className: cvaNoticeIcon({ color }), "data-testid": dataTestId ? `${dataTestId}-icon` : "notice-icon", children: icon }), label !== undefined && withLabel ? (jsx("div", { className: cvaNoticeLabel({ color }), "data-testid": dataTestId ? `${dataTestId}-label` : "notice-label", children: label })) : null] })) }));
3268
3236
  };
3269
3237
 
3238
+ const cvaPage = cvaMerge(["grid", "h-full"], {
3239
+ variants: {
3240
+ layout: {
3241
+ content: ["grid-rows-1"],
3242
+ "header-content": "grid-rows-min-fr",
3243
+ "sidebar-content": ["grid-cols-[360px_minmax(0,1fr)]", "grid-rows-1"],
3244
+ none: [],
3245
+ },
3246
+ },
3247
+ defaultVariants: {
3248
+ layout: "none",
3249
+ },
3250
+ });
3251
+ const cvaPageContent = cvaMerge(["overflow-auto", "p-4", "md:p-6", "lg:p-8"]);
3252
+
3253
+ /**
3254
+ * Renders the page component. Adds padding and layout to the page.
3255
+ */
3256
+ const Page = ({ layout, className, children, dataTestId }) => {
3257
+ return (jsx("div", { className: cvaPage({ className, layout }), "data-testid": dataTestId || "page", children: children }));
3258
+ };
3259
+
3260
+ /**
3261
+ * Renders the content of a page.
3262
+ * Applies padding to content. To be used within a <Page/>
3263
+ *
3264
+ * @param {PageContentProps} props - The component props.
3265
+ * @returns {React.ReactNode} - The rendered component.
3266
+ */
3267
+ const PageContent = ({ className, children, dataTestId }) => {
3268
+ return (jsx("div", { className: cvaPageContent({ className }), "data-testid": dataTestId || "page-content", children: children }));
3269
+ };
3270
+
3270
3271
  const cvaPageHeaderContainer = cvaMerge(["bg-white", "tu-page-header"], {
3271
3272
  variants: {
3272
3273
  withBorder: {
@@ -3797,6 +3798,49 @@ const ValueBar = ({ value, min = 0, max = 100, unit, size = "small", levelColors
3797
3798
  return (jsx("svg", { className: cvaValueBar({ size, className }), "data-testid": dataTestId, role: "img", children: jsxs("g", { children: [jsx("rect", { className: cvaValueBarProgress({ fill: "background" }), "data-testid": "value-bar-svg-rect-0", rx: "5", width: `${barWidth}%` }), jsx("rect", { className: cvaValueBarProgress(), "data-testid": "value-bar-svg-rect-1", fill: barFillColor, rx: "5", width: `${score * barWidth}%` }), showValue && size === "large" ? (jsxs("text", { className: cvaValueBarText({ size }), fill: valueColor !== null && valueColor !== void 0 ? valueColor : "white", x: "12", y: "23", children: [Number(value.toFixed(1)), unit || ""] })) : null, showValue && size === "small" ? (jsxs("text", { className: cvaValueBarText({ size }), fill: valueColor !== null && valueColor !== void 0 ? valueColor : color("NEUTRAL", 400, "CSS"), x: `${barWidth + 2}%`, y: "11", children: [Number(value.toFixed(1)), unit || ""] })) : null] }) }));
3798
3799
  };
3799
3800
 
3801
+ const cvaVirtualizedListContainer = cvaMerge(["h-full", "overflow-auto"]);
3802
+ const cvaVirtualizedList = cvaMerge(["relative"]);
3803
+ const cvaVirtualizedListItem = cvaMerge(["absolute", "top-0", "left-0", "w-full"], {
3804
+ variants: {
3805
+ separator: {
3806
+ alternating: ["even:bg-slate-100"],
3807
+ line: ["[&:not(:last-child)]:border-b", "border-gray-200"],
3808
+ none: "",
3809
+ },
3810
+ },
3811
+ defaultVariants: {
3812
+ separator: "none",
3813
+ },
3814
+ });
3815
+
3816
+ /**
3817
+ * Render a performant virtualized list of items. Optionally with infinite scrolling.
3818
+ *
3819
+ * @property {number} count - The total number of items in the list.
3820
+ * @property {number} [rowHeight="40"] - The estimated height of each row in the list.
3821
+ * @property {RelayPagination | undefined} pagination - Pagination configuration for the list.
3822
+ * @property {separator} [separator="line"] - The separator style between items in the list.
3823
+ * @property {(index: number) => JSX.Element} children - A function that takes an index and returns the JSX element to be rendered at said index.
3824
+ */
3825
+ const VirtualizedList = ({ count, rowHeight = 40, pagination, children, className, dataTestId, separator = "none", }) => {
3826
+ var _a;
3827
+ const containerRef = useRef(null);
3828
+ const { fetchMoreOnBottomReached, getVirtualItems, getTotalSize, measureElement } = useInfiniteScroll({
3829
+ pagination: pagination || noPagination,
3830
+ containerRef,
3831
+ rowSize: ((_a = pagination === null || pagination === void 0 ? void 0 : pagination.pageInfo) === null || _a === void 0 ? void 0 : _a.hasNextPage) && pagination.isLoading ? count + 1 : count,
3832
+ rowHeight,
3833
+ });
3834
+ return (jsx("div", { className: cvaVirtualizedListContainer({ className }), "data-testid": dataTestId,
3835
+ // eslint-disable-next-line local-rules/no-typescript-assertion
3836
+ onScroll: e => fetchMoreOnBottomReached(e.target), ref: containerRef, children: jsx("ul", { className: cvaVirtualizedList(), style: { height: `${getTotalSize()}px` }, children: getVirtualItems().map(virtualRow => {
3837
+ const isLoaderRow = virtualRow.index > count - 1;
3838
+ return (jsx("li", { className: cvaVirtualizedListItem({ separator }), "data-index": virtualRow.index, ref: measureElement, style: {
3839
+ transform: `translateY(${virtualRow.start}px)`,
3840
+ }, children: isLoaderRow ? ((pagination === null || pagination === void 0 ? void 0 : pagination.isLoading) ? (jsx(Spinner, { centering: "horizontally", containerClassName: "p-4" })) : null) : (children(virtualRow.index)) }, virtualRow.key));
3841
+ }) }) }));
3842
+ };
3843
+
3800
3844
  const cvaWidgetBodyDensityContainer = cvaMerge([
3801
3845
  "@container",
3802
3846
  "flex",
@@ -4381,4 +4425,4 @@ const useVisibilityChange = ({ onChange, targetState = "hidden" }) => {
4381
4425
  }, [onChange, targetState]);
4382
4426
  };
4383
4427
 
4384
- export { Alert, Badge, Button, Card, CardBody, CardFooter, CardHeader, Collapse, CopyableText, DayPicker, DayRangePicker, Drawer, EmptyState, ExternalLink, Heading, Icon, IconButton, Indicator, 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, 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 };
4428
+ export { Alert, Badge, Button, Card, CardBody, CardFooter, CardHeader, Collapse, CopyableText, DayPicker, DayRangePicker, Drawer, EmptyState, ExternalLink, Heading, Icon, IconButton, Indicator, 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.286",
3
+ "version": "0.1.289",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -25,7 +25,8 @@
25
25
  "@floating-ui/react": "^0.26.6",
26
26
  "@tanstack/react-router": "1.19.1",
27
27
  "string-ts": "^2.0.0",
28
- "tailwind-merge": "^2.0.0"
28
+ "tailwind-merge": "^2.0.0",
29
+ "@trackunit/react-table-pagination": "*"
29
30
  },
30
31
  "module": "./index.esm.js",
31
32
  "main": "./index.cjs.js"
@@ -0,0 +1,24 @@
1
+ /// <reference types="react" />
2
+ import { VariantProps } from "@trackunit/css-class-variance-utilities";
3
+ import { RelayPagination } from "@trackunit/react-table-pagination";
4
+ import { CommonProps } from "../../common/CommonProps";
5
+ import { cvaVirtualizedListItem } from "./VirtualizedList.variants";
6
+ type Separator = NonNullable<VariantProps<typeof cvaVirtualizedListItem>["separator"]>;
7
+ export interface VirtualizedListProps extends CommonProps {
8
+ count: number;
9
+ rowHeight?: number;
10
+ pagination?: RelayPagination;
11
+ children: (index: number) => JSX.Element;
12
+ separator?: Separator;
13
+ }
14
+ /**
15
+ * Render a performant virtualized list of items. Optionally with infinite scrolling.
16
+ *
17
+ * @property {number} count - The total number of items in the list.
18
+ * @property {number} [rowHeight="40"] - The estimated height of each row in the list.
19
+ * @property {RelayPagination | undefined} pagination - Pagination configuration for the list.
20
+ * @property {separator} [separator="line"] - The separator style between items in the list.
21
+ * @property {(index: number) => JSX.Element} children - A function that takes an index and returns the JSX element to be rendered at said index.
22
+ */
23
+ export declare const VirtualizedList: ({ count, rowHeight, pagination, children, className, dataTestId, separator, }: VirtualizedListProps) => JSX.Element;
24
+ export {};
@@ -0,0 +1,5 @@
1
+ export declare const cvaVirtualizedListContainer: (props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string;
2
+ export declare const cvaVirtualizedList: (props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string;
3
+ export declare const cvaVirtualizedListItem: (props?: ({
4
+ separator?: "alternating" | "line" | "none" | null | undefined;
5
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
@@ -12,8 +12,8 @@ export * from "./Icon/Icon";
12
12
  export * from "./Indicator";
13
13
  export * from "./Menu";
14
14
  export * from "./Modal";
15
- export * from "./Page";
16
15
  export * from "./Notice";
16
+ export * from "./Page";
17
17
  export * from "./PageHeader";
18
18
  export * from "./Pagination/Pagination";
19
19
  export * from "./Popover";
@@ -34,5 +34,6 @@ export * from "./Text";
34
34
  export * from "./Timeline/Timeline";
35
35
  export * from "./Tooltip";
36
36
  export * from "./ValueBar";
37
+ export * from "./VirtualizedList/VirtualizedList";
37
38
  export * from "./Widget";
38
39
  export * from "./buttons";