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.
<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.
<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.
<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?
<RamsackAlert type="error">
<span>🚨</span> Something went wrong. Again.
</RamsackAlert>
Rendered
A progress bar that shows... some progress. Definitely not 100%. Never 100%.
<RamsackProgress value={73} /> // Optimism not included
Rendered
Spinning eternally. For when you want to signal "we're trying... eventually."
<RamsackLoadingSpinner size="large" />
Rendered