Looseleaf, 123 hand-drawn shadcn/ui components

Every shadcn/ui part redrawn as paper and ink, with 123 components, 61 blocks, 160 icons. Installs as source through the shadcn registry, MIT licensed.

Looseleaf, 123 hand-drawn shadcn/ui components (free open source code)
Home
Resources

Looseleaf, 123 hand-drawn shadcn/ui components

shadcn/ui is precise. Every component sits on the same grid, every radius matches, and a dashboard built from it looks like the other forty dashboards shipped that week. Looseleaf keeps the parts, the props and the data-slot names, then draws the surface as paper with ink lines on top. You install one component and your JSX does not change.

What Looseleaf actually does

Looseleaf is a React component library and a shadcn registry. The count is 123 components, which covers every shadcn part, including button, sidebar and chart, plus paper objects, marks, stickers, a sketchpad and a chat kit. On top of that sit 61 blocks: logins, signups, sidebars, dashboards, settings pages, pricing sections, chat, notes and landing blocks.

The art ships with the code. There are 160 icons, 48 doodles, 88 stickers, badges, stamps, and a mascot called Stubby drawn in 15 poses. Kevin Sans, the hand-lettered typeface, covers three roles: interface text, titles and stamps. All of it is generated by TypeScript, so nothing arrives as a folder of exported PNG files.

Because the parts and the props are the ones you already use, the swap does not touch your markup. Radix keeps the behaviour. Data attributes such as data-slot keep your existing selectors working.

Why hand-drawn stopped looking like a joke

Sketch interfaces used to be a costume. A doodle border around a form that still jumped on focus, still had a 16px tap target, still ignored the keyboard. The drawing promised warmth and the behaviour delivered nothing.

A drawn surface works when the drawing is the system rather than a skin on top of it. That is the difference between Looseleaf and a hand-drawn theme. The pen is a token, the stroke width is a token, the density is a token, and the components share one engine, so a button from one corner of the library and a chart from another look drawn by the same hand.

Treat the style as positioning rather than decoration. A notebook interface tells people the product is a place to think. That helps a journaling app, a course builder, a research tool or a small CRM. It fights a bank dashboard or a trading terminal with twelve columns of numbers. The look is a sentence you say about the product, and it only works where you want to say it.

How the ink engine draws a component

Everything you see drawn is one SVG element with a data-ink attribute, sitting behind the real DOM label. The label does the work: it holds the text, the focus ring and the click target. The SVG supplies the line.

The drawing itself is a pure TypeScript function in src/lib/ink/recipes/, one recipe per component. Each recipe takes a seed and returns an SVG path string, and the color comes from CSS variables rather than from the function. The same seed produces the same line on the server and in the browser, which is why the markup hydrates without a mismatch. Randomness is real, yet reproducible.

States are a CSS layer. Hover, press and focus reveal drawing that was generated ahead of time, so a pointer moving across a button does not call React at all. Every pen width, fill and density lives in a token with an --ll- prefix, aliased onto the semantic variables shadcn already defines.

☞ The consequence for a design system is practical. You retheme the drawn surfaces by editing tokens, the same way you retheme the flat ones. You are not editing SVG files by hand.

What ships in the registry

The registry splits into pieces, so you can install the minimum:

  • ❶ The ink engine, holding seeded randomness, pens, shapes, fills, the grain and paper textures, the provider and the drawable layer
  • ❷ The art kit, with the drawing DSL, the hand-lettering glyph font, rubber stamps and badges
  • ❸ The paper theme, with tokens, keyframes and utilities merged into your global CSS
  • ❹ The sketchpad, a real drawing surface where the pointer, a finger, pen pressure or the keyboard put strokes on paper, with undo, redo and SVG export

The blocks are worth a look even if you never use them. A login block arrives as a taped sheet on a desk, with the form checked by react-hook-form and zod, so the demo copy is also the production copy.

Installing one component without breaking your tokens

Add the registry to components.json once, under the key @looseleaf, pointing at https://kevintngo.github.io/looseleaf/r/{name}.json. Then pull the pieces you want:

  • npx shadcn@latest add @looseleaf/button
  • npx shadcn@latest add @looseleaf/login-01

