Skip to content

refactor: rebuild Help page as docs hub grid - #2092

Open
KMchaudhary wants to merge 2 commits into
developfrom
feat/refactor-help-page
Open

refactor: rebuild Help page as docs hub grid#2092
KMchaudhary wants to merge 2 commits into
developfrom
feat/refactor-help-page

Conversation

@KMchaudhary

Copy link
Copy Markdown
Collaborator

Mirror the godam.io/docs landing page: hero with site search, three sections of hub cards (On your site / The cloud platform / On your devices). Search opens godam.io/?s= in a new tab.

Hub copy, badges and slugs move to pages/help/constants.js so the docs base URL is a single constant. Cards without a published hub render an inert action instead of linking out.

Demo

Screen.Recording.2026-08-26.at.7.56.40.AM.mov

Mirror the godam.io/docs landing page: hero with site search, three
sections of hub cards (On your site / The cloud platform / On your
devices). Search opens godam.io/?s=<query> in a new tab.

Hub copy, badges and slugs move to pages/help/constants.js so the docs
base URL is a single constant. Cards without a published hub render an
inert action instead of linking out.
Copilot AI balanced review requested due to automatic review settings August 26, 2026 02:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Rebuilds the Help page as a documentation hub with searchable, categorized cards.

Changes:

  • Adds documentation hub metadata, icons, cards, and external search.
  • Introduces responsive styling for the redesigned page.
  • Retains shared header, footer, and analytics controls.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
