refactor(shared-ui): extract search-core for highlight + debounce

Both QuickInputBar (InputBar.svelte), CommandBar.svelte, and GlobalSpotlight
were duplicating syntax highlighting and the 150ms search debounce. Pull
these into a new `packages/shared-ui/src/search-core/` module so the two
input surfaces stay in sync on feel and matching rules.

- search-core/highlight.ts — HighlightPattern type, locale-aware
  getHighlightPatterns(), and the shared highlightText() (HTML-escape +
  span wrap). Patterns were previously in quick-input/highlightPatterns.ts
  + inline in CommandBar.svelte.
- search-core/config.ts — SEARCH_DEBOUNCE_MS = 150. Used from InputBar,
  CommandBar, GlobalSpotlight, and apps/mana web SearchEngine.
- quick-input/highlightPatterns.ts + types.ts become thin back-compat
  re-exports.
- Public surface: @mana/shared-ui now exports getHighlightPatterns,
  highlightText, SEARCH_DEBOUNCE_MS, and the HighlightPattern type.

No UX change. UIs still live in their own files (per earlier split
recommendation: shared backend, separate surfaces).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-15 01:06:37 +02:00
parent ad1659f036
commit 24eb8b3b7f
10 changed files with 161 additions and 204 deletions

View file

@ -6,8 +6,7 @@
import { SearchRegistry } from './registry';
import type { GroupedSearchResults } from './types';
const DEBOUNCE_MS = 150;
import { SEARCH_DEBOUNCE_MS as DEBOUNCE_MS } from '@mana/shared-ui';
export function createSearchEngine() {
const registry = new SearchRegistry();