The files land in your repo as source, inside components/ui and lib/ink. There is no new entry in dependencies, because there is no package to depend on. You own the code from the first minute, and you can edit a stroke without forking anything.

☛ One command needs care. npx shadcn@latest add @looseleaf/looseleaf installs everything, and its own description says it overwrites your global CSS tokens. On a fresh project that is a feature. On a product with an established theme, install single components instead and keep your palette.

Where it does not fit

Three limits are worth knowing before you plan a build around it.

There is no npm package. The repository is marked private at version 0.1.0, so the only route in is the shadcn registry, which assumes a project with components.json and the shadcn CLI. A plain create-react-app folder needs that setup first.

The stack is current. React 19 and Tailwind v4 are what the components are built and tested against. The theme relies on @theme mappings, which belong to Tailwind v4, so a v3 project needs the migration before the first install.

The visual language is loud. Drawn outlines compete for attention in a dense table, and a medical record or a finance dashboard loses reading speed when every cell is a small sketch. Use it where the drawing carries meaning, and keep the neutral set for the places where it does not.

How states and accessibility work

The library states its guarantees plainly. Keyboard navigation, a visible focus indicator, AA text contrast, 24px targets, reduced motion support, forced colors support, RTL layouts and three interface densities. Each one is a claim you can check in the demo with a keyboard and a high-contrast mode turned on.

The 24px target floor follows the WCAG target size criterion, which asks for at least 24 by 24 CSS pixels on pointer targets. Forced colors matters on Windows high contrast, where any interface that hardcodes colors turns into an unreadable block. A drawn surface fails that test faster than a flat one, so the support is not a detail.

Semantics stay with Radix. The drawing sits behind the real label, so the accessible name comes from the element a screen reader already understands. That is the reason a swapped button keeps working in a form without extra attributes.

Frequently asked questions

Can I drop it into an existing shadcn project?

Yes. Radix owns the behaviour in both libraries, so a replaced component keeps its imports and its props. Install single components and leave the full @looseleaf/looseleaf entry alone if you have a theme of your own, because that entry rewrites global CSS tokens.

Does it work with Tailwind v3?

Not out of the box. The components are built for Tailwind v4 and the theme uses @theme mappings with CSS variables. Plan the upgrade first, then install, otherwise the tokens have nothing to attach to.

Is it free for client work?

Yes. MIT covers the code, the art and Kevin Sans. IBM Plex Mono, used inside the code blocks, ships under the SIL Open Font License 1.1. Nothing asks for an account or a license key.

How do I install only a few components?

Add the registry entry to components.json, then name the piece you want, for example @looseleaf/button or @looseleaf/login-01. Each install writes its own files and pulls only the dependencies that piece needs.

Why it belongs in your stack

You want the shadcn workflow without the shadcn look. A registry solves that in a way a theme cannot, because the result is source you edit inside your own repo. An override file drifts away from upstream on every release, while this one moves only when you move it.

It pairs with the reading here. The guide to LiftKit for Figma and React covers the other end of the open source spectrum, where the design file and the components stay in sync. The piece on design to code with AI agents explains why a registry beats a package when a model writes the integration. If you are deciding whether a drawn look suits the product at all, read the state of retro and brutalist UI in 2026, which covers the taste question with examples.

To judge the motion and the states before installing, open the Looseleaf demo and run it with a keyboard. The source sits on GitHub, where the README carries the install steps and the recipe folder that generates the drawing.

When the screens you build need reference patterns, the other open source code and design and code kits cover the same ship-it-yourself workflow.

Related articles

LiftKit: Open source design system for Figma & React

Resources

4 min read

LiftKit, a free Figma UI kit obsessed with spacing

So I stumbled across this post on Reddit the other day. Some guy spent 18 months building a design system for free and just open sourced the whole thing.

A design screenshot next to its rendered code with a diff overlay between them

Design & Code

14 min read

Design to code with AI agents, without the re-check nightmare

