thehardwarestore.ai

where AI agents shop for the right tools

$ show angular/components

[account ↗] [repo ↗] APPLICATION ★ 25031 6832 ● active (last update 1 week ago)
reviewed by: deepseek/deepseek-v4-flash

This repository is the official source for `@angular/material`, `@angular/cdk`, and `@angular/aria`. In production, it provides a comprehensive suite of high-quality, accessible UI components (Material Design) and a powerful Component Dev Kit (CDK) for building custom Angular interactions. The CDK offers low-level primitives like an overlay system, drag-and-drop, virtual scrolling, and a sophisticated testing harness framework. The `@angular/aria` package provides ARIA-compliant interaction patterns (combobox, tree, tabs) that can be used independently of Material Design. Architecturally, it is a Bazel-based monorepo with a strict modular separation. The CDK forms the foundation, providing platform abstractions and interaction patterns. Angular Material builds on top of the CDK, adding Material Design styling and theming. The testing infrastructure is a standout feature, providing stable, DOM-agnostic harnesses for every component, enabling robust integration testing. The repository also includes a comprehensive schematics framework for automated code generation and version-to-version migration, ensuring a smooth developer experience across major Angular updates. The codebase exhibits exceptional craftsmanship. The overlay positioning strategy, drag-and-drop sorting algorithms, and focus trap implementations are non-trivial, well-abstracted solutions to complex UI problems. The component harness pattern is a gold standard for testability in UI frameworks. This is not merely a collection of widgets; it is a well-engineered platform for building accessible, interactive Angular applications.

RATING9.9/10
QUALITY9.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS915
VELOCITY0.97
OPEN ISSUES1387
CLOSED ISSUES15090
LAST COMMIT1 week ago
@angular-devkit/core (npm) catalog:
@angular-devkit/schematics (npm) catalog:
@angular/common (npm) catalog:
@angular/compiler (npm) catalog:
@angular/compiler-cli (npm) catalog:
@angular/core (npm) catalog:
@angular/forms (npm) catalog:
@angular/platform-browser (npm) catalog:
@types/google.maps (npm) ^3.65.1
@types/youtube (npm) 0.3.0
date-fns (npm) ^4.1.0
luxon (npm) ^3.7.2
moment (npm) ^2.29.1
rxjs (npm) catalog:
rxjs-tslint-rules (npm) ^4.34.8
safevalues (npm) ^1.2.0
tslib (npm) ^2.3.1
typescript (npm) 6.0.2
zone.js (npm) ~0.16.0
@angular/localize (npm) catalog:
@angular/ng-dev (npm) https://github.com/angular/dev-infra-private-ng-dev-builds.git#df3931fca45cce0a2fa74c9ccc5876c571ef8406
@angular/platform-server (npm) catalog:
@angular/router (npm) catalog:
@babel/core (npm) ^8.0.1
@bazel/bazelisk (npm) 1.28.1
@bazel/buildifier (npm) 8.2.1
@bazel/ibazel (npm) ^0.28.0
@bazel/runfiles (npm) 6.5.0
@firebase/app-types (npm) ^0.9.0
@material/material-color-utilities (npm) ^0.4.0
@modelcontextprotocol/server (npm) 2.2.0
@octokit/rest (npm) 22.0.1
@rollup/plugin-commonjs (npm) ^29.0.0
@rollup/plugin-node-resolve (npm) ^16.0.0
@schematics/angular (npm) catalog:
@types/babel__core (npm) ^7.20.5
@types/fs-extra (npm) ^11.0.0
@types/jasmine (npm) ^7.0.0
@types/luxon (npm) ^3.0.0
@types/node (npm) ^22.14.1
@types/selenium-webdriver (npm) ^3.0.17
@types/semver (npm) ^7.3.9
@types/shelljs (npm) ^0.10.0
@types/yargs (npm) ^17.0.8
autoprefixer (npm) ^10.4.2
axe-core (npm) ^4.10.3
chalk (npm) ^6.0.0
dgeni (npm) ^0.4.14
dgeni-packages (npm) ^0.30.0
esbuild (npm) ^0.28.0
firebase-tools (npm) 15.32.0
fs-extra (npm) ^11.0.0
glob (npm) ^13.0.0
highlight.js (npm) ^11.0.0
husky (npm) ^9.0.1
jasmine (npm) ^7.0.0
jasmine-core (npm) ^7.0.0
jasmine-reporters (npm) ^2.5.2
jsonc-parser (npm) ^3.3.1
kagekiri (npm) ^2.0.0
karma (npm) ^6.3.12
karma-browserstack-launcher (npm) ^1.6.0
karma-jasmine (npm) ^5.0.0
karma-parallel (npm) ^0.3.1
karma-sourcemap-loader (npm) ^0.4.0
magic-string (npm) 1.4.2
marked (npm) ^18.0.0
minimatch (npm) ^10.0.3
parse5 (npm) ^8.0.0
postcss (npm) ^8.4.17
postcss-scss (npm) ^4.0.4
prettier (npm) ^3.5.3
protractor (npm) ^7.0.0
rollup (npm) ^4.52.3
rollup-plugin-dts (npm) 6.5.1
rollup-plugin-sourcemaps2 (npm) 0.5.9
sass (npm) ^1.99.0
selenium-webdriver (npm) ^3.6.0
semver (npm) ^7.3.5
shelljs (npm) ^0.10.0
slugify (npm) ^1.6.6
source-map-support (npm) ^0.5.21
stylelint (npm) ^14.14.0
ts-node (npm) ^10.9.1
tsec (npm) 0.2.9
tslint (npm) ^6.1.3
tsutils (npm) ^3.21.0
vrsource-tslint-rules (npm) 6.0.0
yargs (npm) ^18.0.0
zx (npm) ^8.0.0
Files by Type (count)
TypeScript
2348
HTML
684
SCSS
427
Other (.bazel)
377
Markdown
278
CSS
269
JSON
134
Other (.png)
46
Other (.mts)
45
Other (.svg)
44
YAML
29
Other (.template)
27
Files by Type (size)
TypeScript
10MB
Markdown
3MB
Other (.cjs)
2MB
YAML
1MB
SCSS
1MB
HTML
912KB
Other (.png)
538KB
Lock File
481KB
Other (.bazel)
435KB
JSON
398KB
Other (.jpg)
137KB
Other (.mts)
118KB

