Skip to content

Commit 17f79ce

Browse files
Redesign home page (live search, platform filter, dark AI panel)
- Rewrite _default/full-width.html as the gd-home design from the Claude Design handoff: a hero with live search over /search-index.json (same engine as the 404), a platform-filter segmented control over the product grid (real product icons, descriptions, platform pills), a dark AI/LLM panel, and developer- resource cards — all driven by data/products.toml. - Browse bar: title + count on the left, platform filter on the right. - Replace the theme's decorative top background with a flat full-width gradient band on the home and 404 pages (scoped via :has). - Trim the home _index.md body (the layout renders everything now); the products-grid shortcode is now unused. - Docs: CHANGELOG.md, CLAUDE.md.
1 parent ad12ed9 commit 17f79ce

5 files changed

Lines changed: 379 additions & 88 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ tags), so changes accumulate under **[Unreleased]**.
2929
- Comprehensive README, `CLAUDE.md`, and this changelog.
3030

3131
### Changed
32+
- **Redesigned the home/landing page** (from the Claude Design handoff, the sibling of the 404):
33+
a hero **live search** over `/search-index.json` (same engine as the 404), a **platform-filter**
34+
segmented control (All / .NET / Java / Node.js / Python) over the product grid (cards show the real
35+
product icon, description, and platform pills), a dark **AI/LLM panel** (`/llms.txt`,
36+
`/llms-full.txt`, `.md`), and **Developer Resources** cards. Rendered by
37+
`_default/full-width.html` as a scoped `gd-home` design; the `_index.md` body is now empty (the
38+
layout renders everything from `data/products.toml`), so the `products-grid` shortcode is unused.
3239
- **English-only**: removed all non-English content/locales; edge redirects strip retired locale segments.
3340
- Migrated to the vendored Geekdoc-based `themes/docs/` theme (dropped the api-theme submodule); added a
3441
**scoped left-nav** (`menu-filetree.html`) to keep page weight low.

