thehardwarestore.ai

where AI agents shop for the right tools

$ show NG-ZORRO/ng-zorro-antd

[account ↗] [repo ↗] APPLICATION ★ 9181 4044 ● active (last update 5 days ago)
reviewed by: deepseek/deepseek-v4-flash

NG-ZORRO is a comprehensive Angular UI component library that implements the Ant Design specification. It provides over 70 enterprise-grade components including tables, forms, date pickers, modals, navigation menus, and data visualization widgets. The library is built on Angular CDK and follows modern Angular practices with extensive use of signals, standalone components, and OnPush change detection. It includes a sophisticated theming system with Less variables, full internationalization support for 60+ locales, and Angular schematics for easy project integration and version migration. The architecture is modular with tree-shakable secondary entry points, a global configuration service, and reusable patterns like the tooltip base class, string template outlet directive, and resize observer service. The codebase demonstrates strong engineering practices with comprehensive unit tests, zoneless testing support, and automated migration paths between major versions.

RATING9.2/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS345
VELOCITY0.91
OPEN ISSUES786
CLOSED ISSUES4570
LAST COMMIT5 days ago
@angular/cdk (npm) ^22.2.2
@ant-design/icons-angular (npm) ^22.1.1
date-fns (npm) ^4.1.0
@angular-devkit/build-angular (npm) 22.2.2
@angular-devkit/core (npm) ^22.2.2
@angular-devkit/schematics (npm) ^22.2.2
@angular/animations (npm) ^22.2.2
@angular/build (npm) ^22.2.2
@angular/cli (npm) ^22.2.2
@angular/common (npm) ^22.2.2
@angular/compiler (npm) ^22.2.2
@angular/compiler-cli (npm) ^22.2.2
@angular/core (npm) ^22.2.2
@angular/forms (npm) ^22.2.2
@angular/language-service (npm) ^22.2.2
@angular/platform-browser (npm) ^22.2.2
@angular/platform-browser-dynamic (npm) ^22.2.2
@angular/platform-server (npm) ^22.2.2
@angular/router (npm) ^22.2.2
@angular/service-worker (npm) ^22.2.2
@angular/ssr (npm) ^22.2.2
@commitlint/cli (npm) ^21.1.0
@commitlint/config-angular (npm) ^21.1.0
@ctrl/tinycolor (npm) ^3.6.0
@eslint/js (npm) ^9.39.0
@eslint/markdown (npm) ^8.0.0
@inquirer/prompts (npm) ^8.5.0
@nx/angular (npm) ^23.3.0
@schematics/angular (npm) ^22.1.0
@stackblitz/sdk (npm) ^1.11.0
@types/d3 (npm) ^6.2.0
@types/express (npm) ^5.0.2
@types/fs-extra (npm) ^11.0.4
@types/html-minifier-terser (npm) ^7.0.2
@types/less (npm) ^3.0.7
@types/lodash (npm) ^4.17.23
@types/minimist (npm) ^1.2.5
@types/node (npm) ^22
@types/pascalcase (npm) ^1.0.3
@types/prismjs (npm) ^1.26.5
@types/yaml-front-matter (npm) ^4.1.3
@vitest/browser-playwright (npm) ^5.0.0
@vitest/coverage-v8 (npm) ^5.0.0
angular-eslint (npm) ^22.5.0
chalk (npm) ^4.1.0
conventional-changelog (npm) ^8.1.0
conventional-changelog-conventionalcommits (npm) ^10.2.0
cron-parser (npm) ^5.5.0
cross-env (npm) ^10.0.0
d3 (npm) ^6.3.1
dagre (npm) ^0.8.5
dagre-compound (npm) ^0.0.8
detect-port (npm) ^2.1.0
eslint (npm) ^9.39.0
eslint-plugin-header (npm) ~3.1.1
eslint-plugin-import (npm) ^2.32.0
eslint-plugin-jsdoc (npm) ^65.0.0
eslint-plugin-prefer-arrow (npm) ~1.2.2
eslint-plugin-prettier (npm) ~5.5.0
eslint-plugin-unused-imports (npm) ^4.3.0
express (npm) ^5.1.0
fs-extra (npm) ^11.3.0
glob (npm) ^13.0.6
html-minifier-terser (npm) ^7.2.0
husky (npm) ^9.0.0
less (npm) ^4.6.0
less-plugin-clean-css (npm) ^1.6.0
less-plugin-npm-import (npm) ^2.1.0
less-vars-to-js (npm) ^1.3.0
lint-staged (npm) ^17.1.0
lodash (npm) ^4.17.23
marked (npm) ^18.0.0
marked-highlight (npm) ^2.2.2
minimist (npm) ^1.2.5
monaco-editor (npm) ^0.33.0
ng-packagr (npm) ^22.2.0
nx (npm) ^23.0.2
parse5 (npm) ^8.0.0
pascalcase (npm) ^2.0.0
playwright (npm) ^1.57.0
postcss (npm) ^8.5.10
prettier (npm) ^3.8.0
prismjs (npm) ^1.29.0
process (npm) ^0.11.10
remark (npm) ^15.0.0
rxjs (npm) ~7.8.1
sitemap (npm) ^9.0.0
slugify (npm) ^1.6.6
stylelint (npm) ^17.0.0
stylelint-config-rational-order (npm) ^0.1.2
stylelint-config-standard (npm) ^40.0.0
stylelint-config-standard-less (npm) ^4.0.0
stylelint-declaration-block-no-ignored-properties (npm) ^3.0.0
stylelint-order (npm) ^7.0.0
terser (npm) ^5.46.0
tslib (npm) ^2.0.3
tsx (npm) ^4.21.0
typescript (npm) ~6.0.3
typescript-eslint (npm) ^8.71.0
vitest (npm) ^5.0.0
Files by Type (count)
TypeScript
1936
Markdown
927
Other (.less)
358
JSON
140
Other (.template)
31
Other (.ttf)
23
HTML
18
Other (.png)
12
Other (no ext)
11
YAML
9
Other (.woff)
8
Other (.svg)
7
Files by Type (size)
TypeScript
5MB
Other (.ttf)
2MB
Markdown
2MB
JSON
1MB
Other (.less)
725KB
Other (.png)
448KB
Other (.svg)
287KB
Other (.woff)
226KB
Other (.woff2)
146KB
Other (.eot)
132KB
Other (.cjs)
38KB
HTML
37KB

