feat: Wikidata engine and Wikipedia knowledge infobox

- Add wikidata engine (wbsearchentities), tests, factory/planner/config
- Wikipedia REST summary: infobox from extract, thumbnail, article URL
- InfoboxView URL; render infobox list in results_inner + base styles
- Preferences Wikidata toggle; engine badge color for wikidata

Made-with: Cursor
This commit is contained in:
ashisgreat22 2026-03-24 00:07:12 +01:00
parent 6e45abb150
commit 24577b27be
13 changed files with 344 additions and 34 deletions

View file

@ -528,6 +528,7 @@
.result[data-engine="braveapi"], .engine-badge[data-engine="braveapi"] { --engine-accent: #ff6600; }
.result[data-engine="qwant"], .engine-badge[data-engine="qwant"] { --engine-accent: #5c97ff; }
.result[data-engine="wikipedia"], .engine-badge[data-engine="wikipedia"] { --engine-accent: #a3a3a3; }
.result[data-engine="wikidata"], .engine-badge[data-engine="wikidata"] { --engine-accent: #339966; }
.result[data-engine="github"], .engine-badge[data-engine="github"] { --engine-accent: #8b5cf6; }
.result[data-engine="reddit"], .engine-badge[data-engine="reddit"] { --engine-accent: #ff4500; }
.result[data-engine="youtube"], .engine-badge[data-engine="youtube"] { --engine-accent: #ff0000; }
@ -538,6 +539,73 @@
.result[data-engine="ddg_images"], .engine-badge[data-engine="ddg_images"] { --engine-accent: #de5833; }
.result[data-engine="qwant_images"], .engine-badge[data-engine="qwant_images"] { --engine-accent: #5c97ff; }
/* Wikipedia / knowledge infobox */
.infobox-list {
margin-bottom: 1.25rem;
}
.infobox-card {
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: 1rem;
align-items: flex-start;
padding: 1rem 1.15rem;
background: var(--bg-secondary);
border: 1px solid var(--border);
border-radius: var(--radius-md);
box-shadow: var(--shadow-sm);
}
.infobox-image-wrap {
flex-shrink: 0;
width: 120px;
height: 120px;
border-radius: var(--radius-sm);
overflow: hidden;
background: var(--bg-tertiary);
border: 1px solid var(--border);
}
.infobox-img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.infobox-main {
flex: 1;
min-width: min(100%, 220px);
}
.infobox-title {
font-size: 1.15rem;
font-weight: 600;
color: var(--text-primary);
margin-bottom: 0.5rem;
line-height: 1.3;
}
.infobox-content {
font-size: 0.9rem;
color: var(--desc-color);
line-height: 1.55;
margin-bottom: 0.65rem;
}
.infobox-link {
display: inline-block;
font-size: 0.875rem;
font-weight: 500;
color: var(--title-link);
text-decoration: none;
}
.infobox-link:hover {
text-decoration: underline;
}
.dialog-error {
padding: 0.65rem 0.85rem;
margin-bottom: 0.75rem;