@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.
|
|
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";
|