Skip to main content

DefaultPropsProvider

An Abyss component that provides default props to all its child components.

Submit feedback
github
import { DefaultPropsProvider } from '@uhg-abyss/mobile/ui/DefaultPropsProvider';

Overview

DefaultPropsProvider lets you set default props for multiple components in one place. This helps keep your app consistent and reduces repeated code.

<DefaultPropsProvider
components={{
[componentName]: {
// ...default props for the component
},
// Example:
Button: {
variant: 'destructive',
},
}}
>
{/* ...children */}
</DefaultPropsProvider>

How it Works

The provider uses React Context to pass default props down to child components. Each component uses the useDefaultProps hook internally to merge the provider's defaults with its own props, with component-specific props taking precedence.

Prop Priority (highest to lowest):

  • Props passed directly to the component
  • Default props from DefaultPropsProvider
  • Component's built-in default props

Opting Out of Defaults

To opt out of the defaults, you can set the disableDefaultProviderProps prop to true on the component. This will prevent the component from inheriting any default props set by the provider.

Button

<DefaultPropsProvider
components={{
Button: {
icon: 'star',
iconPosition: 'leading',
variant: 'destructive',
},
}}
>
<Layout.Stack alignItems="center">
<Button>Provider defaults</Button>
<Button variant="neutral">Provider defaults with color override</Button>
<Button disableDefaultProviderProps>Opt out of provider defaults</Button>
</Layout.Stack>
</DefaultPropsProvider>
Table of Contents