Convert Figma logo to code with AI

heroui-inc logoheroui

🚀 Beautiful, fast and modern React UI library. (Previously NextUI)

22,765
1,615
22,765
460

Top Related Projects

A utility-first CSS framework for rapid UI development.

38,137

⚡️ Simple, Modular & Accessible UI Components for your React Applications

Material UI: Comprehensive React component library that implements Google's Material Design. Free forever.

An enterprise-class UI design language and React UI library

85,173

Storybook is the industry standard workshop for building, documenting, and testing UI components in isolation

Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress 💅

Quick Overview

HeroUI is a comprehensive UI component library and design system for React applications. It aims to provide developers with a set of high-quality, customizable components that can be easily integrated into modern web projects, enhancing both the development experience and the end-user interface.

Pros

  • Extensive collection of pre-built, customizable React components
  • Consistent design language across all components, promoting a cohesive user experience
  • Responsive and accessible components out of the box
  • Well-documented API and usage guidelines

Cons

  • Learning curve for developers new to the library's conventions and API
  • Potential performance overhead for smaller projects that don't require a full-featured UI library
  • Limited flexibility for highly custom designs that deviate significantly from the library's aesthetic
  • Dependency on React ecosystem, which may not be suitable for all projects

Code Examples

  1. Using a basic Button component:
import { Button } from '@heroui/react';

function MyComponent() {
  return (
    <Button variant="primary" onClick={() => console.log('Clicked!')}>
      Click me
    </Button>
  );
}
  1. Creating a responsive layout with Grid:
import { Grid, GridItem } from '@heroui/react';

function ResponsiveLayout() {
  return (
    <Grid columns={{ base: 1, md: 2, lg: 3 }} gap={4}>
      <GridItem>Content 1</GridItem>
      <GridItem>Content 2</GridItem>
      <GridItem>Content 3</GridItem>
    </Grid>
  );
}
  1. Implementing a form with validation:
import { Form, Input, Button } from '@heroui/react';

function LoginForm() {
  const handleSubmit = (values) => {
    console.log('Form submitted:', values);
  };

  return (
    <Form onSubmit={handleSubmit}>
      <Input name="email" type="email" label="Email" required />
      <Input name="password" type="password" label="Password" required />
      <Button type="submit">Log In</Button>
    </Form>
  );
}

Getting Started

To start using HeroUI in your React project, follow these steps:

  1. Install the package:

    npm install @heroui/react
    
  2. Import and use components in your React application:

    import React from 'react';
    import { Button, Card, Text } from '@heroui/react';
    
    function App() {
      return (
        <Card>
          <Text>Welcome to HeroUI!</Text>
          <Button>Get Started</Button>
        </Card>
      );
    }
    
    export default App;
    
  3. (Optional) Import the default theme or create a custom theme:

    import { ThemeProvider, defaultTheme } from '@heroui/react';
    
    function Root() {
      return (
        <ThemeProvider theme={defaultTheme}>
          <App />
        </ThemeProvider>
      );
    }
    

Competitor Comparisons

A utility-first CSS framework for rapid UI development.

Pros of Tailwind CSS

  • Larger community and ecosystem with extensive documentation
  • More flexible and customizable with a utility-first approach
  • Better performance due to smaller file sizes after purging unused styles

Cons of Tailwind CSS

  • Steeper learning curve for developers new to utility-first CSS
  • Can lead to longer class names and potentially cluttered HTML

Code Comparison

Tailwind CSS:

<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
  Button
</button>

HeroUI:

<button class="btn btn-primary">
  Button
</button>

Summary

Tailwind CSS offers more flexibility and customization options, making it suitable for a wide range of projects. It has a larger community and ecosystem, which can be beneficial for finding resources and solutions. However, it may have a steeper learning curve compared to HeroUI.

HeroUI provides a more traditional component-based approach, which can be easier to adopt for developers familiar with frameworks like Bootstrap. It may offer a quicker setup for common UI elements but might be less flexible for highly custom designs.

The choice between the two depends on project requirements, team expertise, and desired level of customization.

38,137

⚡️ Simple, Modular & Accessible UI Components for your React Applications

Pros of Chakra UI

  • More mature and widely adopted, with a larger community and ecosystem
  • Extensive documentation and examples, making it easier for developers to get started
  • Built-in support for dark mode and color mode switching

Cons of Chakra UI

  • Larger bundle size, which may impact initial load times for applications
  • Steeper learning curve due to its extensive API and component library
  • More opinionated design system, which may require more customization for unique designs

Code Comparison

Chakra UI:

import { Box, Button, Text } from '@chakra-ui/react'

function Example() {
  return (
    <Box>
      <Text>Hello, Chakra UI!</Text>
      <Button colorScheme="blue">Click me</Button>
    </Box>
  )
}

HeroUI:

import { Box, Button, Text } from '@heroui/react'

function Example() {
  return (
    <Box>
      <Text>Hello, HeroUI!</Text>
      <Button variant="primary">Click me</Button>
    </Box>
  )
}

Both libraries offer similar component-based approaches, with Chakra UI using colorScheme for button styling and HeroUI using variant. Chakra UI's extensive theming system allows for more granular control over component styles, while HeroUI aims for simplicity with predefined variants.

