High-level web components built on the UMD Elements Library, providing feature-rich, accessible, and brand-compliant UI components for University of Maryland digital experiences.
The UMD Web Components Library is the primary interface for developers building UMD websites and applications. It provides a comprehensive collection of web components that implement UMD design patterns, ensuring consistency, accessibility, and brand compliance across all digital properties. These components are built on top of the Elements Library and styled using the Styles Library, creating a complete design system solution.
# Using npm
npm install @universityofmaryland/web-components-library
# Using yarn
yarn add @universityofmaryland/web-components-library
For complete functionality, install the companion packages:
npm install @universityofmaryland/web-styles-library
npm install @universityofmaryland/web-elements-library
import LoadUmdComponents from '@universityofmaryland/web-components-library';
// Initialize all components
LoadUmdComponents();
import { Components } from '@universityofmaryland/web-components-library';
// Load only what you need
Components.card.standard();
Components.hero.base();
Components.navigation.primary();
<umd-element-hero data-theme="dark" data-display="overlay">
<img slot="image" src="hero.jpg" alt="Hero image" />
<p slot="eyebrow">Welcome</p>
<h1 slot="headline">University of Maryland</h1>
<div slot="text">
<p>Fearless ideas start here.</p>
</div>
<div slot="actions">
<umd-element-call-to-action data-display="primary">
<a href="/apply">Apply Now</a>
</umd-element-call-to-action>
</div>
</umd-element-hero>
All components follow W3C Web Components standards:
<umd-element-card>
)All components use the umd-element-
prefix:
<umd-element-card>
<umd-element-hero>
<umd-element-navigation>
Components use configuration attributes with the data-*
prefix:
data-theme="dark"
data-display="overlay"
The Styles Package provides utility classes for spacing, grids, and typography:
<!-- Consistent spacing -->
<div class="umd-layout-space-vertical-landing">
<umd-element-hero><!-- content --></umd-element-hero>
</div>
<!-- Responsive grids -->
<div class="umd-grid-gap-three">
<umd-element-card><!-- card 1 --></umd-element-card>
<umd-element-card><!-- card 2 --></umd-element-card>
<umd-element-card><!-- card 3 --></umd-element-card>
</div>
Learn more about Styles integration →
Components are built on Elements:
For dynamic content, combine with Feeds:
import { Components } from '@universityofmaryland/web-components-library';
import { Feeds } from '@universityofmaryland/web-feeds-library';
// Initialize components
Components.feed.newsList();
// Component will handle feed display
navigation.primary
- Main site navigationnavigation.drawer
- Mobile navigation drawernavigation.breadcrumb
- Breadcrumb navigationnavigation.utility
- Utility navigation barhero.*
- Hero sections (base, expand, grid, logo, minimal)card.*
- Card layouts (standard, article, event, overlay, icon)carousel.*
- Content carouselsaccordion.item
- Expandable content sectionslayout.modal
- Modal dialogslayout.stickyColumns
- Sticky column layoutslayout.scrollTop
- Scroll to top functionalitytab.display
- Tabbed interfacesslider.*
- Content slidersactions.display
- Call-to-action buttonsmedia.inline
- Inline media playersperson.*
- Person/profile displaysquote.display
- Quote/testimonial blocksstat.display
- Statistics displays<umd-element-hero data-display="overlay">
<img slot="image" src="campus.jpg" alt="Campus view" />
<h1 slot="headline">Discover Your Future</h1>
<p slot="text">Join our community of innovators.</p>
<div slot="actions">
<umd-element-call-to-action data-display="primary">
<a href="/apply">Apply Now</a>
</umd-element-call-to-action>
</div>
</umd-element-hero>
<div class="umd-grid-gap-three">
<umd-element-card data-theme="light">
<a slot="image" href="/programs">
<img src="programs.jpg" alt="Academic programs" />
</a>
<h3 slot="headline">
<a href="/programs">Academic Programs</a>
</h3>
<p slot="text">Explore our 200+ degree programs.</p>
</umd-element-card>
<!-- Additional cards -->
</div>
<umd-element-navigation-header>
<div slot="logo">
<a href="/">University of Maryland</a>
</div>
<nav slot="primary">
<ul>
<li><a href="/about">About</a></li>
<li><a href="/academics">Academics</a></li>
<li><a href="/research">Research</a></li>
</ul>
</nav>
</umd-element-navigation-header>
Full TypeScript support with comprehensive type definitions:
import type {
ComponentRef,
SlotConfiguration,
ComponentEvents,
} from '@universityofmaryland/web-components-library';
// Type-safe component usage
const card = document.querySelector<HTMLElement & ComponentEvents>(
'umd-element-card',
);
if (card) {
card.addEventListener('component:ready', (e) => {
console.log('Card initialized');
});
}
# Run tests
npm test
# Watch mode
npm run test:watch
# Coverage report
npm run test:coverage
See the main repository for contribution guidelines.
University of Maryland