How the open-source design-to-code skill makes an AI agent audit its own screenshot-to-code build, and how to review it in ten minutes.

Ten pastel cards with bold black tool icons, one slot left empty and dashed

Tools

11 min read

10 open source tools we bookmarked in September and October 2026

Ten tools we added to Resources this autumn, with the caveat that matters for each one.

More free resources

desigma launch cover with the headline the design tool you actually own, a download button, the editor on four phone screens and a layers panel

Code

Desigma, a design tool written in Rust

Open source design tool in Rust for macOS, Windows and Linux. Opens real Figma files, keeps components and variables, and runs offline with no account.

react-useanimations, 300 animated icons

Code

react-useanimations, 300 animated icons

300 free animated icons for React with hover, click and loop interactions built in. Zero dependencies, an 8 kB player, and reduced-motion support.

Matita icons, 200 pencil-style glyphs

Components

Matita icons, 200 pencil-style glyphs

200 pencil-style icons as SVG files and React components. Every stroke overshoots like a ruled pencil line, and the whole set is free under the MIT license.

CleanYourTV — Android TV without the ads

Code

CleanYourTV — Android TV without the ads

Open source setup that disables ad services and bloatware on Android TV and Google TV over Wi-Fi. No root, nothing uninstalled, one line restores it.

Gr8r Studio — calm project management workspace

Code

Gr8r Studio — calm project management workspace

A calm project workspace with dashboard, inbox, board, calendar and timeline views. Plain JavaScript modules, no UI framework, zero runtime dependencies.

Spectrum UI — animated React components you copy and own

Components

Spectrum UI — animated React components you copy and own

Open source React and Tailwind component library for animated interfaces. Buttons, cards, loaders, and text effects arrive through one CLI command and land in your own repo as editable files.

Compositor — free Photoshop alternative for macOS

Code

Compositor — free Photoshop alternative for macOS

Free and open source Photoshop alternative for macOS. Layers, masks, PSD import, and a project format any AI agent can read and write.

Mailcheap, self-hosted newsletter on Amazon SES

Code

Mailcheap, self-hosted newsletter on Amazon SES

Self-hosted newsletter on Amazon SES. Write an issue, send it to your list, publish an archive, and pay about $0.10 per 1,000 emails with no per-subscriber fee.

Liquid Glass for React

Code

Liquid Glass for React

Glass surfaces and controls for React on the web and in Electron. Clear and Regular materials refract live content, and every control runs on Base UI behavior.

REA — reverse engineering MCP for AI agents

Code

REA — reverse engineering MCP for AI agents

Give your AI agent an MCP server that reverse engineers any app: native binaries, Electron, .NET, APKs, and websites. Analysis runs locally, MIT licensed.

FSearch — whole-disk file search for macOS

Code

FSearch — whole-disk file search for macOS

Find any file on your Mac in about a millisecond, typos included, and search inside text files. Whole-disk index in Rust, MIT licensed, one small daemon.

@sfinterface/numbers — rolling numbers for React

Code

@sfinterface/numbers — rolling numbers for React

React component that turns only the digits that changed. 13 kB, no dependencies, Intl formatting, five transitions, and reduced-motion support.

RuneIcons — open source icon set for modern UIs

Components

RuneIcons — open source icon set for modern UIs

Thousands of clean, consistent SVG icons for web and app interfaces. Open source, MIT licensed, and ready to drop into Figma, React, or plain HTML today.

Amicro — micro-interactions for any landing page

Code

Amicro — micro-interactions for any landing page

Open source collection of ready-made micro-interactions: hover glow, magnetic buttons, scroll reveals. Copy a snippet, paste into any page, ship motion today.

M3E Canvas — Material 3 Expressive UI builder

Code

M3E Canvas — Material 3 Expressive UI builder

Assemble Material 3 Expressive interfaces in your browser and export a ready-to-use prompt for AI. Open source, free, and built for Android vibe coding.

Driver.js — product tours & onboarding

Code

Driver.js — product tours & onboarding

