Nidoe FAQ - Frequently Asked Questions
Get answers to common questions about Nidoe design system. Learn about components, theming, customization, and best practices for building consistent UIs.
Nidoe FAQ
Find quick answers to the most common questions about Nidoe, the comprehensive React component library for building modern, accessible user interfaces.
Getting Started
What is Nidoe?
Nidoe is a comprehensive design system and React component library that provides pre-built, accessible, and customizable components for building modern web applications. It includes everything from basic UI elements to complex data visualization components.
Why should I choose Nidoe over other component libraries?
Nidoe offers several unique advantages:
- Complete Design System: Not just components, but a full design language
- Accessibility First: WCAG 2.1 AA compliant out of the box
- TypeScript Native: Built with TypeScript for excellent developer experience
- Highly Customizable: Extensive theming and styling options
- Performance Optimized: Tree-shakable and optimized for production
Is Nidoe free to use?
Yes! Nidoe is completely free and open-source under the MIT license. You can use it in personal projects, commercial applications, or anywhere you need professional UI components.
What frameworks does Nidoe support?
Currently, Nidoe supports:
- ✅ React 16.8+ (Hooks required)
- ✅ Next.js 12+
- ✅ Gatsby
- ✅ Vite
- ✅ Create React App
- ⏳ Vue.js (planned)
- ⏳ Angular (under consideration)
Installation & Setup
How do I install Nidoe?
Install using your preferred package manager:
npm install @nexiloop/nidoe
# or
yarn add @nexiloop/nidoe
# or
pnpm add @nexiloop/nidoe
Do I need to install any peer dependencies?
Yes, Nidoe requires React as a peer dependency:
npm install react react-dom
Optional peer dependencies for specific features:
framer-motion
for advanced animationsreact-hook-form
for form validationdate-fns
for date picker components
How do I set up the theme provider?
Wrap your app with the Nidoe theme provider:
import { NidoeProvider } from '@nexiloop/nidoe'
function App() {
return (
<NidoeProvider>
<YourAppContent />
</NidoeProvider>
)
}
Can I use Nidoe with Tailwind CSS?
Yes! Nidoe is designed to work alongside Tailwind CSS. Use Nidoe components for complex UI patterns and Tailwind for custom styling and layout.
Components & Usage
Which components are available?
Nidoe includes 50+ components across categories:
Layout: Container, Grid, Stack, Flex, Divider Typography: Heading, Text, Code, Blockquote Forms: Input, Select, Checkbox, Radio, Switch, Textarea Navigation: Menu, Breadcrumb, Pagination, Tabs Feedback: Alert, Toast, Modal, Tooltip, Progress Data Display: Table, Card, Badge, Avatar, List Overlay: Popover, Drawer, Dialog, DropdownMenu
How do I import components?
Use named imports for better tree-shaking:
import { Button, Input, Card } from '@nexiloop/nidoe'
function MyComponent() {
return (
<Card>
<Input placeholder="Enter text..." />
<Button>Submit</Button>
</Card>
)
}
Can I customize component styles?
Yes! Nidoe offers multiple customization approaches:
CSS Custom Properties:
.nidoe-button {
--button-bg: #your-color;
--button-text: #your-text-color;
}
Theme Object:
const customTheme = {
colors: {
primary: '#your-brand-color'
}
}
<NidoeProvider theme={customTheme}>
<App />
</NidoeProvider>
Styled Components:
import styled from 'styled-components'
import { Button } from '@nexiloop/nidoe'
const CustomButton = styled(Button)`
background: linear-gradient(45deg, #fe6b8b, #ff8e53);
`
Are components accessible by default?
Yes! All Nidoe components follow WCAG 2.1 AA guidelines:
- Proper ARIA labels and roles
- Keyboard navigation support
- Screen reader compatibility
- Focus management
- Color contrast compliance
Theming & Customization
How does the theming system work?
Nidoe uses a token-based design system with semantic naming:
const theme = {
colors: {
background: '#ffffff',
foreground: '#000000',
primary: '#0066cc',
secondary: '#6366f1',
// ... more tokens
},
spacing: {
xs: '0.25rem',
sm: '0.5rem',
md: '1rem',
// ... more values
}
}
Can I create my own theme?
Absolutely! Create a custom theme object:
import { createTheme } from '@nexiloop/nidoe'
const myTheme = createTheme({
colors: {
primary: '#your-primary-color',
secondary: '#your-secondary-color'
},
fonts: {
body: 'Inter, sans-serif',
heading: 'Poppins, sans-serif'
}
})
<NidoeProvider theme={myTheme}>
<App />
</NidoeProvider>
How do I support dark mode?
Nidoe includes built-in dark mode support:
import { useTheme } from '@nexiloop/nidoe'
function ThemeToggle() {
const { colorMode, toggleColorMode } = useTheme()
return (
<Button onClick={toggleColorMode}>
{colorMode === 'light' ? 'Dark' : 'Light'} Mode
</Button>
)
}
Can I use CSS-in-JS libraries?
Yes! Nidoe works well with:
- Styled Components
- Emotion
- Stitches
- Vanilla Extract
- Any CSS-in-JS solution
Performance
Is Nidoe tree-shakable?
Yes! Nidoe is built with tree-shaking in mind:
- Named exports only
- Modular architecture
- Minimal runtime dependencies
- Bundle analyzers show only used components
What's the bundle size impact?
Nidoe is optimized for minimal bundle impact:
- Core library: ~45KB gzipped
- Individual components: 2-8KB each
- Tree-shaking reduces final bundle size
- Code-splitting friendly
How can I optimize performance?
- Use named imports: Import only what you need
- Lazy load components: Use React.lazy for large components
- Configure bundle analyzer: Monitor bundle size
- Enable tree-shaking: Ensure your bundler supports it
Browser Support
Which browsers are supported?
Nidoe supports all modern browsers:
- ✅ Chrome 90+
- ✅ Firefox 88+
- ✅ Safari 14+
- ✅ Edge 90+
- ⚠️ IE 11 (limited support with polyfills)
Do I need polyfills?
For modern browsers, no polyfills are required. For IE11 support, you may need:
- Promise polyfill
- Array.from polyfill
- Object.assign polyfill
TypeScript Support
Does Nidoe have TypeScript support?
Yes! Nidoe is built with TypeScript and includes:
- Full type definitions
- IntelliSense support
- Type-safe prop validation
- Generic component types
How do I get better TypeScript integration?
Use strict TypeScript configuration:
{
"compilerOptions": {
"strict": true,
"exactOptionalPropertyTypes": true,
"noUncheckedIndexedAccess": true
}
}
Forms & Validation
How do I handle form validation?
Nidoe integrates seamlessly with form libraries:
React Hook Form:
import { useForm } from 'react-hook-form'
import { Input, Button } from '@nexiloop/nidoe'
function MyForm() {
const { register, handleSubmit, errors } = useForm()
return (
<form onSubmit={handleSubmit(onSubmit)}>
<Input
{...register('email', { required: true })}
error={errors.email && 'Email is required'}
/>
<Button type="submit">Submit</Button>
</form>
)
}
Formik:
import { Formik } from 'formik'
import { Input, Button } from '@nexiloop/nidoe'
function MyForm() {
return (
<Formik initialValues={{ email: '' }} onSubmit={handleSubmit}>
{({ values, handleChange, handleSubmit }) => (
<form onSubmit={handleSubmit}>
<Input
name="email"
value={values.email}
onChange={handleChange}
/>
<Button type="submit">Submit</Button>
</form>
)}
</Formik>
)
}
Animation & Motion
Does Nidoe include animations?
Yes! Nidoe includes subtle, accessible animations:
- Component state transitions
- Hover and focus effects
- Loading states
- Page transitions (with Framer Motion)
Can I disable animations?
Yes, respect user preferences:
<NidoeProvider reduceMotion>
<App />
</NidoeProvider>
Or use CSS:
@media (prefers-reduced-motion: reduce) {
.nidoe-component {
animation: none !important;
transition: none !important;
}
}
Testing
How do I test components using Nidoe?
Use React Testing Library with Nidoe components:
import { render, screen } from '@testing-library/react'
import { Button } from '@nexiloop/nidoe'
test('renders button with text', () => {
render(<Button>Click me</Button>)
expect(screen.getByRole('button')).toHaveTextContent('Click me')
})
Do I need to wrap tests with providers?
For components using theme context, yes:
import { NidoeProvider } from '@nexiloop/nidoe'
function renderWithTheme(component) {
return render(
<NidoeProvider>
{component}
</NidoeProvider>
)
}
Migration & Updates
How do I migrate from other component libraries?
We provide migration guides for popular libraries:
- Material-UI → Nidoe
- Ant Design → Nidoe
- Chakra UI → Nidoe
- Bootstrap → Nidoe
How do I stay updated?
- Subscribe to our changelog
- Follow semantic versioning
- Use automated dependency updates
- Test breaking changes in development
Getting Help
Where can I get support?
- Documentation: Comprehensive guides and examples
- GitHub Issues: Bug reports and feature requests
- Discord Community: Real-time help and discussions
- Stack Overflow: Tag questions with
nidoe
- Email Support: For enterprise customers
How do I report bugs?
- Search existing issues first
- Create a minimal reproduction
- Use our bug report template
- Include environment details
- Add screenshots if relevant
Can I request new components?
Yes! We welcome feature requests:
- Check our roadmap first
- Open a GitHub discussion
- Describe the use case
- Provide design references
- Consider contributing!
Need more help? Join our community and get answers from fellow developers and maintainers!