Skip to main content
Pulp
  • Company
Access Demo
    • human interfaces
    • critical decisions
    • persona engine
    • machine health
    • data storytelling
    • persuasive intelligence
    • workforce optimization
    • custom ai/ml
    • policy & governance
    • marketing & media
    • consulting & management
    • finance & markets
    • public engagement
    • thinkwell™ workstation
    • thinkwell™ plugin
    • pulp™ api
  • Company
Access Demo

Overview

  • Introduction
  • Getting started

Guides

  • From draft to decision
  • Score a Reddit thread
  • Ground a claim in evidence
  • Simulate an audience
  • AI Debate Tournament

SDKs

  • Server-Side SDK
    • Radiance
      • RootWords
        • Docs
        • Sections
        • Paras
        • Sentences
        • Clauses
        • Claims
        • Phrases
        • Named Entities
        • Words
        • Characters
        • Special Characters
        • Special Patterns
      • RootCause
      • StemReferences
      • AdCanopy
    • Windfall
      • TrueAura
        • Demographics
        • Psychographics
        • Mindstate
        • Environment
        • Memory
        • Vision
      • NectarRewards
      • PoisonIvy
      • GrapeVine
    • Groundwater
      • WebSoil
      • DomainCrust
      • CodeMantle
      • ServerCore
  • Web SDK
    • loosethreads UI/UX
      • WarpDisplays
      • WeftConversations
      • DyeMedia
      • BightInteractions
      • Component Library
        • Sandbox
          • Cards & panels
            • Expandable card
            • Debug panel
          • Text effects
            • Morphing text
            • Video text
          • Device & browser frames
            • Safari frame
            • iPhone frame
            • Android frame
          • Canvas & 3D
            • Crowd canvas
            • Interactive robot
          • Data & visualization
            • Location map
            • Leaderboard
            • Structured Discussion Bracket
          • Controls & inputs
            • Region Selector
          • Scroll effects
            • Scroll-stack cards
            • Perspective scroll showcase
            • Scroll Scrubber
        • Production

Reference

  • References catalogSoon
  • Conventions
  • PricingSoon
  • Status and roadmapSoon
Introduction
Getting started
$pip install pulp-sdk
From draft to decision
Score a Reddit thread
Ground a claim in evidence
Simulate an audience
AI Debate Tournament
Server-Side SDK
Radiance
RootWords
Docs
📄sample.txt2 paras · 160 chars
Sections
§1 Introduction
Paras
¶1: first paragraph block
¶2: second paragraph block
Sentences
S1S2S3S4
Clauses
C1C2C3C4C5C6
Claims
Claim 1Claim 2Claim 3
Phrases
NPVPNPVPPPNP
Named Entities
Pulp [ORG]
Words
ifwewaitforcertaintywewillbe+20 more
Characters
0 → 159
Special Characters
spaces × 27punct × 8nbsp × 0
Special Patterns
0 patterns detected
RootCause
Ethos
—
Pathos
—
Logos
—
Kairos
—
Style
—
Clarity
—
Focus
—
Awareness
—
Persuasive Velocity—
StemReferences
CensusFECCongressFed. Reg.RegulationsLegiScanGovInfoGDELTCivicWikimediaData.govPodcast Idx
AdCanopy
rank
Windfall
TrueAura
Demographics
life_stageyoung_adult
education_levelbachelors
locationurban
occupationtech
Psychographics
Impelling
Compelling
Repelling
Mindstate
alpha 10 Hzcalm
Environment
vision onhearing onsmell offtouch offtaste off
Memory
purchases 12content 48brands 5
Vision
motivationdesirefear
NectarRewards
define
PoisonIvy
apply
GrapeVine
post
Groundwater
WebSoil
heatmap
DomainCrust
price
CodeMantle
trace
ServerCore
uptimeresize
Web SDK
loosethreads UI/UX
WarpDisplays
📄q3-report.pdf
🖼chart.png
▶keynote.mp4
WeftConversations
ThreadsChatInlineSide panels
DyeMedia
TextToday
ImageToday
SoundSoon
VideoSoon
BightInteractions
MouseKeyboardVoice · soonCombos · soon
Component Library
Sandbox
Cards & panels
Expandable card
Debug panel
Text effects
Morphing text
Video text
Device & browser frames
Safari frame
iPhone frame
Android frame
Canvas & 3D
Crowd canvas
Interactive robot
Data & visualization
Location map
Leaderboard
Structured Discussion Bracket
Controls & inputs
Region Selector
Scroll effects
Scroll-stack cards
Perspective scroll showcase
Scroll Scrubber
Production
Coming soon
Conventions
  1. Web SDK
  2. loosethreads UI/UX
  3. Component Library
  4. Sandbox
  5. Data & visualization
  6. Leaderboard

