When developing responsive applications with mui, it's often helpful to be able to easily visualize the current breakpoint. Enter, <BreakpointIndicator />
.
You can simply import the component at the top level of your app, just after mui
's ThemeProvider
(shown below with redux
as well):
import { render } from 'react-dom';
import { ThemeProvider, CssBaseline } from '@mui/material';
import { theme } from './path/to/my/theme';
import { MyApp } from './path/to/MyApp';
import { BreakpointIndicator } from 'mui-breakpoint-indicator';
const store = configureStore();
const root = (
<ThemeProvider theme={theme}>
<CSSBaseline />
<BreakpointIndicator />
<MyApp />
</ThemeProvider>
);
ReactDOM.render(root, document.querySelector('#root'));
The BreakpointIndicator
has an optional position
prop with the following type:
type Position =
| 'bottom-center'
| 'bottom-left'
| 'bottom-right'
| 'left-center'
| 'right-center'
| 'top-center'
| 'top-left'
| 'top-right'
;
The default is top-center
, but you can configure the default to whatever position you prefer, e.g.:
<BreakpointIndicator position="bottom-right" />
A common use case is to use a tool like this conditionally, e.g.:
const debugMode = useSelector(selectDebugMode);
return (
<div>
{debugMode && <BreakpointIndicator />}
<MyApp />
<div>
)
While you can still do the above, BreakpointIndicator
accepts a visible
prop (defaults to true
) where you can pass a debugMode flag, as above:
const debugMode = useSelector(selectDebugMode);
return (
<div>
<BreakpointIndicator visible={debugMode} />
<MyApp />
<div>
)
The implementation of the visible
prop is such that passing visible={false}
is a no-op.
Simply resize the viewport, and watch the indicator change:
You can click on the indicator to temporarily rotate it to the next position, clockwise.
You can ctrl+click the indicator to rotate it counter-clockwise.
NOTE: When you refresh or rerender your app it will revert to whatever the
position
prop is set to (or the default,top-center
if none is set), so be sure to just set theposition
prop if you want it to always be in a particular area of the screen.
No. At this time, this component is directly tied to some mui underpinnings.