ngx-prompt-kit
AI chat components for Angular.
Standalone, signal-based components for building AI interfaces. Composes with Spartan UI. Distributed via schematics — the source lives in your project, not in a black-box dependency.
What you write
<pk-prompt-input [(value)]="value" (submitted)="onSubmit()">
<pk-prompt-input-textarea placeholder="Ask ngx-prompt-kit anything..." />
<pk-prompt-input-actions class="mt-2 justify-between">
<div class="flex items-center gap-1">
<pk-prompt-input-action tooltip="Attach files">
<button hlmBtn variant="ghost" size="icon-sm">
<ng-icon hlm size="sm" name="lucidePlus" />
</button>
</pk-prompt-input-action>
<pk-prompt-input-action tooltip="Search the web">
<button hlmBtn variant="outline" size="sm">
<ng-icon hlm size="xs" name="lucideGlobe" />
Search
</button>
</pk-prompt-input-action>
</div>
<pk-prompt-input-action tooltip="Send message">
<button hlmBtn size="icon-sm" (click)="onSubmit()">
<ng-icon hlm size="xs" name="lucideArrowUp" />
</button>
</pk-prompt-input-action>
</pk-prompt-input-actions>
</pk-prompt-input>Built for the Angular way of working.
Schematic distribution
Components are copied into your project via ng generate. You own the source — edit, fork, version it on your terms.
Built on Spartan UI
Composes with Spartan helm primitives (button, tooltip, avatar, textarea). Theme-consistent out of the box.
Signal-based + standalone
Every component uses input(), output(), computed(). No NgModules. Zoneless-friendly. OnPush throughout.
AI-chat-ready primitives
Streaming responses, markdown with code highlighting, file drop zones, expanding reasoning blocks — the AI surface area covered.
Tailwind v4 native
Plain Tailwind utility classes, no proprietary CSS-in-JS. Inherits your existing design tokens.
SSR-safe
Browser APIs (clipboard, ResizeObserver, requestAnimationFrame) guarded behind isPlatformBrowser. Renders on the server without crashing.