Leaderboard

A ranked standings card with a top-three podium and a paginated list. Switch the run selector to reorder the board, then page through the rankings to find the highlighted current-user row.

Overview

The leaderboard is a ranked standings card with a top-three podium and a paginated list below it. Switch the run selector to reorder the board by a different time range, page through the rankings, and spot the highlighted current-user row. Scores are deterministic per run, so the same run always renders the same order.

Use it for competitions, usage rankings, referral standings, or any ordered list of people where the top few deserve emphasis and everyone else needs a scannable, paged view.

Installation

Import the pattern from loosethreads:

tsx
import { Leaderboard } from "@pulp/loosethreads/patterns"

Usage

Pass the roster of players and the selectable runs. Each player is a { id, name, initials } record; each run is a { id, label, range, seed } record whose seed drives the per-run ordering. Point currentUserId at the row you want highlighted:

tsx
import { Leaderboard } from "@pulp/loosethreads/patterns"

const players = [
  { id: "ava-chen", name: "Ava Chen", initials: "AC" },
  { id: "marcus-reid", name: "Marcus Reid", initials: "MR" },
  { id: "sofia-nakamura", name: "Sofia Nakamura", initials: "SN" },
  { id: "you", name: "You", initials: "YO" },
]

const runs = [
  { id: "weekly", label: "This week", range: "Jul 7 - Jul 13, 2026", seed: 31 },
  { id: "monthly", label: "This month", range: "Jul 1 - Jul 31, 2026", seed: 53 },
]

function Standings() {
  return (
    <Leaderboard
      players={players}
      runs={runs}
      currentUserId="you"
      pageSize={10}
    />
  )
}

Props

PropTypeDefaultDescription
playersPlayer[]RequiredRoster of competitors. Each entry is { id: string, name: string, initials: string }; initials fills the avatar chip.
runsRunOption[]RequiredSelectable time ranges. Each is { id, label, range, seed }, where label shows in the selector, range is the date-range subtitle, and seed determines the deterministic per-run scores and order.
currentUserIdstringRequiredThe id of the player to highlight as the viewer, marked with an iris row and a (you) label.
pageSizenumber10Number of ranking rows shown per page.

Anatomy

The card stacks a header (title, date-range subtitle, and run selector), a podium that lays out the top three as 2 / 1 / 3 with a taller first-place pedestal, the paginated rankings list, and a pager footer. The current-user row carries an iris background, an iris border, and a (you) tag. Avatar chips draw from an iris pastel palette with dark initials.

Accessibility

  • Run selector. The selector is a real aria-haspopup="listbox" button with aria-expanded, opening a role="listbox" whose options expose aria-selected. It closes on outside-click and Escape.
  • Pagination. The pager uses real buttons with aria-label text and a disabled state at the first and last page.
  • Not color alone. The current-user row is signalled by a text (you) tag in addition to the iris highlight, and avatar chips pair dark initials with the pastel fill to clear WCAG AA.
  • Motion. Nothing auto-plays. Reordering and paging are user-driven, so no prefers-reduced-motion gate is required.

Next: Structured Discussion Bracket. Back to Data & visualization.

Leaderboard

Jul 7 - Jul 13, 2026

EC
Ethan Clarke842
2
ZA
Zoe Alvarez860
1
EW
Emma Wright824
3
1
ZA
Zoe Alvarez860
2
EC
Ethan Clarke842
3
EW
Emma Wright824
4
LO
Liam O'Brien806
5
AC
Ava Chen788
6
YO
You(you)740
7
GL
Grace Lee722
8
OB
Olivia Brooks713
9
AW
Aiden Walsh704
10
LM
Lucas Meyer695
1–10 of 22
1 / 3