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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@acid-info/lsd-react

v0.2.0-beta.5

Published

LSD is an open-source design system challenging conventional norms in the world of digital products and experiences. Rooted in a philosophy that values content over excess, we're here to decentralize design and empower the message. Our minimalist approach

Readme

Logos Design System (LSD)

LSD is an open-source design system challenging conventional norms in the world of digital products and experiences. Rooted in a philosophy that values content over excess, we're here to decentralize design and empower the message. Our minimalist approach is a rebellion against the cluttered design landscape. Join us in our mission to simplify and refocus design for all, with working code, tools, resources, and a community of like-minded individuals.

Getting Started

Installation

Install the latest version of LSD React into your project using Yarn or NPM.

yarn add @acid-info/lsd-react

# or

npm i -S @acid-info/lsd-react

Theme Setup

LSD provides comprehensive theme support with options for both built-in and custom themes.

Getting Started with Next.js

Add LSD theme support to your Next.js app. Important: LsdThemeStyles doesn't work inside Next.js's <Head> component due to SSR serialization issues.

Option 1: Place outside of <Head>

// app/layout.tsx
import { LsdThemeStyles } from '@acid-info/lsd-react/theme'
import { PortalProvider } from '@acid-info/lsd-react/client/PortalProvider'

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en" data-theme="light">
      <body>
        <LsdThemeStyles />
        <PortalProvider>{children}</PortalProvider>
      </body>
    </html>
  )
}

Option 2: Manual injection in <Head>

// app/layout.tsx
import { generateLsdVars } from '@acid-info/lsd-react/theme'
import { PortalProvider } from '@acid-info/lsd-react/client/PortalProvider'

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  const themeStyles = generateLsdVars({ theme: 'light' })

  return (
    <html lang="en" data-theme="light">
      <head>
        <style
          id="lsd-theme-styles"
          dangerouslySetInnerHTML={{ __html: themeStyles }}
        />
      </head>
      <body>
        <PortalProvider>{children}</PortalProvider>
      </body>
    </html>
  )
}

Theme Switching

Switch between themes by modifying the data-theme attribute:

<html data-theme="dark">
  <!-- Content will use dark theme -->
</html>

Advanced Theme Configuration

Create and apply custom themes:

import { LsdThemeStyles, createTheme, defaultThemes } from '@acid-info/lsd-react/theme'

const customTheme = createTheme({
  breakpoints: {
    sm: { width: 768 },
    md: { width: 1024 },
    lg: { width: 1280 },
    xl: { width: 1440 },
  },
  palette: {
    primary: '20, 0, 255',    // RGB values as strings
    secondary: '255, 255, 255',
  },
  spacing: [],
  typography: {},
  typographyGlobal: {
    genericFontFamily: 'sans-serif',
  },
}, defaultThemes.light) // extend the default light theme

// Use in your app
function App() {
  return (
    <>
      <LsdThemeStyles
        customThemes={{
          light: customTheme,
          dark: createTheme(/* dark theme options */, defaultThemes.dark)
        }}
        initialTheme="light"
      />
      {/* rest of your app */}
    </>
  )
}

Using LSD Components

Recommended Usage (Individual Imports)

Import LSD components individually for optimal tree-shaking and bundle size:

import { Button } from '@acid-info/lsd-react/client/Button'
import { TextField } from '@acid-info/lsd-react/client/TextField'

// CSS must be imported manually
import '@acid-info/lsd-react/css'

function App() {
  return (
    <div>
      <Button>Click me</Button>
      <TextField placeholder="Enter text..." />
    </div>
  )
}

Legacy/Bulk Import Support

For compatibility with older projects, LSD also supports bulk imports:

// Import all components at once (larger bundle size)
import { Button, TextField } from '@acid-info/lsd-react'

// Manual CSS import (required)
import '@acid-info/lsd-react/css'

function App() {
  return (
    <div>
      <Button>Click me</Button>
      <TextField placeholder="Enter text..." />
    </div>
  )
}

Note: CSS must be manually imported regardless of which import pattern you use.

Portal System

Some LSD components (like Autocomplete, Dropdown, DatePicker, etc.) render overlays that need to be positioned outside the normal component tree. These components require the PortalProvider to be rendered somewhere up the component tree.

Components Requiring PortalProvider

These components won't work properly without PortalProvider:

  • Autocomplete - dropdown positioning
  • Breadcrumb - overflow menu
  • DatePicker - calendar overlay
  • DateRangePicker - calendar overlay
  • Dropdown - menu positioning
  • ToastProvider - toast notifications

Resources