UI32
47 Accordion48 Alerts49 Avatar50 Badge51 Breadcrumb52 Button53 Button Group54 Calendar55 Card56 Checkbox57 Collapsible58 Combobox59 Data Table60 Date Picker61 Dialog62 Dropdown Menu63 Form64 Input65 Input Mask66 Input OTP67 Pagination68 Popover69 Radio Group70 Select71 Sheet72 Slider73 Sonner74 Switch75 Table76 Tabs77 Textarea78 Tooltip
Charts2
01 Animated radial chart99 Live line
Interactive6
02 Message dock03 Voice powered orb07 Draggable rope93 Timer113 Elastic frame117 Scene states
AI2
13 AI voice input103 Agent trace
Galleries4
04 Ruler carousel10 Portfolio gallery32 Hover image gallery115 Project index
Heroes2
05 Video scroll hero116 Aperture dive
Shaders6
80 Aurora veil88 Kinetic dots90 Silt91 Intaglio92 Phosphor114 Sumi
Tables20
06 Financial table43 Contacts table44 Leads table45 Resizable table46 Server management89 Periodic table100 Flap ledger120 Sortable table121 Pricing table122 Invoice table123 Leaderboard124 Changelog table125 API reference table126 File tree table127 Timetable128 Shortcuts table129 Spec sheet130 Transactions table131 Spreadsheet grid132 Permissions matrix
Cards15
11 Video upload card16 Animated card options17 Animated card status list18 Audio upload card19 Bonuses incentives card20 Coach scheduling21 Dashboard card modal22 Event countdown card23 Hover detail card24 News cards25 Onboarding stages26 Prediction market card27 Product reveal card28 Profile hover card29 Project cards
Badges1
14 Animated status badge
Controls3
31 Gradient selector95 Adaptive precision slider96 Click wheel
Navigation2
94 Radial command ring108 Minimap scrollbar
Utilities3
98 Spring tuner110 Stroke-morph icon119 Glow rules
HUD8
09 HUD frame15 Animated download34 Glitchy 40435 Overlay 236 HUD button37 HUD graph38 HUD status40 Warning graphic
Text10
33 Reveal text133 Glyph morph134 Weight wave135 Decode text136 Magnetic letters137 Slice shift138 Stroke draw type139 Ink bleed text140 Liquid text141 Chromatic text
Components•Minimap scrollbar
Components•Minimap scrollbar

Minimap scrollbar

A scroll rail that shows where you are in the document and how it is built. Ticks mark headings and blocks, and the heading under your pointer appears in a label.

Dependencies

Motionclsx

Copy below cli

npx shadcn@latest add @bjork-ui/minimap-scrollbar

How to use

import { useRef } from "react";import { MinimapScrollbar } from "@/components/bjork-ui/navigation/minimap-scrollbar";export function Article() {  const scrollRef = useRef<HTMLDivElement>(null);  return (    <div className="relative h-[440px]">      <div ref={scrollRef} className="h-full overflow-y-auto">        {/* headings and paragraphs */}      </div>      <MinimapScrollbar target={scrollRef} />    </div>  );}
PreviousAgent traceNextStroke-morph icon

Notes on optical alignment

Measured centres and visual centres rarely agree. These notes collect the habits that close the gap, from small icons to long columns of figures.

Starting from the eye

A box can be perfectly centred and still look low. Filled shapes carry more weight than outlines, and flat edges read heavier than curves of the same size.

Start with the bounding box, then step back and judge the weight. Move in small steps and stop when the shape stops feeling off.

Centring small shapes

Small glyphs need the most attention because a pixel is a large share of their size.

Icon centring

Triangles and arrows should sit slightly toward the direction they point. Their centroid is what the eye reads, not the corners of their box.

Round icons can overshoot the box a little so they match the square ones next to them.

Padding and balance

Equal padding on every side often looks uneven. A label with a leading icon usually needs less space on the icon side.

Padding asymmetry

Trim the side that already carries an icon by a couple of pixels. Leave the text side alone so the words keep their rhythm.

Check the result with the blur test. The visual mass should land where the box centre is.

Shape weight and punctuation

Counters, the open space inside letters, change how heavy a word looks. Tight counters darken a line, open ones lighten it.

Hanging punctuation lets quotes and bullets sit outside the text edge, so the first letters line up down the column.

Type at small and large sizes

A single typeface can behave differently across sizes. Display cuts run tighter with finer joins, while text cuts open up for legibility.

Optical sizes

Pick the cut that matches the size on screen. A large heading set in a text cut looks loose and underweight.

Keep optical sizing automatic where the font supports it, and only override it when a layout demands a fixed look.

Figures in columns

Numbers that change, such as counters and timers, should keep a fixed width so the layout does not wobble on every tick.

Tabular numerals

Set columns of figures with tabular numerals so the digits share one advance width and line up by their place value.

Proportional figures look nicer in running prose. Switch to tabular only where digits stack.