VertiStratInsights Main website ↗

How to use research-design-system: one set of design tokens, four themes for reports and dashboards

Monday, October 19, 2026

A small CSS kit with one token contract, four themes (bulletin, report, reportage, slate) and one component set, so reports, bulletins and dashboards look related without copy-pasting styles.

Open-Source Tools · How-To · Dev & ops tools

How to use research-design-system: one set of design tokens, four themes for reports and dashboards

Skip to article content
Text Size

Revised · v1.0.0 · what changed

4themes rendered in the demo
18component class names in the set
3layers: palette, scale, semantic tokens
0JavaScript or build step required

Code: github.com/herrrickshaw/research-design-system

Watch the walkthrough

Watch on YouTube: youtu.be/W33FVHd4A3I

Why it is useful

  • Who benefits: analysts and writers who publish reports, newsletters and dashboards and want a consistent look with almost no CSS work.
  • What it replaces: re-copying styles between HTML pages, Blogger themes and one-off dashboards.
  • Evidence from the run: the same report template rendered in all four themes by changing only the theme stylesheet and one body class; a screenshot of each was captured.
  • Rules baked in: units in table headers, a source note on every exhibit, reading width capped at 68 characters, wide tables scrolling in their own container.
  • Documents three real bugs it prevents: invisible text in dark mode, drop-caps from Blogger themes, and WeasyPrint print hangs.

What it is for

research-design-system consolidates design assets found across about 42 repos and two Blogger properties into tokens/tokens.css, four theme files, components/components.css and print/print.css.

The contract is that components only use semantic tokens (--c-text, --c-accent and so on). A theme just rebinds roughly a dozen of those tokens, so a new theme is a short file.

Templates for a report, a bulletin and a dashboard, a live component gallery in docs/index.html and an INVENTORY.md of the original assets are included.

Who it is for

  • Analysts publishing HTML reports or bulletins
  • Developers building a simple dashboard shell
  • Anyone standardising a house style across several pages
Not for.
  • Pixel-exact brand work: it is a small starter kit, not a corporate brand system
  • Pages that need JavaScript widgets: only CSS is provided
  • Dark mode that follows the OS: dark mode is opt-in by design (data-theme="dark") and only theme-reportage models it fully

What you need

RequirementWhyHow to get it
A web browserto open the templates and the galleryany modern browser
A text editor or an AI assistantto copy a template and edit the textVS Code, or Claude Code or Gemini CLI inside the cloned folder
Python 3 (optional)the repo's Python tag is only for helper scripts; the kit itself is plain CSSnot needed to use the themes
WeasyPrint (optional)to turn pages into A4 PDFs using print/print.csspip install weasyprint (not run for this post)

Get the code and an AI assistant

You do not have to be a programmer. Get the repository, give it to an AI assistant, and ask in plain language. Any of these routes works:

ToolWhat you needBest for
GitHubFree account to fork or star; git to clone, or the green Code button, then Download ZIP, or open in CodespacesGetting the code and keeping up with updates
Claude CodeClaude subscription or API key; run claude inside the cloned folderLetting the AI read and run the whole repo
Gemini CLIGoogle account; run gemini inside the cloned folderThe same hands-on workflow with Gemini
Claude.ai, Gemini or ChatGPT in the browserA chat account; upload README.md and the files you care about (or paste the output of git ls-files)Understanding the project and asking questions without installing anything
Other tools (Copilot Chat, Cursor, Codex CLI)Open the cloned folder in the tool and point it at README.md firstEditing and extending the code
git clone https://github.com/herrrickshaw/research-design-system.git
cd research-design-system
claude      # or: gemini

Install

  1. Clone the repo
    git clone https://github.com/herrrickshaw/research-design-system.git
    cd research-design-system
  2. Open the live gallery in your browser
    open docs/index.html

Quick start: commands and what you should see

Start from a template and open it

cp templates/report.html my-report.html   # then fix the ../ paths or keep the file inside the repo
open my-report.html

A report page with masthead, in-brief card, stat tiles, a table exhibit, a side box and a warning box. The stylesheet links must be in this order: tokens, theme, components, print.

Switch theme

sed -i '' 's#themes/report.css#themes/slate.css#; s#theme-report#theme-slate#' my-report.html

The same content on a dark slate ground with blue accents. Use theme-bulletin, theme-report, theme-reportage or theme-slate.

Make your own theme

cp themes/report.css themes/mine.css   # then rebind the --c-* tokens

Components pick up your colours because they never reference raw palette values.

Sample outputs

Real output from a run on the date shown in the sources line; trimmed to fit.

Four themes on the same template (rendered 19 Oct 2026 with headless Chrome, 1000 px wide)

templates/report.html with themes/{bulletin,report,reportage,slate}.css
bulletin.png    138 KB   warm paper background, teal accent
report.png      138 KB   white background, navy text, blue accent
reportage.png   138 KB   sage #eef1ea background, teal accent
slate.png       139 KB   slate #0f172a background, light text, blue accent

