Visual components with RSC
When using React Server Components, the visual components (Text, RichText, Image, File Repeater, Link) must be imported from react-bricks/rsc
and they have a slightly different APIs, as we need to pass them the value of the prop.
Text
Add the value
prop. You get it from the component's props.
The type should be declared as ReactBricks.types.TextValue
.
Before
import { Text } from 'react-bricks/frontend'
...
<Text
propName="title"
placeholder="Enter the title"
renderBlock={({ children}) => (
<p className="text-xl">
{children}
</p>
)}
>
After
import { Text } from 'react-bricks/rsc'
...
<Text
propName="title"
value={title}
placeholder="Enter the title"
renderBlock={({ children}) => (
<p className="text-xl">
{children}
</p>
)}
>
RichText
Add the value
prop. You get it from the component's props.
The type should be declared as ReactBricks.types.TextValue
.
Before
import { RichText } from 'react-bricks/frontend'
...
<RichText
propName="title"
placeholder="Enter the title"
renderBlock={({ children}) => (
<h1 className="text-xl">
{children}
</h1>
)}
>
After
import { RichText } from 'react-bricks/rsc'
...
<RichText
propName="description"
value={description}
placeholder="Enter the description"
renderBlock={({ children}) => (
<p>
{children}
</p>
)}
allowedFeatures={[types.RichTextFeatures.Bold]},
>
Image
Add the source
prop. You get it from the component's props.
The type should be declared as ReactBricks.types.IImageSource
.
Before
import { Image } from 'react-bricks/frontend'
...
<Image propName="avatar" alt="Avatar" />
After
import { Image } from 'react-bricks/rsc'
...
<Image
propName="avatar"
source={avatar}
alt="Avatar"
/>
File
Add the source
prop. You get it from the component's props.
The type should be declared as ReactBricks.types.IFileSource
.
Before
import { File } from 'react-bricks/frontend'
...
<File propName="document" />
After
import { File } from 'react-bricks/rsc'
...
<File
propName="document"
source={document}
/>
Repeater
Add the items
prop. You get it from the component's props.
The type should be declared as ReactBricks.types.RepeaterItems<T>
where T (not mandatory) is the type of the single repeated item (you can import it from the repeated brick).
If you specify T, you have the result of getDefaultProps
fully typed also for repeated items.
Before
import { Repeater } from 'react-bricks/frontend'
...
<Repeater propName="features" />
After
import { Repeater } from 'react-bricks/rsc'
...
<Repeater
propName="features"
items={features}
/>