From f452c3b37f12589528e83db19b44e8bda744a8c6 Mon Sep 17 00:00:00 2001 From: Bersabel Tadesse Date: Fri, 21 Aug 2026 00:12:58 -0700 Subject: [PATCH 1/2] Add Color Swatches plugin --- README.md | 12 +- package-lock.json | 19 ++ plugins/color-swatches/README.md | 42 ++++ plugins/color-swatches/app.tsx | 168 +++++++++++++ plugins/color-swatches/assets/color-chip.svg | 1 + plugins/color-swatches/colors.test.ts | 38 +++ plugins/color-swatches/colors.ts | 62 +++++ plugins/color-swatches/dist/app.css | 240 +++++++++++++++++++ plugins/color-swatches/dist/app.js | 182 ++++++++++++++ plugins/color-swatches/dist/app.meta.json | 11 + plugins/color-swatches/dist/server.js | 15 ++ plugins/color-swatches/dist/server.js.map | 7 + plugins/color-swatches/dist/server.meta.json | 11 + plugins/color-swatches/docs/screenshot.png | Bin 0 -> 186865 bytes plugins/color-swatches/package.json | 29 +++ plugins/color-swatches/server.ts | 9 + plugins/color-swatches/tsconfig.json | 14 ++ 17 files changed, 859 insertions(+), 1 deletion(-) create mode 100644 plugins/color-swatches/README.md create mode 100644 plugins/color-swatches/app.tsx create mode 100644 plugins/color-swatches/assets/color-chip.svg create mode 100644 plugins/color-swatches/colors.test.ts create mode 100644 plugins/color-swatches/colors.ts create mode 100644 plugins/color-swatches/dist/app.css create mode 100644 plugins/color-swatches/dist/app.js create mode 100644 plugins/color-swatches/dist/app.meta.json create mode 100644 plugins/color-swatches/dist/server.js create mode 100644 plugins/color-swatches/dist/server.js.map create mode 100644 plugins/color-swatches/dist/server.meta.json create mode 100644 plugins/color-swatches/docs/screenshot.png create mode 100644 plugins/color-swatches/package.json create mode 100644 plugins/color-swatches/server.ts create mode 100644 plugins/color-swatches/tsconfig.json diff --git a/README.md b/README.md index 1649c11..7c06a25 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # bb plugins -Nine bb plugins I use for product design work, kept together with the few build and repository tools they share. [![CI](https://github.com/brsbl/bb-plugins/actions/workflows/ci.yml/badge.svg)](https://github.com/brsbl/bb-plugins/actions/workflows/ci.yml) +Ten bb plugins I use for product design work, kept together with the few build and repository tools they share. [![CI](https://github.com/brsbl/bb-plugins/actions/workflows/ci.yml/badge.svg)](https://github.com/brsbl/bb-plugins/actions/workflows/ci.yml) [bb](https://getbb.app) is an agentic IDE for running coding agents across projects, threads, and environments. Its plugins can add UI, commands, skills, and server capabilities; this repository is where I build and maintain mine. @@ -92,6 +92,16 @@ A skeleton of the bb app in every configuration — sidebar, splits, panels, ove Install: `bb plugin install git:https://github.com/brsbl/bb-plugins.git@plugin/theme-preview --yes` +### Color Swatches + +Renders an inline swatch beside every color literal in a thread — hex, `rgb()`, `hsl()`, `oklch()` and friends — the way an editor decorates code. + +![Color Swatches in bb](plugins/color-swatches/docs/screenshot.png) + +[Source](plugins/color-swatches) · [README](plugins/color-swatches/README.md) + +Install: `bb plugin install git:https://github.com/brsbl/bb-plugins.git@plugin/color-swatches --yes` + ### Timeline Comments Attaches durable discussion threads to selected timeline text. Users and agents can reply, edit, resolve or reopen comments, review them together, and add open feedback to the composer for follow-up. diff --git a/package-lock.json b/package-lock.json index ea3b7fa..4c29f21 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2958,6 +2958,10 @@ ], "license": "MIT" }, + "node_modules/bb-plugin-color-swatches": { + "resolved": "plugins/color-swatches", + "link": true + }, "node_modules/bb-plugin-design-doctrine": { "resolved": "plugins/design-doctrine", "link": true @@ -5047,6 +5051,21 @@ "vitest": "^4.0.0" } }, + "plugins/color-swatches": { + "name": "bb-plugin-color-swatches", + "version": "0.1.0", + "devDependencies": { + "@get-bb/plugin-sdk": "file:../../tooling/vendor/get-bb-plugin-sdk-0.4.8.tgz", + "@types/node": "^22.0.0", + "@types/react": "^19.0.0", + "typescript": "^5.7.0", + "vitest": "^4.0.0" + }, + "engines": { + "bb": ">=0.0.34", + "bbPluginSdk": "^0.4.1" + } + }, "plugins/design-doctrine": { "name": "bb-plugin-design-doctrine", "version": "0.3.0", diff --git a/plugins/color-swatches/README.md b/plugins/color-swatches/README.md new file mode 100644 index 0000000..4524c43 --- /dev/null +++ b/plugins/color-swatches/README.md @@ -0,0 +1,42 @@ +# Color Swatches + +Renders an inline swatch beside every color literal in a thread — hex, `rgb()`, +`hsl()`, `oklch()` and friends — the way an editor decorates code. + +![Color Swatches in bb](docs/screenshot.png) + +## Install + +```sh +bb plugin install git:https://github.com/brsbl/bb-plugins.git@plugin/color-swatches --yes +``` + +## Use + +Nothing to configure. Once installed, any color literal an agent writes gets a +chip in front of it: inside fenced code blocks, inside diffs, and in the inline +`` `#070509` `` chips that appear in prose. + +The chip shows alpha over a checkerboard and carries a faint ring, so +`#ffffff` and `#000000` stay visible on any theme. + +Two deliberate limits: + +- **Nothing is inserted into the page.** The chip is drawn in `::before` from a + custom property, so selecting and copying a line still yields exactly the + original text, and a streaming message can never end up with a stale wrapper + in it. +- **A chip only appears where it can be placed exactly.** bb highlights code one + token per element, so a literal reliably starts at a boundary; in an + unhighlighted block a literal can begin mid-run, and the plugin leaves it + alone rather than putting the chip in the wrong column. + +The composer is never decorated. + +## Develop + +```sh +npm install +npm run check # typecheck, build, test +bb plugin install "path:$PWD" --yes +``` diff --git a/plugins/color-swatches/app.tsx b/plugins/color-swatches/app.tsx new file mode 100644 index 0000000..5e00c28 --- /dev/null +++ b/plugins/color-swatches/app.tsx @@ -0,0 +1,168 @@ +import { definePluginApp } from "@get-bb/plugin-sdk/app"; +import { findColorMatches } from "./colors"; + +// --------------------------------------------------------------------------- +// Why this decorates with CSS instead of inserting elements +// +// The timeline is React's DOM. Splitting its text nodes to wrap a literal is +// the usual way to do IDE swatches, and it is exactly what breaks while a +// message streams: React keeps the text node it created and writes the next +// chunk into whatever is left of it, so the wrapper survives with stale text +// beside it. +// +// So nothing is inserted. A decorated element gets one attribute and one custom +// property, and a stylesheet draws the chip in `::before`. Generated content is +// not part of the document, so React never sees it, selection never selects it, +// and copying a line still yields the original text. +// +// Placement relies on how bb highlights code: every token is its own span, so a +// literal always begins at a child boundary (`#f4f4f4`) +// and the chip can sit on the token that starts the match. +// --------------------------------------------------------------------------- + +const ATTR = "data-bb-color-swatch"; +const PROP = "--bb-color-swatch"; + +const STYLESHEET = ` +[${ATTR}] { + /* The chip inherits the line's font size, so it tracks code and prose. */ + --bb-color-swatch-size: 0.78em; +} +[${ATTR}]::before { + content: ""; + display: inline-block; + width: var(--bb-color-swatch-size); + height: var(--bb-color-swatch-size); + margin-inline-end: 0.34em; + vertical-align: -0.085em; + border-radius: 3px; + /* The color rides on top of a checkerboard so alpha reads as alpha, and an + * inset ring keeps white-on-white and black-on-black visible. */ + background-image: + linear-gradient(var(${PROP}), var(${PROP})), + linear-gradient(45deg, rgba(128, 128, 128, 0.34) 25%, transparent 25%, transparent 75%, rgba(128, 128, 128, 0.34) 75%), + linear-gradient(45deg, rgba(128, 128, 128, 0.34) 25%, transparent 25%, transparent 75%, rgba(128, 128, 128, 0.34) 75%); + background-size: 100% 100%, 6px 6px, 6px 6px; + background-position: 0 0, 0 0, 3px 3px; + background-color: #fff; + box-shadow: inset 0 0 0 1px rgba(128, 128, 128, 0.45); +} +`; + +/** Containers whose text is being edited — never decorate the composer. */ +const EXCLUDED = "[contenteditable], input, textarea"; + +const isColor = (value: string): boolean => + typeof CSS !== "undefined" && typeof CSS.supports === "function" + ? CSS.supports("color", value) + : true; + +function decorate(el: HTMLElement, value: string): void { + el.setAttribute(ATTR, ""); + el.style.setProperty(PROP, value); +} + +function undecorate(el: Element): void { + el.removeAttribute(ATTR); + (el as HTMLElement).style?.removeProperty(PROP); +} + +/** + * Decorate the direct children of a highlighted code line. A match is only + * placed when it starts exactly at a child boundary; anything else would put + * the chip in the wrong column, and a wrong chip is worse than none. + */ +function decorateTokenizedLine(line: Element): void { + const starts = new Map(); + let text = ""; + for (const node of Array.from(line.childNodes)) { + if (node.nodeType === Node.ELEMENT_NODE) starts.set(text.length, node as HTMLElement); + text += node.textContent ?? ""; + } + if (!text.includes("#") && !/[a-z]\(/i.test(text)) return; + + for (const match of findColorMatches(text)) { + const target = starts.get(match.start); + if (target && isColor(match.value)) decorate(target, match.value); + } +} + +/** An inline `` chip whose whole content is one literal. */ +function decorateWholeElement(el: HTMLElement): void { + const text = (el.textContent ?? "").trim(); + if (!text || text.length > 64) return; + const matches = findColorMatches(text); + if (matches.length !== 1) return; + const [only] = matches; + if (only.start !== 0 || only.end !== text.length) return; + if (isColor(only.value)) decorate(el, only.value); +} + +function scan(root: ParentNode): void { + // Re-scanning a streamed line must not leave yesterday's chips behind. + for (const stale of Array.from(root.querySelectorAll?.(`[${ATTR}]`) ?? [])) undecorate(stale); + + for (const line of Array.from(root.querySelectorAll?.(".sh__line") ?? [])) { + if (line.closest(EXCLUDED)) continue; + decorateTokenizedLine(line); + } + for (const code of Array.from(root.querySelectorAll?.("code") ?? [])) { + if (code.closest(EXCLUDED) || code.closest("pre")) continue; + decorateWholeElement(code as HTMLElement); + } +} + +export default definePluginApp((app) => { + app.contentScripts.register({ + id: "swatches", + mount({ signal }) { + const style = document.createElement("style"); + style.dataset.bbColorSwatches = ""; + style.textContent = STYLESHEET; + document.head.append(style); + + // Streaming fires mutations constantly; collect subtrees and do one pass + // per frame rather than one pass per mutation record. + let pending: Set | null = null; + const flush = () => { + const roots = pending ?? new Set(); + pending = null; + for (const root of roots) { + if (root.isConnected !== false) scan(root); + } + }; + const queue = (node: ParentNode) => { + if (!pending) { + pending = new Set(); + requestAnimationFrame(flush); + } + pending.add(node); + }; + + const observer = new MutationObserver((records) => { + for (const record of records) { + const target = record.target; + const host = + target.nodeType === Node.ELEMENT_NODE + ? (target as Element) + : target.parentElement; + // A code line is the smallest unit worth rescanning; above that, the + // message container catches whole re-renders. + const scope = host?.closest?.("pre, .sh__line, [class*='markdown'], main") ?? host; + if (scope) queue(scope as ParentNode); + } + }); + observer.observe(document.body, { subtree: true, childList: true, characterData: true }); + + scan(document.body); + + const dispose = () => { + observer.disconnect(); + style.remove(); + for (const el of Array.from(document.querySelectorAll(`[${ATTR}]`))) undecorate(el); + }; + signal.addEventListener("abort", dispose, { once: true }); + return dispose; + }, + }); +}); diff --git a/plugins/color-swatches/assets/color-chip.svg b/plugins/color-swatches/assets/color-chip.svg new file mode 100644 index 0000000..2222d05 --- /dev/null +++ b/plugins/color-swatches/assets/color-chip.svg @@ -0,0 +1 @@ + diff --git a/plugins/color-swatches/colors.test.ts b/plugins/color-swatches/colors.test.ts new file mode 100644 index 0000000..acd4332 --- /dev/null +++ b/plugins/color-swatches/colors.test.ts @@ -0,0 +1,38 @@ +import { describe, expect, it } from "vitest"; +import { findColorMatches } from "./colors"; + +const values = (text: string) => findColorMatches(text).map((m) => m.value); + +describe("findColorMatches", () => { + it("accepts the four valid hex lengths", () => { + expect(values("#fff #ffff #f4f4f4 #f4f4f4ff")).toEqual(["#fff", "#ffff", "#f4f4f4", "#f4f4f4ff"]); + }); + + it("rejects hex runs that are not colors", () => { + expect(values("#12345 #1234567 #include #1234567890")).toEqual([]); + }); + + it("does not start a literal inside a word", () => { + expect(values("id#fff my-rgb(1 2 3) $#fff")).toEqual([]); + }); + + it("finds function forms, including one level of nesting", () => { + expect(values("rgba(255, 106, 31, 0.6) and oklch(0.7 0.1 200)")).toEqual([ + "rgba(255, 106, 31, 0.6)", + "oklch(0.7 0.1 200)", + ]); + expect(values("color-mix(in oklch, var(--a), var(--b))")).toEqual([ + "color-mix(in oklch, var(--a), var(--b))", + ]); + }); + + it("reports offsets that line up with the source text", () => { + const text = " --canvas: #f4f4f4;"; + const [match] = findColorMatches(text); + expect(text.slice(match.start, match.end)).toBe("#f4f4f4"); + }); + + it("finds a literal that is followed by punctuation", () => { + expect(values("--sidebar: #070509; /* true black */")).toEqual(["#070509"]); + }); +}); diff --git a/plugins/color-swatches/colors.ts b/plugins/color-swatches/colors.ts new file mode 100644 index 0000000..38e6f58 --- /dev/null +++ b/plugins/color-swatches/colors.ts @@ -0,0 +1,62 @@ +/** + * Finding color literals in a string. + * + * Deliberately permissive about *syntax* and strict about *boundaries*: the + * browser is the final judge of whether a match is a real color (the content + * script gates every hit through `CSS.supports`), so the job here is to find + * candidates without swallowing their neighbours — `#include`, `PR #1234567`, + * or a `my-rgb(...)` identifier must not read as color. + */ + +export interface ColorMatch { + /** Index of the first character of the literal. */ + start: number; + /** Index one past the last character. */ + end: number; + /** The literal exactly as it appears in the text. */ + value: string; +} + +/** Only these hex lengths are colors; 5 and 7 digits are something else. */ +const HEX_LENGTHS = new Set([3, 4, 6, 8]); + +/** + * Function forms, including one level of nesting so `rgb(var(--x) / 50%)` and + * `color-mix(in oklch, var(--a), var(--b))` survive. + */ +const FUNCTION_NAMES = [ + "rgb", "rgba", "hsl", "hsla", "hwb", "lab", "lch", "oklab", "oklch", "color", "color-mix", +]; + +const PATTERN = new RegExp( + [ + "#[0-9a-fA-F]+", + `(?:${FUNCTION_NAMES.join("|")})\\(` + "[^()]*(?:\\([^()]*\\)[^()]*)*" + "\\)", + ].join("|"), + "gi", +); + +/** A literal may not begin in the middle of a word. */ +const isWordish = (char: string | undefined): boolean => + char !== undefined && /[\w#$@-]/.test(char); + +export function findColorMatches(text: string): ColorMatch[] { + const out: ColorMatch[] = []; + PATTERN.lastIndex = 0; + for (let m = PATTERN.exec(text); m !== null; m = PATTERN.exec(text)) { + const value = m[0]; + const start = m.index; + if (isWordish(text[start - 1])) continue; + + if (value.startsWith("#")) { + // `#f4f4f4;` is fine, `#f4f4f4f` is not a color — the run of hex digits + // has to be exactly one of the valid lengths on its own. + const digits = value.length - 1; + if (!HEX_LENGTHS.has(digits)) continue; + if (/[\w-]/.test(text[start + value.length] ?? "")) continue; + } + + out.push({ start, end: start + value.length, value }); + } + return out; +} diff --git a/plugins/color-swatches/dist/app.css b/plugins/color-swatches/dist/app.css new file mode 100644 index 0000000..a457ecd --- /dev/null +++ b/plugins/color-swatches/dist/app.css @@ -0,0 +1,240 @@ +/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */ +@layer properties; +@layer theme, utilities; +@layer theme { + :root, :host { + --font-sans: var(--font-sans); + --font-serif: var(--font-serif); + --font-mono: var(--font-mono); + --shadow-2xs: var(--shadow-2xs); + --shadow-xs: var(--shadow-xs); + --shadow-sm: var(--shadow-sm); + --shadow-md: var(--shadow-md); + --shadow-lg: var(--shadow-lg); + --shadow-xl: var(--shadow-xl); + --shadow-2xl: var(--shadow-2xl); + --shadow: var(--shadow); + --shadow-lift: var(--shadow-lift); + } +} +@property --tw-animation-delay { + syntax: "*"; + inherits: false; + initial-value: 0s; +} +@property --tw-animation-direction { + syntax: "*"; + inherits: false; + initial-value: normal; +} +@property --tw-animation-duration { + syntax: "*"; + inherits: false; +} +@property --tw-animation-fill-mode { + syntax: "*"; + inherits: false; + initial-value: none; +} +@property --tw-animation-iteration-count { + syntax: "*"; + inherits: false; + initial-value: 1; +} +@property --tw-enter-blur { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-enter-opacity { + syntax: "*"; + inherits: false; + initial-value: 1; +} +@property --tw-enter-rotate { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-enter-scale { + syntax: "*"; + inherits: false; + initial-value: 1; +} +@property --tw-enter-translate-x { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-enter-translate-y { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-exit-blur { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-exit-opacity { + syntax: "*"; + inherits: false; + initial-value: 1; +} +@property --tw-exit-rotate { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-exit-scale { + syntax: "*"; + inherits: false; + initial-value: 1; +} +@property --tw-exit-translate-x { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-exit-translate-y { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@layer utilities { + @scope ([data-bb-plugin="color-swatches"], [data-bb-plugin-root]:not([data-bb-plugin])) { + .visible { + visibility: visible; + } + .container { + width: 100%; + @media (width >= 40rem) { + max-width: 40rem; + } + @media (width >= 48rem) { + max-width: 48rem; + } + @media (width >= 64rem) { + max-width: 64rem; + } + @media (width >= 80rem) { + max-width: 80rem; + } + @media (width >= 96rem) { + max-width: 96rem; + } + } + .block { + display: block; + } + .inline { + display: inline; + } + .ring { + --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + } +} +@property --tw-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-shadow-alpha { + syntax: ""; + inherits: false; + initial-value: 100%; +} +@property --tw-inset-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-inset-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-inset-shadow-alpha { + syntax: ""; + inherits: false; + initial-value: 100%; +} +@property --tw-ring-color { + syntax: "*"; + inherits: false; +} +@property --tw-ring-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-inset-ring-color { + syntax: "*"; + inherits: false; +} +@property --tw-inset-ring-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-ring-inset { + syntax: "*"; + inherits: false; +} +@property --tw-ring-offset-width { + syntax: ""; + inherits: false; + initial-value: 0px; +} +@property --tw-ring-offset-color { + syntax: "*"; + inherits: false; + initial-value: #fff; +} +@property --tw-ring-offset-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@layer properties { + @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { + *, ::before, ::after, ::backdrop { + --tw-animation-delay: 0s; + --tw-animation-direction: normal; + --tw-animation-duration: initial; + --tw-animation-fill-mode: none; + --tw-animation-iteration-count: 1; + --tw-enter-blur: 0; + --tw-enter-opacity: 1; + --tw-enter-rotate: 0; + --tw-enter-scale: 1; + --tw-enter-translate-x: 0; + --tw-enter-translate-y: 0; + --tw-exit-blur: 0; + --tw-exit-opacity: 1; + --tw-exit-rotate: 0; + --tw-exit-scale: 1; + --tw-exit-translate-x: 0; + --tw-exit-translate-y: 0; + --tw-shadow: 0 0 #0000; + --tw-shadow-color: initial; + --tw-shadow-alpha: 100%; + --tw-inset-shadow: 0 0 #0000; + --tw-inset-shadow-color: initial; + --tw-inset-shadow-alpha: 100%; + --tw-ring-color: initial; + --tw-ring-shadow: 0 0 #0000; + --tw-inset-ring-color: initial; + --tw-inset-ring-shadow: 0 0 #0000; + --tw-ring-inset: initial; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-offset-shadow: 0 0 #0000; + } + } +} diff --git a/plugins/color-swatches/dist/app.js b/plugins/color-swatches/dist/app.js new file mode 100644 index 0000000..c9f9c82 --- /dev/null +++ b/plugins/color-swatches/dist/app.js @@ -0,0 +1,182 @@ +// bb-plugin-runtime-shim:@get-bb/plugin-sdk/app +var runtime = globalThis.__bbPluginRuntime; +if (runtime == null || runtime.pluginSdkApp == null) { + throw new Error('Cannot load "@get-bb/plugin-sdk/app": this bundle must be loaded by the BB app, which provides the shared plugin runtime (globalThis.__bbPluginRuntime).'); +} +var mod = runtime.pluginSdkApp; +var { + Markdown, + ThreadChat, + definePluginApp, + experimental_NewThreadComposer, + experimental_useSidebarThreadActions, + experimental_useSidebarThreadPullRequest, + experimental_useSidebarThreadSplit, + experimental_useSidebarThreads, + useBbContext, + useBbNavigate, + useComposer, + useComposerView, + useRealtime, + useRealtimeConnectionState, + useRpc, + useSettings +} = mod; + +// colors.ts +var HEX_LENGTHS = /* @__PURE__ */ new Set([3, 4, 6, 8]); +var FUNCTION_NAMES = [ + "rgb", + "rgba", + "hsl", + "hsla", + "hwb", + "lab", + "lch", + "oklab", + "oklch", + "color", + "color-mix" +]; +var PATTERN = new RegExp( + [ + "#[0-9a-fA-F]+", + `(?:${FUNCTION_NAMES.join("|")})\\([^()]*(?:\\([^()]*\\)[^()]*)*\\)` + ].join("|"), + "gi" +); +var isWordish = (char) => char !== void 0 && /[\w#$@-]/.test(char); +function findColorMatches(text) { + const out = []; + PATTERN.lastIndex = 0; + for (let m = PATTERN.exec(text); m !== null; m = PATTERN.exec(text)) { + const value = m[0]; + const start = m.index; + if (isWordish(text[start - 1])) continue; + if (value.startsWith("#")) { + const digits = value.length - 1; + if (!HEX_LENGTHS.has(digits)) continue; + if (/[\w-]/.test(text[start + value.length] ?? "")) continue; + } + out.push({ start, end: start + value.length, value }); + } + return out; +} + +// app.tsx +var ATTR = "data-bb-color-swatch"; +var PROP = "--bb-color-swatch"; +var STYLESHEET = ` +[${ATTR}] { + /* The chip inherits the line's font size, so it tracks code and prose. */ + --bb-color-swatch-size: 0.78em; +} +[${ATTR}]::before { + content: ""; + display: inline-block; + width: var(--bb-color-swatch-size); + height: var(--bb-color-swatch-size); + margin-inline-end: 0.34em; + vertical-align: -0.085em; + border-radius: 3px; + /* The color rides on top of a checkerboard so alpha reads as alpha, and an + * inset ring keeps white-on-white and black-on-black visible. */ + background-image: + linear-gradient(var(${PROP}), var(${PROP})), + linear-gradient(45deg, rgba(128, 128, 128, 0.34) 25%, transparent 25%, transparent 75%, rgba(128, 128, 128, 0.34) 75%), + linear-gradient(45deg, rgba(128, 128, 128, 0.34) 25%, transparent 25%, transparent 75%, rgba(128, 128, 128, 0.34) 75%); + background-size: 100% 100%, 6px 6px, 6px 6px; + background-position: 0 0, 0 0, 3px 3px; + background-color: #fff; + box-shadow: inset 0 0 0 1px rgba(128, 128, 128, 0.45); +} +`; +var EXCLUDED = "[contenteditable], input, textarea"; +var isColor = (value) => typeof CSS !== "undefined" && typeof CSS.supports === "function" ? CSS.supports("color", value) : true; +function decorate(el, value) { + el.setAttribute(ATTR, ""); + el.style.setProperty(PROP, value); +} +function undecorate(el) { + el.removeAttribute(ATTR); + el.style?.removeProperty(PROP); +} +function decorateTokenizedLine(line) { + const starts = /* @__PURE__ */ new Map(); + let text = ""; + for (const node of Array.from(line.childNodes)) { + if (node.nodeType === Node.ELEMENT_NODE) starts.set(text.length, node); + text += node.textContent ?? ""; + } + if (!text.includes("#") && !/[a-z]\(/i.test(text)) return; + for (const match of findColorMatches(text)) { + const target = starts.get(match.start); + if (target && isColor(match.value)) decorate(target, match.value); + } +} +function decorateWholeElement(el) { + const text = (el.textContent ?? "").trim(); + if (!text || text.length > 64) return; + const matches = findColorMatches(text); + if (matches.length !== 1) return; + const [only] = matches; + if (only.start !== 0 || only.end !== text.length) return; + if (isColor(only.value)) decorate(el, only.value); +} +function scan(root) { + for (const stale of Array.from(root.querySelectorAll?.(`[${ATTR}]`) ?? [])) undecorate(stale); + for (const line of Array.from(root.querySelectorAll?.(".sh__line") ?? [])) { + if (line.closest(EXCLUDED)) continue; + decorateTokenizedLine(line); + } + for (const code of Array.from(root.querySelectorAll?.("code") ?? [])) { + if (code.closest(EXCLUDED) || code.closest("pre")) continue; + decorateWholeElement(code); + } +} +var app_default = definePluginApp((app) => { + app.contentScripts.register({ + id: "swatches", + mount({ signal }) { + const style = document.createElement("style"); + style.dataset.bbColorSwatches = ""; + style.textContent = STYLESHEET; + document.head.append(style); + let pending = null; + const flush = () => { + const roots = pending ?? /* @__PURE__ */ new Set(); + pending = null; + for (const root of roots) { + if (root.isConnected !== false) scan(root); + } + }; + const queue = (node) => { + if (!pending) { + pending = /* @__PURE__ */ new Set(); + requestAnimationFrame(flush); + } + pending.add(node); + }; + const observer = new MutationObserver((records) => { + for (const record of records) { + const target = record.target; + const host = target.nodeType === Node.ELEMENT_NODE ? target : target.parentElement; + const scope = host?.closest?.("pre, .sh__line, [class*='markdown'], main") ?? host; + if (scope) queue(scope); + } + }); + observer.observe(document.body, { subtree: true, childList: true, characterData: true }); + scan(document.body); + const dispose = () => { + observer.disconnect(); + style.remove(); + for (const el of Array.from(document.querySelectorAll(`[${ATTR}]`))) undecorate(el); + }; + signal.addEventListener("abort", dispose, { once: true }); + return dispose; + } + }); +}); +export { + app_default as default +}; diff --git a/plugins/color-swatches/dist/app.meta.json b/plugins/color-swatches/dist/app.meta.json new file mode 100644 index 0000000..c2cfedb --- /dev/null +++ b/plugins/color-swatches/dist/app.meta.json @@ -0,0 +1,11 @@ +{ + "sdkMajor": 0, + "sdkVersion": "0.4.8", + "artifactFormatVersion": 1, + "pluginId": "color-swatches", + "pluginVersion": "0.1.0", + "builtWith": { + "bbVersion": "0.39.0", + "pluginSdkVersion": "0.4.8" + } +} diff --git a/plugins/color-swatches/dist/server.js b/plugins/color-swatches/dist/server.js new file mode 100644 index 0000000..569fd5b --- /dev/null +++ b/plugins/color-swatches/dist/server.js @@ -0,0 +1,15 @@ +import { createRequire as __createRequire } from "node:module"; +import { dirname as __pathDirname } from "node:path"; +import { fileURLToPath as __fileURLToPath } from "node:url"; +const require = __createRequire(import.meta.url); +var __filename = __fileURLToPath(import.meta.url); +var __dirname = __pathDirname(__filename); + +// server.ts +async function plugin(bb) { + bb.log.info("color-swatches ready"); +} +export { + plugin as default +}; +//# sourceMappingURL=server.js.map diff --git a/plugins/color-swatches/dist/server.js.map b/plugins/color-swatches/dist/server.js.map new file mode 100644 index 0000000..46fc232 --- /dev/null +++ b/plugins/color-swatches/dist/server.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../server.ts"], + "sourcesContent": ["import type { BbPluginApi } from \"@get-bb/plugin-sdk\";\n\n/**\n * All of the behaviour lives in the frontend content script; a plugin still\n * needs a backend entry, so this one only announces itself.\n */\nexport default async function plugin(bb: BbPluginApi) {\n bb.log.info(\"color-swatches ready\");\n}\n"], + "mappings": ";;;;;;;;AAMA,eAAO,OAA8B,IAAiB;AACpD,KAAG,IAAI,KAAK,sBAAsB;AACpC;", + "names": [] +} diff --git a/plugins/color-swatches/dist/server.meta.json b/plugins/color-swatches/dist/server.meta.json new file mode 100644 index 0000000..c2cfedb --- /dev/null +++ b/plugins/color-swatches/dist/server.meta.json @@ -0,0 +1,11 @@ +{ + "sdkMajor": 0, + "sdkVersion": "0.4.8", + "artifactFormatVersion": 1, + "pluginId": "color-swatches", + "pluginVersion": "0.1.0", + "builtWith": { + "bbVersion": "0.39.0", + "pluginSdkVersion": "0.4.8" + } +} diff --git a/plugins/color-swatches/docs/screenshot.png b/plugins/color-swatches/docs/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..097b4c2927ed86aef86381fb039c8198bc446957 GIT binary patch literal 186865 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