pages/help/App.js Renders the new documentation hub layout.
pages/help/constants.js Defines documentation URLs and hub metadata.
pages/help/components/DocsSearch.jsx Implements external documentation search.
pages/help/components/HubCard.jsx Renders published and unavailable hubs.
pages/help/components/HubIcon.jsx Provides hub SVG icons.
pages/help/index.scss Styles the responsive Help page.
assets/src/css/admin.scss Removes the former Help-page margin correction.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread pages/help/App.js Outdated
<div className="godam-help-sections">
{ sections.map( ( section ) => (
<section key={ section.id } className="godam-help-section">
<p className="godam-help-eyebrow">{ section.label }</p>
Comment thread pages/help/index.scss
Comment on lines 16 to 18
#root-video-help {
background-image: url(../../assets/src/images/hero-bg.webp);
background-size: cover;
background-color: #fff;
}
@github-actions

Copy link
Copy Markdown

🔍 WordPress Plugin Check Report

❌ Status: Failed

📊 Report

🎯 Total Issues ❌ Errors ⚠️ Warnings
17 1 16

❌ Errors (1)

📁 readme.txt (1 error)
📍 Line 🔖 Check 💬 Message
0 outdated_tested_upto_header Tested up to: 7.0 < 7.1. The "Tested up to" value in your plugin is not set to the current version of WordPress. This means your plugin will not show up in searches, as we require plugins to be compatible and documented as tested up to the most recent version of WordPress.

⚠️ Warnings (16)

📁 readme.txt (2 warnings)
📍 Line 🔖 Check 💬 Message
0 mismatched_plugin_name Plugin name "GoDAM - Organize WordPress Media Library & File Manager with Unlimited Folders for Images, Videos & more" is different from the name declared in plugin header "GoDAM".
0 trademarked_term The plugin name includes a restricted term. Your chosen plugin name - "GoDAM - Organize WordPress Media Library & File Manager with Unlimited Folders for Images, Videos & more" - contains the restricted term "wordpress" which cannot be used at all in your plugin name.
📁 composer.json (1 warning)
📍 Line 🔖 Check 💬 Message
0 missing_composer_json_file The "/vendor" directory using composer exists, but "composer.json" file is missing.
📁 assets/build/blocks/godam-gallery-v2/render.php (2 warnings)
📍 Line 🔖 Check 💬 Message
15 WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$inner_block_video_ids".
23 WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$inner_block_video_ids".
📁 assets/build/css/main.css (1 warning)
📍 Line 🔖 Check 💬 Message
0 EnqueuedStylesScope This style is being loaded in all contexts.
📁 assets/src/libs/analytics.min.js (5 warnings)
📍 Line 🔖 Check 💬 Message
0 EnqueuedScriptsScope This script is being loaded in all frontend contexts.
0 NonBlockingScripts.NoStrategy This script on http://localhost:8880 (with handle analytics-library) is loaded in the footer. Consider a defer or async script loading strategy instead.
0 NonBlockingScripts.NoStrategy This script on http://localhost:8880/2026/08/26/hello-world/ (with handle analytics-library) is loaded in the footer. Consider a defer or async script loading strategy instead.
0 NonBlockingScripts.NoStrategy This script on http://localhost:8880/sample-page/ (with handle analytics-library) is loaded in the footer. Consider a defer or async script loading strategy instead.
0 NonBlockingScripts.NoStrategy This script on http://localhost:8880/demo-attachment-post/ (with handle analytics-library) is loaded in the footer. Consider a defer or async script loading strategy instead.
📁 assets/build/js/main.min.js (5 warnings)
📍 Line 🔖 Check 💬 Message
0 EnqueuedScriptsScope This script is being loaded in all frontend contexts.
0 NonBlockingScripts.NoStrategy This script on http://localhost:8880 (with handle rtgodam-script) is loaded in the footer. Consider a defer or async script loading strategy instead.
0 NonBlockingScripts.NoStrategy This script on http://localhost:8880/2026/08/26/hello-world/ (with handle rtgodam-script) is loaded in the footer. Consider a defer or async script loading strategy instead.
0 NonBlockingScripts.NoStrategy This script on http://localhost:8880/sample-page/ (with handle rtgodam-script) is loaded in the footer. Consider a defer or async script loading strategy instead.
0 NonBlockingScripts.NoStrategy This script on http://localhost:8880/demo-attachment-post/ (with handle rtgodam-script) is loaded in the footer. Consider a defer or async script loading strategy instead.

🤖 Generated by WordPress Plugin Check Action • Learn more about Plugin Check

Comment thread pages/help/constants.js
* @return {string} Absolute search URL.
*/
export const getDocsSearchUrl = ( query ) => {
const params = new URLSearchParams( { s: query } );

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Search scope changed: post_type=docs was dropped.

The old help search built ?s=<q>&post_type=docs (docs only). getDocsSearchUrl now builds ?s=<q> with no post type, so the query runs against the whole godam.io site (blog, product, marketing pages), not just the documentation hubs. The hero copy says "search across every hub", but the hubs are all docs, so this looks broader than intended. If docs scoping should stay, restore the param:

Suggested change
const params = new URLSearchParams( { s: query } );
const params = new URLSearchParams( { s: query, post_type: 'docs' } );

If searching the whole site is deliberate, please confirm.

Comment thread pages/help/App.js Outdated
<div className="godam-help-sections">
{ sections.map( ( section ) => (
<section key={ section.id } className="godam-help-section">
<p className="godam-help-eyebrow">{ section.label }</p>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Section titles are not headings (a11y regression).

Each group label (On your site, The cloud platform, On your devices) renders as <p className="godam-help-eyebrow">, while card titles are <h3>. So the heading outline jumps from <h1> (hero) straight to <h3> (cards) with no <h2> for the section groups. The previous layout had a heading per section. Screen-reader users lose the section structure and hit a skipped heading level. Consider rendering section.label as an <h2> styled with the eyebrow class.

Comment thread pages/help/components/HubCard.jsx Outdated
</span>
</a>
) : (
<span className="godam-help-button godam-help-button--disabled" aria-disabled="true">

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disabled cards still read "Open docs".

For Coming soon / Planned hubs (Shopify, iOS, macOS, Android) the greyed action still says "Open docs", which implies docs exist. The component comment says the badge should be "the only claim the card makes", but this action is itself a claim. Consider mirroring the badge text (e.g. "Coming soon") or omitting the action for hubs without a slug.

Comment thread pages/help/constants.js
eyebrow: __( 'Core · WordPress', 'godam' ),
title: __( 'GoDAM for WordPress', 'godam' ),
description: __( 'The WordPress plugin: upload, transcode, blocks, page builders, interactive layers, integrations & analytics.', 'godam' ),
badge: __( '70+ articles', 'godam' ),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Article counts and slugs are hardcoded and will drift.

Counts like 70+ articles / 5 articles have no source of truth and go stale as the docs change. The slug values (wordpress, woo, central, platform, chrome) must match the live hub URLs exactly or the "Open docs" link 404s. Worth confirming each resolves under https://godam.io/docs/<slug>/ (note WooCommerce maps to woo, not woocommerce).

Comment thread pages/help/App.js Outdated
icon: Folder,
},
];
const sections = getHubSections();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor (build once): getHubSections() rebuilds the full sections/hubs array and re-runs every __() call on each App render. The data is static, so it could be a module-level constant or wrapped in useMemo and built once.

Comment thread pages/help/index.scss
}

&:hover {
&__eyebrow {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor (dedup): .godam-help-card__eyebrow repeats .godam-help-eyebrow almost verbatim (same 12px / 700 / 0.09em uppercase accent); only the margin differs. Sharing one class or a %placeholder and overriding just the margin would avoid the duplicate.

Comment thread pages/help/constants.js
icon: 'woocommerce',
eyebrow: __( 'Add-on · WooCommerce', 'godam' ),
title: __( 'GoDAM for WooCommerce', 'godam' ),
description: __( 'Make your store shoppable — shoppable video, product reels and product hotspots.', 'godam' ),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Style (copy): several hub descriptions use em-dashes (this line plus 71, 87, 96), as do the hero subtitle in App.js and the placeholder in DocsSearch.jsx. GoDAM copy elsewhere tends to avoid them - a hyphen or comma reads more consistently. Minor / subjective.

Comment thread pages/help/App.js Outdated
import GoDAMFooter from '../godam/components/GoDAMFooter.jsx';
import { useSaveMediaSettingsMutation, useGetMediaSettingsQuery } from '../godam/redux/api/media-settings.js';
import { updateMediaSetting } from '../godam/redux/slice/media-settings.js';
import { getHubSections } from './constants';

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor (consistency): these new imports omit file extensions (./constants, ./components/DocsSearch, ./components/HubCard), while the rest of the codebase imports with them (GoDAMHeader.jsx, media-settings.js). Same in DocsSearch.jsx and HubCard.jsx. Adding .js / .jsx keeps the style uniform.

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.

3 participants