diff --git a/src/components/widget.jsx b/src/components/widget.jsx index 72032b44..dc5bee1b 100644 --- a/src/components/widget.jsx +++ b/src/components/widget.jsx @@ -1,12 +1,14 @@ import WeatherApi from "components/widgets/weather/weather"; import OpenWeatherMap from "components/widgets/openweathermap/weather"; import Resources from "components/widgets/resources/resources"; +import Search from "components/widgets/search/search"; const widgetMappings = { weather: WeatherApi, // This key will be deprecated in the future weatherapi: WeatherApi, openweathermap: OpenWeatherMap, resources: Resources, + search: Search, }; export default function Widget({ widget }) { diff --git a/src/components/widgets/search/search.jsx b/src/components/widgets/search/search.jsx new file mode 100644 index 00000000..752c4166 --- /dev/null +++ b/src/components/widgets/search/search.jsx @@ -0,0 +1,73 @@ +import { useEffect, useState } from "react"; +import { FiSearch } from "react-icons/fi"; +import { FcGoogle } from "react-icons/fc"; +import { SiDuckduckgo } from "react-icons/si"; +import { SiMicrosoftbing } from "react-icons/si"; + +export default function Search({ options, classN }) { + const providers = ["google", "bing", "duckduckgo", "custom"]; + const targets = ["_blank", "_parent", "_top"]; + + const [query, setQuery] = useState(""); + + function search() { + if (!providers.includes(options.provider)) { + return; + } else { + if (options.provider === "custom") { + if (targets.includes(options.target)) { + window.open(options.customdata.url + query, options.target); + } else window.open(options.customdata.url + query, "_self"); + } else { + if (targets.includes(options.target)) { + window.open(`https://www.${options.provider}.com/search?q=` + query, `${options.target}`); + } else window.open(`https://www.${options.provider}.com/search?q=` + query, "_self"); + } + } + + setQuery(""); + } + + if (!options || (options.provider === "custom" && !options.customdata)) { + return <>>; + } + + return ( +
+ ); +} diff --git a/src/components/widgets/weather/weather.jsx b/src/components/widgets/weather/weather.jsx index 72565872..f1c2d901 100644 --- a/src/components/widgets/weather/weather.jsx +++ b/src/components/widgets/weather/weather.jsx @@ -33,7 +33,7 @@ export default function WeatherApi({ options }) { } return ( -