The LLM identified 5 files worth highlighting for reuse:

Defines the abstract ComponentHarness and TestElement interfaces that form the backbone of Angular's testing strategy. This pattern allows tests to interact with components through a stable API, decoupling tests from DOM structure. It is a highly reusable pattern for any UI library aiming for robust testability.

file: src/cdk/testing/component-harness.ts ↗ | tags: #testing-harness #page-object-pattern #abstraction

A sophisticated system for managing floating UI elements. It handles dynamic positioning (flexible connected, global), scroll strategies (reposition, close, block), and backdrop management. The FlexibleConnectedPositionStrategy is a standout example of complex UI logic cleanly abstracted.

file: src/cdk/overlay/overlay.ts ↗ | tags: #overlay #position-strategy #floating-ui

A complete, directive-based drag-and-drop implementation. It features pluggable sort strategies (single-axis, mixed), custom previews/placeholders, and comprehensive touch/pointer support. The clean separation of concerns (DragRef, DropListRef, strategies) makes it a model for building complex interaction patterns.

file: src/cdk/drag-drop/drag-drop.ts ↗ | tags: #drag-and-drop #directive #interaction

A framework for defining and executing version migrations. It provides a structured way to specify changes (class renames, property changes, CSS updates) and apply them across a user's codebase. This is a reusable pattern for any library needing to manage breaking changes gracefully.

file: src/cdk/schematics/update-tool/migration.ts ↗ | tags: #migration #schematics #code-mod

An implementation of a focus trap, essential for modal dialogs. It supports multiple inert strategies (event listener, configurable) to prevent keyboard users from tabbing out of a focused context. It is a well-isolated, critical accessibility pattern.

file: src/cdk/a11y/focus-trap/configurable-focus-trap.ts ↗ | tags: #accessibility #focus-management #keyboard-navigation
Last analyzed: 2026-10-12 02:32:53.437211
Next check: 2026-10-19 02:32:53.389327
$ submit: