breakpointer
TypeScript icon, indicating that this package has built-in type declarations

0.5.3 • Public • Published

Breakpointer

A lightweight React library for real-time breakpoint detection with support for custom and default Tailwind breakpoints.

NPM Version gzip License
Downloads

Breakpointer in action:

Breakpointer Demo

Installation

npm install breakpointer

Exports

Export Description
BreakpointerProvider A context provider to wrap your application
useBreakpointer A hook to access the current breakpoint

Basic Usage

Setup

Wrap your application with BreakpointerProvider:

import React, { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import App from './App';
import { BreakpointerProvider } from 'breakpointer';

/* 
    if mode !== "development", the BreakpointerIndicator will skip rendering   
*/
const MODE = import.meta.env.MODE; // based on your chosen build tool

createRoot(document.getElementById('root')!).render(
    <StrictMode>
        <BreakpointerProvider mode={MODE}>
            <App />
        </BreakpointerProvider>
    </StrictMode>,
)

Using the Hook

Use the useBreakpointer hook to detect breakpoints in your components:

import React from 'react';
import { useBreakpointer } from 'breakpointer';

const MyComponent = () => {
    const {
        screen,      // ex: "md" if currentWidth is in the range from 768 - 1023
        currentWidth // innerWidth/viewPort width
    } = useBreakpointer();
    
    return (
        <div>
            {screen === 'sm' && <p>Small screen (640px - 767px)</p>}
            {screen === 'md' && <p>Medium screen (768px - 1023px)</p>}
            {screen === 'lg' && <p>Large screen (1024px - 1279px)</p>}
            <p>Current width: {currentWidth}px</p>
        </div>
    );
};

export default MyComponent;

Default Breakpoints

Breakpointer comes with the following default breakpoints, which align with Tailwind CSS's default breakpoint system:

Breakpoint Min Width (px) Description
sm 640 Large phones & small tablets
md 768 Tablets
lg 1024 Laptops & large tablets
xl 1280 Desktop & large laptops
2xl 1536 Wide screen & large desktops

Usage with Tailwind v3

Note: resolveConfig is only applicable for Tailwind CSS version 3.x.x.

To use custom Tailwind breakpoints, pass a breakpointsObj prop to BreakpointerProvider:

import React from 'react';
import { createRoot } from 'react-dom/client';
import App from './App';
import { BreakpointerProvider } from 'breakpointer';

import resolveConfig from "tailwindcss/resolveConfig"; // resolver Function
import tailwindConfig from "../tailwind.config"; // js/ts tailwind config 

const resolvedConfig = resolveConfig(tailwindConfig);

createRoot(document.getElementById('root')!).render(
    <BreakpointerProvider breakpointsObj={resolvedConfig.theme.screens}>
        <App />
    </BreakpointerProvider>,
    document.getElementById('root')
);

BreakpointerIndicator

The BreakpointerIndicator component has been integrated into the BreakpointerProvider, so there is no need for manual invocation. You can now customize its appearance by passing a classNames object as a prop to the BreakpointerProvider.

classNames Object

The classNames object allows you to style the internal elements of the BreakpointerIndicator. Below is a table describing the available properties:

Property Description
wrapper Styles the outer wrapper of the indicator.
iconWrapper Styles the container for the breakpoint icon.
screen Styles the text displaying the current breakpoint (e.g., sm, md).
currentWidth Styles the text displaying the current viewport width in pixels.

Example Usage

import { BreakpointerProvider } from 'breakpointer';

const App = () => {
    return (
        <BreakpointerProvider
            mode="development"
            classNames={{
                wrapper: ["bg-gray-300", "text-red-800", "p-4", "rounded-lg"],
                iconWrapper: ["content-start"],
                screen: ["font-bold", "text-lg", "text-blue-500"],
                currentWidth: ["text-sm", "text-gray-400"],
            }}
        >
            <App />
        </BreakpointerProvider>
    );
};

This configuration will style the BreakpointerIndicator according to the provided class names.

Package Sidebar

Install

npm i breakpointer

Weekly Downloads

395

Version

0.5.3

License

MIT

Unpacked Size

112 kB

Total Files

9

Last publish

Collaborators

  • mashkar803