diff --git a/packages/webamp/demo/images/icons/internet-folder-32x32.png b/packages/webamp/demo/images/icons/internet-folder-32x32.png
new file mode 100644
index 00000000..c9aac1f6
Binary files /dev/null and b/packages/webamp/demo/images/icons/internet-folder-32x32.png differ
diff --git a/packages/webamp/demo/js/DemoDesktop.tsx b/packages/webamp/demo/js/DemoDesktop.tsx
index ee5b4b23..4ce435cd 100644
--- a/packages/webamp/demo/js/DemoDesktop.tsx
+++ b/packages/webamp/demo/js/DemoDesktop.tsx
@@ -6,6 +6,8 @@ import SkinIcon from "./SkinIcon";
import { /* defaultInitialTracks, */ SHOW_DESKTOP_ICONS } from "./config";
import { useWindowSize } from "../../js/hooks";
import avaliableSkins from "./avaliableSkins";
+import DesktopLinkIcon from "./DesktopLinkIcon";
+import museumIcon from "../images/icons/internet-folder-32x32.png";
// import MilkIcon from "./MilkIcon";
interface Props {
@@ -34,7 +36,7 @@ const DemoDesktop = ({ webamp }: Props) => {
*/
...avaliableSkins.map((skin) => {
return ;
- })
+ }),
/*
{
name: "105",
}}
/>
- */
+ */
);
}
return (
diff --git a/packages/webamp/demo/js/DesktopLinkIcon.tsx b/packages/webamp/demo/js/DesktopLinkIcon.tsx
new file mode 100644
index 00000000..7f88d95a
--- /dev/null
+++ b/packages/webamp/demo/js/DesktopLinkIcon.tsx
@@ -0,0 +1,52 @@
+import React, { useEffect, useState, useRef } from "react";
+import classnames from "classnames";
+
+interface Props {
+ iconUrl: string;
+ name: string;
+ href: string;
+}
+
+const DesktopLinkIcon = ({ iconUrl, href, name }: Props) => {
+ const ref = useRef(null);
+ const [selected, setSelected] = useState(false);
+
+ useEffect(() => {
+ if (!selected) {
+ return;
+ }
+ const handleClick = (e: MouseEvent) => {
+ if (ref.current != null && ref.current.contains(e.target as Element)) {
+ return;
+ }
+ setSelected(false);
+ };
+ document.addEventListener("click", handleClick);
+ return () => document.removeEventListener("click", handleClick);
+ }, [selected]);
+
+ return (
+ {
+ setSelected(false);
+ }}
+ onClick={(e) => {
+ if (!selected) {
+ e.preventDefault();
+ }
+ setSelected(true);
+ }}
+ className={classnames("desktop-icon", { selected })}
+ >
+
+ {name}
+
+ );
+};
+
+export default DesktopLinkIcon;