Report Bug
β’
react-dsfr
β’
Components API
π«π· ReScript bindings for the
react-dsfr
TS library.
Important
This project has only been tested for the needs of the
catala-dsfr
project.
yarn add @codegouvfr/rescript-react-dsfr
Then add it to bsconfig.json
:
"bs-dependencies": [
+ "@codegouvfr/rescript-react-dsfr"
]
Tip
You can look a the demo web
app or at
a real-world example in the
catala-dsfr
repository.
DSFR.Spa.startReactDsfr({
defaultColorScheme: #system,
link: Link.make,
useLang: () => #fr,
})
The API should be straightforward to use as it try to match as closely as
possible the original API. At the difference that constants strings are
replaced by polymorphic variants and that reserved keywords in ReScript like
type
or as
are suffixed with an _
(e.g. type_
or as_
).
For example, for the Badge
component:
// In a .tsx file
import { Badge } from '@codegouvfr/react-dsfr/badge'
let button = (
<Badge type="info" as="span" noIcon={true} severity="new">
Nouveau
</Badge>
)
open DSFR
// In a .res file
let button = (
<Badge type=#info as_=#span noIcon=true severity=#new>
{React.string("Nouveau")}
</Badge>
)
The DSFR.Fr.cx
function is used to generate class names from an array of
variants. It allows to type check the class names and provides suggestions
from you IDE.
open DSFR
let e =
<div className={Fr.cx([#"fr-grid-row", #"fr-grid-row--center"])}>
//...
</div>
Polymorphic variants for class names ./src/DSFR__ClassNames.res
(such as
icon's id or color variants) are generated from the @codegouvfr/react-dsfr
source code. To update them, run:
yarn generate-classNames
# or it will be run automatically when installing the package
yarn
Important
This script is run with bun
and it can be installed with
yarn
so you need to install it manually if you don't have it
Warning
Bindings are created by hand, looking at the storybook. Therefore, a minima all the API described in the storybook should be available but it is possible that some props are missing or that some props are not typed correctly.
Do not hesitate to open an issue or a PR if you find something.
β Implemented | β Not implemented | π§ In progress
Component | Status |
---|---|
Accordion |
β |
AgentConnectButton |
β |
Alert |
β |
Badge |
β |
Breadcrumb |
β |
Button |
β |
ButtonsGroup |
β |
Callout |
β |
Card |
β |
Checkbox |
β |
consentManagement |
β |
Display |
β |
Download |
β |
Footer |
β |
FranceConnectButton |
β |
Header |
β |
Highlight |
β |
Input |
β |
MainNavigation |
β |
Modal |
β |
MonCompteProButton |
β |
Notice |
β |
Pagination |
β |
PasswordInput |
β |
Quote |
β |
RadioButtons |
β |
SearchBar |
β |
Select |
β |
SelectNext |
β |
SlideMenu |
β |
Stepper |
β |
Table |
β |
Tabs |
β |
Tag |
β |
Tile |
β |
ToggleSwitch |
β |
ToggleSwitchGroup |
β |
Upload |
β |