Flare supports two approaches to customizing UI elements. One option is to use CSS to change the appearance of Flare's default markup. The other option is to render entirely different HTML by plugging in custom React components.
When customization requirements are minimal, the CSS approach may be sufficient.
First, it is recommended to import the included CSS file (under
./node_modules/flare/css/flare.css
or
./node_modules/flare-core/css/flare-core.css
). From there, a
classless CSS framework may be a
good option. Otherwise, you can inspect the HTML structure of the rendered Flare
UI and add your own custom CSS as needed.
Note that the flare
package only supports the CSS approach. For more advanced
use cases, you will need to install flare-core
instead and proceed to the next
section.
The RunFlare
component, available in the
flare-core
package, offers full control over how the Flare UI is rendered
through its components
prop, which allows any of the following components to
be overridden:
The components
prop accepts a record optionally containing any number of these
components. For example, the TextBox
component could be overridden as follows:
const components = {
TextBox: ({ label, value, onValueChange }) => (
<label>
{label}
<input
type="text"
value={value}
onChange={e => onValueChange(e.target.value)} />
</label>
)
};
function App() {
return (
<RunFlare
flare={/* ... */}
handler={/* ... */}
components={components} />
);
}
Note that, as demonstrated above, components must be defined outside of the
render function that instantiates RunFlare
to avoid rendering issues.
A complete example of a Flare UI rendered using custom components is available on GitHub. You can also click the button below to launch it in CodeSandbox.