From 52b522da29a224c713f4c5c659f1b258d6a9dd01 Mon Sep 17 00:00:00 2001 From: Darius Cepulis Date: Fri, 31 Oct 2025 12:32:49 -0700 Subject: [PATCH] feat(site): film grain (#150) --- site/src/components/FilmGrain/FilmGrain.tsx | 29 +++++++++++++++++++++ site/src/components/FilmGrain/index.ts | 1 + site/src/components/FilmGrain/texture.svg | 7 +++++ site/src/components/NavBar/MobileNav.tsx | 10 ++++--- site/src/components/NavBar/NavBar.astro | 9 ++++--- site/src/components/docs/DocsSidebar.astro | 17 ++++++++---- site/src/layouts/Base.astro | 16 +++++++++--- site/src/layouts/Docs.astro | 4 ++- 8 files changed, 77 insertions(+), 16 deletions(-) create mode 100644 site/src/components/FilmGrain/FilmGrain.tsx create mode 100644 site/src/components/FilmGrain/index.ts create mode 100644 site/src/components/FilmGrain/texture.svg diff --git a/site/src/components/FilmGrain/FilmGrain.tsx b/site/src/components/FilmGrain/FilmGrain.tsx new file mode 100644 index 00000000..9180f3ac --- /dev/null +++ b/site/src/components/FilmGrain/FilmGrain.tsx @@ -0,0 +1,29 @@ +import clsx from 'clsx'; +import { twMerge } from 'tailwind-merge'; +import texture from './texture.svg?raw'; + +const textureUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(texture)}`; + +interface Props { + currentPath: string; + className?: string; +} + +export default function FilmGrain({ currentPath, className }: Props) { + return ( +
+ ); +} diff --git a/site/src/components/FilmGrain/index.ts b/site/src/components/FilmGrain/index.ts new file mode 100644 index 00000000..1db5951d --- /dev/null +++ b/site/src/components/FilmGrain/index.ts @@ -0,0 +1 @@ +export { default } from './FilmGrain'; diff --git a/site/src/components/FilmGrain/texture.svg b/site/src/components/FilmGrain/texture.svg new file mode 100644 index 00000000..902c0f53 --- /dev/null +++ b/site/src/components/FilmGrain/texture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/site/src/components/NavBar/MobileNav.tsx b/site/src/components/NavBar/MobileNav.tsx index 08b9c022..44d2da29 100644 --- a/site/src/components/NavBar/MobileNav.tsx +++ b/site/src/components/NavBar/MobileNav.tsx @@ -2,6 +2,7 @@ import { Dialog } from '@base-ui-components/react/dialog'; import clsx from 'clsx'; import { ArrowUpRight, Menu, X } from 'lucide-react'; import { DISCORD_INVITE_URL, GITHUB_REPO_URL } from '@/consts'; +import FilmGrain from '../FilmGrain'; interface NavLink { href: string; @@ -32,6 +33,7 @@ export default function MobileNav({ navLinks, currentPath, dark = false, childre {/* Popup container */} + {/* Header with close button */}
Navigation -

Video.js

+

Video.js v10

- {/* Children */} - {children ?
{children}
: null} + {/* Astro makes it hard to know if we have children, so, we use -mt-px to hide the border-b if we don't */} +
+ {children} +
{/* Navigation links */}