Material UI: Comprehensive React component library that implements Google's Material Design. Free forever.

Pros of Material-UI

  • Extensive component library with a wide range of pre-built UI elements
  • Large and active community, providing robust support and frequent updates
  • Comprehensive documentation and examples for easy implementation

Cons of Material-UI

  • Steeper learning curve due to its extensive API and customization options
  • Larger bundle size, which may impact initial load times for applications
  • Opinionated design system that may require more effort to customize for unique branding

Code Comparison

Material-UI:

import { Button, TextField } from '@mui/material';

<Button variant="contained" color="primary">
  Click me
</Button>
<TextField label="Enter text" variant="outlined" />

HeroUI:

import { Button, Input } from '@heroui/react';

<Button variant="primary">Click me</Button>
<Input placeholder="Enter text" />

Summary

Material-UI offers a more comprehensive set of components and extensive customization options, backed by a large community. However, it may have a steeper learning curve and larger bundle size. HeroUI, while less information is available, appears to offer a simpler API with potentially easier implementation but may have fewer pre-built components and customization options.

An enterprise-class UI design language and React UI library

Pros of Ant Design

  • Extensive component library with 60+ UI elements
  • Robust documentation and community support
  • Highly customizable with a powerful theming system

Cons of Ant Design

  • Larger bundle size due to comprehensive feature set
  • Steeper learning curve for beginners
  • Opinionated design system may not fit all project styles

Code Comparison

Ant Design button example:

import { Button } from 'antd';

const MyComponent = () => (
  <Button type="primary">Click me</Button>
);

HeroUI button example:

import { Button } from '@heroui/react';

const MyComponent = () => (
  <Button variant="primary">Click me</Button>
);

Key Differences

  • Ant Design uses type prop for button variants, while HeroUI uses variant
  • Ant Design has a more extensive API with additional props and customization options
  • HeroUI focuses on simplicity and ease of use, with a smaller component set
  • Ant Design provides more built-in functionality, while HeroUI encourages composing components

Conclusion

Ant Design offers a comprehensive UI toolkit suitable for large-scale applications, while HeroUI provides a lightweight alternative focused on simplicity and flexibility. The choice between the two depends on project requirements, team expertise, and design preferences.

85,173

Storybook is the industry standard workshop for building, documenting, and testing UI components in isolation

Pros of Storybook

  • Mature and widely adopted project with extensive documentation and community support
  • Supports multiple frameworks and libraries (React, Vue, Angular, etc.)
  • Offers advanced features like addons, testing utilities, and design system tools

Cons of Storybook

  • Steeper learning curve due to its extensive feature set
  • Can be overkill for smaller projects or teams
  • Requires more setup and configuration compared to simpler alternatives

Code Comparison

HeroUI:

import { Button } from 'heroui';

const MyComponent = () => (
  <Button variant="primary">Click me</Button>
);

Storybook:

import { Button } from './Button';

export default {
  title: 'Components/Button',
  component: Button,
};

export const Primary = () => <Button variant="primary">Click me</Button>;

Summary

Storybook is a powerful and versatile tool for developing UI components in isolation, offering support for multiple frameworks and advanced features. However, it may be more complex for smaller projects. HeroUI, while less information is available, appears to be a simpler UI component library that might be easier to integrate for basic use cases but may lack the extensive ecosystem and features of Storybook.

Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress 💅

Pros of styled-components

  • More mature and widely adopted project with extensive documentation
  • Supports dynamic styling based on props and themes
  • Offers better performance through automatic critical CSS extraction

Cons of styled-components

  • Steeper learning curve for developers new to CSS-in-JS
  • Requires additional setup and configuration in projects
  • Can lead to larger bundle sizes in some cases

Code Comparison

styled-components:

const Button = styled.button`
  background-color: ${props => props.primary ? 'blue' : 'white'};
  color: ${props => props.primary ? 'white' : 'blue'};
  padding: 10px 20px;
  border: 2px solid blue;
`;

HeroUI:

<Button
  className="bg-blue-500 text-white px-4 py-2 border-2 border-blue-500"
>
  Click me
</Button>

styled-components offers a more dynamic approach to styling with props, while HeroUI relies on utility classes for styling components. styled-components provides a more flexible and programmatic way to create styled elements, whereas HeroUI focuses on rapid development using pre-defined utility classes.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

heorui

HeroUI


License codecov badge npm downloads

Getting Started

Visit https://heroui.com/guide to get started with HeroUI.

Documentation

Visit https://heroui.com/docs to view the full documentation.

Storybook

Visit https://storybook.heroui.com to view the storybook for all components.

Canary Release

Canary versions are available after every merge into canary branch. You can install the packages with the tag canary in npm to use the latest changes before the next production release.

Community

We're excited to see the community adopt HeroUI, raise issues, and provide feedback. Whether it's a feature request, bug report, or a project to showcase, please get involved!

Contributing

Contributions are always welcome!

See CONTRIBUTING.md for ways to get started.

Please adhere to this project's CODE_OF_CONDUCT.

License

MIT