Skip to content
/ scl Public

Simsies Component Library: The Most Based UI on the Web

License

Notifications You must be signed in to change notification settings

jcpsimmons/scl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

265 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

  ____   ____  _
 / ___| / ___|| |
 \___ \| |    | |
  ___) | |___ | |___
 |____/ \____||_____|

SIMSIES COMPONENT LIBRARY
"because copy-pasting is for normies"

SCL - Simsies Component Library

Storybook npm License: MIT

A BASED React component library that doesn't suck. Built on shadcn/ui, Radix primitives, and Tailwind CSS because I'm not a masochist who writes CSS from scratch anymore.

    ╔══════════════════════════════════════════════════════════════╗
    β•‘                                                              β•‘
    β•‘   > npm install @drjoshcsimmons/scl                          β•‘
    β•‘                                                              β•‘
    β•‘   [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] 100%            β•‘
    β•‘                                                              β•‘
    β•‘   βœ“ installed 1 package                                      β•‘
    β•‘   βœ“ your code now has TASTE                                  β•‘
    β•‘   βœ“ maidens acquired                                         β•‘
    β•‘                                                              β•‘
    β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

What the hell is this?

It's my personal component library. I got tired of copy-pasting the same damn components between projects, so I made this. Now I just npm install and get on with my life like a functional adult.

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   VIRGIN DEVS:      β”‚
                    β”‚   "Let me just      β”‚
                    β”‚    copy this file   β”‚
                    β”‚    real quick..."   β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                              β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   *3 hours later*   β”‚
                    β”‚   "Why doesn't this β”‚
                    β”‚    work anymore"    β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

        vs.

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   CHAD SCL USERS:   β”‚
                    β”‚   npm install       β”‚
                    β”‚   *ships product*   β”‚
                    β”‚   *goes outside*    β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Installation

npm install @drjoshcsimmons/scl
# or
pnpm add @drjoshcsimmons/scl
# or
yarn add @drjoshcsimmons/scl
# (we don't discriminate against package managers here)

Usage

import { Button, Card, Input } from "@drjoshcsimmons/scl";
import "@drjoshcsimmons/scl/globals.css"; // Don't forget this or everything looks like shit

function App() {
  return (
    <Card>
      <Input placeholder="Type some crap..." />
      <Button>Do the thing</Button>
    </Card>
  );
}

