This list breaks down the essential UI widgets needed to render Linked Art JSON-LD effectively. These are categorized by complexity, ranging from "Atomic" (small text formatting helpers) to "Macro" (full interactive visualizations).
- Atomic Components (Text & Formatting)
These are the building blocks used to parse specific, deeply nested Linked Art fields into human-readable strings.
LinkedDate
• Purpose: Converting complex TimeSpan objects into readable dates.
• Functionality: Handles begin_of_the_begin, end_of_the_end, and display_label. It should gracefully degrade from specific dates ("May 12, 1890") to ranges ("1890–1900") to uncertainties ("Circa 19th Century").
LinkedDimensions
• Purpose: flattening the Dimension array into a standard physical description string.
• Functionality: Concatenates height, width, and depth values with their units. Example output: "24.5 x 30 cm".
LinkedAttribution
• Purpose: Generating the standard "Artist line."
• Functionality: Traverses the produced_by path to find carried_out_by (the actor). It should combine the Actor's _label with their role (e.g., "Painter") to display: "Vincent van Gogh (Painter)".
MaterialTechniqueList
• Purpose: Displaying the "Medium."
• Functionality: Aggregates made_of (materials) and technique fields. Example output: "Oil on Canvas".
- Entity Cards (Summaries)
These are standard "preview" components used in search results, lists, or "related items" sidebars.
ObjectCard
• Purpose: The standard grid item for a search result.
• Elements: * Thumbnail image (from digitally_shown_by).
• Truncated Title (_label).
• Creation Date (using LinkedDate).
• Artist Name.
• Status Badge (e.g., "On Display").
ActorCard
• Purpose: A summary of a person or group (Artist, Donor, Manufacturer).
• Elements:
• Portrait/Image.
• Name.
• Birth/Death Dates.
• Nationality (from residence).
• Role summary (e.g., "Sculptor", "Collector").
PlaceCard
• Purpose: A summary for a geographical location found in the data.
• Elements:
• Map thumbnail.
• Place Name.
• Relationship (e.g., "Place of Production").
- Visualization Widgets (Interactive)
These components handle the complex graph relationships in a visual way.
ProvenanceTimeline
• Purpose: Visualizing the history of ownership (the provenance activity).
• Functionality: A vertical or horizontal stepper showing the sequence of Acquisition or Transfer of Custody events.
• Interactivity: Clicking a node shows the Buyer, Seller, Price, and Date of that transaction.
ExhibitionHistoryList
• Purpose: Showing where the object has been displayed.
• Functionality: A chronological list of used_specifically_in (Exhibition) events. Should group exhibitions by venue or date.
GeoMapViewer
• Purpose: Placing the object in physical space.
• Functionality: A map (Leaflet/Mapbox) rendering pins for distinct spatial data points: produced_at (creation), current_location (storage), and moved_to (tours).
DeepZoomViewer (IIIF Wrapper)
• Purpose: High-resolution image exploration.
• Functionality: Consumes the digitally_shown_by IIIF manifest. Includes controls for zooming, panning, and toggling between multiple views (recto/verso).
HeirarchyTree
• Purpose: Navigating sets and collections.
• Functionality: Visualizing members_of relationships. Useful for albums, portfolios, or archival boxes to show the "Parent" object and "Sibling" objects.
- Metadata & Context Widgets
Detailed blocks usually placed below the main image on an object page.
ClassificationsBlock
• Purpose: Displaying taxonomies and types.
• Functionality: Renders classified_as fields (e.g., AAT terms) as clickable tags or pills that link to search results for that term.
ReferenceList
• Purpose: Showing bibliography and academic sources.
• Functionality: Lists items in referred_to_by (Citation). Displays the text snippet and the publication source.
IdentifierBlock
• Purpose: Managing various ID numbers.
• Functionality: Lists the Accession Number, ULAN IDs, Wikidata IDs, and internal system IDs found in identified_by.
- Participatory & PHR Specific Widgets
Tools specifically for the "Participatory" aspect of your team's mission, allowing user interaction with the data.
AnnotationOverlay
• Purpose: Allowing users to comment on specific regions of an image.
• Functionality: Draws standard W3C Web Annotations on top of the IIIF canvas.
CrowdCorrector
• Purpose: Letting users suggest edits to data.
• Functionality: A "Suggest an Edit" button next to specific fields (like Date or Author). It opens a modal pre-filled with the current value, allowing the user to submit a proposed change.
StoryBuilder
• Purpose: Creating narratives around objects.
• Functionality: A drag-and-drop container where researchers can pull in ObjectCards and TextBlocks to create a linear "Exhibition" or "Story" page.
Suggested Next Step
Would you like me to generate the React/Javascript code for one of the "Atomic" components (like LinkedDate or LinkedAttribution) to demonstrate how to parse the JSON-LD structure?