Lightweight, vanilla JavaScript library for building powerful product tours, feature highlights, and contextual onboarding. No dependencies, just 5kb gzipped, fully customizable and accessible by default.

pdfcn — PDF viewer component for React

Code

pdfcn — PDF viewer component for React

Open source PDF viewer built on the shadcn stack. Renders documents inside your React app with zoom, search, and navigation. No iframe, no vendor lock-in, MIT license.

Free invoice template for Figma

Components

Free invoice template for Figma

Clear and simple table-based document for your business purposes. Powered by editable data grid, which is easy to manage.

Avatar UI design templates & tips

Components

Avatar UI design templates & tips

A part of the upcomong design handbook «The State of Component». Colors, Styles & UI design for Avatar. Events, States and Actions. Including layout samples for inspiration.

App Bar UI design templates & tips

Components

App Bar UI design templates & tips

Application Bar (aka Navigation Bar) — displays prior in-app controls related to the current app section. This freebie contains things to consider when designing App Bars.

Fonts Playground

Global Styles

Fonts Playground

Best web fonts precisely handpicked and optimised for better web legibility and ready to implement into your Figma project.

Website Template

Web Design

Website Template

Landing page template made for Figma. Contains styled components UI kit, desktop & mobile versions. Global styles, Inter, FlatUI colors.

Android UI kit

Mobile Templates

Android UI kit

8 mobile app templates based on popular Android UI design patterns: Calendar, Cards, Tasks, Kanban & Project management and more.

Figma iOS UI kit

Mobile Templates

Figma iOS UI kit

iOS native components and app templates organised into a «Most Design System» fully compatible with Human Interface guidelines.

Material X Starter

Free UI kits

Material X Starter

Top-notch styled components in the design system powered by Auto-layout. Ready-to-use Figma UI kit with styles from the nearest future.

Radar Chart

Data visualization

Radar Chart

Radar chart template made of components and available within a range of popular viewports: desktop, tablet and mobile. Light & Dark.

Rome UI kit lite

Free UI kits

Rome UI kit lite

Components & templates for desktop & mobile apps. Powered by clean and trendy custom guidelines and DM Sans font (OFL).

Xela UI kit starter

Free UI kits

Xela UI kit starter

100+ variants of several components to craft perfectly shaped desktop & mobile apps. Modern styleguides and free Nunito Sans font.

Free iOS UI kit

Mobile Templates

Free iOS UI kit

Customisable & adjustable mobile design system with 100+ variants for a set of components and 8 ready-to-use app layouts to try out.

Mobile-X UI kit

Mobile Templates

Mobile-X UI kit

Meet Mobile-X Figma design system for mobile app design. Cross-compatible & stylish UI kit which fits both iOS / Android apps.

Accordion guide

Tutorials & Education

Accordion guide

The exploration for Accordion component: styles, states, samples, and use cases for desktop & mobile viewports.

Eclipse UI kit

Free UI kits

Eclipse UI kit

Fine components fully loaded with variants, auto-layout, global text & color styles. Hi-end customizable Figma design system (starter).

Appka iOS UI kit

Mobile Templates

Appka iOS UI kit

Appka is a fine-themed & customized iOS design system with 4100+ variants for 28 components and 280+ ready-to-use app layouts for Figma.

Nav templates

Components

Nav templates

This design resource represents navigation components. It contains sidebars, drawers and headers both in light & dark modes.

Dark charts UI kit

Chart Templates

Dark charts UI kit

Try out this handy source of graphs for your next dashboard, pitch, or even print materials. Contains most common dark chart templates.

Figma email templates

Email Templates

Figma email templates

Five awesome and scalable free email templates to engage your subscribers. Dark & light themes. Contains buttons, lists and cards.

Charts widgets dark & light

Chart Templates

Charts widgets dark & light

Line & Wave charts, Bars, Histograms, Ratings and more graphs widgets are available in this free Figma resource. For dashboards, mobile & desktop.

Shopping layout for web app

Desktop templates

Shopping layout for web app

Contains navigation, filtering components, tabs, cards and more. This layout was made with Angular and fully coded.

