storybook-rtl-addon
A storybook addons that lets your users toggle between ltr and rtl.

Installation
Install the following npm module:
npm i --save-dev storybook-rtl-addon
or with yarn:
yarn add -D storybook-rtl-addon
Then, add following content to .storybook/addons.js
import 'storybook-rtl-addon/register';
Configuration
Set default direction in your config.js
file:
import { addParameters } from '@storybook/react';
addParameters({
defaultDirection: 'ltr',
});
If this addon used in conjunction with storybook-addon-locale the value of defaultDirection
will be ignored as storybook-addon-locale
will take over the default direction.
Story integration
Use hook to get current direction:
import { useDirection } from 'storybook-rtl-addon';
function MyComponent(context) {
const direction = useDirection(context);
return <div dir={direction}>{children}</div>;
}
Or use it by addDecorator:
import { addDecorator } from '@storybook/react';
import { withDirection } from 'storybook-rtl-addon';
addDecorator(withDirection);
You can also listen for the direction change event as follow:
import addons from '@storybook/addons';
import { Direction_MODE_EVENT_NAME } from 'storybook-rtl-addon';
const channel = addons.getChannel();
function MyComponent({ children }) {
const [direction, setDirection] = useState();
useEffect(() => {
channel.on(Direction_MODE_EVENT_NAME, setDirection);
return () => channel.off(Direction_MODE_EVENT_NAME, setDirection);
}, [channel, setDirection]);
return <div dir={direction}>{children}</div>;
}
Options
setDirectionKnob
When set to true the knob-direction
will be set
import { addParameters } from '@storybook/react';
addParameters({
setDirectionKnob: true,
});