diff --git a/dashboard/src/components/FilterButton/FilterButton.stories.tsx b/dashboard/src/components/FilterButton/FilterButton.stories.tsx new file mode 100644 index 0000000..c96bb86 --- /dev/null +++ b/dashboard/src/components/FilterButton/FilterButton.stories.tsx @@ -0,0 +1,28 @@ +import type { Meta, StoryObj } from '@storybook/react'; + +import FilterButton from './FilterButton'; + +const meta = { + title: 'FilterButton', + component: FilterButton, + parameters: { + layout: 'centered', + }, + tags: ['autodocs'], +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + text: 'linux-5.15.y', + }, +}; + +export const Primary: Story = { + args: { + text: 'linux-5.15.y', + variant: 'primary', + }, +}; diff --git a/dashboard/src/components/FilterButton/FilterButton.tsx b/dashboard/src/components/FilterButton/FilterButton.tsx new file mode 100644 index 0000000..369d078 --- /dev/null +++ b/dashboard/src/components/FilterButton/FilterButton.tsx @@ -0,0 +1,42 @@ +import { IoClose } from 'react-icons/io5'; +import classNames from 'classnames'; + +import { Button } from '../ui/button'; + +export interface IFilterButton + extends React.ButtonHTMLAttributes { + text: string; + variant?: 'primary' | 'secondary'; +} + +const baseContainerClassNames = + 'h-10 pl-4 pr-2 rounded-md text-sm flex items-center'; +const baseButtonClassNames = 'ml-2 p-0 h-6 w-6 bg-darkGray hover:bg-yellow'; +const primaryClassNames = 'bg-lightBlue text-white'; +const secondaryClassNames = 'bg-darkGray text-black'; + +const FilterButton = ({ + text, + variant = 'secondary', + ...props +}: IFilterButton): JSX.Element => { + const containerClassNames = classNames( + baseContainerClassNames, + variant === 'primary' ? primaryClassNames : secondaryClassNames, + ); + const buttonClassNames = classNames( + baseButtonClassNames, + variant === 'primary' ? primaryClassNames : secondaryClassNames, + ); + + return ( +
+ {text} + +
+ ); +}; + +export default FilterButton;