npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@qodo/design-system

v0.19.2

Published

The official design system powering Qodo's AI-driven development tools. Built with React, TypeScript, and Tailwind CSS to ensure our interfaces are as intelligent and intuitive as our code generation.

Readme

Qodo Design System

The official design system powering Qodo's AI-driven development tools. Built with React, TypeScript, and Tailwind CSS to ensure our interfaces are as intelligent and intuitive as our code generation.

This isn't just another component library – it's the foundation that keeps our user experience consistent, accessible, and aligned with Qodo's mission to revolutionize how developers build software.

🚀 Getting Started

Prerequisites

  • Node.js 18+
  • npm
  • React 18+
  • Tailwind CSS

Installation

  1. Login to npm (required for our private org packages):
npm login
  1. Install the design system:
npm install @qodo/design-system
  1. Install peer dependencies (if not already installed):
npm install react react-dom

Setup

1. Configure Tailwind CSS

Install Tailwind CSS in your project:

npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p

2. Import Styles

Add the design system styles to your main entry file (src/index.css or src/globals.css):

@import "tailwindcss";
@import "@qodo/design-system/styles";

📦 Usage

TLDR; Basic Usage

import { Button } from "@qodo/design-system";

function App() {
  return (
    <Button variant="default">Click me</Button>
  );
}

The variant prop is optional and defaults to default.

⚠️ Strict Variant Usage – TypeScript-Protected

In the Qodo Design System, only specific variants are allowed. Using a variant that’s not explicitly defined will result in a TypeScript error at compile time. This ensures our components are always used correctly and consistently.

variant-type-error

Sizes

import { Button } from "@qodo/design-system";

function ButtonSizes() {
  return (
    <div className="flex items-center gap-2">
      <Button size="sm">Small</Button>
      <Button size="default">Default</Button>
      <Button size="lg">Large</Button>
      <Button size="icon">🚀</Button>
    </div>
  );
}

Custom Styling with className

You can extend styles using the className prop:

import { Button } from "@qodo/design-system";

function CustomButton() {
  return (
    <div className="flex flex-col gap-2">
      {/* Add custom background */}
      <Button className="bg-purple-500 hover:bg-purple-600">
        Purple Button
      </Button>

      {/* Add custom spacing */}
      <Button className="px-8 py-3">
        Extra Padding
      </Button>

      {/* Add custom text styles */}
      <Button className="text-lg font-bold">
        Large Bold Text
      </Button>

      {/* Combine with variants */}
      <Button variant="outline" className="border-2 border-blue-500 text-blue-500">
        Custom Outline
      </Button>
    </div>
  );
}

Running Storybook

npm run storybook

Qodo's Color Pallette

storybook-1

Dark Mode

The design system supports dark mode through CSS variables. To enable dark mode, add the dark class to your HTML element:

<html class="dark">
  <!-- Your app -->
</html>

🛠️ Local Development

When working on the design system locally, you have two main approaches to test your changes:

Method 1: Using npm link (Recommended for active development)

This method creates a symlink between your local design system and your test project, allowing real-time updates.

Setup (one-time):

# In your design system directory
cd qodo-design-system
npm run build
npm link

# In your consuming project
cd your-project
npm link @qodo/design-system

Development workflow:

# Terminal 1: Design system with auto-rebuild
cd qodo-design-system
npm run dev  # This watches for changes and rebuilds automatically

# Terminal 2: Your consuming project
cd your-project
npm run dev  # Your app will automatically pick up changes

Making changes:

  1. Edit your design system components
  2. Save the file
  3. The design system rebuilds automatically (if using npm run dev)
  4. Your consuming project immediately sees the changes
  5. No need to reinstall or relink!

When to relink: Only relink when you change package.json exports or entry points:

# In design system directory
npm unlink
npm link

# In consuming project
npm unlink @qodo/design-system
npm link @qodo/design-system

Cleanup when done:

# In consuming project
npm unlink @qodo/design-system
npm install  # Reinstall the published version

# In design system directory
npm unlink  # Remove global link

Method 2: Build and Install (For testing releases)

This method simulates the actual installation process and is useful for testing before publishing.

Using npm pack:

# In design system directory
npm run build
npm pack  # Creates qodo-design-system-0.1.0.tgz

# In consuming project
npm install /path/to/qodo-design-system-0.1.0.tgz

Getting Help

If you encounter issues:

  1. Check that you've followed all setup steps
  2. Verify your Tailwind CSS configuration
  3. Ensure you're using compatible versions of React and other dependencies
  4. Reach out to the team on Slack

🚀 Deployment

The design system is automatically published to NPM through GitHub Actions. There are multiple ways to deploy new versions:

Deployment

For more control over the release process:

  1. Prerequisites: Bump version and commit to main branch (npm version patch # or minor, major)
  2. Go to GitHub Actions in your repository
  3. Select "Publish to NPM" workflow
  4. Click "Run workflow"
  5. Choose deployment type:

New Version Deployment

  • Publish Type: Select "New Version"
  • Version: Choose patch, minor, major, or specify exact version (e.g., 1.2.3)

Rollback/Republish Existing Version

  • Publish Type: Select "Existing Tag"
  • Existing Tag: Enter the tag to republish (e.g., v1.0.0 or 1.0.0)

Before Deploying

Ensure your changes are ready:

# Test locally
npm run build
npm run lint
npm run format:check

# Test in Storybook
npm run storybook

Deployment Requirements

Setup Required (One-time):

  1. NPM Token: Create an automation token at npmjs.com

    • Go to your npm profile → "Access Tokens" → "Generate New Token"
    • Select "Automation" token type
    • Add as NPM_TOKEN secret in GitHub repository settings
  2. Slack Webhook (Optional): Add SLACK_WEBHOOK_URL secret for notifications

Package Access:

  • Ensure you have publish permissions to the @qodo npm organization
  • The package name is @qodo/design-system

Version Strategy

  • Patch (0.1.00.1.1): Bug fixes, small improvements
  • Minor (0.1.00.2.0): New components, new features, backward compatible
  • Major (0.1.01.0.0): Breaking changes, API changes

Rollback Process

If you need to rollback to a previous version:

  1. Use the "Existing Tag" option in manual deployment
  2. Enter the tag of the stable version (e.g., v1.0.0)
  3. The workflow will republish that exact version

Use cases for rollback:

  • Emergency fixes when current version has critical bugs
  • NPM registry issues requiring republication
  • Temporary rollback while investigating issues

Post-Deployment

After deployment:

  • Check the package is available: npm view @qodo/design-system
  • Test installation in a test project
  • Update dependent projects to use the new version
  • Monitor for any issues in production

📚 What's Next

We're continuously expanding the design system. Coming soon:

  • More component variants
  • Additional components (Input, Modal, etc.)
  • Storybook documentation
  • Design tokens for animations and shadows