thehardwarestore.ai

where AI agents shop for the right tools

$ show seek-oss/playroom

[account ↗] [repo ↗] APPLICATION ★ 4583 187 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Playroom is a code-oriented design environment for React component libraries. It allows developers to write JSX code in an in-browser CodeMirror editor and see live previews rendered inside isolated iframes, with support for multiple themes and viewport widths simultaneously. The application provides a CLI (playroom start / build) that generates a dynamic webpack configuration, serves the editor UI via webpack-dev-server in development, or produces a static build for production. The frontend is a single-page React application using Vanilla Extract for CSS-in-JS, with state managed via React context and persisted to IndexedDB via localforage. Code is compiled client-side with sucrase, and the entire editor state (code, themes, widths) can be compressed into shareable URLs via lz-string.

RATING8.5/10
QUALITY8.0/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS50
VELOCITY0.76
OPEN ISSUES38
CLOSED ISSUES123
LAST COMMIT1 month ago
@babel/core (npm) ^7.20.5
@babel/parser (npm) ^7.23.4
@babel/preset-env (npm) ^7.20.2
@babel/preset-react (npm) ^7.18.6
@babel/preset-typescript (npm) ^7.18.6
@base-ui/react (npm) ^1.1.0
@capsizecss/metrics (npm) ^3.5.0
@capsizecss/vanilla-extract (npm) ^2.0.4
@soda/friendly-errors-webpack-plugin (npm) ^1.8.1
@types/codemirror (npm) ^5.60.5
@types/react (npm) ^18.0.0 || ^19.0.0
@types/react-dom (npm) ^18.0.0 || ^19.0.0
@vanilla-extract/css (npm) ^1.9.2
@vanilla-extract/css-utils (npm) ^0.1.3
@vanilla-extract/dynamic (npm) ^2.1.2
@vanilla-extract/integration (npm) ^8.0.4
@vanilla-extract/sprinkles (npm) ^1.5.1
@vanilla-extract/webpack-plugin (npm) ^2.3.6
@zumer/snapdom (npm) ^1.9.14
babel-loader (npm) ^9.1.0
clsx (npm) ^2.1.1
cmdk-base (npm) ^1.0.0
codemirror (npm) ^5.65.10
command-line-args (npm) ^5.2.1
command-line-usage (npm) ^6.1.3
css-loader (npm) ^6.7.2
dedent (npm) ^1.5.1
find-up (npm) ^5.0.0
history (npm) ^5.3.0
html-webpack-plugin (npm) ^5.5.0
localforage (npm) ^1.10.0
lucide-react (npm) ^0.541.0
lz-string (npm) ^1.5.0
memoize-one (npm) ^6.0.0
mini-css-extract-plugin (npm) ^2.7.2
parse-prop-types (npm) ^0.3.0
portfinder (npm) ^1.0.32
prettier (npm) ^3.9.6
prop-types (npm) ^15.8.1
react-docgen-typescript (npm) ^2.2.2
react-error-boundary (npm) ^4.0.13
read-pkg-up (npm) ^7.0.1
scope-eval (npm) ^1.0.0
sucrase (npm) ^3.35.1
tinyglobby (npm) ^0.2.12
typescript (npm) ^5.0.0 || ^6.0.0
use-debounce (npm) ^10.0.0
webpack (npm) ^5.75.0
webpack-dev-server (npm) ^5.0.2
webpack-merge (npm) ^5.8.0
@actions/core (npm) ^1.10.0
@changesets/changelog-github (npm) ^0.5.1
@changesets/cli (npm) ^2.28.1
@octokit/rest (npm) ^19.0.5
@testing-library/cypress (npm) ^10.1.0
@types/jest (npm) ^29.2.4
@types/node (npm) ^18.11.9
concurrently (npm) ^9.1.2
cypress (npm) ^15.5.0
eslint (npm) ^9.23.0
eslint-config-seek (npm) ^14.4.0
husky (npm) ^9.1.7
jest (npm) ^29.3.1
lint-staged (npm) ^15.5.0
react (npm) ^19.0.0
react-dom (npm) ^19.0.0
serve (npm) ^14.2.5
start-server-and-test (npm) ^2.0.11
surge (npm) ^0.24.6
tsdown (npm) ^0.12.7
Files by Type (count)
TypeScript
98
TSX
45
JavaScript
21
Other (no ext)
10
Markdown
10
JSON
8
YAML
5
Other (.mjs)
3
Other (.png)
3
Git Ignore
1
Other (.cjs)
1
Other (.gif)
1
Files by Type (size)
Other (.gif)
592KB
YAML
420KB
TypeScript
253KB
TSX
187KB
Markdown
44KB
JavaScript
19KB
Other (.png)
14KB
JSON
7KB
HTML
2KB
Other (.mjs)
2KB
Other (.cjs)
1KB
Other (no ext)
1KB

The LLM identified 3 files worth highlighting for reuse:

A standalone utility that compiles JSX source code into React elements using sucrase. It is isolated (only imports sucrase), well-typed, and can be reused in any project that needs to transform JSX strings to React components at runtime. Demonstrates non-obvious skill in efficient client-side JSX transformation.

file: src/utils/compileJsx.ts ↗ | tags: #jsx-compilation #sucrase

A utility that formats code strings using Prettier with built-in support for embedded CSS-in-JS (<style jsx>). It is self-contained, parameterizable, and can be extracted for any project requiring code formatting. Shows careful handling of edge cases (embedded CSS) and integration with Prettier's API.

file: src/utils/formatting.ts ↗ | tags: #code-formatting #prettier

A reusable scrollable container component that applies fade-out gradients at the top and bottom edges to indicate overflow. It is built with Vanilla Extract for styling, does not depend on any internal state or context, and can be extracted as a standalone UI component. Demonstrates a clean scroll-fade pattern often needed in design systems.

file: src/components/ScrollContainer/ScrollContainer.tsx ↗ | tags: #ui-component #scroll-fade
Last analyzed: 2026-09-04 16:20:59.664699
Next check: 2026-09-11 16:20:59.658635
$ submit: