Default
JSON coloring, copy button on{ "part": "BRK-2214", "status": "active", "fitment": ["2019 F-150", "2020 F-150"], "price": 84.5}Plain text
language=text shows the source verbatim, no highlightingEvery showcase page prints its source through this component.The copy button copies the code verbatim, not the colored text.Export payload with line numbers
title sets in mono, subtitle names where the code came fromparts/BRK-2214.jsonFrom the export payload
{ "part": "BRK-2214", "status": "active", "fitment": ["2019 F-150", "2020 F-150"], "price": 84.5}TSX snippet
Keywords, strings, JSX tags and a comment all colorcomponents/JobRow.tsxKeywords, strings, JSX tags and the comment all color
import { Button, StatusPill } from "@versable-git/ui";// One row of the workspace Jobs table. status drives the pill color;// the re-run action only shows once a job has actually failed.export function JobRow({ job }: { job: DemoJob }) { return ( <tr> <td className="font-mono text-xs">{job.id}</td> <td>{job.catalog}</td> <td> <StatusPill status={job.status} label={job.statusLabel} /> </td> <td> {job.status === "err" && ( <Button size="xs" variant="text" shade Icon="Refresh" content="Re-run" /> )} </td> </tr> );}Raw API response
title names the request path, toggling to minified keeps the headerGET /api/parts/BRK-2214Toggle between pretty-printed and minified
{ "sku": "BRK-2214", "title": "Wagner ThermoQuiet Ceramic Brake Pad Set", "partType": "Disc Brake Conversion Kits", "status": "active", "attributes": { "boltPattern": "5 x 4.5", "finish": "Black", "material": "Aluminum" }, "fitment": [ "2019 F-150", "2020 F-150", "2021 F-150" ], "price": 84.5, "updatedAt": "2026-08-12T14:02:00Z"}Bounded height
A 4,000-line document cannot push the page chrome off-screenline 1: the body scrolls inside itself past maxHeightline 2: the body scrolls inside itself past maxHeightline 3: the body scrolls inside itself past maxHeightline 4: the body scrolls inside itself past maxHeightline 5: the body scrolls inside itself past maxHeightline 6: the body scrolls inside itself past maxHeightline 7: the body scrolls inside itself past maxHeightline 8: the body scrolls inside itself past maxHeightline 9: the body scrolls inside itself past maxHeightline 10: the body scrolls inside itself past maxHeightline 11: the body scrolls inside itself past maxHeightline 12: the body scrolls inside itself past maxHeightline 13: the body scrolls inside itself past maxHeightline 14: the body scrolls inside itself past maxHeightline 15: the body scrolls inside itself past maxHeightline 16: the body scrolls inside itself past maxHeightline 17: the body scrolls inside itself past maxHeightline 18: the body scrolls inside itself past maxHeightline 19: the body scrolls inside itself past maxHeightline 20: the body scrolls inside itself past maxHeightline 21: the body scrolls inside itself past maxHeightline 22: the body scrolls inside itself past maxHeightline 23: the body scrolls inside itself past maxHeightline 24: the body scrolls inside itself past maxHeightline 25: the body scrolls inside itself past maxHeightline 26: the body scrolls inside itself past maxHeightline 27: the body scrolls inside itself past maxHeightline 28: the body scrolls inside itself past maxHeightline 29: the body scrolls inside itself past maxHeightline 30: the body scrolls inside itself past maxHeightline 31: the body scrolls inside itself past maxHeightline 32: the body scrolls inside itself past maxHeightline 33: the body scrolls inside itself past maxHeightline 34: the body scrolls inside itself past maxHeightline 35: the body scrolls inside itself past maxHeightline 36: the body scrolls inside itself past maxHeightline 37: the body scrolls inside itself past maxHeightline 38: the body scrolls inside itself past maxHeightline 39: the body scrolls inside itself past maxHeightline 40: the body scrolls inside itself past maxHeightline 41: the body scrolls inside itself past maxHeightline 42: the body scrolls inside itself past maxHeightline 43: the body scrolls inside itself past maxHeightline 44: the body scrolls inside itself past maxHeightline 45: the body scrolls inside itself past maxHeightline 46: the body scrolls inside itself past maxHeightline 47: the body scrolls inside itself past maxHeightline 48: the body scrolls inside itself past maxHeightline 49: the body scrolls inside itself past maxHeightline 50: the body scrolls inside itself past maxHeightline 51: the body scrolls inside itself past maxHeightline 52: the body scrolls inside itself past maxHeightline 53: the body scrolls inside itself past maxHeightline 54: the body scrolls inside itself past maxHeightline 55: the body scrolls inside itself past maxHeightline 56: the body scrolls inside itself past maxHeightline 57: the body scrolls inside itself past maxHeightline 58: the body scrolls inside itself past maxHeightline 59: the body scrolls inside itself past maxHeightline 60: the body scrolls inside itself past maxHeightLarge document scrolls inside itself
182 generated lines, maxHeight caps the frame at 18remjobs-export.json182 lines of generated job records, frame stays 18rem tall
[ { "id": "job_9421", "module": "Part Type", "rows": 157, "status": "ok" }, { "id": "job_9420", "module": "Scrape", "rows": 968, "status": "info" }, { "id": "job_9419", "module": "Normalize", "rows": 1779, "status": "review" }, { "id": "job_9418", "module": "Content", "rows": 2590, "status": "warn" }, { "id": "job_9417", "module": "Part Type", "rows": 3401, "status": "err" }, { "id": "job_9416", "module": "Scrape", "rows": 4212, "status": "ok" }, { "id": "job_9415", "module": "Normalize", "rows": 823, "status": "info" }, { "id": "job_9414", "module": "Content", "rows": 1634, "status": "review" }, { "id": "job_9413", "module": "Part Type", "rows": 2445, "status": "warn" }, { "id": "job_9412", "module": "Scrape", "rows": 3256, "status": "err" }, { "id": "job_9411", "module": "Normalize", "rows": 4067, "status": "ok" }, { "id": "job_9410", "module": "Content", "rows": 678, "status": "info" }, { "id": "job_9409", "module": "Part Type", "rows": 1489, "status": "review" }, { "id": "job_9408", "module": "Scrape", "rows": 2300, "status": "warn" }, { "id": "job_9407", "module": "Normalize", "rows": 3111, "status": "err" }, { "id": "job_9406", "module": "Content", "rows": 3922, "status": "ok" }, { "id": "job_9405", "module": "Part Type", "rows": 533, "status": "info" }, { "id": "job_9404", "module": "Scrape", "rows": 1344, "status": "review" }, { "id": "job_9403", "module": "Normalize", "rows": 2155, "status": "warn" }, { "id": "job_9402", "module": "Content", "rows": 2966, "status": "err" }, { "id": "job_9401", "module": "Part Type", "rows": 3777, "status": "ok" }, { "id": "job_9400", "module": "Scrape", "rows": 388, "status": "info" }, { "id": "job_9399", "module": "Normalize", "rows": 1199, "status": "review" }, { "id": "job_9398", "module": "Content", "rows": 2010, "status": "warn" }, { "id": "job_9397", "module": "Part Type", "rows": 2821, "status": "err" }, { "id": "job_9396", "module": "Scrape", "rows": 3632, "status": "ok" }, { "id": "job_9395", "module": "Normalize", "rows": 243, "status": "info" }, { "id": "job_9394", "module": "Content", "rows": 1054, "status": "review" }, { "id": "job_9393", "module": "Part Type", "rows": 1865, "status": "warn" }, { "id": "job_9392", "module": "Scrape", "rows": 2676, "status": "err" }]CSV loadsheet
Header row and data columns colour separatelyloadsheet-export.csvHeader row and data columns colour separately
sku,title,part_type,catalog,priceBRK-2214,Wagner ThermoQuiet Ceramic Brake Pad Set,Disc Brake Conversion Kits,AC Delco Q3,84.50WHL-1180,17in Alloy Wheel Black,Wheels,Brake & Chassis,142.00RAD-3390,Aluminum Core Radiator,Radiators,Filters (May),98.75INJ-5502,Fuel Injector Set of 4,Fuel Injectors,Lighting SKUs,210.00YAML config
Keys colour, list dashes stay punctuationworkspace.config.yamlKeys colour, list dashes stay punctuation
pipeline: - stage: ingest desc: Merge files, union by part number - stage: scrape desc: Pull fields from vendor product pages - stage: taxonomy desc: Assign Speedway part types - stage: normalize desc: Map attributes to your schema - stage: content desc: 65-char titles, descriptions, FAB - stage: export desc: Prepare the loadsheetcatalog: AC Delco Q3owner: Aakarsh C.Bash deploy snippet
Comments, strings and shell variables colour separatelyscripts/bump-kit.shComments, strings and shell variables colour separately
#!/bin/bash# Bump the kit and let the publish-kit workflow pick it up.set -euo pipefailCURRENT=$(npm pkg get version --workspace=packages/ui)echo "Current kit version: $CURRENT"npm version "$1" --workspace=packages/ui --no-git-tag-versionif [ -z "${SKIP_PUSH:-}" ]; then git add packages/ui/package.json git commit -m "kit: bump to $1" git push origin mainelse echo "SKIP_PUSH set, staged only"fiHeader actions
Download sits beside the built-in copy buttonjob_9421.jsonDownload saves the file, copy still copies the source
{ "id": "job_9421", "module": "Content", "catalog": "AC Delco Q3", "owner": "Aakarsh C.", "status": "ok", "rows": 3214}Compare two versions
Two blocks side by side, each with its own titleBefore re-run2 of 4 attributes mapped
{ "sku": "BRK-2214", "attributes": { "boltPattern": "5 x 4.5", "finish": "Black" }}After re-run4 of 4 attributes mapped
{ "sku": "BRK-2214", "attributes": { "boltPattern": "5 x 4.5", "finish": "Black", "material": "Aluminum", "loadRating": "1200 lb" }}Skeleton
Block-shaped placeholderStyling slots
Every className the component exposes, and what it reaches- className
- the outer frame
- headerClassName
- the title bar above the code
- titleClassName
- the mono title text
- subtitleClassName
- the muted second header line
- actionsClassName
- the header actions cluster
- bodyClassName
- the scroll area around the code
- codeClassName
- the pre element itself