diff --git a/js/react/lib/components/badge/badge.component.tsx b/js/react/lib/components/badge/badge.component.tsx index 85dd494..60da204 100644 --- a/js/react/lib/components/badge/badge.component.tsx +++ b/js/react/lib/components/badge/badge.component.tsx @@ -20,7 +20,7 @@ export const Badge = withAs( void; +}; + +export const DropdownState = ({ value, onChange }: DropdownStateProps) => { + const [open, setOpen] = useState(false); + + const handleOpen = () => setOpen(status => !status); + + const handleSelect = (val: BadgeVariants) => { + onChange(val); + setOpen(false); + }; + + const Icon = open ? ArrowUp : ArrowDown; + + return ( +
+ +
+ {open && ( +
    + {DROPDOWN_OPTIONS.map(opt => ( +
  • handleSelect(opt.value)} + > + +
  • + ))} +
+ )} +
+
+ ); +}; diff --git a/js/react/lib/components/dropdown/dropdown.const.ts b/js/react/lib/components/dropdown/dropdown.const.ts new file mode 100644 index 0000000..a55e1bd --- /dev/null +++ b/js/react/lib/components/dropdown/dropdown.const.ts @@ -0,0 +1,32 @@ +import { BadgeVariants } from "../badge/badge.const"; + +export const DROPDOWN_STATUS_VARIANTS = { + completed: [ + "bg-success-100 text-success-600 [&>div]:bg-success-600", + "dark:bg-success-900 dark:text-success-400 dark:[&>div]:bg-success-400", + ], + reading: [ + "bg-warning-100 text-warning-500 [&>div]:bg-warning-500", + "dark:bg-warning-950 dark:text-warning-300 [&>div]:bg-warning-300", + ], + pending: [ + "bg-error-100 text-error-600 [&>div]:bg-error-600", + "dark:bg-error-950 dark:text-error-300 [&>div]:bg-error-300", + ], + unread: [ + "bg-neutral-100 text-neutral-500 [&>div]:bg-neutral-500", + "dark:bg-neutral-950 dark:text-neutral-300 [&>div]:bg-neutral-300", + ], +}; + +export type Option = { + label: string; + value: BadgeVariants; +}; + +export const DROPDOWN_OPTIONS: Array