Web
Interactive preview
Runs through the actual Showcase web bundle, not a rewritten HTML approximation.
Layout & surfaces component recipe
Scrollable form-screen shell with bounded width, explicit safe-area ownership, and platform keyboard handling.
Live Web preview
The iframe loads the real Showcase route; the source tab below is the exact typechecked fixture used for this component family.
import { Box, KeyboardAwareScreen, Screen, Text, VStack } from '@beemvp/beeui-ui';
import * as React from 'react';
import { ScrollView } from 'react-native';
export type SettingsScreenShellProps = {
children: React.ReactNode;
description?: string;
eyebrow?: string;
keyboardAware?: boolean;
testID?: string;
title: string;
};
export function SettingsScreenShell({
children,
description,
eyebrow,
keyboardAware = false,
testID,
title,
}: SettingsScreenShellProps) {
const header = (
<VStack gap="sm">
{eyebrow ? (
<Text tone="muted" variant="caption">
{eyebrow}
</Text>
) : null}
<Text className="text-3xl leading-10" variant="title">
{title}
</Text>
{description ? (
<Text tone="muted" variant="body">
{description}
</Text>
) : null}
</VStack>
);
if (keyboardAware) {
return (
<KeyboardAwareScreen contentWidth="md" testID={testID}>
<Box className="flex-1 px-5 py-6 web:py-10">
<VStack gap="xl">
{header}
{children}
</VStack>
</Box>
</KeyboardAwareScreen>
);
}
return (
<Screen testID={testID}>
<ScrollView
contentContainerStyle={{ flexGrow: 1 }}
keyboardDismissMode="interactive"
keyboardShouldPersistTaps="handled"
>
<Box className="mx-auto w-full max-w-[680px] flex-1 px-5 py-6 web:py-10">
<VStack gap="xl">
{header}
{children}
</VStack>
</Box>
</ScrollView>
</Screen>
);
}
Web
Runs through the actual Showcase web bundle, not a rewritten HTML approximation.
iOS / Android
The component belongs to the same package and Showcase inventory. Platform/runtime limitations stay explicit in the component documentation.
Composition
KeyboardAwareScreen
Types: KeyboardAwareScreenContentWidth KeyboardAwareScreenKeyboardDismissMode KeyboardAwareScreenProps KeyboardAwareScreenSafeAreaEdges
Ownership boundary
BeeUI owns reusable UI behavior and semantics. Networking, routing, persistence, business validation, and domain side effects stay in your application.