diff --git a/packages/ui/src/components/TablePagination/TablePagination.tsx b/packages/ui/src/components/TablePagination/TablePagination.tsx
index 93ba1e0ef0..8796c319bb 100644
--- a/packages/ui/src/components/TablePagination/TablePagination.tsx
+++ b/packages/ui/src/components/TablePagination/TablePagination.tsx
@@ -14,15 +14,13 @@
* limitations under the License.
*/
-import clsx from 'clsx';
import { useId } from 'react-aria';
import { Text } from '../Text';
import { ButtonIcon } from '../ButtonIcon';
import { Select } from '../Select';
import type { TablePaginationProps, PageSizeOption } from './types';
-import { useStyles } from '../../hooks/useStyles';
+import { useDefinition } from '../../hooks/useDefinition';
import { TablePaginationDefinition } from './definition';
-import styles from './TablePagination.module.css';
import { RiArrowLeftSLine, RiArrowRightSLine } from '@remixicon/react';
import { useMemo } from 'react';
@@ -62,20 +60,23 @@ function normalizePageSizeOptions(
*
* @public
*/
-export function TablePagination({
- pageSize,
- pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS,
- offset,
- totalCount,
- hasNextPage,
- hasPreviousPage,
- onNextPage,
- onPreviousPage,
- onPageSizeChange,
- showPageSizeOptions = true,
- getLabel,
-}: TablePaginationProps) {
- const { classNames } = useStyles(TablePaginationDefinition, {});
+export function TablePagination(props: TablePaginationProps) {
+ const { ownProps } = useDefinition(TablePaginationDefinition, props);
+ const {
+ classes,
+ pageSize,
+ pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS,
+ offset,
+ totalCount,
+ hasNextPage,
+ hasPreviousPage,
+ onNextPage,
+ onPreviousPage,
+ onPageSizeChange,
+ showPageSizeOptions = true,
+ getLabel,
+ } = ownProps;
+
const labelId = useId();
const normalizedOptions = useMemo(
() => normalizePageSizeOptions(pageSizeOptions),
@@ -108,8 +109,8 @@ export function TablePagination({
}
return (
-
-
+
+
{showPageSizeOptions && (
)}
-
+
{hasItems && (
{label}
diff --git a/packages/ui/src/components/TablePagination/definition.ts b/packages/ui/src/components/TablePagination/definition.ts
index d72a706da1..1e6dc1a476 100644
--- a/packages/ui/src/components/TablePagination/definition.ts
+++ b/packages/ui/src/components/TablePagination/definition.ts
@@ -14,17 +14,34 @@
* limitations under the License.
*/
-import type { ComponentDefinition } from '../../types';
+import { defineComponent } from '../../hooks/useDefinition';
+import type { TablePaginationOwnProps } from './types';
+import styles from './TablePagination.module.css';
/**
* Component definition for TablePagination
* @public
*/
-export const TablePaginationDefinition = {
- classNames: {
- root: 'bui-TablePagination',
- left: 'bui-TablePaginationLeft',
- right: 'bui-TablePaginationRight',
- select: 'bui-TablePaginationSelect',
- },
-} as const satisfies ComponentDefinition;
+export const TablePaginationDefinition =
+ defineComponent()({
+ styles,
+ classNames: {
+ root: 'bui-TablePagination',
+ left: 'bui-TablePaginationLeft',
+ right: 'bui-TablePaginationRight',
+ select: 'bui-TablePaginationSelect',
+ },
+ propDefs: {
+ pageSize: {},
+ pageSizeOptions: {},
+ offset: {},
+ totalCount: {},
+ hasNextPage: {},
+ hasPreviousPage: {},
+ onNextPage: {},
+ onPreviousPage: {},
+ onPageSizeChange: {},
+ showPageSizeOptions: {},
+ getLabel: {},
+ },
+ });
diff --git a/packages/ui/src/components/TablePagination/index.ts b/packages/ui/src/components/TablePagination/index.ts
index e0cd949abf..6f83676474 100644
--- a/packages/ui/src/components/TablePagination/index.ts
+++ b/packages/ui/src/components/TablePagination/index.ts
@@ -15,5 +15,9 @@
*/
export { TablePagination } from './TablePagination';
-export type { TablePaginationProps, PageSizeOption } from './types';
+export type {
+ TablePaginationProps,
+ TablePaginationOwnProps,
+ PageSizeOption,
+} from './types';
export { TablePaginationDefinition } from './definition';
diff --git a/packages/ui/src/components/TablePagination/types.ts b/packages/ui/src/components/TablePagination/types.ts
index 04881a0f5f..3fde662d8c 100644
--- a/packages/ui/src/components/TablePagination/types.ts
+++ b/packages/ui/src/components/TablePagination/types.ts
@@ -21,7 +21,7 @@ export interface PageSizeOption {
}
/** @public */
-export interface TablePaginationProps {
+export type TablePaginationOwnProps = {
pageSize: number;
pageSizeOptions?: number[] | PageSizeOption[];
offset?: number;
@@ -37,4 +37,7 @@ export interface TablePaginationProps {
offset?: number;
totalCount?: number;
}) => string;
-}
+};
+
+/** @public */
+export interface TablePaginationProps extends TablePaginationOwnProps {}