From e7f317aa49e99cc13b5722fabd8b79eb9f64d76d Mon Sep 17 00:00:00 2001 From: Thebora Kompanioni Date: Mon, 6 Jul 2026 21:29:59 +0200 Subject: [PATCH] dev(ui): add ugly beta warning header (#1317) Co-authored-by: Parth Bandwal <143504541+parrth20@users.noreply.github.com> --- src/App.tsx | 11 ++++++++- src/components/layout/AuthPageShell.test.tsx | 2 +- src/components/layout/AuthPageShell.tsx | 2 +- src/components/layout/Layout.tsx | 2 +- src/components/layout/RootLayout.tsx | 16 +++++++++++++ .../layout/header/BetaInfoHeader.tsx | 23 +++++++++++++++++++ src/components/ui/sidebar.tsx | 2 +- src/stories/jam/BetaInfoHeader.stories.tsx | 14 +++++++++++ 8 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 src/components/layout/RootLayout.tsx create mode 100644 src/components/layout/header/BetaInfoHeader.tsx create mode 100644 src/stories/jam/BetaInfoHeader.stories.tsx diff --git a/src/App.tsx b/src/App.tsx index df450130..97bda411 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -45,6 +45,7 @@ import { setIntervalDebounced, walletDisplayName, type WalletFileName } from '@/ import { authStore } from '@/store/authStore' import { jamSettingsStore, useDeveloperMode } from '@/store/jamSettingsStore' import { EarnReportPage } from './components/earn/report/EarnReportPage' +import { RootLayout } from './components/layout/RootLayout' import { LockWalletConfirmDialog } from './components/ui/jam/LockWalletConfirmDialog' import { Spinner } from './components/ui/spinner' import { WalletJarsDetailsPage } from './components/wallet/WalletJarsDetailsPage' @@ -153,7 +154,15 @@ function App() { const router = createBrowserRouter( createRoutesFromElements( - } errorElement={}> + + + + } + errorElement={} + > : } /> { const child = screen.getByTestId('child') expect(child).toBeInTheDocument() - expect(child.parentElement).toHaveClass('from-background', 'to-muted', 'flex', 'min-h-screen') + expect(child.parentElement).toHaveClass('from-background', 'to-muted', 'flex', 'flex-1') }) }) diff --git a/src/components/layout/AuthPageShell.tsx b/src/components/layout/AuthPageShell.tsx index d641fd1b..12af8460 100644 --- a/src/components/layout/AuthPageShell.tsx +++ b/src/components/layout/AuthPageShell.tsx @@ -2,7 +2,7 @@ import type { PropsWithChildren } from 'react' export const AuthPageShell = ({ children }: PropsWithChildren) => { return ( -
+
{children}
) diff --git a/src/components/layout/Layout.tsx b/src/components/layout/Layout.tsx index 4a83532a..88ca3441 100644 --- a/src/components/layout/Layout.tsx +++ b/src/components/layout/Layout.tsx @@ -72,7 +72,7 @@ export function LayoutInner({ onLogout, onLockWallet, children }: LayoutInnerPro }, []) return ( -
+
import('@/components/layout/header/BetaInfoHeader')) + +const rawVersionLowercase = APP_DISPLAY_VERSION.raw?.toLowerCase() || '' +const displayBetaHeader = ['alpha', 'beta', 'rc', 'dev', 'snapshot'].some((it) => rawVersionLowercase.includes(it)) + +export function RootLayout({ children }: PropsWithChildren) { + return ( +
+ {displayBetaHeader ? : <>} +
{children}
+
+ ) +} diff --git a/src/components/layout/header/BetaInfoHeader.tsx b/src/components/layout/header/BetaInfoHeader.tsx new file mode 100644 index 00000000..46739f2e --- /dev/null +++ b/src/components/layout/header/BetaInfoHeader.tsx @@ -0,0 +1,23 @@ +import { ArrowUpRightIcon } from 'lucide-react' + +export default function BetaInfoHeader() { + return ( +
+
+ + Beta + + Thanks for testing! Please report anything that looks off. + + Report a bug + + +
+
+ ) +} diff --git a/src/components/ui/sidebar.tsx b/src/components/ui/sidebar.tsx index f305f4af..eb16695a 100644 --- a/src/components/ui/sidebar.tsx +++ b/src/components/ui/sidebar.tsx @@ -104,7 +104,7 @@ function SidebarProvider({ ...style, } as React.CSSProperties } - className={cn('group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full', className)} + className={cn('group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex w-full flex-1', className)} {...props} > {children} diff --git a/src/stories/jam/BetaInfoHeader.stories.tsx b/src/stories/jam/BetaInfoHeader.stories.tsx new file mode 100644 index 00000000..f967d6f6 --- /dev/null +++ b/src/stories/jam/BetaInfoHeader.stories.tsx @@ -0,0 +1,14 @@ +import type { Meta, StoryObj } from '@storybook/react-vite' +import BetaInfoHeader from '@/components/layout/header/BetaInfoHeader' + +const meta: Meta = { + title: 'Layout/BetaInfoHeader', + component: BetaInfoHeader, + tags: ['autodocs'], + parameters: { layout: 'fullscreen' }, +} +export default meta + +type Story = StoryObj + +export const Default: Story = {}