From b864c7abaa8d1eb8ee89f88fcfee0fb5d6048b96 Mon Sep 17 00:00:00 2001
From: Harman-singh-waraich
Date: Mon, 17 Mar 2025 14:46:16 +0530
Subject: [PATCH 1/4] chore: pagination-standard-and-compact-migration
---
src/lib/pagination/compact.tsx | 128 ++++++++++---------------
src/lib/pagination/standard.tsx | 164 +++++++++++++-------------------
2 files changed, 114 insertions(+), 178 deletions(-)
diff --git a/src/lib/pagination/compact.tsx b/src/lib/pagination/compact.tsx
index 1536be5..a3c32f0 100644
--- a/src/lib/pagination/compact.tsx
+++ b/src/lib/pagination/compact.tsx
@@ -1,76 +1,29 @@
import React, { ReactNode } from "react";
-import styled from "styled-components";
import usePagination from "../../hooks/pagination/use-pagination";
import Arrow from "../../assets/svgs/arrows/circle-left.svg";
import SolidErrorIcon from "../../assets/svgs/status-icons/solid-error.svg";
-import { borderBox, button, small, svg } from "../../styles/common-style";
+import { cn } from "../../utils";
+import { Button, type ButtonProps } from "react-aria-components";
+import clsx from "clsx";
-const Wrapper = styled.div`
- ${borderBox}
- display: flex;
- align-items: center;
- justify-content: end;
-`;
-
-const StyledSVG = styled.svg``;
-
-const ArrowButton = styled.button`
- ${button}
- height: 24px;
- width: 24px;
- background: none;
- padding: 0;
- border-radius: 50%;
-
- & ${StyledSVG} {
- ${svg}
- height: 24px;
- width: 24px;
- fill: ${(props) =>
- props.disabled
- ? props.theme.klerosUIComponentsStroke
- : props.theme.klerosUIComponentsPrimaryBlue};
- transition: fill ease
- ${({ theme }) => theme.klerosUIComponentsTransitionSpeed};
- }
-
- :hover:enabled {
- & ${StyledSVG} {
- fill: ${({ theme }) => theme.klerosUIComponentsSecondaryBlue};
- }
- }
-`;
-
-const StyledLabel = styled.small`
- ${small}
- color: ${(props) => props.theme.klerosUIComponentsPrimaryText};
-`;
-
-const LeftArrow = styled(ArrowButton)`
- margin-left: 16px;
-`;
-
-const RightArrow = styled(ArrowButton)`
- margin-left: 8px;
-
- & ${StyledSVG} {
- transform: rotate(180deg);
- }
-`;
-
-const CloseButton = styled(ArrowButton)`
- margin-left: 8px;
-
- & ${StyledSVG} {
- fill: ${(props) => props.theme.klerosUIComponentsPrimaryBlue};
- }
-
- :hover:enabled {
- & ${StyledSVG} {
- fill: ${({ theme }) => theme.klerosUIComponentsSecondaryBlue};
- }
- }
-`;
+const ArrowButton: React.FC = ({ className, ...props }) => {
+ return (
+
+ );
+};
interface CompactPaginationProps {
currentPage: number;
@@ -93,21 +46,36 @@ const CompactPagination: React.FC = ({
usePagination(currentPage, numPages, callback, onCloseOnLastPage);
return (
-
- {label}
-
-
-
+
+
+ {label}
+
+
+
+
{currentPage === numPages && onCloseOnLastPage ? (
-
-
-
+
+
+
) : (
-
-
-
+
+
+
)}
-
+
);
};
diff --git a/src/lib/pagination/standard.tsx b/src/lib/pagination/standard.tsx
index 59d9440..f34965a 100644
--- a/src/lib/pagination/standard.tsx
+++ b/src/lib/pagination/standard.tsx
@@ -1,95 +1,39 @@
import React from "react";
-import styled from "styled-components";
import usePagination from "../../hooks/pagination/use-pagination";
import Arrow from "../../assets/svgs/arrows/light-left.svg";
-import { borderBox, button, svg } from "../../styles/common-style";
-
-const Wrapper = styled.div`
- ${borderBox}
- display: flex;
- align-items: center;
- justify-content: center;
-`;
-
-const PageButton = styled.button<{ selected?: boolean }>`
- ${button}
- height: 32px;
- width: 32px;
- margin: 4px;
- background: ${(props) =>
- props.selected
- ? props.theme.klerosUIComponentsLightBlue
- : props.theme.klerosUIComponentsWhiteBackground};
- border: 1px solid
- ${(props) =>
- props.selected
- ? props.theme.klerosUIComponentsPrimaryBlue
- : props.theme.klerosUIComponentsStroke};
- border-radius: 3px;
- display: flex;
- align-items: center;
- justify-content: center;
-
- font-size: 14px;
- color: ${(props) =>
- props.selected
- ? props.theme.klerosUIComponentsPrimaryBlue
- : props.theme.klerosUIComponentsPrimaryText};
-
- :hover:enabled {
- background: ${(props) =>
- props.selected
- ? props.theme.klerosUIComponentsWhiteBackground
- : props.theme.klerosUIComponentsLightBlue};
- border: 1px solid
- ${(props) =>
- props.selected
- ? props.theme.klerosUIComponentsPrimaryBlue
- : props.theme.klerosUIComponentsSecondaryBlue};
- color: ${(props) =>
- props.selected
- ? props.theme.klerosUIComponentsPrimaryBlue
- : props.theme.klerosUIComponentsSecondaryBlue};
- }
-
- :hover:disabled {
- cursor: default;
- }
-`;
-
-const StyledArrow = styled.svg``;
-
-const ArrowButton = styled(PageButton)`
- & ${StyledArrow} {
- ${svg}
- fill: ${(props) =>
- props.disabled
- ? props.theme.klerosUIComponentsStroke
- : props.theme.klerosUIComponentsPrimaryText};
- transition: fill ease
- ${({ theme }) => theme.klerosUIComponentsTransitionSpeed};
- }
-
- :hover:enabled {
- & ${StyledArrow} {
- fill: ${({ theme }) => theme.klerosUIComponentsSecondaryBlue};
- }
- }
-`;
-
-const LeftArrow = styled(ArrowButton)`
- & ${StyledArrow} {
- padding-right: 1px;
- }
-`;
-
-const RightArrow = styled(ArrowButton)`
- & ${StyledArrow} {
- padding-left: 1px;
- transform: rotate(180deg);
- }
-`;
+import { cn } from "../../utils";
+import { Button, type ButtonProps } from "react-aria-components";
+import clsx from "clsx";
+const PageButton: React.FC = ({
+ children,
+ selected,
+ className,
+ ...props
+}) => (
+
+);
interface StandardPaginationProps {
currentPage: number;
numPages: number;
@@ -119,25 +63,49 @@ const StandardPagination: React.FC = ({
] = usePagination(currentPage, numPages, callback);
return (
-
-
-
-
+
+
+
+
{!hideNumbers &&
getPageRange().map((i) => (
goToPage(i)}
- disabled={disableNumbers}
+ onPress={() => goToPage(i)}
+ isDisabled={disableNumbers}
>
{i}
))}
-
-
-
-
+
+
+
+
);
};
From bce8242de5ace244d00a51d16d2518fbeb959829 Mon Sep 17 00:00:00 2001
From: Harman-singh-waraich
Date: Mon, 17 Mar 2025 18:17:39 +0530
Subject: [PATCH 2/4] chore: tabs-migration-with-new-implementation
---
src/App.tsx | 141 ++++++++++++++++----------
src/examples/pagination.tsx | 19 ++--
src/lib/pagination/tabs.tsx | 190 +++++++++++++++++++++---------------
3 files changed, 213 insertions(+), 137 deletions(-)
diff --git a/src/App.tsx b/src/App.tsx
index dc3fb29..ecd2488 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -5,7 +5,6 @@ import { GlobalStyle } from "./styles/global-style";
import { lightTheme, darkTheme } from "./styles/themes";
import Button from "./lib/button";
import Tabs from "./lib/pagination/tabs";
-import Card from "./lib/container/card";
import Buttons from "./examples/buttons";
import Pagination from "./examples/pagination";
import Containers from "./examples/containers";
@@ -19,6 +18,7 @@ import TimelineProgress from "./examples/timeline";
import Input from "./examples/input";
import Tooltips from "./examples/tooltip";
import Copiable from "./examples/copiable";
+import clsx from "clsx";
const StyledDiv = styled.div`
position: fixed;
@@ -38,29 +38,9 @@ const StyledDiv = styled.div`
${(props) => props.theme.klerosUIComponentsTransitionSpeed};
`;
-const StyledCard = styled(Card)`
- height: 500px;
- width: 1000px;
- display: flex;
- justify-content: space-around;
- align-items: center;
- gap: 24px;
- overflow: auto;
- flex-wrap: wrap;
- padding: 36px 36px;
- background: ${(props) => props.theme.klerosUIComponentsLightBackground};
- transition: background ease
- ${(props) => props.theme.klerosUIComponentsTransitionSpeed};
-`;
-
-const StyledTabs = styled(Tabs)`
- width: 995px;
-`;
-
const App = () => {
const [theme, setTheme] = useState(lightTheme);
const [tailwindTheme, setTailwindTheme] = useState("light");
- const [example, setExample] = useState("buttons");
// temporary
const changeTheme = () => {
@@ -80,40 +60,97 @@ const App = () => {
- ,
+ },
+ {
+ text: "Pagination",
+ value: "pagination",
+ id: "pagination",
+ content: ,
+ },
+ {
+ text: "Containers",
+ value: "containers",
+ id: "containers",
+ content: ,
+ },
+ {
+ text: "Accordion",
+ value: "accordion",
+ id: "accordion",
+ content: ,
+ },
+ {
+ text: "Form",
+ value: "form",
+ id: "content",
+ content: ,
+ },
+ {
+ text: "Dropdowns",
+ value: "dropdowns",
+ id: "dropdowns",
+ content: ,
+ },
+ {
+ text: "Displays",
+ value: "displays",
+ id: "displays",
+ content: ,
+ },
+ {
+ text: "Messages",
+ value: "messages",
+ id: "messages",
+ content: ,
+ },
+ {
+ text: "Timeline",
+ value: "timeline",
+ id: "timeline",
+ content: ,
+ },
+ {
+ text: "Progress",
+ value: "progress",
+ id: "progress",
+ content: ,
+ },
+ {
+ text: "Input",
+ value: "input",
+ id: "input",
+ content: ,
+ },
+ {
+ text: "Tooltip",
+ value: "tooltip",
+ id: "tooltip",
+ content: ,
+ },
+ {
+ text: "Copiable",
+ value: "copiable",
+ id: "copiable",
+ content: ,
+ },
]}
- callback={setExample}
- currentValue={example}
/>
-
- {example === "buttons" && }
- {example === "pagination" && }
- {example === "containers" && }
- {example === "accordion" && }
- {example === "form" && }
- {example === "dropdowns" && }
- {example === "displays" && }
- {example === "messages" && }
- {example === "timeline" && }
- {example === "progress" && }
- {example === "input" && }
- {example === "tooltip" && }
- {example === "copiable" && }
-
},
{
text: "Telegram",
value: 1,
Icon: Telegram,
+ id: "telegram",
+ content: Telegram
,
+ },
+ {
+ text: "disabled",
+ value: 2,
+ disabled: true,
+ id: "disabled",
+ content: Disabled
,
},
- { text: "hello1", value: 2, disabled: true },
]}
- callback={() => {
- // function called when a tab is clicked
- }}
- currentValue={0}
/>
`
- ${button}
- ${hoverShortTransitionTiming}
- flex-grow: 1;
- height: 45px;
- background: none;
- border-bottom: 3px solid
- ${(props) =>
- props.selected
- ? props.theme.klerosUIComponentsPrimaryBlue
- : props.theme.klerosUIComponentsStroke};
- display: flex;
- align-items: center;
- justify-content: center;
-
- color: ${(props) => {
- if (props.selected) return props.theme.klerosUIComponentsPrimaryBlue;
- else if (props.disabled) return props.theme.klerosUIComponentsStroke;
- else return props.theme.klerosUIComponentsPrimaryText;
- }};
-
- ${(props) =>
- !props.disabled && !props.selected
- ? `:hover {
- ${hoverLongTransitionTiming}
- border-bottom: 3px solid
- ${props.theme.klerosUIComponentsSecondaryBlue};
- }`
- : ""}
-
- & ${StyledSVG} {
- ${svg}
- ${hoverShortTransitionTiming}
- height: 16px;
- width: 16px;
- margin-right: 16px;
+import React, { ReactNode, useCallback, useState } from "react";
- fill: ${(props) => {
- if (props.selected) return props.theme.klerosUIComponentsPrimaryBlue;
- else if (props.disabled) return props.theme.klerosUIComponentsStroke;
- else return props.theme.klerosUIComponentsPrimaryText;
- }};
- }
-`;
+import { cn } from "../../utils";
+import {
+ Tabs as AriaTabs,
+ Collection,
+ Tab,
+ TabList,
+ TabPanel,
+ type TabsProps as AriaTabsProps,
+ type Key,
+ type TabListProps,
+ type TabPanelProps,
+ type TabProps,
+} from "react-aria-components";
interface TabsItem {
+ id: Key;
text: string;
value: any;
Icon?: React.FC>;
icon?: React.ReactNode;
disabled?: boolean;
+ content: ReactNode;
+ tabPanelProps?: TabPanelProps;
}
-interface TabsProps {
- currentValue: any;
+interface TabsProps extends Omit {
items: TabsItem[];
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
- callback: Function;
+ callback?: Function;
+ className?: string;
+ panelClassName?: string;
+ tabListProps?: TabListProps;
}
-const Tabs: React.FC = ({ items, ...props }) => {
+const Tabs: React.FC = ({
+ items,
+ className,
+ tabListProps,
+ panelClassName,
+ callback,
+ defaultSelectedKey,
+ ...props
+}) => {
+ const [selectedKey, setSelectedKey] = useState(
+ defaultSelectedKey,
+ );
+
+ const handleSelection = useCallback(
+ (key: Key) => {
+ setSelectedKey(key);
+ const selectedItem = items.find((item) => item.text === key);
+ if (selectedItem && callback) callback(key, selectedItem.value);
+ },
+ [items, callback],
+ );
+
return (
-
- {items.map(({ Icon, icon, text, value, disabled }) => (
- props.callback(value)}
- >
- {icon ?? (Icon && )}
- {text}
-
- ))}
-
+
+
+ {items.map(({ id, Icon, icon, text, disabled }) => (
+
+ {icon ??
+ (Icon && (
+
+ ))}
+
+ {text}
+
+
+ ))}
+
+
+
+ {(item) => (
+
+ {item.content}
+
+ )}
+
+
);
};
From 2f63149fdc09433f23baad73c807c76f853432af Mon Sep 17 00:00:00 2001
From: Harman-singh-waraich
Date: Mon, 17 Mar 2025 19:52:49 +0530
Subject: [PATCH 3/4] chore: pagination-stories
---
src/lib/pagination/compact.tsx | 9 +--
src/lib/pagination/standard.tsx | 8 ++-
src/lib/pagination/tabs.tsx | 24 +++++--
src/stories/compactPagination.stories.tsx | 74 ++++++++++++++++++++++
src/stories/standardPagination.stories.tsx | 57 +++++++++++++++++
src/stories/tabs.stories.tsx | 44 +++++++++++++
6 files changed, 205 insertions(+), 11 deletions(-)
create mode 100644 src/stories/compactPagination.stories.tsx
create mode 100644 src/stories/standardPagination.stories.tsx
create mode 100644 src/stories/tabs.stories.tsx
diff --git a/src/lib/pagination/compact.tsx b/src/lib/pagination/compact.tsx
index a3c32f0..f2bb552 100644
--- a/src/lib/pagination/compact.tsx
+++ b/src/lib/pagination/compact.tsx
@@ -29,19 +29,20 @@ interface CompactPaginationProps {
currentPage: number;
numPages: number;
callback: (newPage: number) => void;
+ /** Callback function called when end of pages has been reached */
onCloseOnLastPage?: () => void;
label?: ReactNode;
className?: string;
}
-const CompactPagination: React.FC = ({
+function CompactPagination({
currentPage,
numPages,
callback,
onCloseOnLastPage,
label,
className,
-}) => {
+}: Readonly) {
const [{ incrementPage, decrementPage, minPageReached, maxPageReached }] =
usePagination(currentPage, numPages, callback, onCloseOnLastPage);
@@ -51,7 +52,7 @@ const CompactPagination: React.FC = ({
{label}
@@ -77,6 +78,6 @@ const CompactPagination: React.FC = ({
)}
);
-};
+}
export default CompactPagination;
diff --git a/src/lib/pagination/standard.tsx b/src/lib/pagination/standard.tsx
index f34965a..fd68a03 100644
--- a/src/lib/pagination/standard.tsx
+++ b/src/lib/pagination/standard.tsx
@@ -39,18 +39,20 @@ interface StandardPaginationProps {
numPages: number;
callback: (newPage: number) => void;
className?: string;
+ /** Disables the number buttons, allowing only use of arrows */
disableNumbers?: boolean;
+ /** Hides the number buttons */
hideNumbers?: boolean;
}
-const StandardPagination: React.FC = ({
+function StandardPagination({
currentPage,
numPages,
callback,
disableNumbers,
hideNumbers,
className,
-}) => {
+}: Readonly) {
const [
{
incrementPage,
@@ -107,6 +109,6 @@ const StandardPagination: React.FC = ({
);
-};
+}
export default StandardPagination;
diff --git a/src/lib/pagination/tabs.tsx b/src/lib/pagination/tabs.tsx
index e949ac4..0145424 100644
--- a/src/lib/pagination/tabs.tsx
+++ b/src/lib/pagination/tabs.tsx
@@ -15,13 +15,24 @@ import {
} from "react-aria-components";
interface TabsItem {
+ /** Unique id for each tab panel */
id: Key;
text: string;
+ /** Value associated with each tab. Passed as an arg to callback function. */
value: any;
Icon?: React.FC>;
icon?: React.ReactNode;
disabled?: boolean;
+ /** Content to display when this tab is selected. */
content: ReactNode;
+ /** Props for Tab
+ * {@link https://react-spectrum.adobe.com/react-aria/Tabs.html#tab | TabProps}
+ */
+ tabProps?: TabProps;
+ /**
+ * Can be used to provide separate styling for a TabPanel, apart from one passed in panelClassName parent props.
+ * {@link https://react-spectrum.adobe.com/react-aria/Tabs.html#tabpanel | TabListProps}
+ */
tabPanelProps?: TabPanelProps;
}
@@ -30,11 +41,16 @@ interface TabsProps extends Omit {
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
callback?: Function;
className?: string;
+ /** ClassName to provide a common style for all TabPanels */
panelClassName?: string;
+ /**
+ * Can be used to override default style.
+ * {@link https://react-spectrum.adobe.com/react-aria/Tabs.html#tablist | TabListProps}
+ */
tabListProps?: TabListProps;
}
-const Tabs: React.FC = ({
+function Tabs({
items,
className,
tabListProps,
@@ -42,7 +58,7 @@ const Tabs: React.FC = ({
callback,
defaultSelectedKey,
...props
-}) => {
+}: Readonly) {
const [selectedKey, setSelectedKey] = useState(
defaultSelectedKey,
);
@@ -114,7 +130,7 @@ const Tabs: React.FC = ({
className={cn(
"box-border h-fit w-full",
panelClassName,
- // custom style for a panel should override global style provided with panelClassName
+ // custom style for a panel should override parent style provided with panelClassName
item?.tabPanelProps?.className,
)}
{...item.tabPanelProps}
@@ -125,6 +141,6 @@ const Tabs: React.FC = ({
);
-};
+}
export default Tabs;
diff --git a/src/stories/compactPagination.stories.tsx b/src/stories/compactPagination.stories.tsx
new file mode 100644
index 0000000..bceb284
--- /dev/null
+++ b/src/stories/compactPagination.stories.tsx
@@ -0,0 +1,74 @@
+import type { Meta, StoryObj } from "@storybook/react";
+
+import { IPreviewArgs } from "./utils";
+
+import Pagination from "../lib/pagination/compact";
+import React, { useState } from "react";
+
+const meta = {
+ component: Pagination,
+ title: "Pagination/Compact Pagination",
+ tags: ["autodocs"],
+ argTypes: {
+ numPages: {
+ control: "number",
+ },
+ currentPage: {
+ control: "number",
+ },
+ className: {
+ control: "text",
+ },
+ },
+} satisfies Meta;
+
+export default meta;
+
+type Story = StoryObj & IPreviewArgs;
+
+export const CompactPagination: Story = {
+ args: {
+ themeUI: "light",
+ backgroundUI: "light",
+ numPages: 6,
+ currentPage: 0,
+ callback: () => {},
+ className: "w-full",
+ label: "Label:",
+ },
+ render: function Render(args) {
+ const [currentPage, setCurrentPage] = useState(1);
+
+ return (
+
+ );
+ },
+};
+
+export const CompactPaginationWithCloseCallback: Story = {
+ args: {
+ themeUI: "light",
+ backgroundUI: "light",
+ numPages: 6,
+ currentPage: 0,
+ callback: () => {},
+ className: "w-full",
+ label: "Shows close button in end.",
+ },
+ render: function Render(args) {
+ const [currentPage, setCurrentPage] = useState(1);
+
+ return (
+ {}}
+ />
+ );
+ },
+};
diff --git a/src/stories/standardPagination.stories.tsx b/src/stories/standardPagination.stories.tsx
new file mode 100644
index 0000000..c91f1da
--- /dev/null
+++ b/src/stories/standardPagination.stories.tsx
@@ -0,0 +1,57 @@
+import type { Meta, StoryObj } from "@storybook/react";
+
+import { IPreviewArgs } from "./utils";
+
+import Pagination from "../lib/pagination/standard";
+import React, { useState } from "react";
+
+const meta = {
+ component: Pagination,
+ title: "Pagination/Standard Pagination",
+ tags: ["autodocs"],
+ argTypes: {
+ numPages: {
+ control: "number",
+ },
+ currentPage: {
+ control: "number",
+ },
+ className: {
+ control: "text",
+ },
+ disableNumbers: {
+ control: "boolean",
+ },
+ hideNumbers: {
+ control: "boolean",
+ },
+ },
+} satisfies Meta;
+
+export default meta;
+
+type Story = StoryObj & IPreviewArgs;
+
+export const StandardPagination: Story = {
+ args: {
+ themeUI: "light",
+ backgroundUI: "light",
+ numPages: 6,
+ currentPage: 0,
+ callback: () => {},
+ className: "w-full",
+ disableNumbers: false,
+ hideNumbers: false,
+ },
+ render: function Render(args) {
+ const [currentPage, setCurrentPage] = useState(1);
+
+ return (
+
+ );
+ },
+};
diff --git a/src/stories/tabs.stories.tsx b/src/stories/tabs.stories.tsx
new file mode 100644
index 0000000..3661310
--- /dev/null
+++ b/src/stories/tabs.stories.tsx
@@ -0,0 +1,44 @@
+import type { Meta, StoryObj } from "@storybook/react";
+import React from "react";
+import { IPreviewArgs } from "./utils";
+
+import TabsComponent from "../lib/pagination/tabs";
+import Telegram from "../assets/svgs/telegram.svg";
+
+const meta = {
+ component: TabsComponent,
+ title: "Pagination/Tabs",
+ tags: ["autodocs"],
+ argTypes: {},
+} satisfies Meta;
+
+export default meta;
+
+type Story = StoryObj & IPreviewArgs;
+
+export const Tabs: Story = {
+ args: {
+ themeUI: "light",
+ backgroundUI: "light",
+ className: "w-[500px]",
+ defaultSelectedKey: "discord",
+ panelClassName: "bg-klerosUIComponentsLightBlue p-4",
+ items: [
+ { text: "Discord", value: 0, id: "discord", content: Discord
},
+ {
+ text: "Telegram",
+ value: 1,
+ Icon: Telegram,
+ id: "telegram",
+ content: Telegram
,
+ },
+ {
+ text: "Disabled",
+ value: 2,
+ disabled: true,
+ id: "disabled",
+ content: Disabled
,
+ },
+ ],
+ },
+};
From 481217ff73e5367849fd6178ac68bb98fe07e506 Mon Sep 17 00:00:00 2001
From: Harman-singh-waraich
Date: Fri, 21 Mar 2025 15:59:12 +0530
Subject: [PATCH 4/4] chore: address-feedback
---
src/lib/pagination/compact.tsx | 15 ++++++++++-----
src/lib/pagination/standard.tsx | 2 +-
src/lib/pagination/tabs.tsx | 9 +++++----
3 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/src/lib/pagination/compact.tsx b/src/lib/pagination/compact.tsx
index f2bb552..1db5e77 100644
--- a/src/lib/pagination/compact.tsx
+++ b/src/lib/pagination/compact.tsx
@@ -6,21 +6,26 @@ import { cn } from "../../utils";
import { Button, type ButtonProps } from "react-aria-components";
import clsx from "clsx";
-const ArrowButton: React.FC = ({ className, ...props }) => {
+const ArrowButton: React.FC = ({
+ children,
+ isDisabled,
+ className,
+ ...props
+}) => {
return (
);
};
diff --git a/src/lib/pagination/standard.tsx b/src/lib/pagination/standard.tsx
index fd68a03..efcc67d 100644
--- a/src/lib/pagination/standard.tsx
+++ b/src/lib/pagination/standard.tsx
@@ -14,7 +14,7 @@ const PageButton: React.FC = ({