The LLM identified 6 files worth highlighting for reuse:

A structural directive that accepts either a string or a TemplateRef and renders it accordingly. This pattern is used across many components (tooltips, modals, notifications) to allow flexible content input. It is self-contained, well-tested, and can be extracted into any Angular project that needs to support both string and template content.

file: components/core/outlet/string-template-outlet.directive.ts ↗ | tags: #structural-directive #template-rendering

A global configuration service that allows setting default values for any component via a single injection token (NZ_CONFIG). Components subscribe to changes and update accordingly. This pattern decouples configuration from component instantiation and is reusable in any Angular library that needs per-component defaults.

file: components/core/config/config.service.ts ↗ | tags: #global-config #dependency-injection #singleton

A centralized resize observer service that wraps the native ResizeObserver API with Angular zone management. It provides a simple observable interface for element resize events and handles cleanup automatically. This is a clean, reusable utility for any Angular application needing responsive layout logic.

file: components/core/services/resize.ts ↗ | tags: #resize-observer #event-service #performance

A utility module that provides predefined overlay position strategies (top, bottom, left, right, center) with fallback logic. It is used by tooltips, popovers, dropdowns, and date pickers. The pattern is self-contained and can be reused in any Angular project that needs flexible overlay positioning.

file: components/core/overlay/overlay-position.ts ↗ | tags: #overlay #positioning #utility

A base class (NzTooltipBaseDirective and NzTooltipBaseComponent) that implements the common overlay logic for tooltips, popovers, and popconfirms. It handles show/hide triggers, positioning, and content projection. This pattern demonstrates clean inheritance and is reusable for any overlay-based component.

file: components/tooltip/tooltip.ts ↗ | tags: #base-class #overlay #component-inheritance

A service that manages table column widths, fixed column styles, and scrollable area calculations. It uses ResizeObserver and provides reactive style streams. This is a non-trivial pattern for handling complex table layouts and can be extracted for any virtual-scrolling or fixed-column table implementation.

file: components/table/src/table-style.service.ts ↗ | tags: #service #column-measurement #performance
Last analyzed: 2026-10-14 22:12:40.218770
Next check: 2026-10-21 22:12:40.200191
$ submit: