1.0.1 • Published 10 months ago

@peterpalmer/react-offcanvas v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

react-offcanvas

Reusable off‑canvas panel component for React and TypeScript, inspired by Bootstrap’s Offcanvas but fully framework‑agnostic.

✨ Features

  • Positions: start, end, top, or bottom.
  • Built‑in backdrop & body‑scroll locking.
  • Close via outside click or ESC.
  • Customisable size, animation duration & easing.
  • SSR‑friendly (Next.js, Remix …).
  • Zero dependencies apart from react and react‑dom.

📦 Installation

npm i react-offcanvas
# or
yarn add react-offcanvas
# or
pnpm add react-offcanvas
# or
bun add react-offcanvas

Peer‑dependencies: react >= 18, react-dom >= 18.

🚀 Quick start

import React, { useState } from "react";
import OffCanvas from "react-offcanvas";

function App() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <button onClick={() => setOpen(true)}>Open menu</button>

      <OffCanvas
        isOpen={open}
        onClose={() => setOpen(false)}
        placement="end" // end (default)
        width="300px" // optional
        animationDuration={400} // optional
      >
        <nav style={{ padding: 24 }}>{/* ...your content... */}</nav>
      </OffCanvas>
    </>
  );
}

🔧 Props

PropTypeDefaultDescription
isOpenbooleanControls visibility.
onClose() => voidCallback for closing.
placement`'start''end''top''bottom'`'end'Lado o borde donde aparece.
backdropbooleantrueShows darkened backdrop.
widthstring'320px'Width for start/end.
heightstring'320px'Height for top/bottom.
animationDurationnumber (ms)450Animation duration.
easingstring (CSS timing‑function)cubic-bezier(0.25,0.8,0.25,1)Easing function.
classNamestring""Extra classes for the panel.
childrenReact.ReactNodeContenido dentro del panel.

🎨 Personalización rápida

All styles are injected in a <style> tag to avoid dependencies. If you need a more elaborate theme, add a more specific selector or use the className prop to apply your own Tailwind/CSS-in-JS classes.

🛠️ Build from source

# clone the repo
git clone https://github.com/peter-palmer/react-offcanvas.git && cd react-offcanvas

# install deps
pnpm install # or npm / yarn

# build     -> dist/
pnpm build

# ejecuta ejemplos locales
pnpm dev

📝 License

MIT


Made with ❤️ by Peter Palmer.

1.0.1

10 months ago

1.0.0

10 months ago