Skip to content

Is 562 implement ux UI designed component section#63

Open
iimpulse wants to merge 62 commits into
mainfrom
IS-562-implement-ux-ui-designed-component-section
Open

Is 562 implement ux UI designed component section#63
iimpulse wants to merge 62 commits into
mainfrom
IS-562-implement-ux-ui-designed-component-section

Conversation

@iimpulse

@iimpulse iimpulse commented Jul 9, 2026

Copy link
Copy Markdown
Member

Summary

Builds out the new, generation-driven docs system for apps/demo (IS-562) — a component/service page is assembled from front-matter + JSDoc rather than hand-maintained markup, so the Properties/Methods tables and
code snippets can never drift from source. This branch takes it from a single pilot page (progress-widget) to full coverage of the Components section, a brand-new Services section, and a Getting Started
section, along with the tooling that generates each of their data-backed tabs.

What's in this PR

Components section — migrated all 6 remaining components

widget-error, auth, navbar, facet-search, asynctask, and progress-widget (pilot) each get per-property JSDoc, a .docs.ts front-matter, a showcase page with snippet-marked live demos, and left-nav/route
registration. Notable calls: facet-search uses static mock data instead of a dead legacy backend call; asynctask's demo shows the component's real empty/error state when no backend is reachable; fixed a jsdom
window.matchMedia gap needed by PrimeNG's Menubar.

Services section — new

Didn't exist before (just two dead links). Added a ServiceDoc model, a generated Methods tab (parallel to Properties), and one generic ServiceOverviewComponent reused by all 5 services (ontology, isa-data,
asynctask, snp-grid, mvar) — adding a service is now just front-matter + registration, no new component. Usage examples are static code blocks by design, after live-testing surfaced a real stale-config bug in
JaxOntologyService (left untouched; the page degrades gracefully).

Getting Started section — new

Overview page adapted from the README, its own minimal shell component, dead "Installation" link removed in favor of inline npm-install content.

Shared infra & docs

DocBase extracted so Components/Services share tab-content components; docs/contributing-a-component.md and docs/contributing-a-service.md kept accurate.

iimpulse and others added 30 commits June 29, 2026 18:05
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…esigned-component-section

docs: add component page system design spec (IS-585)
Correct the tab structure (Overview/Properties/Theming; Variations,
Usage, and Component Activity become Overview sections), switch content
to source-of-truth generation (Compodoc properties, ?raw snippets,
markdown prose), hand-authored theming CSS variables, drop the Activity
tab and ngx-highlightjs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…562-implement-ux-ui-designed-component-section
Rework the progress-widget pilot to the approved design:
- Tabs are Overview, Properties, Theming (was Overview/Variations/Usage/API)
- Overview is a single scrolling page: header, variation sections, usage
  do/don't panels, and Component Activity
- Properties tab replaces API; Theming tab lists overridable CSS variables
- Left nav grouped by category (Navigation/Input/Messaging/Data Display/
  Utilities) with a Help & Documentation link
- Right TOC lists Summary + variations + Usage + Component Activity, with a
  Download Vignette button
- Remove ngx-highlightjs; code blocks are plain styled <pre> with copy

ComponentDoc reworked: category, description, theming, activity; api renamed
to properties; group/overview removed. Content generation (Compodoc
properties, ?raw snippets, markdown prose) deferred to a later stage.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Docs code blocks now use plain styled <pre>; the syntax-highlight libs are
no longer referenced.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a Compodoc pipeline that extracts each component's inputs/outputs and
JSDoc into a generated TS map (COMPONENT_PROPERTIES), consumed by the
Properties tab. Removes the hand-authored properties for progress-widget so
the table is sourced from the component's real signal inputs + JSDoc and
cannot drift.

- tools/generate-docs-properties.mjs + `pnpm docs:properties`
- per-property JSDoc on ProgressWidgetComponent inputs
- ComponentDoc gains compodocSymbol; properties is now an optional fallback

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The esbuild builder doesn't support `?raw` imports, so instead of copying
example source we extract each snippet from the same demo template that
renders it, via `snippet:<id>` marker comments. The code block is now the
exact markup running in the live demo and cannot drift.

