Measured entry

originui-comp-98

buttonminimal-flat

A client-side React icon button that toggles local open state, exposes that state with aria-expanded, and rotates a Lucide plus into a close mark. It ships as a shadcn registry component and composes the registry's Button primitive, Tailwind state variants, React, and Lucide React; the button primitive brings the declared Radix and class-merging utilities.

Specimen
Harness screenshot of originui-comp-98 at 375 pixels wide
Harness screenshot at 375 pixels wide. This viewport scrolled sideways.
Harness screenshot of originui-comp-98 at 768 pixels wide
Harness screenshot at 768 pixels wide. No horizontal overflow recorded.
Harness screenshot of originui-comp-98 at 1440 pixels wide
Harness screenshot at 1440 pixels wide. No horizontal overflow recorded.

Measured

Every value below was written by the harness on the run that produced the frames above. None of it is derived from the prose.

Harness measurements recorded for originui-comp-98
BuildOK
MountOK
Console errors0
Uncaught page errors0
Horizontal overflowflagged at 375
Axe critical0
Axe serious0
Axe moderate0
Axe minor0
Gzip marginal32.2 KB (97.7 KB build, 65.5 KB baseline)
Bare modeFAIL
Provider requiredNO
Demo usedwritten from the component source API

What the harness recorded

BARE BUILD

✗ Build failed in 1.21s
error during build:
[vite]: Rollup failed to resolve import "lucide-react" from "<sandbox>re-4f20a97a84dd/src/cut/components/ui/comp-98.tsx".

Verdict

A sound, focused toggle with sensible accessible naming and no provider requirement. Use it as a visual control inside a larger menu or disclosure implementation, but wire the controlled content yourself and consider lifting its state when other components need to react.

Use it if

  • You need one compact control to toggle a menu, popover, or collapsible region.
  • Your interface already uses a Button primitive with outline and icon variants.
  • You want the open and closed state announced through an accessible label and aria-expanded.

Skip it if

  • The control must be driven by parent state, because this implementation owns its state internally.
  • You need the button to open or close content by itself; it only changes its own icon and accessibility state.
  • Your project avoids Tailwind state variants or Lucide icons and does not want adapters for them.

Install

Installation record for originui-comp-98
Declared dependenciesradix-ui, clsx, tailwind-merge
Missing on installnone
Bare installfails once the shadcn-style helpers are removed, so it needs that setup
Providerno provider required in the harness

In a non-shadcn project, add React and Lucide React, provide a compatible Button primitive with outline and icon variants, and configure Tailwind for group aria-expanded transforms, arbitrary rotation, and the custom easing class. Replace the registry path alias with your local Button import.

Source and credit

This page is a review, not a copy. The component source lives with its author and this site does not republish it. Read the license before you use anything.

License
MIT
Record published
2026-08-16

Alternatives

Other published entries for the button pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.