Digital Object Identifier Link
A digital object identifier link is a permanent hyperlink for a Digital Object Identifier (DOI) to an electronic source. DOIs provide persistent, actionable identification for content objects in digital environments and are widely used in academic publishing, scientific journals, and digital libraries.
This headless component uses the native HTML <a> element for inherent link semantics. It constructs a DOI resolver URL (e.g., https://doi.org/10.1234/example) from the provided DOI string.
Example
Show demo markup
<a class="digital-object-identifier-link" href="https://doi.org/10.1234/example">10.1234/example</a>
Usage example
<a class="digital-object-identifier-link" href="https://doi.org/10.1234/example">10.1234/example</a>
Show Svelte source
// In your Svelte component:
import DigitalObjectIdentifierLink from "lily-design-system-svelte-headless/components/DigitalObjectIdentifierLink/DigitalObjectIdentifierLink.svelte";
<DigitalObjectIdentifierLink>DigitalObjectIdentifierLink</DigitalObjectIdentifierLink>
Usage
Basic DOI link:
<DigitalObjectIdentifierLink doi="10.1000/xyz123" />
DOI link with custom display text:
<DigitalObjectIdentifierLink doi="10.1000/xyz123">
View the original paper
</DigitalObjectIdentifierLink>
DOI link opening in a new tab:
<DigitalObjectIdentifierLink doi="10.1000/xyz123" target="_blank">
10.1000/xyz123
</DigitalObjectIdentifierLink>
Props
doi: string (required) -- the Digital Object Identifier (e.g., "10.1000/xyz123")
children: slot (optional) -- link display text; defaults to the DOI string if not provided
...restProps: unknown -- additional attributes spread onto the <a> element
Keyboard Interactions
- Tab: Focus the link
- Enter: Activate the link and navigate to the DOI URL
ARIA
- Implicit
link role from <a> element with href
aria-label can be provided via restProps for additional context (e.g., "DOI link to Research Paper Title")
- External link indication can be added by the consumer
When to Use
- Use to create a permanent hyperlink for a Digital Object Identifier (DOI) to an electronic source.
- Use for linking to academic papers, journal articles, datasets, and other digital objects identified by a DOI.
- Use in bibliographies, reference lists, and citation sections.
- Use in academic, research, or clinical evidence contexts.
When Not to Use
- Do not use for non-DOI links -- use Citation for general references or ActionLink for navigation.
- Do not use for general-purpose hyperlinks -- use ActionLink or a standard
<a> element instead.
- Do not use for non-DOI permanent identifiers -- use a standard link with the appropriate resolver.
Headless
This component provides an <a> element with the DOI resolver URL as the href, with zero visual styling. The consumer is responsible for all CSS including link color, underline, hover states, focus indicators, and any external link icon.
Styles
The consumer provides all CSS styling. The component renders with a .digital-object-identifier-link class for targeting. No default styles are included -- this is a fully headless component.
Testing
- Verify the component renders an
<a> element with class digital-object-identifier-link
- Verify the
href is correctly constructed from the DOI (e.g., https://doi.org/10.1000/xyz123)
- Verify keyboard interactions work correctly
- Verify pass-through attributes are applied
Advice
- Designers: Style DOI links consistently with other citation links. Consider adding an external link icon to indicate the link opens an external resource. Ensure the link text is descriptive enough for context.
- Developers: Pass only the DOI identifier (e.g., "10.1000/xyz123"), not the full URL. The component constructs the full resolver URL automatically. Use
rel="noopener noreferrer" when opening in a new tab.
Implementation Notes
- Renders an
<a> element for hyperlink semantics
- Constructs the
href from the DOI using the https://doi.org/ resolver prefix
rel="noopener noreferrer" for security when opening external links
target can be set via restProps (e.g., target="_blank" for new tab)
- Consumer provides the display text as children, or the DOI is displayed by default
- Spreads
restProps onto the <a> for consumer customization
Domain Knowledge
A Digital Object Identifier (DOI) is a persistent identifier used to uniquely identify objects such as academic papers, datasets, and government reports. The DOI system is managed by the International DOI Foundation (IDF). DOIs are resolved via https://doi.org/ followed by the DOI string. Example: https://doi.org/10.1000/xyz123 resolves to the identified resource.
Related components
citation — a citation acknowledges the relevance of a work of another to the topic of discussion
footnote — a footnote reference and content element
References
- DOI Handbook: https://www.doi.org/hb.html
- MDN HTML a element: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a
Canonical contract
Generated from this component's canonical metadata — the machine-checked source the implementations are held to.
Metadata
- Component: digital-object-identifier-link
- PascalCase: DigitalObjectIdentifierLink
- Description: a permanent hyperlink for a Digital Object Identifier (DOI) to an electronic source
- Status: beta — implemented and unit-tested in all seven frameworks with an axe-clean demo page; not yet exercised in composed flows
- HTML tag: <a>
- CSS class: .digital-object-identifier-link
- Interactive: yes
ARIA
- Implicit
link role from <a> element with href aria-label can be provided via restProps for additional context
Keyboard
- Tab: Focus the link
- Enter: Activate the link and navigate to the DOI URL
Props
doi: string (required) -- the Digital Object Identifier (e.g., "10.1000/xyz123") children: slot (optional) -- link display text; defaults to the DOI string if not provided ...restProps: unknown -- additional attributes spread onto the <a> element