diff --git a/apps/landing/src/app/page.tsx b/apps/landing/src/app/page.tsx index 1c4bdc38f..2df3c3757 100644 --- a/apps/landing/src/app/page.tsx +++ b/apps/landing/src/app/page.tsx @@ -6,6 +6,7 @@ import { getLatestRelease, getReleaseFrontmatter, githubFetch } from './api/gith import { Background } from './Background'; import { Downloads } from './Downloads'; import { NewBanner } from './NewBanner'; +import { ArrowUp } from '@phosphor-icons/react/dist/ssr'; export const metadata = { title: 'Spacedrive — A file manager from the future.', @@ -77,34 +78,38 @@ export default async function Page() { src="/images/app/gradient.webp" />
-
- - l +
+
+ + l +
+ +

Hover on the image above to see how the app works!

diff --git a/apps/landing/src/components/mdx/Pre.tsx b/apps/landing/src/components/mdx/Pre.tsx new file mode 100644 index 000000000..bd4bf7ed6 --- /dev/null +++ b/apps/landing/src/components/mdx/Pre.tsx @@ -0,0 +1,37 @@ +"use client"; +import { Check } from '@phosphor-icons/react'; +import { Copy } from '@phosphor-icons/react/dist/ssr'; +import { useState, useRef, FC } from 'react' + +const Pre: FC<{ children: React.ReactNode }> = ({ children }) => { + const textInput = useRef(null) + const [copied, setCopied] = useState(false) + + const onCopy = () => { + setCopied(true) + navigator.clipboard.writeText(textInput.current!.textContent ?? '') + setTimeout(() => { + setCopied(false) + }, 2000) + } + + return ( +
+ +
{children}
+
+ ) +} + +export default Pre diff --git a/apps/landing/src/components/mdx/index.tsx b/apps/landing/src/components/mdx/index.tsx index d908f42b9..3030a0249 100644 --- a/apps/landing/src/components/mdx/index.tsx +++ b/apps/landing/src/components/mdx/index.tsx @@ -4,6 +4,7 @@ import { env } from '~/env'; import Notice from './Notice'; import Video from './Video'; +import Pre from './Pre'; const Image = (props: ImageProps) => ( ( export const BlogMDXComponents = { img: Image, // we remap 'img' to 'Image' + pre: Pre, Image, Video } as MDXComponents; -export const DocMDXComponents = { img: Image, Image, Notice, Video } as MDXComponents; +export const DocMDXComponents = { img: Image, Image, Notice, Video, pre: Pre } as MDXComponents; diff --git a/apps/landing/src/styles/prism.css b/apps/landing/src/styles/prism.css index b8457e47e..71e45de76 100644 --- a/apps/landing/src/styles/prism.css +++ b/apps/landing/src/styles/prism.css @@ -74,6 +74,13 @@ pre[class*='language-'] { border-radius: 0.3em; } +pre.language-container { + padding: 1.1em; + margin: 0.5em 0; + overflow: auto; + border-radius: 0.3em; +} + /* Inline code */ :not(pre) > code[class*='language-'] { padding: 0.2em 0.3em;