(nVrE1;x**d8bGtX*&`k~V*ZG79u#lQ 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

  • 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.0.34", "bbPluginSdk": "^0.4.1" }, + "bb": { + "name": "Color Swatches", + "description": "Renders an inline swatch beside every color literal in a thread — hex, rgb(), hsl() and oklch() — the way an editor decorates code.", + "branding": { "icon": "./assets/color-chip.svg" }, + "server": "./server.ts", + "app": "./app.tsx", + "skills": [] + }, + "scripts": { + "build": "node ../../tooling/build-plugin.mjs", + "check": "npm run typecheck && npm run build && npm test", + "test": "vitest run", + "typecheck": "tsc --noEmit" + }, + "devDependencies": { + "@get-bb/plugin-sdk": "file:../../tooling/vendor/get-bb-plugin-sdk-0.4.8.tgz", + "@types/node": "^22.0.0", + "@types/react": "^19.0.0", + "typescript": "^5.7.0", + "vitest": "^4.0.0" + } +} diff --git a/plugins/color-swatches/server.ts b/plugins/color-swatches/server.ts new file mode 100644 index 0000000..64242c6 --- /dev/null +++ b/plugins/color-swatches/server.ts @@ -0,0 +1,9 @@ +import type { BbPluginApi } from "@get-bb/plugin-sdk"; + +/** + * All of the behaviour lives in the frontend content script; a plugin still + * needs a backend entry, so this one only announces itself. + */ +export default async function plugin(bb: BbPluginApi) { + bb.log.info("color-swatches ready"); +} diff --git a/plugins/color-swatches/tsconfig.json b/plugins/color-swatches/tsconfig.json new file mode 100644 index 0000000..65a2fbe --- /dev/null +++ b/plugins/color-swatches/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "strict": true, + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "bundler", + "jsx": "react-jsx", + "lib": ["ES2022", "DOM"], + "types": ["node", "vitest/globals"], + "noEmit": true, + "skipLibCheck": true + }, + "include": ["server.ts", "app.tsx", "colors.ts", "colors.test.ts"] +} From 66db0d26b494fcecda21f5c43cd28e7ba1defdcd Mon Sep 17 00:00:00 2001 From: Bersabel Tadesse Date: Fri, 21 Aug 2026 14:25:39 -0700 Subject: [PATCH 2/2] Keep color swatches current while streaming --- package-lock.json | 2 ++ plugins/color-swatches/app.test.ts | 36 +++++++++++++++++++++++++++++ plugins/color-swatches/app.tsx | 9 ++++++-- plugins/color-swatches/dist/app.js | 8 +++++-- plugins/color-swatches/package.json | 2 ++ 5 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 plugins/color-swatches/app.test.ts diff --git a/package-lock.json b/package-lock.json index 4c29f21..1cade65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5056,8 +5056,10 @@ "version": "0.1.0", "devDependencies": { "@get-bb/plugin-sdk": "file:../../tooling/vendor/get-bb-plugin-sdk-0.4.8.tgz", + "@testing-library/react": "^16.3.2", "@types/node": "^22.0.0", "@types/react": "^19.0.0", + "jsdom": "^29.0.1", "typescript": "^5.7.0", "vitest": "^4.0.0" }, diff --git a/plugins/color-swatches/app.test.ts b/plugins/color-swatches/app.test.ts new file mode 100644 index 0000000..fe51272 --- /dev/null +++ b/plugins/color-swatches/app.test.ts @@ -0,0 +1,36 @@ +// @vitest-environment jsdom + +import { loadPluginApp, mountPluginContentScripts } from "@get-bb/plugin-sdk/testing/app"; +import { afterEach, describe, expect, it, vi } from "vitest"; + +afterEach(() => { + document.body.replaceChildren(); + vi.unstubAllGlobals(); +}); + +describe("Color Swatches content script", () => { + it("redecorates a code line after its streamed text changes", async () => { + const frames: FrameRequestCallback[] = []; + vi.stubGlobal("requestAnimationFrame", (callback: FrameRequestCallback) => { + frames.push(callback); + return frames.length; + }); + document.body.innerHTML = `
    #fff
    `; + + const app = await loadPluginApp(() => import("./app")); + const mounted = await mountPluginContentScripts(app, { pluginId: "color-swatches" }); + const line = document.querySelector(".sh__line")!; + const [prefix, value] = Array.from(line.querySelectorAll("span")); + expect(prefix.getAttribute("data-bb-color-swatch")).toBe(""); + expect(prefix.style.getPropertyValue("--bb-color-swatch")).toBe("#fff"); + + value.textContent = "000"; + await Promise.resolve(); // deliver MutationObserver records + expect(frames).toHaveLength(1); + frames.shift()!(0); + + expect(prefix.getAttribute("data-bb-color-swatch")).toBe(""); + expect(prefix.style.getPropertyValue("--bb-color-swatch")).toBe("#000"); + await mounted.lifecycle.dispose(); + }); +}); diff --git a/plugins/color-swatches/app.tsx b/plugins/color-swatches/app.tsx index 5e00c28..3f37d23 100644 --- a/plugins/color-swatches/app.tsx +++ b/plugins/color-swatches/app.tsx @@ -98,15 +98,20 @@ function decorateWholeElement(el: HTMLElement): void { if (isColor(only.value)) decorate(el, only.value); } +function matchesWithin(root: ParentNode, selector: string): Element[] { + const matches = Array.from(root.querySelectorAll?.(selector) ?? []); + return root instanceof Element && root.matches(selector) ? [root, ...matches] : matches; +} + function scan(root: ParentNode): void { // Re-scanning a streamed line must not leave yesterday's chips behind. for (const stale of Array.from(root.querySelectorAll?.(`[${ATTR}]`) ?? [])) undecorate(stale); - for (const line of Array.from(root.querySelectorAll?.(".sh__line") ?? [])) { + for (const line of matchesWithin(root, ".sh__line")) { if (line.closest(EXCLUDED)) continue; decorateTokenizedLine(line); } - for (const code of Array.from(root.querySelectorAll?.("code") ?? [])) { + for (const code of matchesWithin(root, "code")) { if (code.closest(EXCLUDED) || code.closest("pre")) continue; decorateWholeElement(code as HTMLElement); } diff --git a/plugins/color-swatches/dist/app.js b/plugins/color-swatches/dist/app.js index c9f9c82..32327e9 100644 --- a/plugins/color-swatches/dist/app.js +++ b/plugins/color-swatches/dist/app.js @@ -123,13 +123,17 @@ function decorateWholeElement(el) { if (only.start !== 0 || only.end !== text.length) return; if (isColor(only.value)) decorate(el, only.value); } +function matchesWithin(root, selector) { + const matches = Array.from(root.querySelectorAll?.(selector) ?? []); + return root instanceof Element && root.matches(selector) ? [root, ...matches] : matches; +} function scan(root) { for (const stale of Array.from(root.querySelectorAll?.(`[${ATTR}]`) ?? [])) undecorate(stale); - for (const line of Array.from(root.querySelectorAll?.(".sh__line") ?? [])) { + for (const line of matchesWithin(root, ".sh__line")) { if (line.closest(EXCLUDED)) continue; decorateTokenizedLine(line); } - for (const code of Array.from(root.querySelectorAll?.("code") ?? [])) { + for (const code of matchesWithin(root, "code")) { if (code.closest(EXCLUDED) || code.closest("pre")) continue; decorateWholeElement(code); } diff --git a/plugins/color-swatches/package.json b/plugins/color-swatches/package.json index 44ccf4b..d80cd8b 100644 --- a/plugins/color-swatches/package.json +++ b/plugins/color-swatches/package.json @@ -21,8 +21,10 @@ }, "devDependencies": { "@get-bb/plugin-sdk": "file:../../tooling/vendor/get-bb-plugin-sdk-0.4.8.tgz", + "@testing-library/react": "^16.3.2", "@types/node": "^22.0.0", "@types/react": "^19.0.0", + "jsdom": "^29.0.1", "typescript": "^5.7.0", "vitest": "^4.0.0" }