npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@memberjunction/ng-conversations

v5.2.0

Published

MemberJunction: Conversation, Collection, and Artifact management components for any Angular application

Readme

@memberjunction/ng-conversations

A comprehensive Angular component library for building conversation-based interfaces in MemberJunction, including messaging, artifact management, collections, projects, tasks, agent interaction panels, and collaboration features.

Overview

The @memberjunction/ng-conversations package is a large, feature-rich module that powers MemberJunction's conversation UI. It provides 40+ components covering the entire conversation lifecycle: message composition and rendering (with markdown, mentions, code blocks, and artifacts), conversation navigation and history, threaded discussions, artifact collections and libraries, project/task management, agent execution panels, sharing/permission modals, search, notifications, and export.

graph TD
    A[ConversationsModule] --> B[Messaging]
    A --> C[Navigation]
    A --> D[Collections & Library]
    A --> E[Agent & Tasks]
    A --> F[Collaboration]

    B --> B1[MessageItemComponent]
    B --> B2[MessageListComponent]
    B --> B3[MessageInputComponent]
    B --> B4[MentionEditorComponent]
    B --> B5[SuggestedResponsesComponent]
    B --> B6[ConversationMessageRatingComponent]

    C --> C1[ConversationWorkspaceComponent]
    C --> C2[ConversationNavigationComponent]
    C --> C3[ConversationSidebarComponent]
    C --> C4[ConversationListComponent]
    C --> C5[ConversationChatAreaComponent]
    C --> C6[ThreadPanelComponent]

    D --> D1[CollectionTreeComponent]
    D --> D2[CollectionViewComponent]
    D --> D3[LibraryFullViewComponent]
    D --> D4[ArtifactCreateModalComponent]

    E --> E1[AgentProcessPanelComponent]
    E --> E2[ActiveAgentIndicatorComponent]
    E --> E3[TasksFullViewComponent]
    E --> E4[GlobalTasksPanelComponent]

    F --> F1[ShareModalComponent]
    F --> F2[MembersModalComponent]
    F --> F3[ExportModalComponent]
    F --> F4[SearchPanelComponent]

    style A fill:#2d6a9f,stroke:#1a4971,color:#fff
    style B fill:#7c5295,stroke:#563a6b,color:#fff
    style C fill:#2d8659,stroke:#1a5c3a,color:#fff
    style D fill:#b8762f,stroke:#8a5722,color:#fff
    style E fill:#7c5295,stroke:#563a6b,color:#fff
    style F fill:#2d8659,stroke:#1a5c3a,color:#fff

Installation

npm install @memberjunction/ng-conversations

Usage

Import the Module

import { ConversationsModule } from '@memberjunction/ng-conversations';

@NgModule({
  imports: [ConversationsModule]
})
export class YourModule { }

Full Conversation Workspace

The top-level workspace component provides a complete conversation experience with sidebar, chat area, and thread panel:

<mj-conversation-workspace
  [conversationId]="selectedConversationId"
  (conversationChanged)="onConversationChanged($event)">
</mj-conversation-workspace>

Chat Area

The chat area handles message display, input, and agent interactions:

<mj-conversation-chat-area
  [conversationId]="conversationId"
  [conversation]="conversation"
  [threadId]="selectedThreadId"
  [isNewConversation]="isNewConversation"
  (conversationCreated)="onConversationCreated($event)"
  (threadOpened)="onThreadOpened($event)"
  (threadClosed)="onThreadClosed()">
</mj-conversation-chat-area>

Message Components

Message List

<mj-message-list
  [messages]="conversationMessages"
  [isLoading]="isLoadingMessages"
  (messageRated)="onMessageRated($event)">
</mj-message-list>

Message Input with Mentions

<mj-message-input
  [conversationId]="conversationId"
  [allowSend]="!isProcessing"
  (messageSent)="onMessageSent($event)">
</mj-message-input>

Mention Editor

<mj-mention-editor
  [mentionSources]="availableMentionSources"
  (mentionSelected)="onMentionSelected($event)">
</mj-mention-editor>

Collections and Library

<!-- Collection tree for organizing artifacts -->
<mj-collection-tree
  [projectId]="currentProjectId"
  (collectionSelected)="onCollectionSelected($event)">
</mj-collection-tree>

<!-- Full library view -->
<mj-library-full-view
  [projectId]="currentProjectId">
</mj-library-full-view>

Project and Task Management

<!-- Project selector -->
<mj-project-selector
  [currentProjectId]="projectId"
  (projectChanged)="onProjectChanged($event)">
</mj-project-selector>

<!-- Tasks view -->
<mj-tasks-full-view
  [projectId]="currentProjectId">
</mj-tasks-full-view>

Agent Components

<!-- Agent execution panel -->
<mj-agent-process-panel
  [agentRunId]="activeRunId">
</mj-agent-process-panel>

<!-- Active agent indicator -->
<mj-active-agent-indicator
  [isActive]="agentIsRunning">
</mj-active-agent-indicator>

Collaboration

<!-- Share modal -->
<mj-share-modal
  [visible]="showShareModal"
  [resourceId]="resourceId"
  [resourceType]="'conversation'"
  (closed)="onShareClosed()">
</mj-share-modal>

<!-- Export modal -->
<mj-export-modal
  [visible]="showExportModal"
  [conversationId]="conversationId"
  (exported)="onExported($event)">
</mj-export-modal>

Component Reference

Messaging Components