- tools/generate-docs-snippets.mjs + `pnpm docs:snippets` (+ docs:generate)
- doc-variations prefers COMPONENT_SNIPPETS[slug][id]
- VariationDoc.code is now an optional fallback; removed hand-authored code

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Compodoc-generated Properties and marker-extracted snippets replace the
?raw approach (unsupported by the esbuild builder). Markdown dropped —
Overview/Usage are structured to match the design. Update content-generation
table, file layout, dependencies, conventions, and reference status.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Top navbar gets a Components entry routing to /components, which redirects
to the progress-widget docs page.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Step-by-step guide covering per-input JSDoc, front-matter, showcase demo
templates with snippet markers, registry + routes, pnpm docs:generate, and
verification, with progress-widget as the reference.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the hand-rolled nav/anchor tab strip with PrimeNG's Tabs
(p-tabs/p-tablist/p-tab). The active tab is derived from the route and tab
changes navigate to /components/:slug/:tab.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Override PrimeNG Tabs to the design spec (node 2663:601): 20px/28px labels,
active tab bold #0177b2 with a 2px blue active bar, inactive #636363,
tablist bottom border #d9d9d9, and 16px/24px container padding.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Wrap the tabs so the reset reaches the p-tabs host (kills the themed
background box), and recolor PrimeNG's own active bar (bottom baseline)
instead of a per-tab border, which was rendering at the top. Verified
against the Figma tablist.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Its purpose was undefined; dropping it until a real action is specified.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The height chain lacked min-height:0, so the whole page scrolled and the
left nav + right TOC scrolled out of view. Add min-h-0/overflow so only the
content pane scrolls; navbar, tabs, left nav, and the "On this page" TOC now
stay in view (and TOC scroll-spy highlights the active section).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
iimpulse added 25 commits July 7, 2026 09:35
Scopes the first services-docs pass to the ontology service, chosen
because both its implementations (Jax, OLS) hit real live public
backends with no auth/mocking needed.
Verified Compodoc's actual JSON shape for libs/api-clients (doc.classes
vs doc.injectables, methods key) empirically before writing the
generator task, rather than assuming.
…ces too

Widening DocsContextService to DocBase surfaced three call sites reading
Components-specific fields (DocPropertiesComponent, DocThemingComponent,
docs-shell's binding to DocsRightTocComponent) — narrowed each with an
explicit cast back to ComponentDoc, since they're only ever rendered on
a Components route.
ServiceDoc declares its shared fields locally (mirroring DocBase's
shape) rather than importing @jax-data-science/component-docs, since
libs/components already depends on libs/api-clients and an import in
the other direction would create a circular project dependency.
Structural typing keeps ServiceDoc assignable wherever DocBase is
expected.
JaxOntologyService.search() builds its request URL synchronously via
ontologyBaseResolver(), which throws before the observable is even
subscribed if the async config fetch hasn't completed (or, as found
during live verification, if config_location 404s — a pre-existing,
separate issue in the library left untouched per explicit direction).
Wrapping in defer() + catchError turns that into a real, visible error
state in the UI instead of an uncaught exception during component
construction — same "real behavior, not a mock" principle already
used for AsyncTask's empty/error state.
Usage examples are now static code blocks only, no live HTTP calls.
Services left-nav section lists services flat, without category
headers, for now.
Content adapted from the repo README's Overview/Community sections.
Adds a minimal GettingStartedShellComponent (left-nav + router-outlet
only, no tab bar) since the left nav previously only rendered inside
DocsShellComponent/ServicesShellComponent. Installation/About
Echo/Citation links remain unbuilt for now — only Overview was
requested.
Every service showcase now has the same shape (header + static usage
examples + usage + activity, no live calls), so one component
parameterized by whatever ServiceDoc is in context replaces the
per-service showcase file. Removes showcase-ontology.component.*;
adding a new service no longer requires a new showcase component.
Installation instructions now live in the Getting Started Overview
page (npm package table) instead of a separate dead-linked page.
Also fixes generate-docs-methods.mjs: it was including private methods
(e.g. ISADataService.buildUrl) in the Methods table since it read every
entry in Compodoc's methods array with no visibility filter. Now
excludes TypeScript's PrivateKeyword/ProtectedKeyword modifiers.
@iimpulse iimpulse temporarily deployed to jax-cluster-dev-10--dev July 9, 2026 16:11 — with GitHub Actions Inactive
@iimpulse iimpulse temporarily deployed to jax-cluster-dev-10--dev July 9, 2026 16:17 — with GitHub Actions Inactive
Adds "Creating a Component" and "Creating a Service" pages that render
the real docs/contributing-*.md files via marked, so the content can
never drift out of sync with the actual guides. Removes the dead
Citation/License link.

marked and @tailwindcss/typography both had to land as root
dependencies rather than demo-app-only: pnpm's per-package isolation
means a dependency declared only in apps/demo/package.json isn't
resolvable from the shared root tailwind.config.js, nor from Angular's
dev-server virtual vite-root (which resolves relative to the repo
root's real node_modules, not apps/demo's). Also required an explicit
esbuild loader entry (".md": "text") in apps/demo/project.json, since
Angular's production builder — unlike its Vite-based dev server —
doesn't auto-handle arbitrary `?raw` file extensions.
@iimpulse iimpulse deployed to jax-cluster-dev-10--dev July 9, 2026 20:19 — with GitHub Actions Active
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.

1 participant