From a11eeef698b51d069d11e3c86340d4cabb5cacee Mon Sep 17 00:00:00 2001 From: verbiricha Date: Wed, 2 Aug 2023 09:31:45 +0200 Subject: [PATCH] feat: display media URLs on click --- src/element/collapsible.css | 20 +++++++++++++++++++ src/element/collapsible.tsx | 32 +++++++++++++++++++++++++++++++ src/element/hypertext.tsx | 25 +++++++++++++++++------- src/element/markdown.css | 6 ++++++ src/element/markdown.tsx | 3 +++ src/element/profile.tsx | 5 ++++- src/element/text.css | 7 +++++++ src/element/text.tsx | 8 +++++++- src/hooks/placeholders.ts | 9 +++++++++ src/index.css | 7 +++++++ src/pages/profile-page.css | 38 ++++++++++++++++++++++++------------- src/pages/profile-page.tsx | 16 ++++++++++++---- 12 files changed, 150 insertions(+), 26 deletions(-) create mode 100644 src/element/collapsible.css create mode 100644 src/element/collapsible.tsx create mode 100644 src/hooks/placeholders.ts diff --git a/src/element/collapsible.css b/src/element/collapsible.css new file mode 100644 index 0000000..3c8fddc --- /dev/null +++ b/src/element/collapsible.css @@ -0,0 +1,20 @@ +.collapsible-media { + display: flex; + flex-direction: column; + gap: 12px; +} + +.collapsible-media a { + color: var(--text-link); + word-wrap: break-word; +} + +.collapsible-media img, +.collapsible-media video { + width: 100%; +} + +.url-preview { + color: var(--text-link); + cursor: zoom-in; +} diff --git a/src/element/collapsible.tsx b/src/element/collapsible.tsx new file mode 100644 index 0000000..c7b90b1 --- /dev/null +++ b/src/element/collapsible.tsx @@ -0,0 +1,32 @@ +import "./collapsible.css"; +import * as Dialog from "@radix-ui/react-dialog"; +import type { ReactNode } from "react"; +import { ExternalLink } from "element/external-link"; + +interface MediaURLProps { + url: URL; + children: ReactNode; +} + +export function MediaURL({ url, children }: MediaURLProps) { + const preview = {url.toString()}; + return ( + + {preview} + + + +
+ {url.toString()} + {children} +
+ + + +
+
+
+ ); +} diff --git a/src/element/hypertext.tsx b/src/element/hypertext.tsx index 34293eb..d65be95 100644 --- a/src/element/hypertext.tsx +++ b/src/element/hypertext.tsx @@ -1,5 +1,6 @@ import type { ReactNode } from "react"; import { NostrLink } from "element/nostr-link"; +import { MediaURL } from "element/collapsible"; const FileExtensionRegex = /\.([\w]+)$/i; @@ -23,17 +24,23 @@ export function HyperText({ link, children }: HyperTextProps) { case "bmp": case "webp": { return ( - {url.toString()} + + {url.toString()} + ); } case "wav": case "mp3": case "ogg": { - return