‎CLAUDE.md‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,13 @@ obvious from the code.
4141
API refs synced from `GroupDocs.<Product>-References` repos.
4242
- **Family/landing page** (per product): `content/sites/groupdocs/<product>/english/_index.md`, `layout: family`,
4343
`url: /`. HTML by `themes/docs/layouts/_default/family.html`; Markdown by `themes/docs/layouts/index.md` (family branch).
44-
- **Site-root landing**: `content/sites/groupdocs/home/english/_index.md`, `layout: full-width`.
44+
- **Site-root landing**: `content/sites/groupdocs/home/english/_index.md`, `layout: full-width`. Its
45+
**body is empty** — the whole page is rendered by `themes/docs/layouts/_default/full-width.html` as the
46+
scoped **`gd-home`** design (hero + live search over `/search-index.json`, a platform-filter over the
47+
product grid, a dark AI/LLM panel, developer resources), all driven by `data/products.toml`. The hero
48+
title/lead come from the front-matter `title`/`description`. (The `.md`/`llms.txt` home outputs still
49+
come from `layouts/index.md` / `index.llmstxt.txt`, which read `data/products.toml`, not the body.)
50+
The old `shortcodes/products-grid.html` is now unused.
4551
- **`data/products.toml`** — single source of truth for the home product grid (`{{< products-grid >}}` shortcode)
4652
AND the 404 product directory. 15 entries (key/title/url/icon/weight/description/platforms).
4753
- ⚠️ **python-net content files have a UTF-8 BOM** — parse with `utf-8-sig` (otherwise the `---` front-matter

‎content/sites/groupdocs/home/english/_index.md‎

Lines changed: 5 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ id: home
33
layout: "full-width"
44
title: GroupDocs API References
55
linkTitle: "Home"
6-
description: "API reference and code snippets for GroupDocs document processing products — .NET, Java, Node.js and Python. Browse classes, methods, and examples for every supported product."
6+
description: "Class library and REST API reference for GroupDocs document-processing SDKs — namespaces, classes, methods, and code examples for .NET, Java, Node.js, and Python."
77
geekdocSkip: true
88
geekdocNav: false
99
geekdocAlign: center
@@ -13,77 +13,7 @@ hideChildren: true
1313
showFeedbackForm: false
1414
---
1515

16-
<div class="gdoc-list-descr">
17-
Class library and REST API reference for GroupDocs document-processing SDKs — namespaces, classes, methods, and code examples for .NET, Java, Node.js, and Python.
18-
</div>
19-
20-
{{< products-grid >}}
21-
22-
<h2 class="gdoc-list-title">AI Agents &amp; LLM Friendly</h2>
23-
24-
<div class="gdoc-list-descr">
25-
Machine-readable indexes of the entire API reference, built for agents and retrieval.
26-
</div>
27-
28-
<div class="gdoc-list-apps">
29-
30-
<div class="gdoc-list-app">
31-
<svg class="gdoc-list-app__icon" viewBox="0 0 384 512" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"/></svg>
32-
<a class="gdoc-list-app__link" href="/llms.txt">llms.txt</a>
33-
<div class="gdoc-list-app__descr">Curated index of every product and platform.</div>
34-
</div>
35-
36-
<div class="gdoc-list-app">
37-
<svg class="gdoc-list-app__icon" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z"/></svg>
38-
<a class="gdoc-list-app__link" href="/llms-full.txt">llms-full.txt</a>
39-
<div class="gdoc-list-app__descr">The full documentation in a single file.</div>
40-
</div>
41-
42-
<div class="gdoc-list-app">
43-
<svg class="gdoc-list-app__icon" viewBox="0 0 640 512" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"/></svg>
44-
<a class="gdoc-list-app__link" href="/annotation.md">Markdown (.md)</a>
45-
<div class="gdoc-list-app__descr">Append <code>.md</code> to any page URL for Markdown &mdash; e.g. <code>/annotation.md</code>.</div>
46-
</div>
47-
48-
</div>
49-
50-
<h2 class="gdoc-list-title">Developer Resources</h2>
51-
52-
<div class="gdoc-resources">
53-
54-
<a class="gdoc-resource" href="https://docs.groupdocs.com/" rel="nofollow" target="_blank">
55-
<div class="gdoc-resource__icon-box">
56-
<svg class="gdoc-resource__icon"><use xlink:href="/img/groupdocs-stack.svg#api"></use></svg>
57-
</div>
58-
<div class="gdoc-resource__link">Documentation</div>
59-
</a>
60-
61-
<a class="gdoc-resource" href="https://releases.groupdocs.com/" rel="nofollow" target="_blank">
62-
<div class="gdoc-resource__icon-box">
63-
<svg class="gdoc-resource__icon"><use xlink:href="/img/groupdocs-stack.svg#code"></use></svg>
64-
</div>
65-
<div class="gdoc-resource__link">Releases &amp; Downloads</div>
66-
</a>
67-
68-
<a class="gdoc-resource" href="https://products.groupdocs.com/" rel="nofollow" target="_blank">
69-
<div class="gdoc-resource__icon-box">
70-
<svg class="gdoc-resource__icon"><use xlink:href="/img/groupdocs-stack.svg#total"></use></svg>
71-
</div>
72-
<div class="gdoc-resource__link">Product Site</div>
73-
</a>
74-
75-
<a class="gdoc-resource" href="https://blog.groupdocs.com/" rel="nofollow" target="_blank">
76-
<div class="gdoc-resource__icon-box">
77-
<svg class="gdoc-resource__icon"><use xlink:href="/img/groupdocs-stack.svg#editor"></use></svg>
78-
</div>
79-
<div class="gdoc-resource__link">Blog</div>
80-
</a>
81-
82-
<a class="gdoc-resource" href="https://forum.groupdocs.com/" rel="nofollow" target="_blank">
83-
<div class="gdoc-resource__icon-box">
84-
<svg class="gdoc-resource__icon"><use xlink:href="/img/groupdocs-stack.svg#free-support"></use></svg>
85-
</div>
86-
<div class="gdoc-resource__link">Support Forum</div>
87-
</a>
88-
89-
</div>
16+
<!-- The home page is rendered entirely by themes/docs/layouts/_default/full-width.html
17+
(the gd-home design: hero + live search, platform-filterable product grid from
18+
data/products.toml, AI/LLM panel, developer resources). The .md / llms.txt outputs
19+
come from layouts/index.md and index.llmstxt.txt. No body content is needed here. -->

‎themes/docs/assets/custom.css‎

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,4 +476,117 @@ a.gd-404__ai-card:hover { border-color: var(--gd404-link); box-shadow: 0 6px 16p
476476
.gd-404__title { font-size: 1.8rem; }
477477
.gd-404__ai { padding: 1.25rem; }
478478
.gd-404__rpath { display: none; }
479+
}
480+
481+
/* ============================ Home (gd-home) ============================
482+
Functional landing: hero live-search (same /search-index.json as the 404),
483+
a platform-filterable product grid, a dark AI/LLM panel, and developer
484+
resources. Reuses the 404 tokens (--gd404-blue #0054FA / --gd404-link #558FFF);
485+
the `.gd-home ` prefix raises specificity over the theme's `h1..h6{display:flex}`
486+
and `.gdoc-page h2` so headings render as designed. */
487+
.gd-home { max-width: 75rem; margin: 0 auto; padding-bottom: 3rem; }
488+
489+
/* Full-width gradient band behind the hero (matches the design), replacing the theme's
490+
decorative rounded wrapper background image. `:has()` scopes it to the redesigned home
491+
and 404 pages; other nav-disabled pages keep the theme background. */
492+
.wrapper-bg:has(.gd-home),
493+
.wrapper-bg:has(.gd-404) {
494+
background-image: linear-gradient(180deg, #eef3fc 0%, #f6f9ff 55%, #ffffff 100%);
495+
background-repeat: no-repeat;
496+
background-position: top center;
497+
background-size: 100% 32rem;
498+
}
499+
500+
/* Hero */
501+
.gd-home__hero { text-align: center; max-width: 44rem; margin: 0 auto; padding: 2rem 0 1.5rem; }
502+
.gd-home .gd-home__title { display: block; margin: 0 0 1rem; font-size: 2.6rem; line-height: 1.08; font-weight: 800; letter-spacing: -.03em; text-align: center; }
503+
.gd-home__lead { color: rgba(15, 23, 39, .65); font-size: 1.1rem; line-height: 1.6; margin: 0 auto 1.75rem; max-width: 38rem; }
504+
505+
/* Hero search (mirrors the 404 search component) */
506+
.gd-home__search { max-width: 38rem; margin: 0 auto; position: relative; }
507+
.gd-home__searchbar {
508+
display: flex; align-items: center; gap: .5rem;
509+
background: #fff; border: 1.5px solid #EBEBEC; border-radius: 14px;
510+
padding: .4rem .4rem .4rem 1rem; box-shadow: 0 6px 22px rgba(15, 23, 39, .08);
511+
transition: border-color .15s ease, box-shadow .15s ease;
512+
}
513+
.gd-home__searchbar:focus-within { border-color: var(--gd404-link); box-shadow: 0 0 0 4px rgba(85, 143, 255, .15); }
514+
.gd-home__search-icon { color: #94a3b8; flex: none; }
515+
.gd-home__input { flex: 1; border: none; outline: none; background: transparent; font-family: inherit; font-size: 1rem; color: var(--body-font-color, #0f1727); padding: .45rem 0; }
516+
.gd-home__search-btn { flex: none; border: none; cursor: pointer; background: var(--gd404-blue); color: #fff; font-family: inherit; font-size: .95rem; font-weight: 600; padding: .6rem 1.3rem; border-radius: 9px; transition: background-color .15s ease; }
517+
.gd-home__search-btn:hover { background: #003fbd; }
518+
519+
/* Search results dropdown */
520+
.gd-home__results { position: absolute; left: 0; right: 0; top: calc(100% + .5rem); z-index: 20; background: #fff; border: 1px solid #EBEBEC; border-radius: 12px; box-shadow: 0 16px 40px rgba(15, 23, 39, .14); overflow: hidden; max-height: 26rem; overflow-y: auto; text-align: left; }
521+
.gd-home__result { display: flex; align-items: center; gap: .75rem; padding: .7rem 1rem; text-decoration: none; border-left: 3px solid transparent; cursor: pointer; }
522+
.gd-home__result.is-active { background: #f4f8ff; border-left-color: var(--gd404-link); }
523+
.gd-home__rk { flex: none; font-family: "Roboto Mono", monospace; font-size: .65rem; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; padding: .15rem .45rem; border-radius: 5px; width: 5.4rem; text-align: center; }
524+
.gd-home__rk--ty { background: #eaf1ff; color: #1d4ed8; }
525+
.gd-home__rk--ns { background: #f1ecfe; color: #6d28d9; }
526+
.gd-home__rk--g { background: #e8f7ee; color: #15803d; }
527+
.gd-home__rk--pr { background: #e6f6f6; color: #0e7490; }
528+
.gd-home__rk--pg { background: #f1f5f9; color: #64748b; }
529+
.gd-home__rmain { flex: 1; min-width: 0; }
530+
.gd-home__rname { display: block; font-size: .95rem; color: var(--body-font-color, #0f1727); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
531+
.gd-home__rname mark { background: #fff2a8; color: inherit; padding: 0 .05em; border-radius: 2px; }
532+
.gd-home__rpath { display: block; font-family: "Roboto Mono", monospace; font-size: .72rem; color: #94a3b8; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
533+
.gd-home__rplat { flex: none; font-size: .72rem; font-weight: 600; color: var(--gd404-link); background: #EDF0F1; border-radius: 1rem; padding: .15rem .55rem; }
534+
.gd-home__more, .gd-home__noresult { padding: .75rem 1rem; font-size: .85rem; color: #64748b; }
535+
.gd-home__more { border-top: 1px solid #f1f5f9; background: #fbfdff; }
536+
537+
/* Browse + platform filter */
538+
.gd-home__browse { margin-top: 3rem; }
539+
.gd-home__browse-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem 1.5rem; flex-wrap: wrap; margin-bottom: 1.5rem; }
540+
.gd-home__browse-title { display: flex; align-items: baseline; gap: .75rem; }
541+
.gd-home .gd-home__h2 { display: block; font-size: 1.4rem; font-weight: 700; letter-spacing: -.02em; margin: 0; line-height: 1.3; }
542+
.gd-home__count { font-family: "Roboto Mono", monospace; font-size: .8rem; color: #94a3b8; flex: none; }
543+
.gd-home__filter { display: flex; flex-wrap: wrap; gap: .35rem; background: #f1f5f9; padding: .3rem; border-radius: 11px; }
544+
.gd-home__seg { display: inline-flex; align-items: center; gap: .45rem; border: none; cursor: pointer; font-family: inherit; font-size: .85rem; font-weight: 600; color: #64748b; padding: .45rem .85rem; border-radius: 8px; background: transparent; transition: background-color .15s ease, color .15s ease, box-shadow .15s ease; }
545+
.gd-home__seg:hover { color: var(--body-font-color, #0f1727); }
546+
.gd-home__seg.is-active { background: #fff; color: var(--body-font-color, #0f1727); box-shadow: 0 1px 3px rgba(15, 23, 39, .12); }
547+
.gd-home__seg-dot { width: .5rem; height: .5rem; border-radius: 50%; flex: none; }
548+
549+
/* Product grid + cards */
550+
.gd-home__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(21rem, 1fr)); gap: .9rem; }
551+
.gd-home__card { display: flex; flex-direction: column; gap: .7rem; padding: 1.15rem 1.25rem; border: 1px solid #EBEBEC; border-radius: 14px; background: #fff; text-decoration: none; transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
552+
.gd-home__card:hover { border-color: var(--gd404-link); box-shadow: 0 8px 22px rgba(85, 143, 255, .12); transform: translateY(-2px); }
553+
.gd-home__card-top { display: flex; align-items: center; gap: .8rem; }
554+
.gd-home__card-icon { width: 2.4rem; height: 2.4rem; flex: none; }
555+
.gd-home__card-name { flex: 1; min-width: 0; font-size: 1.05rem; letter-spacing: -.01em; color: var(--body-font-color, #0f1727); font-weight: 700; }
556+
.gd-home__brand { color: #94a3b8; font-weight: 500; }
557+
.gd-home__card-arrow { color: #cbd5e1; flex: none; }
558+
.gd-home__card:hover .gd-home__card-arrow { color: var(--gd404-link); }
559+
.gd-home__card-desc { font-size: .88rem; line-height: 1.5; color: rgba(15, 23, 39, .6); min-height: 2.6rem; }
560+
.gd-home__pills { display: flex; flex-wrap: wrap; gap: .4rem; }
561+
.gd-home__pill { display: inline-flex; align-items: center; gap: .4rem; font-size: .75rem; font-weight: 600; color: #475569; background: #f6f8fb; border: 1px solid #EBEBEC; border-radius: 7px; padding: .25rem .6rem; transition: background-color .15s ease, border-color .15s ease, color .15s ease; }
562+
.gd-home__pill-dot { width: .45rem; height: .45rem; border-radius: 50%; flex: none; }
563+
.gd-home__pill.is-match { background: #eaf1ff; border-color: #cdddff; color: #1d4ed8; }
564+
565+
/* AI / LLM panel — dark */
566+
.gd-home__ai { margin-top: 3.5rem; background: #0b1220; border-radius: 20px; padding: 2.25rem; }
567+
.gd-home__ai-eyebrow { font-family: "Roboto Mono", monospace; font-size: .75rem; font-weight: 500; letter-spacing: .15em; text-transform: uppercase; color: #7aa7ff; margin-bottom: .6rem; }
568+
.gd-home .gd-home__ai-title { color: #fff; font-size: 1.6rem; font-weight: 800; letter-spacing: -.02em; margin: 0 0 .5rem; }
569+
.gd-home__ai-lead { color: #9fb0c9; font-size: .98rem; line-height: 1.6; margin: 0 0 1.5rem; max-width: 40rem; }
570+
.gd-home__ai-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: .85rem; }
571+
.gd-home__ai-card { display: flex; flex-direction: column; gap: .6rem; background: #131c2e; border: 1px solid #1f2a3f; border-radius: 12px; padding: 1.1rem 1.2rem; text-decoration: none; transition: border-color .15s ease, box-shadow .15s ease; }
572+
a.gd-home__ai-card:hover { border-color: #2563eb; box-shadow: 0 6px 18px rgba(37, 99, 235, .25); }
573+
.gd-home__token { align-self: flex-start; font-family: "Roboto Mono", monospace; font-size: .82rem; font-weight: 500; color: #bcd0ff; background: #1b2740; border: 1px solid #2a3a57; border-radius: 7px; padding: .25rem .6rem; }
574+
.gd-home__ai-desc { font-size: .88rem; line-height: 1.5; color: #9fb0c9; }
575+
.gd-home__ai-desc code { background: #1b2740; border: 1px solid #2a3a57; border-radius: 4px; padding: .1em .4em; font-size: .85em; color: #d6e2ff; }
576+
577+
/* Developer resources */
578+
.gd-home__res { margin-top: 3.5rem; }
579+
.gd-home__res .gd-home__h2 { margin-bottom: 1.25rem; }
580+
.gd-home__res-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: .85rem; }
581+
.gd-home__res-card { display: flex; align-items: center; gap: .85rem; padding: 1rem 1.2rem; border: 1px solid #EBEBEC; border-radius: 12px; background: #fff; text-decoration: none; transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
582+
.gd-home__res-card:hover { border-color: var(--gd404-link); box-shadow: 0 6px 16px rgba(85, 143, 255, .1); transform: translateY(-2px); }
583+
.gd-home__res-icon-box { width: 2.6rem; height: 2.6rem; border-radius: 50%; background: var(--info-bg-color, #f1f7ff); display: flex; align-items: center; justify-content: center; flex: none; }
584+
.gd-home__res-icon { width: 1.25rem; height: 1.25rem; }
585+
.gd-home__res-label { font-weight: 600; font-size: .95rem; color: var(--body-font-color, #0f1727); }
586+
587+
@media (max-width: 48rem) {
588+
.gd-home .gd-home__title { font-size: 1.9rem; }
589+
.gd-home__lead { font-size: 1rem; }
590+
.gd-home__ai { padding: 1.5rem; }
591+
.gd-home__rpath { display: none; }
479592
}

0 commit comments

Comments
 (0)