e.stopPropagation()}>
-
+
{author &&
}
diff --git a/packages/app/src/Element/Timeline.tsx b/packages/app/src/Element/Timeline.tsx
index 5628258..21c1961 100644
--- a/packages/app/src/Element/Timeline.tsx
+++ b/packages/app/src/Element/Timeline.tsx
@@ -3,7 +3,7 @@ import { FormattedMessage } from "react-intl";
import { useCallback, useEffect, useMemo } from "react";
import { useInView } from "react-intersection-observer";
-import ArrowUp from "Icons/ArrowUp";
+import Icon from "Icons/Icon";
import { dedupeById, dedupeByPubkey, tagFilterOfTextRepost } from "Util";
import ProfileImage from "Element/ProfileImage";
import useTimelineFeed, { TimelineSubject } from "Feed/TimelineFeed";
@@ -127,7 +127,7 @@ export default function Timeline({
defaultMessage="{n} new {n, plural, =1 {note} other {notes}}"
values={{ n: latestFeed.length }}
/>
-
+
{!inView && (
onShowLatest(true)}>
@@ -138,7 +138,7 @@ export default function Timeline({
defaultMessage="{n} new {n, plural, =1 {note} other {notes}}"
values={{ n: latestFeed.length }}
/>
-
+
)}
>
diff --git a/packages/app/src/Icons/ArrowBack.tsx b/packages/app/src/Icons/ArrowBack.tsx
deleted file mode 100644
index bcdfb9a..0000000
--- a/packages/app/src/Icons/ArrowBack.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const ArrowBack = () => {
- return (
-
- );
-};
-
-export default ArrowBack;
diff --git a/packages/app/src/Icons/ArrowFront.tsx b/packages/app/src/Icons/ArrowFront.tsx
deleted file mode 100644
index 0b5f5b7..0000000
--- a/packages/app/src/Icons/ArrowFront.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-const ArrowFront = () => {
- return (
-
- );
-};
-
-export default ArrowFront;
diff --git a/packages/app/src/Icons/ArrowUp.tsx b/packages/app/src/Icons/ArrowUp.tsx
deleted file mode 100644
index eef554b..0000000
--- a/packages/app/src/Icons/ArrowUp.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const ArrowUp = () => {
- return (
-
- );
-};
-
-export default ArrowUp;
diff --git a/packages/app/src/Icons/Attachment.tsx b/packages/app/src/Icons/Attachment.tsx
deleted file mode 100644
index f670769..0000000
--- a/packages/app/src/Icons/Attachment.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const Attachment = () => {
- return (
-
- );
-};
-
-export default Attachment;
diff --git a/packages/app/src/Icons/Badge.tsx b/packages/app/src/Icons/Badge.tsx
deleted file mode 100644
index 1a44d48..0000000
--- a/packages/app/src/Icons/Badge.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Badge = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Badge;
diff --git a/packages/app/src/Icons/Bell.tsx b/packages/app/src/Icons/Bell.tsx
deleted file mode 100644
index 189aa60..0000000
--- a/packages/app/src/Icons/Bell.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const Bell = () => {
- return (
-
- );
-};
-
-export default Bell;
diff --git a/packages/app/src/Icons/Block.tsx b/packages/app/src/Icons/Block.tsx
deleted file mode 100644
index 0e97a0a..0000000
--- a/packages/app/src/Icons/Block.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const Block = () => {
- return (
-
- );
-};
-
-export default Block;
diff --git a/packages/app/src/Icons/Bookmark.tsx b/packages/app/src/Icons/Bookmark.tsx
deleted file mode 100644
index 121f417..0000000
--- a/packages/app/src/Icons/Bookmark.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Bookmark = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Bookmark;
diff --git a/packages/app/src/Icons/Check.tsx b/packages/app/src/Icons/Check.tsx
deleted file mode 100644
index 75881f0..0000000
--- a/packages/app/src/Icons/Check.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import IconProps from "./IconProps";
-
-const Check = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Check;
diff --git a/packages/app/src/Icons/ChevronDown.tsx b/packages/app/src/Icons/ChevronDown.tsx
deleted file mode 100644
index 00799af..0000000
--- a/packages/app/src/Icons/ChevronDown.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-const ChevronDown = () => {
- return (
-
- );
-};
-
-export default ChevronDown;
diff --git a/packages/app/src/Icons/Close.tsx b/packages/app/src/Icons/Close.tsx
deleted file mode 100644
index c306ff1..0000000
--- a/packages/app/src/Icons/Close.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Close = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Close;
diff --git a/packages/app/src/Icons/Copy.tsx b/packages/app/src/Icons/Copy.tsx
deleted file mode 100644
index 131c061..0000000
--- a/packages/app/src/Icons/Copy.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Copy = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Copy;
diff --git a/packages/app/src/Icons/Dislike.tsx b/packages/app/src/Icons/Dislike.tsx
deleted file mode 100644
index 1396487..0000000
--- a/packages/app/src/Icons/Dislike.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Dislike = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Dislike;
diff --git a/packages/app/src/Icons/Dots.tsx b/packages/app/src/Icons/Dots.tsx
deleted file mode 100644
index b49e411..0000000
--- a/packages/app/src/Icons/Dots.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-const Dots = () => {
- return (
-
- );
-};
-
-export default Dots;
diff --git a/packages/app/src/Icons/Envelope.tsx b/packages/app/src/Icons/Envelope.tsx
deleted file mode 100644
index 06c1a3b..0000000
--- a/packages/app/src/Icons/Envelope.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import type IconProps from "./IconProps";
-
-const Envelope = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Envelope;
diff --git a/packages/app/src/Icons/Gear.tsx b/packages/app/src/Icons/Gear.tsx
deleted file mode 100644
index f12950f..0000000
--- a/packages/app/src/Icons/Gear.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import IconProps from "./IconProps";
-
-const Gear = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Gear;
diff --git a/packages/app/src/Icons/Heart.tsx b/packages/app/src/Icons/Heart.tsx
deleted file mode 100644
index 8436d70..0000000
--- a/packages/app/src/Icons/Heart.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import IconProps from "./IconProps";
-
-const Heart = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Heart;
diff --git a/packages/app/src/Icons/Icon.tsx b/packages/app/src/Icons/Icon.tsx
new file mode 100644
index 0000000..6feeb89
--- /dev/null
+++ b/packages/app/src/Icons/Icon.tsx
@@ -0,0 +1,18 @@
+type Props = {
+ name: string;
+ size?: number;
+ className?: string;
+}
+
+const Icon = (props: Props) => {
+ const size = props.size || 16;
+ const href = 'icons.svg#' + props.name;
+
+ return (
+
+ );
+};
+
+export default Icon;
diff --git a/packages/app/src/Icons/Index.css b/packages/app/src/Icons/Index.css
deleted file mode 100644
index 0ae8461..0000000
--- a/packages/app/src/Icons/Index.css
+++ /dev/null
@@ -1,12 +0,0 @@
-.settings-nav .card {
- font-weight: 600;
- font-size: 16px;
- line-height: 19px;
-}
-
-.settings-row {
- padding: 12px 16px;
- display: flex;
- flex-direction: row;
- align-items: center;
-}
diff --git a/packages/app/src/Icons/Json.tsx b/packages/app/src/Icons/Json.tsx
deleted file mode 100644
index 5b3f534..0000000
--- a/packages/app/src/Icons/Json.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const Json = () => {
- return (
-
- );
-};
-
-export default Json;
diff --git a/packages/app/src/Icons/Link.tsx b/packages/app/src/Icons/Link.tsx
deleted file mode 100644
index dc7634d..0000000
--- a/packages/app/src/Icons/Link.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const Link = () => {
- return (
-
- );
-};
-
-export default Link;
diff --git a/packages/app/src/Icons/Logout.tsx b/packages/app/src/Icons/Logout.tsx
deleted file mode 100644
index 73f2951..0000000
--- a/packages/app/src/Icons/Logout.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const Logout = () => {
- return (
-
- );
-};
-
-export default Logout;
diff --git a/packages/app/src/Icons/Mute.tsx b/packages/app/src/Icons/Mute.tsx
deleted file mode 100644
index ca8c171..0000000
--- a/packages/app/src/Icons/Mute.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const Mute = () => {
- return (
-
- );
-};
-
-export default Mute;
diff --git a/packages/app/src/Icons/Pin.tsx b/packages/app/src/Icons/Pin.tsx
deleted file mode 100644
index 3f3af48..0000000
--- a/packages/app/src/Icons/Pin.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-const Pin = () => {
- return (
-
- );
-};
-
-export default Pin;
diff --git a/packages/app/src/Icons/Plus.tsx b/packages/app/src/Icons/Plus.tsx
deleted file mode 100644
index 4ed4ac1..0000000
--- a/packages/app/src/Icons/Plus.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-const Plus = () => {
- return (
-
- );
-};
-
-export default Plus;
diff --git a/packages/app/src/Icons/Profile.tsx b/packages/app/src/Icons/Profile.tsx
deleted file mode 100644
index 2a96462..0000000
--- a/packages/app/src/Icons/Profile.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Profile = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Profile;
diff --git a/packages/app/src/Icons/Qr.tsx b/packages/app/src/Icons/Qr.tsx
deleted file mode 100644
index ab0d2e1..0000000
--- a/packages/app/src/Icons/Qr.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Qr = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Qr;
diff --git a/packages/app/src/Icons/Read.tsx b/packages/app/src/Icons/Read.tsx
deleted file mode 100644
index e19a66b..0000000
--- a/packages/app/src/Icons/Read.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Read = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Read;
diff --git a/packages/app/src/Icons/Relay.tsx b/packages/app/src/Icons/Relay.tsx
deleted file mode 100644
index d49ae92..0000000
--- a/packages/app/src/Icons/Relay.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Relay = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Relay;
diff --git a/packages/app/src/Icons/Reply.tsx b/packages/app/src/Icons/Reply.tsx
deleted file mode 100644
index 19b9530..0000000
--- a/packages/app/src/Icons/Reply.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const Reply = () => {
- return (
-
- );
-};
-
-export default Reply;
diff --git a/packages/app/src/Icons/Repost.tsx b/packages/app/src/Icons/Repost.tsx
deleted file mode 100644
index f6b6e6f..0000000
--- a/packages/app/src/Icons/Repost.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Repost = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Repost;
diff --git a/packages/app/src/Icons/Search.tsx b/packages/app/src/Icons/Search.tsx
deleted file mode 100644
index 2bd6961..0000000
--- a/packages/app/src/Icons/Search.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const Search = () => {
- return (
-
- );
-};
-
-export default Search;
diff --git a/packages/app/src/Icons/Share.tsx b/packages/app/src/Icons/Share.tsx
deleted file mode 100644
index f2058c5..0000000
--- a/packages/app/src/Icons/Share.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const Share = () => {
- return (
-
- );
-};
-
-export default Share;
diff --git a/packages/app/src/Icons/Translate.tsx b/packages/app/src/Icons/Translate.tsx
deleted file mode 100644
index 23614a8..0000000
--- a/packages/app/src/Icons/Translate.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-const Translate = () => {
- return (
-
- );
-};
-
-export default Translate;
diff --git a/packages/app/src/Icons/Trash.tsx b/packages/app/src/Icons/Trash.tsx
deleted file mode 100644
index 7a3c09a..0000000
--- a/packages/app/src/Icons/Trash.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Trash = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Trash;
diff --git a/packages/app/src/Icons/Write.tsx b/packages/app/src/Icons/Write.tsx
deleted file mode 100644
index 9c016e5..0000000
--- a/packages/app/src/Icons/Write.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const Write = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Write;
diff --git a/packages/app/src/Icons/Zap.tsx b/packages/app/src/Icons/Zap.tsx
deleted file mode 100644
index dcf1e8f..0000000
--- a/packages/app/src/Icons/Zap.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import type IconProps from "./IconProps";
-
-const Zap = (props: IconProps) => {
- return (
-
- );
-};
-
-export default Zap;
diff --git a/packages/app/src/Icons/ZapCircle.tsx b/packages/app/src/Icons/ZapCircle.tsx
deleted file mode 100644
index 31dd5e7..0000000
--- a/packages/app/src/Icons/ZapCircle.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import type IconProps from "./IconProps";
-
-const ZapCircle = (props: IconProps) => {
- return (
-
- );
-};
-
-export default ZapCircle;
diff --git a/packages/app/src/Icons/ZapFast.tsx b/packages/app/src/Icons/ZapFast.tsx
deleted file mode 100644
index d507ce4..0000000
--- a/packages/app/src/Icons/ZapFast.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import IconProps from "./IconProps";
-
-const ZapFast = (props: IconProps) => {
- return (
-
- );
-};
-
-export default ZapFast;
diff --git a/packages/app/src/Pages/Layout.tsx b/packages/app/src/Pages/Layout.tsx
index f30033c..8da8acb 100644
--- a/packages/app/src/Pages/Layout.tsx
+++ b/packages/app/src/Pages/Layout.tsx
@@ -4,9 +4,7 @@ import { useDispatch, useSelector } from "react-redux";
import { Outlet, useLocation, useNavigate } from "react-router-dom";
import { randomSample } from "Util";
-import Envelope from "Icons/Envelope";
-import Bell from "Icons/Bell";
-import Search from "Icons/Search";
+import Icon from "Icons/Icon";
import { RootState } from "State/Store";
import { init, setRelays } from "State/Login";
import { System } from "System";
@@ -19,7 +17,6 @@ import useModeration from "Hooks/useModeration";
import { IndexedUDB } from "State/Users/Db";
import { bech32ToHex } from "Util";
import { NoteCreator } from "Element/NoteCreator";
-import Plus from "Icons/Plus";
import { RelaySettings } from "@snort/nostr";
import { FormattedMessage } from "react-intl";
import messages from "./messages";
@@ -198,14 +195,14 @@ export default function Layout() {
return (
navigate("/search")}>
-
+
navigate("/messages")}>
-
+
{unreadDms > 0 && }
-
+
{hasNotifications && }
@@ -239,7 +236,7 @@ export default function Layout() {
{!shouldHideNoteCreator && (
<>
>
diff --git a/packages/app/src/Pages/ProfilePage.tsx b/packages/app/src/Pages/ProfilePage.tsx
index 6989e91..239f3fb 100644
--- a/packages/app/src/Pages/ProfilePage.tsx
+++ b/packages/app/src/Pages/ProfilePage.tsx
@@ -11,10 +11,7 @@ import Note from "Element/Note";
import Bookmarks from "Element/Bookmarks";
import RelaysMetadata from "Element/RelaysMetadata";
import { Tab, TabElement } from "Element/Tabs";
-import Link from "Icons/Link";
-import Qr from "Icons/Qr";
-import Zap from "Icons/Zap";
-import Envelope from "Icons/Envelope";
+import Icon from "Icons/Icon";
import useMutedFeed from "Feed/MuteList";
import useRelaysFeed from "Feed/RelaysFeed";
import usePinnedFeed from "Feed/PinnedFeed";
@@ -142,7 +139,7 @@ export default function ProfilePage() {
{user?.website && (