| Component | Selector | Description | |-----------|----------|-------------| | MessageItemComponent | mj-message-item | Single message display with markdown, artifacts, and rating | | MessageListComponent | mj-message-list | Scrollable message list with auto-scroll | | MessageInputComponent | mj-message-input | Message input with attachment support | | MessageInputBoxComponent | mj-message-input-box | Core input box with auto-resize | | SuggestedResponsesComponent | mj-suggested-responses | Quick response buttons | | FormQuestionComponent | mj-form-question | Structured form input within conversations | | AgentResponseFormComponent | mj-agent-response-form | Agent-generated form responses | | ActionableCommandsComponent | mj-actionable-commands | Clickable command suggestions | | MentionDropdownComponent | mj-mention-dropdown | @-mention autocomplete dropdown | | MentionEditorComponent | mj-mention-editor | Rich text input with mention support | | ConversationMessageRatingComponent | mj-conversation-message-rating | Message feedback (thumbs up/down) |

Navigation Components

| Component | Selector | Description | |-----------|----------|-------------| | ConversationWorkspaceComponent | mj-conversation-workspace | Full workspace layout | | ConversationNavigationComponent | mj-conversation-navigation | Top-level navigation | | ConversationSidebarComponent | mj-conversation-sidebar | Left sidebar with conversation list | | ConversationListComponent | mj-conversation-list | Scrollable conversation history | | ConversationChatAreaComponent | mj-conversation-chat-area | Main chat area | | ConversationEmptyStateComponent | mj-conversation-empty-state | Empty state display | | ThreadPanelComponent | mj-thread-panel | Threaded discussion panel |

Collection and Library Components

| Component | Selector | Description | |-----------|----------|-------------| | CollectionTreeComponent | mj-collection-tree | Hierarchical collection browser | | CollectionViewComponent | mj-collection-view | Collection detail view | | CollectionArtifactCardComponent | mj-collection-artifact-card | Artifact card within collections | | LibraryFullViewComponent | mj-library-full-view | Full library interface | | CollectionFormModalComponent | mj-collection-form-modal | Create/edit collection | | ArtifactCreateModalComponent | mj-artifact-create-modal | Create new artifact | | CollectionsFullViewComponent | mj-collections-full-view | All collections browser |

Project and Task Components

| Component | Selector | Description | |-----------|----------|-------------| | ProjectSelectorComponent | mj-project-selector | Project selection dropdown | | ProjectFormModalComponent | mj-project-form-modal | Create/edit project | | TasksFullViewComponent | mj-tasks-full-view | Full tasks management view (standalone) | | TasksDropdownComponent | mj-tasks-dropdown | Task quick-access dropdown | | TaskWidgetComponent | mj-task-widget | Compact task widget | | GlobalTasksPanelComponent | mj-global-tasks-panel | Global tasks panel |

Agent Components

| Component | Selector | Description | |-----------|----------|-------------| | AgentProcessPanelComponent | mj-agent-process-panel | Agent execution panel | | ActiveAgentIndicatorComponent | mj-active-agent-indicator | Active processing indicator | | ActiveTasksPanelComponent | mj-active-tasks-panel | Active tasks panel |

Utility Components

| Component | Selector | Description | |-----------|----------|-------------| | ShareModalComponent | mj-share-modal | Resource sharing modal | | MembersModalComponent | mj-members-modal | Members management | | ExportModalComponent | mj-export-modal | Data export modal | | SearchPanelComponent | mj-search-panel | Search across conversations | | NotificationBadgeComponent | mj-notification-badge | Unread notification count | | ActivityIndicatorComponent | mj-activity-indicator | Active processing indicator | | ToastComponent | mj-toast | Toast notification display | | InputDialogComponent | mj-input-dialog | Generic text input dialog | | ImageViewerComponent | mj-image-viewer | Image attachment viewer |

Directives

| Directive | Selector | Description | |-----------|----------|-------------| | SearchShortcutDirective | [mjSearchShortcut] | Keyboard shortcut for search |

Key Design Patterns

Performance Optimization

Message components use dynamic component creation (ViewContainerRef.createComponent) instead of Angular template binding to minimize render cycles and improve performance with large message lists.

MJ Entity Integration

All data operations use the MemberJunction entity system:

  • Metadata.GetEntityObject() for entity creation
  • RunView for efficient data loading
  • Proper generic typing throughout

Reactive State Management

RxJS BehaviorSubject instances for all state, with derived observables using combineLatest and shareReplay(1) for efficient caching.

Dependencies

MemberJunction Packages

| Package | Description | |---------|-------------| | @memberjunction/core | Core framework | | @memberjunction/core-entities | Entity type definitions | | @memberjunction/global | Global utilities | | @memberjunction/graphql-dataprovider | GraphQL data access | | @memberjunction/ng-artifacts | Artifact viewer components | | @memberjunction/ng-code-editor | Code editor component | | @memberjunction/ng-container-directives | Container directives | | @memberjunction/ng-markdown | Markdown rendering | | @memberjunction/ng-shared-generic | Shared generic components | | @memberjunction/ng-testing | Testing framework components |

Kendo UI Packages

Uses @progress/kendo-angular-dialog, @progress/kendo-angular-buttons, @progress/kendo-angular-inputs, @progress/kendo-angular-layout, @progress/kendo-angular-indicators, @progress/kendo-angular-dropdowns, @progress/kendo-angular-notification, @progress/kendo-angular-upload, @progress/kendo-angular-dateinputs.

Peer Dependencies

  • @angular/common ^21.x
  • @angular/core ^21.x
  • @angular/forms ^21.x
  • @angular/router ^21.x

Build

cd packages/Angular/Generic/conversations
npm run build

License

ISC