
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
A modern, DaisyUI-inspired React component library built as a Tailwind CSS plugin
A modern, DaisyUI-inspired React component library built as a Tailwind CSS plugin. Paradox UI provides semantic, high-level component class names that are abstractions of Tailwind's low-level utility classes, improving developer speed, code readability, and maintainability while retaining the full customization power of Tailwind.
btn, cardnpm install paradox-ui
# or
yarn add paradox-ui
# or
pnpm add paradox-ui
Paradox UI requires the following peer dependencies:
npm install react react-dom tailwindcss
# or
yarn add react react-dom tailwindcss
# or
pnpm add react react-dom tailwindcss
Make sure you have Tailwind CSS configured in your project. If you don't, create a tailwind.config.js:
module.exports = {
content: [
'./src/**/*.{js,ts,jsx,tsx}',
'./node_modules/paradox-ui/dist/**/*.{js,ts,jsx,tsx}',
],
theme: {
extend: {},
},
plugins: [],
};
Import the Paradox UI styles in your main CSS file:
@import 'tailwindcss/base';
@import 'tailwindcss/components';
@import 'tailwindcss/utilities';
Wrap your application with the ThemeProvider:
import React from 'react';
import { ThemeProvider } from 'paradox-ui';
function App() {
return (
<ThemeProvider defaultTheme="light">
{/* Your app content */}
</ThemeProvider>
);
}
import { Button } from 'paradox-ui';
function Example() {
return (
<div className="space-x-4">
<Button variant="primary" onClick={() => console.log('clicked')}>
Primary Button
</Button>
<Button variant="outline" size="lg">
Large Outline
</Button>
<Button loading disabledWhileLoading>
Loading...
</Button>
<Button
variant="success"
icon={<PlusIcon />}
iconPosition="right"
>
Add New
</Button>
</div>
);
}
import { Card, CardTitle, CardBody, CardActions, CardMedia } from 'paradox-ui';
function Example() {
return (
<Card className="w-96">
<CardTitle>Card Title</CardTitle>
<CardBody>
This is the card body content. You can put any content here.
</CardBody>
<CardActions>
<Button size="sm">Action 1</Button>
<Button size="sm" variant="outline">Action 2</Button>
</CardActions>
</Card>
);
}
// Card with image
function CardWithImage() {
return (
<Card imageSrc="/path/to/image.jpg" imageAlt="Card image">
<CardTitle>Beautiful Image</CardTitle>
<CardBody>
Cards can have images at the top, bottom, left, or right.
</CardBody>
<CardActions>
<Button size="sm">View Details</Button>
</CardActions>
</Card>
);
}
Paradox UI works great with icon libraries like Heroicons, Lucide React, or custom SVG icons:
import { Button } from 'paradox-ui';
import { PlusIcon, TrashIcon } from '@heroicons/react/24/outline';
function IconExample() {
return (
<div className="space-x-4">
<Button icon={<PlusIcon className="h-4 w-4" />}>
Add Item
</Button>
<Button
variant="error"
icon={<TrashIcon className="h-4 w-4" />}
iconPosition="right"
>
Delete
</Button>
</div>
);
}
Paradox UI comes with built-in light and dark themes:
import { ThemeProvider, useTheme } from 'paradox-ui';
function App() {
return (
<ThemeProvider
defaultTheme="light"
persistTheme={true} // Save theme preference to localStorage
>
<ThemeToggle />
{/* Your app content */}
</ThemeProvider>
);
}
function ThemeToggle() {
const { theme, setTheme, toggleDarkMode } = useTheme();
return (
<div>
<p>Current theme: {theme.displayName}</p>
<button onClick={toggleDarkMode}>
Toggle Dark Mode
</button>
<button onClick={() => setTheme('light')}>
Light Theme
</button>
<button onClick={() => setTheme('dark')}>
Dark Theme
</button>
</div>
);
}
Create your own themes by extending the base theme:
import { ThemeProvider, createThemeVariant } from 'paradox-ui';
import { lightTheme } from 'paradox-ui/themes';
const corporateTheme = createThemeVariant(
lightTheme,
'corporate',
'Corporate',
(theme) => ({
colors: {
...theme.colors,
primary: {
...theme.colors.primary,
500: '#1e40af', // Custom primary color
},
},
})
);
function App() {
return (
<ThemeProvider
defaultTheme="corporate"
themes={[lightTheme, corporateTheme]}
>
{/* Your app content */}
</ThemeProvider>
);
}
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | 'info' | 'success' | 'warning' | 'error';
size?: 'sm' | 'md' | 'lg';
loading?: boolean;
disabledWhileLoading?: boolean;
fullWidth?: boolean;
shape?: 'default' | 'square' | 'circle';
icon?: React.ReactNode;
iconPosition?: 'left' | 'right';
loadingIndicator?: React.ReactNode;
as?: React.ElementType;
}
interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
variant?: 'default' | 'bordered' | 'compact' | 'side';
shadow?: boolean;
responsive?: boolean;
backgroundColor?: 'base-100' | 'base-200' | 'neutral';
imageSrc?: string;
imageAlt?: string;
imagePosition?: 'top' | 'bottom' | 'left' | 'right';
}
CardTitle: Card title with configurable heading levelCardBody: Main content areaCardActions: Action buttons areaCardMedia: Image or custom media contentCardFooter: Footer sectionParadox UI is optimized for minimal bundle impact:
You can import individual components to reduce bundle size further:
// Import all components (larger bundle)
import { Button, Card } from 'paradox-ui';
// Import individual components (smaller bundle)
import Button from 'paradox-ui/Button';
import Card from 'paradox-ui/Card';
# Clone the repository
git clone https://github.com/yourusername/paradox-ui.git
cd paradox-ui
# Install dependencies
npm install
# Start development server
npm run dev
# Start Storybook
npm run storybook
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Build library
npm run build
paradox-ui/
├── src/
│ ├── components/ # React components
│ │ ├── Button/
│ │ └── Card/
│ ├── providers/ # React context providers
│ ├── types/ # TypeScript type definitions
│ ├── utils/ # Utility functions
│ ├── hooks/ # Custom React hooks
│ ├── styles/ # CSS and styling
│ └── index.ts # Main entry point
├── .storybook/ # Storybook configuration
├── stories/ # Storybook stories
├── dist/ # Built library
└── package.json
src/components/src/index.tsExample:
// src/components/Alert/Alert.tsx
import React from 'react';
import { cn } from '../../utils/cn';
interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
variant?: 'info' | 'success' | 'warning' | 'error';
children: React.ReactNode;
}
export const Alert = ({ variant = 'info', className, children, ...props }: AlertProps) => {
const variantClasses = {
info: 'alert-info',
success: 'alert-success',
warning: 'alert-warning',
error: 'alert-error',
};
return (
<div
className={cn('alert', variantClasses[variant], className)}
role="alert"
{...props}
>
{children}
</div>
);
};
Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
MIT License - see the LICENSE file for details.
Built with ❤️ for the React community
FAQs
A modern, DaisyUI-inspired React component library built as a Tailwind CSS plugin
The npm package paradox-ui receives a total of 0 weekly downloads. As such, paradox-ui popularity was classified as not popular.
We found that paradox-ui demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.