Orion dark templates

Data visualization

Orion dark templates

Figma library with 40+ desktop charts templates served in light & dark themes. Contains 200+ of dataviz widgets for every case.

Responsive imagery cards

Card Templates

Responsive imagery cards

A variety of responsive cards templates for Figma. Constrained and scalable. Made with global styles for typography and colors.

Landing page & web blocks

Web Design

Landing page & web blocks

Use given blocks as a quickstarter for your very next web design mission. This freebie contains 3 landing pages for desktop, tablet & mobile.

Mobile tables several themes

Mobile Templates

Mobile tables several themes

Components-driven iOS layouts with data grid made from one singe cell. Based on different styles. Allows to create better tables in Figma.

12 free mobile templates

Mobile Templates

12 free mobile templates

Use our Full iOS design system as the starter for your next mobile app. This freebie includes 12 screens dark & light powered by 200+ components.

Calendars & Date picker templates

Components

Calendars & Date picker templates

UI design resource with 56 calendars extracted from our popular UI kits. All the best samples of schedule patterns, planners, event managers.

Schedule & Events template

Desktop templates

Schedule & Events template

This clean calendar template has been made of a scalable grid, accurately made with colored items and wrapped for the desktop.

Material You for web apps

Free UI kits

Material You for web apps

Figma Material Design 3 starter fully loaded with several desktop & mobile templates (with dark themes) and a bundle of components.

iOS Datepickers

Tutorials & Education

iOS Datepickers

Stand out with our Figma iOS date picker. Offering a true-to-life isometric design and easy-to-edit text, it's the most realistic option.

Segment UI kit

Mobile Templates

Segment UI kit

Design stunning Android apps with our free Figma UI kit. Follow Android guidelines and components and use our fonts, colors, and templates.

Figma React UI kit

Design & Code

Figma React UI kit

Our Figma React UI kit 2-in-1 makes web app building faster. Created in Figma, exported to React, and customised with Blueprint.js library.

Messenger app desktop template

Desktop templates

Messenger app desktop template

Effortlessly create world-class communication design with our Messenger Template for Figma. With dark and light mode options.

Zeus UI free website template

Web Design

Zeus UI free website template

Zeus Web UI kit-inspired landing page template. Supports all viewports, card-driven UX, polished with Syne and Space Grotesk fonts.

Design system starter

Global Styles

Design system starter

Launch your project with confidence thanks to our Figma design system. Customize grids, text, color, gradients, and shadows with ease.

Navigation layout 4 samples

Components

Navigation layout 4 samples

Sleek Navigation Menu for Material X design system in Figma. Various sizes and design options. Features badges and active state highlight.

Chart cards

Data visualization

Chart cards

Make your data pop with our easy-to-use Charts UI kit. Featuring bar charts and heatmaps, it's perfect for dataviz, dashboard, pitches and others.

Material UI styled

Free UI kits

Material UI styled

New and improved Material UI Kit, refreshed with enhanced material.io guidelines. Free and ready-to-use components included.

Hyper charts

Data visualization

Hyper charts

Transform your data into captivating visuals with several Figma's chart templates based on Hyper Charts kit. You'll find 8 editable widgets inside.

Search inputs

Components

Search inputs

Explore how Figma inputs are revolutionizing search interface design. Gain key insights to enhance user experience with impeccable UIs.

Figma Grid Layouts

Grid Layouts

Figma Grid Layouts

This template is designed to help you create templates that are beautifully balanced. Features both mobile and desktop layouts with 16/24 gutters.

Panda dashboard template

Desktop templates

Panda dashboard template

Build sleek dashboards with our Panda UI kit starter! Featuring a 1920w desktop template, UI widgets, and components.

Orion dataviz templates

Dashboard Templates

Orion dataviz templates

The design system starter for your next application. This resource contains 6 dashboard templates and a bundle of UI design widgets.

Subscribe to Setproduct

Once per week we send a newsletter with new releases, free resources and blog posts

By clicking Sign Up you're confirming that you agree with our Terms and Conditions.