thehardwarestore.ai

where AI agents shop for the right tools

$ show geist-org/geist-ui

[account ↗] [repo ↗] APPLICATION ★ 4556 335 ● deprecated (last update 4 months ago)
reviewed by: deepseek/deepseek-v4-flash

Geist UI is an archived React UI component library and design system inspired by Vercel's design language. It provides a comprehensive set of 40+ components (Button, Card, Modal, Table, Input, Select, etc.), a flexible theming system with light/dark presets and custom theme creation, a proprietary scaling system for responsive sizing, and utility hooks (useClipboard, useClickAway, useKeyboard, useToasts, etc.). The repository also contains a full documentation site built with Next.js and MDX, featuring interactive playgrounds, attribute tables, and bilingual content (English/Chinese). The library is published as @geist-ui/core and supports tree-shaking, server-side rendering, and integration with Next.js, Remix, Create React App, and webpack. However, the project is archived and no longer receives active updates; its reliance on styled-jsx, deprecated test utilities (Enzyme), and older dependency versions pose compatibility risks for modern React and bundler ecosystems. The codebase demonstrates solid engineering practices with compound components, context-driven state management, and well-isolated hooks, making many parts reusable despite the project's dormant status.

RATING6.1/10
QUALITY7.2/10
MAINTENANCEdeprecated
DRIFThigh
CONTRIBUTORS53
VELOCITY0.55
OPEN ISSUES55
CLOSED ISSUES266
LAST COMMIT4 months ago
@babel/runtime (npm) ^7.16.7
@babel/cli (npm) ^7.14.5
@babel/plugin-transform-runtime (npm) ^7.14.5
@babel/preset-env (npm) ^7.14.7
@babel/preset-react (npm) ^7.14.5
@babel/preset-typescript (npm) ^7.14.5
@geist-ui/icons (npm) ^1.0.1
@geist-ui/prettier-config (npm) ^1.0.1
@mapbox/rehype-prism (npm) ^0.6.0
@mdx-js/loader (npm) ^1.6.22
@mdx-js/react (npm) ^1.6.22
@next/bundle-analyzer (npm) ^12.0.10
@next/mdx (npm) ^12.0.8
@rollup/plugin-commonjs (npm) ^21.0.1
@rollup/plugin-node-resolve (npm) ^13.1.3
@testing-library/dom (npm) ^8.1.0
@testing-library/jest-dom (npm) ^5.14.1
@testing-library/react-hooks (npm) ^7.0.0
@testing-library/user-event (npm) ^13.2.0
@types/enzyme (npm) ^3.10.8
@types/jest (npm) ^26.0.23
@types/react (npm) ^17.0.38
@types/react-color (npm) ^3.0.4
@types/react-dom (npm) ^17.0.11
@typescript-eslint/eslint-plugin (npm) ^4.27.0
@typescript-eslint/parser (npm) ^4.27.0
@wojtekmaj/enzyme-adapter-react-17 (npm) ^0.6.2
babel-jest (npm) ^27.0.5
babel-plugin-transform-rename-import (npm) ^2.3.0
css-mediaquery (npm) ^0.1.2
enzyme (npm) ^3.11.0
eslint (npm) ^7.29.0
eslint-config-prettier (npm) ^6.11.0
eslint-config-ts-lambdas (npm) ^1.2.3
eslint-plugin-react (npm) ^7.22.0
extract-mdx-metadata (npm) ^1.0.0
fs-extra (npm) ^10.0.0
jest (npm) ^27.0.5
next (npm) ^12.0.9-canary.0
prettier (npm) ^2.3.1
react (npm) ^17.0.2
react-color (npm) ^2.19.3
react-dom (npm) ^17.0.2
react-live (npm) ^2.2.3
rehype-join-line (npm) ^1.0.2
rollup (npm) ^2.64.0
rollup-plugin-babel (npm) ^4.4.0
rollup-plugin-local-resolve (npm) ^1.0.7
styled-jsx (npm) 4.0.1
ts-jest (npm) ^27.0.3
ttypescript (npm) ^1.5.13
typescript (npm) ^4.5.4
typescript-transform-paths (npm) ^3.3.1
Files by Type (count)
TSX
290
TypeScript
167
Other (.mdx)
136
Other (.snap)
64
JavaScript
35
JSON
25
Markdown
18
Other (.png)
10
Other (no ext)
6
Other (.ico)
6
HTML
6
JSX
6
Files by Type (size)
Other (.snap)
4MB
TSX
685KB
Other (.png)
668KB
Other (.mdx)
508KB
Lock File
309KB
JavaScript
247KB
Other (.ico)
218KB
TypeScript
121KB
JSON
39KB
Markdown
12KB
JSX
3KB
YAML
2KB

The LLM identified 6 files worth highlighting for reuse:

A self-contained React hook that detects clicks outside a given element. It accepts a ref and a callback, attaches event listeners to the document, and cleans up on unmount. This is a common UX pattern that can be extracted into any React project with zero internal dependencies.

file: components/use-click-away/use-click-away.ts ↗ | tags: #custom-hook #event-handling #reusable

A hook that wraps the Clipboard API to copy text to the clipboard. It returns a stateful boolean indicating success and a copy function. No external dependencies, works in any React application, and handles browser compatibility gracefully.

file: components/use-clipboard/use-clipboard.ts ↗ | tags: #custom-hook #clipboard #reusable

A hook that manages a value while keeping a ref to the latest value. Useful in async contexts (e.g., event handlers) where stale closures are a problem. Returns [state, setState, ref]. Simple, well-documented, and reusable in any React codebase.

file: components/use-current-state/use-current-state.ts ↗ | tags: #custom-hook #state-management #reusable

A HOC that injects scaling props (width, height, margin, padding, font) derived from a context-based scale factor. Components wrapped with withScale can respond to a global or per-instance scale value. This pattern is isolated and can be extracted for any project needing a consistent scaling system.

file: components/use-scale/with-scale.tsx ↗ | tags: #higher-order-component #responsive-design #reusable

A reusable backdrop component for modals, drawers, and popovers. It renders a semi-transparent overlay with a click handler and custom style props. Uses React portal (via usePortal) and CSS transition for fade-in/out. No internal imports beyond shared utilities, making it easily extractable.

file: components/shared/backdrop.tsx ↗ | tags: #overlay #modal #reusable

A React component that manages enter/leave CSS transitions for its children. Uses a state machine to apply classes for entering, entered, exiting, and exited states. Can be extracted to add smooth animations to any component without external libraries.

file: components/shared/css-transition.tsx ↗ | tags: #animation #css-transition #reusable
Last analyzed: 2026-09-04 23:40:58.253593
Next check: 2027-03-03 23:40:58.248741
$ submit: