A 3D UI component library with immersive sound effects for React applications.
raw3d-ui provides a set of 3D components that enhance user interaction with immersive visuals and satisfying sound effects. Inspired by mechanical keyboards and skeuomorphic design, this library creates engaging user interfaces that feel tactile and responsive.
- π¨ 3D Design Language - Components with depth, perspective, and realistic shadows
- π Sound Integration - Optional audio feedback with easy-to-use hooks
- β¨οΈ Mechanical Keyboard Inspiration - Keycap buttons that mimic real switches
- π― TypeScript Support - Fully typed components for better developer experience
- π¨ Flexible Theming - Customize colors, fonts, and shadows with styled-components
- π Storybook Integration - Interactive component playground and documentation
Install raw3d-ui via npm:
npm install raw3d-uiimport { SoundProvider, Button3D, useSound } from 'raw3d-ui';
function App() {
return (
<SoundProvider>
<Button3D variant="keycap">Mechanical Keycap</Button3D>
<Button3D variant="drawn">Drawn Style</Button3D>
</SoundProvider>
);
}The library includes a powerful sound system that makes it easy to add audio feedback to your components.
import { useSound } from 'raw3d-ui';
function MyComponent() {
const { playClick, playHover, playSuccess, playError } = useSound();
return (
<div>
<button onClick={playClick} onMouseEnter={playHover}>
Interactive Button
</button>
<button onClick={playSuccess}>Success Action</button>
<button onClick={playError}>Error Action</button>
</div>
);
}import { useSound } from 'raw3d-ui';
function MyComponent() {
const { playCustom } = useSound();
const handleCustomAction = () => {
playCustom({
src: '/path/to/your/sound.wav',
volume: 0.7,
playbackRate: 1.2
});
};
return <button onClick={handleCustomAction}>Custom Sound</button>;
}import { useSound } from 'raw3d-ui';
function SoundToggle() {
const { soundOn, toggleSound } = useSound();
return (
<button onClick={toggleSound}>
{soundOn ? 'π Sound ON' : 'π Sound OFF'}
</button>
);
}Button3D- 3D buttons with 'keycap' and 'drawn' variantsCard3D- 3D cards with perspective and hover effectsInput3D- 3D input fieldsModal3D- 3D modal dialogsDropdown3D- 3D dropdown menusNavbar3D- 3D navigation barsTable3D- 3D table componentsAlert3D- 3D alert messages with variantsTooltip3D- 3D tooltipsProgressBar3D- 3D progress bars
SoundProvider- Context provider for sound managementMuteSwitch- Global sound toggle component
useSound- Hook for easy sound integration
Customize the look and feel with styled-components:
import { ThemeProvider } from 'styled-components';
import { Button3D } from 'raw3d-ui';
const customTheme = {
colors: {
primary: '#2c3e50',
secondary: '#34495e',
border: '#2c3e50',
text: '#ecf0f1',
accent: '#e74c3c',
},
fonts: {
main: 'Arial, sans-serif',
},
shadows: {
light: '0 2px 4px rgba(0, 0, 0, 0.1)',
medium: '0 4px 8px rgba(0, 0, 0, 0.2)',
dark: '0 8px 16px rgba(0, 0, 0, 0.3)',
},
};
function App() {
return (
<ThemeProvider theme={customTheme}>
<Button3D>Custom Themed Button</Button3D>
</ThemeProvider>
);
}Run Storybook to explore components interactively:
npm run storybookBuild the library for production:
npm run buildBuilt for the Log It Raw community - bringing tactile, satisfying interactions to the web.
This project is licensed under the MIT License.