Skip to content

FAR UI: tab-per-resource-type redesign#92

Merged
Panthevm merged 2 commits into
masterfrom
6320-Polish-FAR-ui
May 28, 2026
Merged

FAR UI: tab-per-resource-type redesign#92
Panthevm merged 2 commits into
masterfrom
6320-Polish-FAR-ui

Conversation

@Panthevm

Copy link
Copy Markdown
Collaborator

Summary

Two-step redesign of the IG / FHIR-packages screens to match the Resource Browser UX.

  • Package list (/ig) and add-package screen moved to the 990px centred container and the card layout used by the Resource Browser (title, description, tags), replacing the dense table on /ig/<package>.
  • Package detail now renders one tab per resource type actually present in the package (driven by the new backend aidbox.introspector/list-package-resource-types RPC) plus the existing Package Info tab. The legacy single "Canonicals" tab is gone.
  • Each resource-type tab uses get-package-entities (search-canonical underneath) with the same UX as the Resource Browser:
    • Magnifying-glass search input with autofocus on tab switch.
    • Whitespace-tokens AND search against url (backed by the new multi-token url:contains handler in FAR).
    • Keyboard nav (arrows / Tab / Enter) over a virtualized list.
    • Infinite scroll (useInfiniteQuery, 50 per page).
    • Card layout — name || title || id, description || url, tags.
  • Per-resource-type tags with a common status suffix:
    • StructureDefinitiontype, derivation, status
    • SearchParameterbase[], status
    • others → status

Tab order is curated on the backend (StructureDefinition → SearchParameter → ValueSet → CodeSystem → ConceptMap → NamingSystem → TerminologyCapabilities → others alphabetically), so deep-link ?tab=... is stable. FHIRSchema / ImplementationGuide are intentionally excluded.

Initial render no longer flashes the wrong tab — we wait for the resource-types query before mounting <Tabs>.

Companion backend changes: HealthSamurai/box #6320 (list-package-resource-types RPC + multi-token url:contains).

Test plan

  • /u/ig shows the card list with the 990px container.
  • /u/ig/add shows the same container.
  • Navigating into a package: tabs match the types in the package (e.g. for hl7.fhir.us.core#7.0.0StructureDefinition, ValueSet, CodeSystem), no FHIRSchema/ImplementationGuide.
  • Switching tabs autofocuses the search input.
  • Searching with multiple space-separated tokens combines them as AND against the URL.
  • Arrow keys / Tab navigate the list; Enter opens the focused entry.
  • Scrolling near the bottom fetches the next page (50 entries).
  • Deep-link ?tab=ValueSet&q=race restores state.
  • StructureDefinition cards show type, derivation, status tags; SearchParameter cards show one tag per base plus status.

Panthevm added 2 commits May 27, 2026 18:51
- Card list with Fuse.js fuzzy search and match highlighting
- Tag chips (#system/#direct/#transitive + lowercased package type),
  autofocus, keyboard nav, debounced URL sync (q + tags), pin/favorites
- Item view: name + version, description (description/author/title
  fallback), tags
- Fix virtualizer row overlap on filtering via getItemKey
  (FHIR packages + resource types browsers)
Redesign the package detail page to mirror the resource-types list UX:
one tab per resource type present in the package (driven by the new
list-package-resource-types RPC), plus the existing Package Info tab.

Per-tab content uses get-package-entities (search-canonical underneath)
with a virtualized list, infinite scroll, keyboard navigation, search
input with magnifying glass, and the same card layout as the resource
types screen (name/title/id, description/url, per-type + status tags).

The card layout includes per-resource-type tag fields (type/derivation
for StructureDefinition, base for SearchParameter) plus a common status
tag. Tags are clamped to a single line with overflow hidden.

The browser/import-package screens get matching max-width containers
to align with the redesigned detail page.
@Panthevm Panthevm merged commit 64ae000 into master May 28, 2026
4 checks passed
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