@ef2-digital/react
Installation
Install the plugin from yarn:
yarn add @ef2-digital/react
This library is build with TypeScript, so type-definitions are shipped out-of-the-box.
Components
Documentation: Storybook.
Configuration
Quick start
Here's a quick example to get you started. Add ThemeProvider
to the top level of your app.
Tailwind:
yarn add -D tailwindcss postcss autoprefixer @headlessui/tailwindcss
npx tailwindcss init -p
module.exports = {
content: [
'./theme.ts',
'./pages/**/*.{js,ts,jsx,tsx}',
'./components/**/*.{js,ts,jsx,tsx}',
'./node_modules/@ef2/react/lib/**/*.js'
],
plugins: [
require('@headlessui/tailwindcss')
]
}
React:
import { ThemeProvider, Button } from "@ef2-digital/react";
const App = ({ children }) => {
return (
<ThemeProvider>
<Button>Button</Button>
</ThemeProvider>
);
};
Next.js:
import { ThemeProvider } from "@ef2-digital/react";
const DefaultLayout = ({ children }: PropsWithChildren) => {
return (
<ThemeProvider>
<main id="main">
{children}
</main>
</ThemeProvider>
);
};
Theming
By default all EF2 components lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Theme structure
export type Attribute<T = string> = { DEFAULT: T; [key: string]: T };
export type Variant = { DEFAULT: string; primary: string; [key: string]: string };
export interface Component {
variant: Attribute<Variant>;
}
export interface Button extends Component {
size: Attribute;
}
export interface Theme {
button: Button;
}
Customize Theme
import type { PartialTheme } from '@ef2-digital/react';
const theme: PartialTheme = {
button: {
variant: {
DEFAULT: { primary: 'bg-orange-600 hover:bg-orange-700 focus:ring-orange-500' }
}
}
}
export default theme;
import { ThemeProvider } from "@ef2-digital/react";
import theme from 'theme'
const DefaultLayout = ({ children }: PropsWithChildren) => {
return (
<ThemeProvider theme={theme}>
<main id="main">
{children}
</main>
</ThemeProvider>
);
};