MaleusMaleus

Compose complex business interfaces

Picture your application using the frontend kit's reusable maps, grids, documents, schedules, and other components.

In the appApplication · FrontendUpdated September 19, 2026
On this page

The frontend kit provides pre-wired business components on top of the design system primitives. They use Angular, zoneless change detection, OnPush, and signals. Each application receives a copy of the kit in its repository: it can use the components as-is, compose them through slots, or declare a visible fork when the need genuinely diverges.

A complete application composes its shell, search, filters, cards, and actions from the same conventions.

Interactive map

map is built on MapLibre GL. It displays points, custom markers, links between points, popups, selection, and a hideable legend. The viewport can fit the data.

The mapReady event provides access to MapLibre so you can add GeoJSON sources, areas, heatmaps, terrain, or specialized layers. The kit supplies the interaction framework while the application supplies data, geocoding, and business rules.

Use it for a fleet, field work, sites, assets, or a network. A production-ready tile provider is still required for significant traffic.

The map combines navigation, markers, and business information in a single view. The displayed data is fictitious.

Excel-like data-entry grid

data-sheet targets tasks where keyboard speed matters: row-by-row entry, pasting from Excel, typed cells, inline validation, and calculated or read-only columns.

The component emits changes but does not directly mutate business objects. The page therefore retains control over the draft, overall validation, and submission to the API.

This boundary makes the component useful for a budget, allocation, pricing catalog, or corrected import without claiming to replace Excel.

The grid speeds up structured entry, pasting, and data correction. The displayed data is fictitious.

Rich data table

data-table combines typed columns, sorting, selection, bulk actions, expandable details, pagination, density, and loading, error, or empty-list states. It works with local data or a server-side paginated source.

Slots can display a badge, action, thumbnail, or business detail. Pivots, analytical aggregations, and advanced grouping require an extension or specialized component.

The table brings together browsing, selection, and business actions on structured data. The displayed data is fictitious.

Documents, images, and transfers

document-viewer routes content by type: inline text, JSON, and CSV; images with a lightbox; PDFs with pagination and zoom; and DOCX with browser rendering. PDF and DOCX parsers load only when the viewer needs them.

Document management combines a list, metadata, upload, and viewing, then the application adds its permissions and retention rules.

upload adds the drop zone, transfer queue, progress, cancellation, and retry. It does not replace backend controls, antivirus scanning, or quotas.

Time, scheduling, and assignment

Three components cover different views:

  • event-calendar for events positioned in a calendar;
  • planning-grid for groups, rows, and reordering;
  • timeline for periods placed on a time scale.

They suit resources, teams, field work, milestones, and roadmaps. They do not automatically calculate a critical path or optimal schedule.

The planning components present events, assignments, and periods for the relevant business workflow. The displayed data is fictitious.

Composed interfaces

The kit also includes:

  • list-detail, to coordinate a list and the selected record;
  • chat, for conversations, attachments, and side-by-side views;
  • filter-bar, for search, statuses, and date ranges;
  • stat-card, to compose a dashboard;
  • select, compatible with Angular forms;
  • markdown, with code highlighting and URL filtering;
  • lightbox, for viewing media;
  • segmented, to quickly choose a mode or view.

Customize without losing the foundation

Complex components expose TemplateRef slots or content projection for cells, rows, markers, options, and empty states. A standard adaptation therefore remains declarative.

When an application truly needs to diverge, it copies the relevant entry into kit-forks. The fork becomes explicit, attributable, and testable instead of silently modifying the shared copy.