From a854f02854447af528127fb72b199791b79adb7c Mon Sep 17 00:00:00 2001 From: Tyler Koenig Date: Sun, 17 May 2026 13:28:10 -0400 Subject: [PATCH] feat(themes): add catppuccin mocha, nord, and dracula themes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Community-standard palettes mapped to nib's 18-token design system. Theme cycle extended: dark → paper → tinycard → catppuccin → nord → dracula. --- web/app.js | 16 ++++++++----- web/style.css | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 6 deletions(-) diff --git a/web/app.js b/web/app.js index adbe789..a76b8ca 100644 --- a/web/app.js +++ b/web/app.js @@ -17,6 +17,9 @@ const PAGE_SIZE = 50; const INTENT_HINTS = { grab: 'scan + copy', read: 'expand + study', fill: 'templates only' }; + const READ_TYPES = ['note', 'link', 'decision']; + const FILL_TYPES = ['template', 'checklist']; + const GRAB_TYPES = ['snippet']; const state = { view: 'stream', @@ -363,7 +366,7 @@ html += '
intent
'; for (const k of ['grab', 'read', 'fill']) { const on = state.intent === k ? ' on' : ''; - const count = k === 'grab' ? state.entities.length : k === 'read' ? state.entities.filter(e => e.card_data).length : state.entities.filter(e => e.body && /\$\{.+\}/.test(e.body)).length; + const count = k === 'grab' ? state.entities.filter(e => !e.card_type || GRAB_TYPES.includes(e.card_type)).length : k === 'read' ? state.entities.filter(e => READ_TYPES.includes(e.card_type)).length : state.entities.filter(e => FILL_TYPES.includes(e.card_type)).length; html += `