Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Linear Detail Integration Block for React

An integration detail section for a cycle-planning tool connecting to Linear: one framed panel with a three-way access level over a checklist of six permissions that grows with the level, the OAuth scopes it requests, and three install steps.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

An integration detail section for React with Base UI, written for Cyclemoor, a fictional cycle-planning tool, and its Linear connection. A centred header names both ("Cyclemoor for Linear") with one sentence. One framed panel holds a segmented level (Read only, Comment, Create issues) over a checklist of six permissions: each level adds rows, and the rows it doesn't have are tinted and read "Not at this level". Three scope chips (read, comments:create, issues:create) show what the chosen level would request, and a note says Cyclemoor never asks for admin. The panel's foot has the mark pair (Cyclemoor's own tile and Linear's neutral lettermark tile), the Connect Linear Shine Button and a View docs link. Under a band rule, three install steps sit in a row between hairlines, and the block ends on them, so no rule closes it. Choosing a level changes this page only, and a polite status line, present from the first paint, says so. It's built from Guides, Frame, Segment Group, Shine Button and Button, with your theme's tokens for every colour. Linear is named in text only: no Linear logo, colour or wordmark ships with the block. The product and its permission list are example data.

FAQ

Which Linear scopes does each level request?

read is the default and Linear always includes it. Comment adds comments:create, which lets an app create issue comments. Create issues adds issues:create, which lets it create issues and their attachments. These are the targeted scopes Linear documents as alternatives to the broad write scope, and admin is never requested. Scopes go in the authorize request as one comma-separated list, for example scope=read,comments:create. Edit SCOPES and PERMISSIONS at the top of the file to match what your app really asks for.

How do I change what a level includes?

Each permission in PERMISSIONS has a rank: 0 appears from Read only up, 1 from Comment up, 2 only at Create issues. The checklist, the chips and the count ("4 of 6 permissions") all derive from those ranks and the selected level, so adding a permission is one object. LEVELS holds each level's label and the sentence read out by the status line.

Does Connect Linear connect anything?

No. Both buttons are links (href="#"): point Connect Linear at your Linear OAuth authorize address with the scope list the chosen level produces, and View docs at your setup guide. The level control changes this page only, and the status line says "Nothing is sent to Linear". Connect Linear is a Shine Button, the block's one primary action; View docs is an outline button. Both buttons render the link they're given with render, with nativeButton={false}.

Can I show Linear's logo?

The block names Linear in text, the way any integration page says what it works with, and ships no Linear logo, colour or wordmark. Its tile is a neutral lettermark, Li in a muted square, in an icon slot that a code comment marks: drop in the official logo only if you have the rights to use it, under the owner's brand guidelines, and never redraw it. The pair is hidden from assistive technology because the heading already names both products.

How does it work with a keyboard and a screen reader?

The level control is a real segmented radio group named by its heading: arrow keys move between the three levels and the choice is announced. A locked permission is marked in words ("Not at this level") as well as by its tint and lock icon, and each scope chip carries a hidden "requested" or "not requested". The status line is a polite live region that is in the page from load, so a change of level is spoken once.

How does it fit on a phone, in right-to-left layouts and with reduced motion?

On a phone the level control fills the panel, the steps stack between rules and the scope chips wrap. The panel holds one height across levels because every permission row is always drawn, locked or not. Scopes stay left to right inside a right-to-left layout while the rows flip. The header and panel fade up once on load; with reduced motion they simply appear.

  • Pro

    An integration setup flow for a cycle-planning tool connecting to Linear in three steps: who comments and creates issues (an app or you, each with a drawn sample comment), the OAuth scopes to ask for, and a test issue with its draft card.

  • Pro

    Linear Grid Integration

    Cards and previews

    An integration grid section for a cycle-planning tool syncing with Linear: six issue fields on shared hairlines, each with a drawing of its two sides whose arrow flips and a three-button direction control, plus a derived tally.

  • Pro

    Linear List Integration

    Grouped and triaged

    An integration list section for a cycle-planning tool reading issues from Linear's Triage: three real tabs, five issue rows with Accept and Decline always visible, a roving keyboard set (J, K, A, D) that only acts inside the list, and a working Retry.

  • Pro

    An integration stats section for a cycle-planning tool reading finished issues from Linear: a framed strip plot of days to done on one 0 to 14 day axis, four team lanes with a dot per issue and a median tick, and a headline that names the slowest issue.

  • Pro

    Slack Detail Integration

    Scopes and steps

    An integration detail section for a spend tool connecting to Slack: a header with the mark pair and Add to Slack, then what it does, the Slack scopes it reads and writes, three steps to install and the listing's facts.

  • Pro

    Depth Table Integrations About

    Security and platform

    An integration depth table for a data-sync service: seven systems in plain type with direction, sync frequency, sign-in method and a state dot, in a framed, scrolling table.