Screenshots are saved in the author's posts/samples/research-design-system folder. The slate render was inspected visually: the stat tiles, table, side box and warning box were all legible on the dark ground.

Colour tokens each theme binds (read from the CSS)

grep -- '--c-bg\|--c-text\|--c-accent' themes/*.css
bulletin   bg var(--paper)  text var(--ink)    accent var(--teal-deep)
report     bg #fff          text var(--navy)   accent var(--blue)
reportage  bg #eef1ea       text #1d2321       accent #1f5f5b
slate      bg #0f172a       text #e2e8f0       accent var(--blue-web)

Only the first three semantic tokens are shown; each theme binds about a dozen.

Structure of the kit

ls tokens themes components templates print docs
tokens: tokens.css tokens.json
themes: bulletin.css report.css reportage.css slate.css
components: components.css
templates: bulletin.html dashboard.html report.html
print: print.css
docs: index.html

A clone of the repo on 19 Oct 2026.

Ways to use it

MethodHow it works
Copy a templateStart from templates/report.html, bulletin.html or dashboard.html and replace the text.
Link the CSSLoad tokens, theme, components and print in that order, then add class="rds theme-<name>" to body.
Print to PDFprint/print.css sets A4 page rules for WeasyPrint; follow the README's warnings about page-total spans and flex containers.
Via an AI assistantAsk Claude Code or Gemini CLI to turn your notes into a page using the report template and theme-reportage.

Sample prompts for your AI assistant

Copy, paste and edit the parts in [brackets].

  • Explain the research-design-system repository in plain English: what problem it solves, what the main files do, and what I need installed.
  • Build a one-page report from my notes below using templates/report.html and the theme-reportage theme: [paste notes].
  • Create a fifth theme called theme-sand by rebinding the --c-* tokens in themes/report.css, and show me a screenshot.
  • Explain the three bugs listed in the README and show where each fix lives in components.css and print.css.
  • Convert my existing HTML page to use the rds classes, keeping units in table headers and a source note under each table.
  • Check my page for the rule violations in the README: raw palette values in components, missing source notes, horizontal scroll.

Limits and honest caveats

  • Conceptual starter kit, not a finished brand or engineering design.
  • The numbers inside the shipped templates (for example trade totals in the sample table) are placeholder example content, not data to cite.
  • Only the visual render of the four themes was run; the WeasyPrint PDF path and the Blogger theme in blogger-theme/ were not tested for this post.
  • A scratch copy of the report template was edited per theme for the screenshots; the repo itself was not modified.
  • Dark mode is opt-in; the page will not follow the operating system unless you add data-theme="dark" yourself, which is deliberate.

Sources: research-design-system README, templates, themes and components; four theme renders made on 19 October 2026 from a fresh clone with headless Google Chrome on a scratch copy of templates/report.html; screenshots saved under ~/repo-demos/posts/samples/research-design-system. WeasyPrint was not run.

Revision history.
  • v1.0.0 — 26 October 2026 — first published.

About this article: Researched, written and edited by Umashankar Triplicane Dwarakanathan, with AI research assistance; every figure is meant to trace to the primary source cited. See the Editorial Policy for how sourcing, AI use and corrections work.

Umashankar Triplicane Dwarakanathan
Contact Us
Umashankar Triplicane Dwarakanathan
Investment Promotion & Energy-Sector Leader · Chennai, Tamil Nadu, India
LinkedIn → GitHub → Email +91 78273 81696
How this site works

Data-led analysis of India's trade, currency and industrial policy. Every article is built from primary official sources, and every figure links back to the release, table or filing it came from.

Sources. DGCI&S TradeStat (imports/exports, HSN-wise) · PIB (government press releases, January 2017 to today, refreshed daily) · RBI (circulars, balance of payments) · MoSPI (CPI/WPI, IIP) · PARIVESH (environmental clearances) · CCIL (bond yields) · BIS (policy rates) · SEBI, NSE/BSE and SEC filings for company data.

Interpretation. Figures carry their vintage and retrieval date; estimates and press-reported numbers are labelled as such; where sources disagree, both are shown. Corrections are made visibly, never silently. Articles are written with AI assistance from the cited sources — AI-generated text can misstate figures even when working from real material, so verify any number that matters to a decision against the linked primary source.

footer

Browse all articles by topic

Every piece on this blog, grouped. Or read the full index.

Agriculture & FertilisersAI ToolsChemicalsClimate & CarbonEnergy & FuelsGas & LNGImport SubstitutionIndustrial PolicyMarkets & FinanceMobility & EVPrices & InflationTextilesTrade & Tariffs

Each topic is a live archive page that updates itself as pieces are labelled. It replaces a hand-kept list that had fallen 18 articles behind.