Components

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                       COMPONENT ARSENAL                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                β”‚
β”‚  β”Œβ”€ LAYOUT ─────────────────────────────────────────────────┐  β”‚
β”‚  β”‚ Accordion β€’ Card β€’ Collapsible β€’ Scroll Area             β”‚  β”‚
β”‚  β”‚ Separator β€’ Sheet β€’ Tabs β€’ Resizable                     β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                                β”‚
β”‚  β”Œβ”€ FORMS ──────────────────────────────────────────────────┐  β”‚
β”‚  β”‚ Button β€’ Checkbox β€’ Input β€’ Label β€’ Radio Group          β”‚  β”‚
β”‚  β”‚ Select β€’ Slider β€’ Switch β€’ Textarea β€’ Toggle             β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                                β”‚
β”‚  β”Œβ”€ DATA DISPLAY ───────────────────────────────────────────┐  β”‚
β”‚  β”‚ Avatar β€’ Badge β€’ Progress β€’ Skeleton β€’ Table β€’ Tooltip   β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                                β”‚
β”‚  β”Œβ”€ FEEDBACK ───────────────────────────────────────────────┐  β”‚
β”‚  β”‚ Alert β€’ Alert Dialog β€’ Dialog β€’ Popover β€’ Dropdown Menu  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                                β”‚
β”‚  β”Œβ”€ WEIRD CUSTOM SHIT ──────────────────────────────────────┐  β”‚
β”‚  β”‚ Dithered Image β€’ Statusline β€’ Terminal Textarea          β”‚  β”‚
β”‚  β”‚ Code Editor (with VIM MODE because we're not animals)    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Development

# Install dependencies
pnpm install

# Run Storybook (this is where the magic happens)
pnpm dev

# Run tests (yes I actually write tests, fuck off)
pnpm test

# Build the library
pnpm build

# Type check (for the paranoid)
pnpm typecheck

Storybook

Check out the components at jcpsimmons.github.io/scl

         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚                                     β”‚
         β”‚   STORYBOOK PREVIEW:                β”‚
         β”‚                                     β”‚
         β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
         β”‚   β”‚  [=========]  Button        β”‚   β”‚
         β”‚   β”‚  [    ●    ]  Toggle        β”‚   β”‚
         β”‚   β”‚  [β–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘]  Progress      β”‚   β”‚
         β”‚   β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  Card          β”‚   β”‚
         β”‚   β”‚  β”‚ Content β”‚                β”‚   β”‚
         β”‚   β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                β”‚   β”‚
         β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
         β”‚                                     β”‚
         β”‚   (but cooler because retro theme) β”‚
         β”‚                                     β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The Aesthetic

╔════════════════════════════════════════════════════════════════════╗
β•‘                                                                    β•‘
β•‘   This library has a RETRO TERMINAL AESTHETIC because:             β•‘
β•‘                                                                    β•‘
β•‘   β€’ No border-radius (corners are for cowards)                     β•‘
β•‘   β€’ No shadows (we live in FLATLAND)                               β•‘
β•‘   β€’ BigBlueTerm437 monospace font (embrace the CRT vibes)          β•‘
β•‘   β€’ CSS variables for theming (HSL colors because we're not        β•‘
β•‘     savages who use hex in 2099)                                   β•‘
β•‘   β€’ Dark mode (obviously)                                          β•‘
β•‘                                                                    β•‘
β•‘   If you want rounded corners and drop shadows, Material UI is     β•‘
β•‘   ──────────────────────────────────────────────>  that way        β•‘
β•‘                                                                    β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

Why "Simsies"?

It's my name. Well, part of it. Don't overthink it.

             ___________________
            < Simmons -> Simsies >
             -------------------
                    \   ^__^
                     \  (oo)\_______
                        (__)\       )\/\
                            ||----w |
                            ||     ||

Tech Stack

    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚                                                        β”‚
    β”‚   React ──────────────► Because it's 2099              β”‚
    β”‚      β”‚                                                 β”‚
    β”‚      β–Ό                                                 β”‚
    β”‚   Radix UI ──────────► Accessibility handled           β”‚
    β”‚      β”‚                                                 β”‚
    β”‚      β–Ό                                                 β”‚
    β”‚   Tailwind CSS ──────► Utility classes go brrrr        β”‚
    β”‚      β”‚                                                 β”‚
    β”‚      β–Ό                                                 β”‚
    β”‚   CVA ────────────────► Variants without the pain      β”‚
    β”‚      β”‚                                                 β”‚
    β”‚      β–Ό                                                 β”‚
    β”‚   TypeScript ─────────► Red squiggles save lives       β”‚
    β”‚      β”‚                                                 β”‚
    β”‚      β–Ό                                                 β”‚
    β”‚   Vite ───────────────► Fast AF builds                 β”‚
    β”‚      β”‚                                                 β”‚
    β”‚      β–Ό                                                 β”‚
    β”‚   Vitest ─────────────► Tests that don't take forever  β”‚
    β”‚                                                        β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Contributing

    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚                                               β”‚
    β”‚   1. Fork the repo                            β”‚
    β”‚   2. Make your changes                        β”‚
    β”‚   3. Write tests (non-negotiable)             β”‚
    β”‚   4. Open a PR                                β”‚
    β”‚   5. ???                                      β”‚
    β”‚   6. Profit                                   β”‚
    β”‚                                               β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

License

MIT - Do whatever the fuck you want with it.

    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
    β–ˆ                                                          β–ˆ
    β–ˆ   "I used to copy-paste components like a peasant.       β–ˆ
    β–ˆ    Now I npm install SCL and actually touch grass."      β–ˆ
    β–ˆ                                                          β–ˆ
    β–ˆ                              - Some developer, probably  β–ˆ
    β–ˆ                                                          β–ˆ
    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ

Made with β˜• and mass quantities of mass quantities by @jcpsimmons

About

Simsies Component Library: The Most Based UI on the Web

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •