Skip to content

Shell Libraries

The yuuvis® MOMENTUM Shell is built on a set of Angular libraries that work together to provide a complete foundation for client applications. Each library has a specific responsibility and builds upon the others to create a layered architecture.

The Shell Libraries are organized into six distinct packages, each serving a specific purpose in the overall architecture:

LibraryPackagePurpose
Client Core@yuuvis/client-coreBackend communication and core services
Client Shell Core@yuuvis/client-shell-coreShell framework foundation
Client Components@yuuvis/client-componentsBackend-independent reusable UI components
Client Framework@yuuvis/client-frameworkDMS UI components and utilities
Client Shell@yuuvis/client-shellShell application components
Material@yuuvis/materialStyling foundation and design system

The following diagram illustrates how the Shell Libraries depend on each other. Libraries at the bottom of the graph are foundational and have no dependencies on other Shell Libraries, while libraries higher up build upon those below them.

The modular architecture with Shell, pluggable Apps and ExtensionThe modular architecture with Shell, pluggable Apps and Extension

The Client Core library serves as the foundation of the entire Shell architecture. It provides essential services for communicating with the yuuvis® MOMENTUM backend and manages core concerns that all other libraries depend upon.

Key Responsibilities

  • Backend Communication: Low-level HTTP services for REST API communication with automatic header management and request batching
  • Document Operations: CRUD operations for DMS objects including create, update, delete, move, and copy
  • Search: Powerful search capabilities with support for aggregations
  • Authentication: Authentication lifecycle management including user initialization, session state tracking, and automatic logout on session expiration
  • User Management: Services for accessing user information, permissions, and preferences
  • System Configuration: Access to system-wide settings and configuration from the backend
  • Event System: Application-wide event bus enabling loose coupling between components
  • Caching: Intelligent caching strategies to optimize performance and reduce network traffic

The Client Shell Core library provides the foundational framework for the shell architecture. It establishes the contracts and mechanisms that enable the modular app and extension system.

Key Responsibilities

  • Plugin System: Infrastructure for registering and managing apps and extensions
  • Extension Registries: Specialized registries for Object Flavors, Create Flavors, Tile Extensions, and App Settings
  • Shell State Management: Core state management for shell-level concerns including app list, shell configuration, busy state, and custom actions
  • Navigation: Routing and navigation infrastructure for the shell
  • Feature Management: Control app and extension availability based on user permissions

The Client Components library provides a collection of reusable UI components that are independent of the yuuvis® MOMENTUM backend. Unlike @yuuvis/client-framework, its components do not fetch data from backend services, making them suitable for any Angular application that uses the yuuvis design system.

In v3, several generic UI components were migrated from @yuuvis/client-framework into this library. The migrated components remain available in @yuuvis/client-framework in v3 but are marked as deprecated there. In v4, the deprecated copies will be removed from @yuuvis/client-framework and the components will be exclusively provided by @yuuvis/client-components.

Key Responsibilities

  • Layout Components: Flexible layout primitives including SplitView (resizable split panes), MasterDetails (responsive master/detail layout), and PopOut (undock content into a separate browser window)
  • List & Selection: Accessible List component with full keyboard navigation, multi-selection, and a composable ListTile template for structured list items
  • Form Controls: Autocomplete (multi/single-select with debounced suggestions) and Datepicker (calendar-based date input), both implementing Angular’s ControlValueAccessor
  • Responsive Toolbar: OverflowMenu moves toolbar items that do not fit the available width into a dropdown menu automatically
  • Widget Grid: WidgetGrid and WidgetGridWorkspaces provide a drag-and-drop dashboard grid with dynamic component loading, workspace management, and persistent configuration
  • Common Utilities: Shared directives for accessibility and interaction patterns such as FileDropZone, DragSelect, ContainerSize, LightDismiss, Longpress, and ClickDouble, plus a ConfirmService and LayoutSettingsService for persisting layout state to localStorage

The Client Framework library provides UI components and services for working with yuuvis® MOMENTUM DMS objects. Its components are backend-dependent — they communicate with the yuuvis® MOMENTUM backend to fetch, display, and edit document management data. Generic, backend-independent UI components — such as SplitView, MasterDetails, List, Autocomplete, OverflowMenu, PopOut, WidgetGrid, and the common directives — have been moved to @yuuvis/client-components in v3 and are deprecated in this library.

Key Responsibilities

  • Object UI: Specialized components for displaying and editing DMS objects, including ObjectDetails, ObjectSummary, ObjectVersions, ObjectForm, ObjectFlavor, and ObjectRelationship
  • DMS Form Elements: Input components for DMS-typed fields including datetime, numeric ranges, organization references, and string fields, plus a MetadataForm with a registry for custom field templates
  • Search: Search components for querying the DMS backend — SimpleSearch, SmartSearch, and TokenSearch
  • Lists & Collections: TileList with an extension system, QueryList for paginated results, Tree, and SequenceList
  • Rendering: RendererService and RendererDirective for type-based property rendering (datetime, decimal, integer, icon, string)
  • Actions: ActionsService and ContextMenuComponent for executing DMS actions including delete and download
  • Utility Services: SnackBarService for user notifications, SessionService for session lifecycle management, and HaloFocusService for shell-level focus management

The Client Shell library is the central component for building yuuvis® MOMENTUM client applications. It combines all other Shell Libraries and provides the ready-to-use application shell that serves as the foundation for custom clients.

Key Responsibilities

  • Application Foundation: The main entry point that integrates all Shell Libraries into a complete application shell
  • Shell Layout: The main application layout including sidebar and content area
  • Sidebar Navigation: Navigation component displaying available apps, notifications, settings, and logout
  • App Header: Header component for individual apps with customizable slots
  • Settings Page: User interface for managing user preferences like language and theme
  • Notifications Page: Page for displaying shell-wide notifications
  • Custom Action Buttons: Extensible action buttons that can be added to the navigation

The Material library provides the styling foundation for yuuvis® MOMENTUM client applications. Built on top of Angular Material, it delivers a comprehensive design system with custom styling, design tokens, and theming capabilities.

Key Responsibilities

  • Component Styling: Custom styling and directives for Angular Material components including buttons, dialogs, form fields, menus, selects, and progress indicators
  • Design Tokens: CSS custom properties system for consistent theming and design consistency
  • Theming: Light and dark mode support with Material Design 3 color palettes and customization options
  • Accessibility: ARIA attributes and WCAG-compliant styling for all components
  • Icons: Material Symbols integration with icon registry service

You need…Import from
Complete Shell with sidebar and navigation@yuuvis/client-shell
Plugin system with custom shell layout@yuuvis/client-shell-core
DMS UI components for custom architecture@yuuvis/client-framework
Backend-independent layout and form components@yuuvis/client-components
Backend communication and core services@yuuvis/client-core
Design system styling and theming@yuuvis/material