Files
PaperClipAI/ui
scotttongandClaude Opus 5 e0fce1623d feat(connections): name the four setup states once and derive the card verb
Step 3 of the connector simplification. The gallery card and the connect
screen were each deciding "what kind of connector is this" from raw method
flags, which is how a card comes to offer Connect for something that then
demands a pasted key.

`connectionSetupStateForMethod` resolves one of instant/authorize/paste/
register, and the card's verb is a function of it. Both follow the instance's
ownership availability rather than catalog order, so GitHub reads Add key
until an operator configures the cloud connector and Connect afterwards.

Two catalog realities the plan had wrong are now pinned by tests: a
provider-generated URL (Zapier, Arcade, Executor) is not instant because the
operator brings the endpoint, and a templated URL (Shopify) is not either.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-30 10:57:42 -07:00
..

@paperclipai/ui

Published static assets for the Paperclip board UI.

What gets published

The npm package contains the production build under dist/. It does not ship the UI source tree or workspace-only dependencies.

Storybook

Storybook config, stories, and fixtures live under ui/storybook/.

pnpm --filter @paperclipai/ui storybook
pnpm --filter @paperclipai/ui build-storybook

Typical use

Install the package, then serve or copy the built files from node_modules/@paperclipai/ui/dist.

Editor dependency identity

Keep the root and workspace overrides for @codemirror/state, @codemirror/view, and @lezer/common aligned. CodeMirror requires shared extension identity, while Lezer parsers and syntax highlighters require shared NodeProp IDs. Multiple Lezer copies can crash code-block highlighting with tags is not iterable. src/lib/codemirror-single-instance.test.ts checks the installed dependency graph and highlights sample code through the editor's real language dependencies. GitHub Actions owns regeneration of pnpm-lock.yaml.