React Fluid Design System by ENGIE
Quick Start
Install the package inside your application:
npm install @engie-group/fluid-design-system-react
How to use
Font & css
<link href="https://fonts.googleapis.com/css?family=Material+Icons|Lato:300,400,700,900&display=swap" rel="stylesheet"/>
// Optional if loaded in the js
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@engie-group/fluid-design-system/lib/reboot.css">
Using global React component library
import '@engie-group/fluid-design-system/lib/reboot.css'; //CSS optional if loaded via link tag
import {NJButton} from '@engie-group/fluid-design-system-react';// JS library
function App() {
return (
<div>
<NJButton label="Mon label" />
</div>
);
}
ReactDOM.render(
<App />,
document.getElementById('root')
);
Using sources
You can use typescript react sources as well with css modules:
import '@engie-group/fluid-design-system/src/components/button/_index.scss'; //SASS import optional or CSS
import {NJButton} from "@engie-group/fluid-design-system-react/src/components/button/NJButton";
From browser
<body>
<div id="root">
</div>
<script src="https://unpkg.com/react@18.0.0/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@@18.0.0/umd/react-dom.development.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@engie-group/fluid-design-system-react/lib/fluid-design-system-react.umd.cjs"></script>
<script>
document.addEventListener("DOMContentLoaded", function () {
ReactDOM.render(
React.createElement("div", null,
React.createElement(Button.Button, {label: "Label", variant: "success"}, "button"),
React.createElement(Footer.Footer, null, "footer")
)
,
document.getElementById('root')
);
});
</script>
</body>
</html>
How to Contribute new Components
-
Create a component folder inside src/components:
src/components -
/ componentName -
/ ComponentName.tsx
/ test -
/ComponentName.test.tsx
-
Update src/fluid-design-system-react.ts by adding component import/export
-
Update webpack.config.js with component build, be careful to match upper/lowercase:
{
...BASE_CONFIG,
...{
name: 'componentName',
entry: './src/components/componentName/ComponentName.tsx',
output: {
...BASE_CONFIG_OUTPUT,
...{
filename: './components/componentName/ComponentName.js',
library: 'ComponentName'
}
}
}
}
-
Create a component folder inside fluid-doc-react package:
src/stories/componentName/ComponentName.stories.js
Components development state
You can check our state of development on
our Notion Components page