From e6a6e115176cb2b613f7c081d298e218f676715d Mon Sep 17 00:00:00 2001 From: Florian Herrengt Date: Fri, 4 Aug 2023 18:19:15 +0100 Subject: [PATCH] use webflow icons for the dropdown (#1) --- src/components/Dropdown/Dropdown.tsx | 11 +++++-- src/components/Icon/Icon.tsx | 45 ++++++++++++++++++++++++++++ src/components/Icon/index.ts | 1 + src/components/index.tsx | 1 + 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 src/components/Icon/Icon.tsx create mode 100644 src/components/Icon/index.ts diff --git a/src/components/Dropdown/Dropdown.tsx b/src/components/Dropdown/Dropdown.tsx index f007198..e7e4674 100644 --- a/src/components/Dropdown/Dropdown.tsx +++ b/src/components/Dropdown/Dropdown.tsx @@ -1,5 +1,6 @@ import React, { useEffect, useRef, useState } from "react"; import { theme } from "../../theme"; +import { Icon } from "../Icon"; export interface DropdownProps { onChange: (value: string) => void; @@ -19,7 +20,7 @@ const DropdownOptions: React.FC = (props) => { }} >
- {props.selected === value ? "X" : ""} + {props.selected === value ? : ""}
{label}
@@ -79,7 +80,13 @@ export const Dropdown: React.FC = (props) => { gap: 2, }} > - {props.options.find(({ value }) => selected === value)!.label} + + {props.options.find(({ value }) => selected === value)!.label} + + {isOpen && ( + + + ), + "chevron-down": ( + + + + ), +}; + +export const Icon = (props: { + name: keyof typeof icons; + styles?: CSSProperties; +}) => ( + {icons[props.name]} +); diff --git a/src/components/Icon/index.ts b/src/components/Icon/index.ts new file mode 100644 index 0000000..998237c --- /dev/null +++ b/src/components/Icon/index.ts @@ -0,0 +1 @@ +export * from "./Icon"; diff --git a/src/components/index.tsx b/src/components/index.tsx index b0534c5..f7412a5 100644 --- a/src/components/index.tsx +++ b/src/components/index.tsx @@ -1,3 +1,4 @@ export * from "./Button"; export * from "./Chart"; export * from "./Dropdown"; +export * from "./Icon";