MindeesUI
Blocks

Screen blocks

Fourteen full-page screen compositions — home, dashboard, details, settings, profile, onboarding, search, pricing, and error states. Pure UI, no navigation library.

Opinionated, ready-to-drop full-page compositions assembled from MindeesUI primitives and sibling blocks. They wire up safe areas, headers, scrolling, and empty states for you. They never integrate a navigation library, fetch, or store — every action flows through callbacks.

Import

import {
  HomeScreen,
  DashboardScreen,
  DetailsScreen,
  SettingsScreen,
  ProfileScreen,
  NotificationsScreen,
  SearchResultsScreen,
  OnboardingScreen,
  WalkthroughScreens,
  HelpScreen,
  NotFoundScreen,
  UnauthorizedScreen,
  NoInternetScreen,
  PricingScreen,
} from '@mindees/blocks';

Usage

<DetailsScreen
  title="Invoice #1042"
  subtitle="Paid"
  onBack={() => navigation.goBack()}
  footer={<Button onPress={download}>Download PDF</Button>}
>
  <OrderSummary items={items} total={total} />
</DetailsScreen>

Blocks

HomeScreen

Scrollable home shell with a sticky header slot.

PropTypeDescription
headerReactNodeSticky header above the scrollable content.
childrenReactNodeScrollable page content.
contentPadding'none' | 'sm' | 'md' | 'lg'Outer content padding. Defaults to 'md'.

DashboardScreen

KPI grid at the top with content below.

PropTypeDescription
metricsreadonly AnalyticsMetric[]KPI metrics rendered as a responsive grid.
onPressMetric(id: string) => voidCalled when a KPI card is pressed.
headerReactNodeSticky header above the content.
childrenReactNodeAdditional content below the metrics.

DetailsScreen

Back-header record screen with a scrollable body and a pinned footer.

PropTypeDescription
titlestringTitle centered in the back header.
subtitlestringSubtitle under the title.
onBack() => voidBack handler; the button is omitted when absent.
headerTrailingReactNodeTrailing header slot (e.g. an action menu).
childrenReactNodeScrollable detail content.
footerReactNodePinned footer action bar below the content.

SettingsScreen

Grouped settings rendered by the SettingsMenu primitive.

PropTypeDescription
groupsreadonly SettingsMenuGroup[]Grouped settings rows.
titlestringHeader title. Defaults to "Settings".
onBack() => voidBack handler; the button is omitted when absent.

ProfileScreen

Profile card with stats and a sections area below.

PropTypeDescription
userProfileUserUser identity for the ProfileCard.
statsreadonly ProfileStat[]Optional stat row.
onEdit() => voidShows an "Edit profile" button when provided.
headerReactNodeSticky header above the content.
childrenReactNodeTabs/sections below the card.

NotificationsScreen

List of notifications with a built-in empty state.

PropTypeDescription
notificationsreadonly NotificationData[]Notifications; empty shows the empty state.
titlestringHeader title. Defaults to "Notifications".
headerTrailingReactNodeTrailing header slot (e.g. "mark all read").
onPressItem(id: string) => voidCalled when a row is pressed.
emptyTitlestringEmpty-state title. Defaults to "No notifications".
emptyDescriptionstringEmpty-state description.

SearchResultsScreen

Generic, searchable results screen with a render-prop for rows.

PropTypeDescription
querystringCurrent search query (controlled).
resultsreadonly T[]Results for the current query.
onChangeQuery(next: string) => voidCalled when the query text changes.
placeholderstringSearch placeholder. Defaults to "Search…".
renderResult(item: T, index: number) => ReactElement | nullRenders a single result row.
emptyTitlestringEmpty-state title. Defaults to "No results".
emptyDescriptionstringEmpty-state description.

SearchResultsScreen is generic over T extends SearchResult.

OnboardingScreen

Single onboarding page with illustration, copy, and next/skip actions.

PropTypeDescription
titlestringPage heading.
bodystringSupporting body copy.
illustrationReactNodeIllustration above the title.
nextLabelstringPrimary action label. Defaults to "Get started".
onNext() => voidPrimary handler; the button is omitted when absent.
skipLabelstringSecondary action label. Defaults to "Skip".
onSkip() => voidSecondary handler; the button is omitted when absent.

WalkthroughScreens

Swipeable multi-step walkthrough with dots and done/skip controls.

PropTypeDescription
stepsreadonly WalkthroughStep[]Ordered steps, one page each.
doneLabelstringFinal button label. Defaults to "Done".
skipLabelstringSkip button label. Defaults to "Skip".
hintstringHint beside the dots. Defaults to "Swipe to continue".
onDone() => voidCalled when the final step is completed.
onSkip() => voidSkip handler; the button is omitted when absent.

HelpScreen

Searchable FAQ accordion with a contact-support action.

PropTypeDescription
faqsreadonly HelpFaq[]FAQ entries rendered as an accordion.
titlestringHeader title. Defaults to "Help".
searchPlaceholderstringSearch placeholder. Defaults to "Search help…".
contactLabelstringContact button label. Defaults to "Contact support".
onContactSupport() => voidHandler; the button is omitted when absent.

NotFoundScreen

404 state with a "go home" action.

PropTypeDescription
titlestringHeading. Defaults to "Page not found".
descriptionstringSupporting copy.
illustrationReactNodeIllustration or icon above the title.
homeLabelstringHome button label. Defaults to "Go home".
onGoHome() => voidHandler; the button is omitted when absent.

UnauthorizedScreen

403 / access-denied state with a sign-in action.

PropTypeDescription
titlestringHeading. Defaults to "Access denied".
descriptionstringSupporting copy.
illustrationReactNodeIllustration or icon above the title.
signInLabelstringSign-in button label. Defaults to "Sign in".
onSignIn() => voidHandler; the button is omitted when absent.

NoInternetScreen

Offline state with a retry action.

PropTypeDescription
titlestringHeading. Defaults to the OfflineState default.
descriptionstringSupporting copy.
illustrationReactNodeIllustration or icon above the title.
retryLabelstringRetry button label. Defaults to "Retry".
onRetry() => voidHandler; the button is omitted when absent.

PricingScreen

Pricing tiers as feature cards with an optional billing-cycle toggle.

PropTypeDescription
plansreadonly PricingPlan[]Pricing tiers rendered as cards.
titlestringHeader title. Defaults to "Pricing".
showBillingTogglebooleanShow a monthly/annual segmented toggle.
defaultCycleBillingCycleInitial cycle. Defaults to "monthly".
onChangeCycle(cycle: BillingCycle) => voidCalled when the billing cycle changes.
onSelectPlan(name: string) => voidCalled with the plan name when a CTA is pressed.

All screen blocks also accept a style prop spread onto the root screen.

On this page