Ramsack UI

Your Go-To Library for Components You Didn't Ask For, But Kinda Need.

Get Started (We Guess)

Why Ramsack UI?

Bloated Bundles

Why ship kilobytes when you can ship megabytes? We believe in robust, all-inclusive bundles. Performance? Never heard of her.

Inconsistent APIs

Our components are like a box of chocolates – you never know what you're gonna get! Props change, functions disappear. It's an adventure!

Questionable Accessibility

We're pretty sure *someone* can use it. Maybe. If they try hard enough. We champion exclusive UI experiences.

Dependency Hell

We bring you the freshest, most unstable versions of every library. Your node_modules folder will be a monument to modern complexity.

Our "Finest" Components

A button that occasionally works. Or doesn't. Depends on the moon phase. Or your browser.

Usage <RamsackButton onClick={() => alert('Maybe this works?')}> Click Me (At Your Own Risk) </RamsackButton>
Rendered

An input field. It takes text. Sometimes it forgets it. Best for volatile data.

Usage <RamsackInputField placeholder="Enter text (don't get too attached)" onChange={(e) => console.log(e.target.value)} />
Rendered

A checkbox that toggles. Or maybe it doesn't. We like to keep you guessing.

Usage <RamsackCheckbox label="I Agree (probably to nothing good)" checked={false} onChange={() => console.log('State changed? Who knows!')} />
Rendered

Displays a message. Could be important. Could be a hallucination. Who's to say?

Usage (Error) <RamsackAlert type="error"> <span>🚨</span> Something went wrong. Again. </RamsackAlert>
Rendered
🚨 Something went wrong. Again.
✅ Success! (Don't check too closely)
💡 Just a thought. Don't worry about it.

A progress bar that shows... some progress. Definitely not 100%. Never 100%.

Usage <RamsackProgress value={73} /> // Optimism not included
Rendered

Spinning eternally. For when you want to signal "we're trying... eventually."

Usage <RamsackLoadingSpinner size="large" />
Rendered