Skip to content

Feature: Add q-search-results-list web component.#1193

Open
fchasen wants to merge 123 commits intomainfrom
feat-search_components
Open

Feature: Add q-search-results-list web component.#1193
fchasen wants to merge 123 commits intomainfrom
feat-search_components

Conversation

@fchasen
Copy link
Copy Markdown
Collaborator

@fchasen fchasen commented Feb 9, 2026

Description

Implements a new q-search-results-list web component to display and manage the searching a Pagefind index, replacing the current search results template and display logic.

  • The component takes a query attribute to search for in a Pagefind index.
  • Removes the updateSearchResults and displaySearchResults methods, as lit will handle batching UI updates.
  • Enables adding figures to the Pagefind index.
  • Adds subresults, contributors metadata and figures with image previews to the search results.
  • Adds excerpts with search query highlighting to all search result items.
  • Removes type and word count metadata from the search results.

Checklist

  • I have read the CONTRIBUTING.md file

  • I have made my changes in a new branch and not directly in the main branch

  • This pull request is ready for final review by the Quire team

Include screenshots of before/after if applicable.

quire-search

Additional Comments

Thumbnail handling for figures will be added once they are a size that can be used.

mphstudios and others added 30 commits December 22, 2025 10:02
- Add test command to the CLI package
- Filter specs when dynamically loading command modules
- Ensure Command constructor sets summary property
- Add specs for each cli command module
- Add unit tests for each cli build command
- Updates cli commands README
### Changed

- Add integration tests for CLI commands and command helpers
- Update Node version

@todo replace the console with a logger module that can be more easily mocked.
### Added

- Simple abstraction for console output for improved separation of concerns

### Changed

- Refactor commands to use the new logger module
- Remove test.serial for tests that can now be run in parallel
- Run command integration tests in parallel using mocked logger
- Update documentation for CLI command modules
Remove tarball after use in `quire new` command
remove "automatic assignee" when creating new issues
* Update to circleci/browser-tools@2.3.2
* Update PUPPETEER_EXECUTABLE_PATH
  Chrome for Testing installs to /opt/chrome-for-testing/chrome, which is symlinked to /usr/local/bin/chrome
* Update macos xcode to 26.2.0
* Fix PUPETTEER_EXECUTABLE_PATH on macos
Sharp, esbuild, puppeteer, node-sass, ... need postinstall scripts
to install native binaries and using the --ignore-scripts flag prevents
these while adding very limited security benefit since install already
uses a package-lock file.
* Feature: Update search to use PageFind for indexing and retrieval.
- Adds the `pagefind` library and `removes` lunr
- Updates the search plugin to index HTML pages and figures using a new `SearchIndex` class
- Output the search index to `_search` along with the frontend API files that PageFind builds
- Adds pagefind data attributes as meta tags and on `.quire-page` to pass page metadata to the index
- Updates the existing search UI to use the pagefind API
- Adds the Sinon library for creating test mocks
- Adds tests for SearchIndex using mocks for the pagefind methods
- Bundles the pagefind search API and imports it when `loadSearchData` is called, so  pagefind will load the index using wasm.
Fixes Issue#1069

Co-authored-by: Andy De Leon <66084673+andy-jdl@users.noreply.github.com>
Add specs for base Command class and cli program, 
these test what is not covered by the command tests:
* Add a spec for the base Command class
* Add tests for the cli program main module
Refine default choice annotation behavior
* Adds an epub command option to specify the output path
* Updates which helper to use ToolNotFoundError class
* Adds a metadata module for the lib/epub engines
* Refactors epub command and lib/epub error handling
* Document lib/epub module and epub engines
* Improves Pandoc debugging using execa stderr/stdout
* Remove package-lock from individual workspaces

With npm workspaces the root package-lock file is the single source of truth for the entire dependency tree. Per-package lock files are not generated and shouldn't exist.

* Increment quire-cli release candidate version
* Fixes regression that removed the preview command --open option
* Fixes a rebase regression where build and preview commands were not following the established pattern to instrument the reporter: commands configure the reporter and lib modules call start/succeed/fail.
* Registers a call back when the dev server is ready
* Overrides debug formatArgs for less noisy output
* Add info command option for json output
* Add validate command option for json output
Accidentally committed in d73cbb0. Already ignored via .gitignore.
* Read NO_COLOR from the environment at startup
* Define shared command options for --color and --no-color
* Add shared color option flags to main program
* Update config and logger for color option precedence
* Document cli accessibility (cli/docs/accessibility.md)
* Implement helpers for fuzzy matching and suggestions
* Define custom errors for settings command
* Refactor config (settings) command to throw errors
* Define custom error for unknown help topics
* Instrument suggestions for help topics
* Add config setting for reduced motion
* Pass the reduced motion option to commands
* Refactor reporter to use reduced motion setting
* Update cli modes documentation
* Set eleventy quietMode from cli options
* Set QUIRE_LOG_LEVEL environment variable
* Refactor quire-11ty logger to read QUIRE_LOG_LEVEL
* Set QUIRE_LOG_* env vars to configure 11ty logger
* Upgrade to ora v9
* Set log level in vite options
* Update output modes documentation.
* Rename mise task to generate the cli man page
* Adds a man page for the quire-cli
* Document the steps to regenerate the man page
* Include man page in package config
@geealbers
Copy link
Copy Markdown
Member

Ahead of the code review, this is looking really good @fchasen. It's exciting to see it in action. The two small style changes I'd make are:

.search-subresults {
  margin-left: 3rem;
}
.result-excerpt mark {
  background-color: var(--highlight-color, #F9F9A3);
}

Following the pattern of how you handled the other color items, the highlight it based on an as-yet non-existent css variable, but falls back to the highlight color value currently defined in content/_assets/styles/colors.scss.

I also played around with doing something to indicate that the excerpts are excerpts, but ultimately it felt too busy for me and probably unnecessary.

.result-excerpt:before {
  content: '... ';
}
.result-excerpt:after {
  content: ' ...';
}

Finally, on a non-style note, can we change the display of information on the figure image results? We may have spoken about this before and I thought otherwise, but now that I'm seeing it more in action we can eliminate the page title (I don't think it's clear what it is). And while you have the figure credit as a second meta item there, it would be better to include it as part of the excerpt, coming right after the caption, and have it be searchable too.

@fchasen fchasen force-pushed the feat-search_components branch from 0ea6033 to ad52252 Compare March 3, 2026 05:50
@fchasen
Copy link
Copy Markdown
Collaborator Author

fchasen commented Mar 3, 2026

Sorry for the delay, made these updates but I hadn't realized the metadata wasn't searchable. Thankfully that was changed in the Pagefind beta, so I've updated to use that now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants