Loading...
Loading...
Manages zard/ui components and projects — adding, composing, styling, and debugging Angular UI built on TailwindCSS v4. Provides project context, component source, and the real API instead of a remembered one. Applies when working with zard/ui, zard-cli, the zard registry, or any project with a components.json that declares a zard projectType. Also triggers for "zard-cli init", "add a zard component", or "set up zard/ui in an Nx workspace".
npx skill4agent add zard-ui/zardui zardnpm installIMPORTANT: Run every CLI command with the project's own package runner:,npx zard-cli,pnpm dlx zard-cli, oryarn zard-cli— pick the one matchingbunx zard-cliinpackageManager. The examples below usecomponents.json; substitute the right runner.npx zard-cli
components.jsonzard-cli initzard-cli info{
"$schema": "https://zardui.com/schema.json",
"style": "css",
"icons": "lucide",
"rtl": false,
"projectType": "angular",
"appConfigFile": "src/app/app.config.ts",
"packageManager": "npm",
"tailwind": { "css": "src/styles.css", "baseColor": "neutral" },
"baseUrl": "src/app",
"aliases": {
"components": "@/shared/components",
"utils": "@/shared/utils",
"core": "@/shared/core",
"services": "@/shared/services"
}
}components.jsoninitaliases.components@/shared/components@app/...~/...tsconfig.jsontsconfig.base.jsonbaseUrlprojectTypeangularangular-librarynxnx-libraryanalogapp.config.tsappConfigFileprovideZard()tailwind.csstailwind.baseColorneutralstonezincgrayslateiconslucide@ng-icons/*rtlpackageManagerpnpm add date-fnsnpm install date-fnsregistryUrlhttps://zardui.com/rzard-cli addzType="outline"zSize="sm"classbg-primarytext-muted-foregroundbg-blue-500dark:OnPushinput()zimportsChangeDetectionStrategy.OnPushViewEncapsulation.NoneDefaultinput()model()output()@Input()@Output()z-<name>[z-<name>]input[z-input]button[z-button]Zard<Name>Importsapps/web/src/generated/**public/r/*.jsonbg-primarybg-blue-600classmergeClasses()twMerge(clsx(...))space-x-*space-y-*flexgap-*size-*size-4w-4 h-4dark:tailwind.config.jsscroll-fadeshimmercorez-cardz-card-headerz-card-titlez-card-contentz-card-footerz-select-itemz-select-groupZardDialogServicez-dialogopenZardSonnerServiceshowsuccesserrorpromisez-separator<hr>z-skeletonanimate-pulsez-badgez-emptyz-field-groupz-fielddivspace-y-*data-invalidaria-invalidz-field-errortypesetzard-cli add typeset--typeset-size--typeset-leading--typeset-flownot-typesettypeset-scroll!important:where()@ng-icons/<family>provideIconsviewProvidersiconscomponents.jsonlucide// Host classes: computed + mergeClasses. Never assembled in the template.
protected readonly classes = computed(() => mergeClasses(cardVariants(), this.class()));
// Variants, not classes.
<button z-button zType="outline" zSize="sm">Save</button> // correct
<button z-button class="border bg-transparent px-2.5">Save</button> // wrong
// Spacing: gap-*, not space-y-*.
<div class="flex flex-col gap-4"> // correct
<div class="space-y-4"> // wrong
// Field: data-invalid on the field, aria-invalid on the control.
<div z-field [attr.data-invalid]="invalid || null">
<label z-field-label for="email">Email</label>
<input z-input id="email" [attr.aria-invalid]="invalid || null" />
<z-field-error>Enter a valid email.</z-field-error>
</div>
// Loading button: the zLoading input, not a hand-rolled spinner.
<button z-button [zLoading]="saving()" [zDisabled]="saving()">Save</button>| Need | Use |
|---|---|
| Action | |
| Grouped actions | |
| Text input | |
| Choice | |
| Dates | |
| Form structure | |
| Data display | |
| Navigation | |
| Layout | |
| Overlays | |
| Command palette | |
| Feedback | |
| Empty states | |
| Chat / messages | |
| Keyboard hints | |
| Rendered prose | |
zard-cli addcomponents.jsoninitaliasesbaseUrliconspackageManagerprojectTypealiases.components<registryUrl>/registry.jsonlist-componentssearch-componentsget-component-docshttps://zardui.com/docs/components/<name>.mdnpx zard-cli add <name>icons# Initialise a project (full-screen wizard).
npx zard-cli init
npx zard-cli init --type nx --project web # answer the wizard up front
npx zard-cli init --yes # accept the defaults; required without a TTY
# Add components.
npx zard-cli add button card dialog
npx zard-cli add # pick from the list
npx zard-cli add --all
npx zard-cli add button --overwrite # replace local changes — ask first
npx zard-cli add button --path src/app/ui # a directory other than the configured one
# Diagnose.
npx zard-cli add button --debug
npx zard-cli --versionsearchviewdiffinfobuildinitaddZARD_REGISTRY_URLZARD_DOCS_URLmergeClassesinput()ViewEncapsulation.NonemergeClassesscroll-fadeshimmerprovideIcons