@copilotkitnext/angular 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/.turbo/turbo-build.log +39 -0
  2. package/.turbo/turbo-check-types.log +0 -0
  3. package/.turbo/turbo-test.log +71 -0
  4. package/LICENSE +10 -0
  5. package/README-agent-context.md +310 -0
  6. package/dist/LICENSE +10 -0
  7. package/dist/components/chat/copilot-chat-assistant-message-buttons.component.d.ts +75 -0
  8. package/dist/components/chat/copilot-chat-assistant-message-renderer.component.d.ts +31 -0
  9. package/dist/components/chat/copilot-chat-assistant-message-toolbar.component.d.ts +8 -0
  10. package/dist/components/chat/copilot-chat-assistant-message.component.d.ts +131 -0
  11. package/dist/components/chat/copilot-chat-assistant-message.types.d.ts +31 -0
  12. package/dist/components/chat/copilot-chat-audio-recorder.component.d.ts +40 -0
  13. package/dist/components/chat/copilot-chat-buttons.component.d.ts +66 -0
  14. package/dist/components/chat/copilot-chat-input-defaults.d.ts +37 -0
  15. package/dist/components/chat/copilot-chat-input.component.d.ts +133 -0
  16. package/dist/components/chat/copilot-chat-input.types.d.ts +129 -0
  17. package/dist/components/chat/copilot-chat-message-view-cursor.component.d.ts +15 -0
  18. package/dist/components/chat/copilot-chat-message-view.component.d.ts +293 -0
  19. package/dist/components/chat/copilot-chat-message-view.types.d.ts +24 -0
  20. package/dist/components/chat/copilot-chat-textarea.component.d.ts +45 -0
  21. package/dist/components/chat/copilot-chat-tool-calls-view.component.d.ts +35 -0
  22. package/dist/components/chat/copilot-chat-toolbar.component.d.ts +8 -0
  23. package/dist/components/chat/copilot-chat-tools-menu.component.d.ts +20 -0
  24. package/dist/components/chat/copilot-chat-user-message-branch-navigation.component.d.ts +23 -0
  25. package/dist/components/chat/copilot-chat-user-message-buttons.component.d.ts +39 -0
  26. package/dist/components/chat/copilot-chat-user-message-renderer.component.d.ts +9 -0
  27. package/dist/components/chat/copilot-chat-user-message-toolbar.component.d.ts +8 -0
  28. package/dist/components/chat/copilot-chat-user-message.component.d.ts +55 -0
  29. package/dist/components/chat/copilot-chat-user-message.types.d.ts +33 -0
  30. package/dist/components/chat/copilot-chat-view-disclaimer.component.d.ts +15 -0
  31. package/dist/components/chat/copilot-chat-view-feather.component.d.ts +15 -0
  32. package/dist/components/chat/copilot-chat-view-handlers.service.d.ts +11 -0
  33. package/dist/components/chat/copilot-chat-view-input-container.component.d.ts +23 -0
  34. package/dist/components/chat/copilot-chat-view-scroll-to-bottom-button.component.d.ts +17 -0
  35. package/dist/components/chat/copilot-chat-view-scroll-view.component.d.ts +84 -0
  36. package/dist/components/chat/copilot-chat-view.component.d.ts +205 -0
  37. package/dist/components/chat/copilot-chat-view.types.d.ts +42 -0
  38. package/dist/components/chat/copilot-chat.component.d.ts +37 -0
  39. package/dist/components/copilotkit-tool-render.component.d.ts +25 -0
  40. package/dist/core/chat-configuration/chat-configuration.providers.d.ts +54 -0
  41. package/dist/core/chat-configuration/chat-configuration.service.d.ts +75 -0
  42. package/dist/core/chat-configuration/chat-configuration.types.d.ts +27 -0
  43. package/dist/core/copilotkit.providers.d.ts +13 -0
  44. package/dist/core/copilotkit.service.d.ts +119 -0
  45. package/dist/core/copilotkit.types.d.ts +83 -0
  46. package/dist/directives/copilotkit-agent-context.directive.d.ts +68 -0
  47. package/dist/directives/copilotkit-agent.directive.d.ts +106 -0
  48. package/dist/directives/copilotkit-chat-config.directive.d.ts +84 -0
  49. package/dist/directives/copilotkit-config.directive.d.ts +44 -0
  50. package/dist/directives/copilotkit-frontend-tool.directive.d.ts +25 -0
  51. package/dist/directives/copilotkit-human-in-the-loop.directive.d.ts +124 -0
  52. package/dist/directives/stick-to-bottom.directive.d.ts +62 -0
  53. package/dist/fesm2022/copilotkitnext-angular.mjs +9314 -0
  54. package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -0
  55. package/dist/index.d.ts +55 -0
  56. package/dist/lib/directives/tooltip.directive.d.ts +33 -0
  57. package/dist/lib/slots/copilot-slot.component.d.ts +34 -0
  58. package/dist/lib/slots/slot.types.d.ts +55 -0
  59. package/dist/lib/slots/slot.utils.d.ts +108 -0
  60. package/dist/lib/utils.d.ts +6 -0
  61. package/dist/services/resize-observer.service.d.ts +44 -0
  62. package/dist/services/scroll-position.service.d.ts +50 -0
  63. package/dist/styles.css +1963 -0
  64. package/dist/types/frontend-tool.d.ts +37 -0
  65. package/dist/types/human-in-the-loop.d.ts +44 -0
  66. package/dist/utils/agent-context.utils.d.ts +75 -0
  67. package/dist/utils/agent.utils.d.ts +99 -0
  68. package/dist/utils/chat-config.utils.d.ts +166 -0
  69. package/dist/utils/copilotkit.utils.d.ts +16 -0
  70. package/dist/utils/frontend-tool.utils.d.ts +119 -0
  71. package/dist/utils/human-in-the-loop.utils.d.ts +92 -0
  72. package/eslint.config.mjs +20 -0
  73. package/ng-package.json +19 -0
  74. package/package.json +96 -0
  75. package/slots.md +331 -0
  76. package/src/components/chat/__tests__/copilot-chat-assistant-message.component.spec.ts +282 -0
  77. package/src/components/chat/__tests__/copilot-chat-input.component.spec.ts +419 -0
  78. package/src/components/chat/__tests__/copilot-chat-message-view.component.spec.ts +372 -0
  79. package/src/components/chat/__tests__/copilot-chat-user-message.component.spec.ts +249 -0
  80. package/src/components/chat/copilot-chat-assistant-message-buttons.component.ts +292 -0
  81. package/src/components/chat/copilot-chat-assistant-message-renderer.component.ts +472 -0
  82. package/src/components/chat/copilot-chat-assistant-message-toolbar.component.ts +29 -0
  83. package/src/components/chat/copilot-chat-assistant-message.component.ts +463 -0
  84. package/src/components/chat/copilot-chat-assistant-message.types.ts +50 -0
  85. package/src/components/chat/copilot-chat-audio-recorder.component.ts +241 -0
  86. package/src/components/chat/copilot-chat-buttons.component.ts +308 -0
  87. package/src/components/chat/copilot-chat-buttons.component.ts.bak +471 -0
  88. package/src/components/chat/copilot-chat-input-defaults.ts +47 -0
  89. package/src/components/chat/copilot-chat-input.component.ts +512 -0
  90. package/src/components/chat/copilot-chat-input.types.ts +148 -0
  91. package/src/components/chat/copilot-chat-message-view-cursor.component.ts +51 -0
  92. package/src/components/chat/copilot-chat-message-view.component.ts +233 -0
  93. package/src/components/chat/copilot-chat-message-view.types.ts +39 -0
  94. package/src/components/chat/copilot-chat-textarea.component.ts +220 -0
  95. package/src/components/chat/copilot-chat-tool-calls-view.component.ts +261 -0
  96. package/src/components/chat/copilot-chat-toolbar.component.ts +35 -0
  97. package/src/components/chat/copilot-chat-tools-menu.component.ts +185 -0
  98. package/src/components/chat/copilot-chat-user-message-branch-navigation.component.ts +121 -0
  99. package/src/components/chat/copilot-chat-user-message-buttons.component.ts +170 -0
  100. package/src/components/chat/copilot-chat-user-message-renderer.component.ts +37 -0
  101. package/src/components/chat/copilot-chat-user-message-toolbar.component.ts +37 -0
  102. package/src/components/chat/copilot-chat-user-message.component.ts +247 -0
  103. package/src/components/chat/copilot-chat-user-message.types.ts +42 -0
  104. package/src/components/chat/copilot-chat-view-disclaimer.component.ts +51 -0
  105. package/src/components/chat/copilot-chat-view-feather.component.ts +47 -0
  106. package/src/components/chat/copilot-chat-view-handlers.service.ts +14 -0
  107. package/src/components/chat/copilot-chat-view-input-container.component.ts +87 -0
  108. package/src/components/chat/copilot-chat-view-scroll-to-bottom-button.component.ts +79 -0
  109. package/src/components/chat/copilot-chat-view-scroll-view.component.ts +322 -0
  110. package/src/components/chat/copilot-chat-view.component.ts +420 -0
  111. package/src/components/chat/copilot-chat-view.types.ts +52 -0
  112. package/src/components/chat/copilot-chat.component.ts +232 -0
  113. package/src/components/copilotkit-tool-render.component.ts +169 -0
  114. package/src/core/__tests__/copilotkit.service.spec.ts +1051 -0
  115. package/src/core/__tests__/copilotkit.service.wildcard.spec.ts +316 -0
  116. package/src/core/chat-configuration/__tests__/chat-configuration.service.spec.ts +287 -0
  117. package/src/core/chat-configuration/chat-configuration.providers.ts +71 -0
  118. package/src/core/chat-configuration/chat-configuration.service.ts +162 -0
  119. package/src/core/chat-configuration/chat-configuration.types.ts +57 -0
  120. package/src/core/copilotkit.providers.ts +59 -0
  121. package/src/core/copilotkit.service.ts +542 -0
  122. package/src/core/copilotkit.types.ts +132 -0
  123. package/src/directives/__tests__/copilotkit-agent-context.directive.spec.ts +384 -0
  124. package/src/directives/__tests__/copilotkit-agent.directive.spec.ts +253 -0
  125. package/src/directives/__tests__/copilotkit-chat-config.directive.spec.ts +385 -0
  126. package/src/directives/__tests__/copilotkit-config.directive.spec.ts +69 -0
  127. package/src/directives/__tests__/copilotkit-frontend-tool-simple.directive.spec.ts +60 -0
  128. package/src/directives/__tests__/copilotkit-frontend-tool.directive.spec.ts +108 -0
  129. package/src/directives/__tests__/copilotkit-human-in-the-loop.directive.spec.ts +452 -0
  130. package/src/directives/copilotkit-agent-context.directive.ts +138 -0
  131. package/src/directives/copilotkit-agent.directive.ts +225 -0
  132. package/src/directives/copilotkit-chat-config.directive.ts +241 -0
  133. package/src/directives/copilotkit-config.directive.ts +81 -0
  134. package/src/directives/copilotkit-frontend-tool.directive.ts +145 -0
  135. package/src/directives/copilotkit-human-in-the-loop.directive.ts +281 -0
  136. package/src/directives/stick-to-bottom.directive.ts +204 -0
  137. package/src/index.ts +105 -0
  138. package/src/lib/directives/tooltip.directive.ts +292 -0
  139. package/src/lib/slots/__tests__/slot.utils.spec.ts +377 -0
  140. package/src/lib/slots/copilot-slot.component.ts +135 -0
  141. package/src/lib/slots/index.ts +3 -0
  142. package/src/lib/slots/slot.types.ts +64 -0
  143. package/src/lib/slots/slot.utils.ts +289 -0
  144. package/src/lib/utils.ts +10 -0
  145. package/src/public-api.ts +1 -0
  146. package/src/services/resize-observer.service.ts +181 -0
  147. package/src/services/scroll-position.service.ts +169 -0
  148. package/src/styles/globals.css +266 -0
  149. package/src/styles/index.css +3 -0
  150. package/src/test-setup.ts +15 -0
  151. package/src/testing/index.ts +3 -0
  152. package/src/testing/testing.utils.ts +248 -0
  153. package/src/types/frontend-tool.ts +44 -0
  154. package/src/types/human-in-the-loop.ts +52 -0
  155. package/src/utils/__tests__/agent.utils.spec.ts +234 -0
  156. package/src/utils/__tests__/chat-config.utils.spec.ts +306 -0
  157. package/src/utils/__tests__/frontend-tool-inject.spec.ts +350 -0
  158. package/src/utils/__tests__/frontend-tool-integration.spec.ts +199 -0
  159. package/src/utils/__tests__/frontend-tool.utils.spec.ts +272 -0
  160. package/src/utils/__tests__/human-in-the-loop.utils.spec.ts +365 -0
  161. package/src/utils/agent-context.utils.ts +133 -0
  162. package/src/utils/agent.utils.ts +239 -0
  163. package/src/utils/chat-config.utils.ts +221 -0
  164. package/src/utils/copilotkit.utils.ts +20 -0
  165. package/src/utils/frontend-tool.utils.ts +266 -0
  166. package/src/utils/human-in-the-loop.utils.ts +359 -0
  167. package/tsconfig.json +33 -0
  168. package/tsconfig.spec.json +12 -0
  169. package/vitest.config.mts +34 -0
package/package.json ADDED
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "@copilotkitnext/angular",
3
+ "version": "0.0.1",
4
+ "description": "Angular library for CopilotKit",
5
+ "main": "dist/fesm2022/copilotkitnext-angular.mjs",
6
+ "module": "dist/fesm2022/copilotkitnext-angular.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/fesm2022/copilotkitnext-angular.mjs",
12
+ "default": "./dist/fesm2022/copilotkitnext-angular.mjs"
13
+ },
14
+ "./testing": {
15
+ "types": "./dist/testing/index.d.ts",
16
+ "import": "./dist/testing/index.mjs",
17
+ "default": "./dist/testing/index.mjs"
18
+ },
19
+ "./styles.css": "./dist/styles.css"
20
+ },
21
+ "dependencies": {
22
+ "@ag-ui/client": "0.0.36-alpha.1",
23
+ "@ag-ui/core": "0.0.36-alpha.1",
24
+ "highlight.js": "^11.11.1",
25
+ "katex": "^0.16.22",
26
+ "lucide-angular": "^0.540.0",
27
+ "marked": "^16.2.0",
28
+ "rxjs": "^7.8.1",
29
+ "zod": "^3.22.4",
30
+ "@copilotkitnext/core": "0.0.1",
31
+ "@copilotkitnext/shared": "0.0.1"
32
+ },
33
+ "peerDependencies": {
34
+ "@angular/cdk": "^19.0.0",
35
+ "@angular/common": "^19.0.0",
36
+ "@angular/core": "^19.0.0",
37
+ "rxjs": "^7.8.0",
38
+ "tslib": "^2.6.0"
39
+ },
40
+ "devDependencies": {
41
+ "@angular/cdk": "^19.0.0",
42
+ "@angular/common": "^19.0.0",
43
+ "@angular/compiler": "^19.0.0",
44
+ "@angular/compiler-cli": "^19.0.0",
45
+ "@angular/core": "^19.0.0",
46
+ "@angular/platform-browser": "^19.0.0",
47
+ "@angular/platform-browser-dynamic": "^19.0.0",
48
+ "@eslint/js": "^9.30.0",
49
+ "@lucide/build-icons": "^1.1.0",
50
+ "@tailwindcss/cli": "^4.1.11",
51
+ "@tailwindcss/postcss": "^4.1.11",
52
+ "@tailwindcss/typography": "^0.5.16",
53
+ "@types/katex": "^0.16.7",
54
+ "@types/node": "^22.5.1",
55
+ "@vitest/ui": "^2.0.5",
56
+ "autoprefixer": "^10.4.16",
57
+ "clsx": "^2.1.1",
58
+ "concurrently": "^9.1.0",
59
+ "jsdom": "^24.0.0",
60
+ "ng-packagr": "^19.0.0",
61
+ "postcss": "^8.4.31",
62
+ "reflect-metadata": "^0.2.2",
63
+ "rimraf": "^6.0.1",
64
+ "rxjs": "^7.8.1",
65
+ "tailwind-merge": "^2.6.0",
66
+ "tailwindcss": "^4.0.8",
67
+ "tslib": "^2.8.1",
68
+ "tw-animate-css": "^1.3.5",
69
+ "typescript": "~5.8.2",
70
+ "typescript-eslint": "^8.35.0",
71
+ "vitest": "^2.0.5",
72
+ "zone.js": "^0.15.0",
73
+ "@copilotkitnext/eslint-config": "0.0.0",
74
+ "@copilotkitnext/typescript-config": "0.0.0"
75
+ },
76
+ "publishConfig": {
77
+ "access": "public"
78
+ },
79
+ "repository": {
80
+ "type": "git",
81
+ "url": "https://github.com/CopilotKit/CopilotKit.git",
82
+ "directory": "packages/angular"
83
+ },
84
+ "license": "MIT",
85
+ "scripts": {
86
+ "build": "ng-packagr -p ng-package.json && npm run build:css",
87
+ "build:css": "npx @tailwindcss/cli -i ./src/styles/globals.css -o ./dist/styles.css",
88
+ "dev": "concurrently \"ng-packagr -p ng-package.json --watch\" \"npm run dev:css\"",
89
+ "dev:css": "npx @tailwindcss/cli -i ./src/styles/globals.css -o ./dist/styles.css --watch",
90
+ "clean": "rimraf dist",
91
+ "lint": "eslint src --ext .ts",
92
+ "check-types": "tsc --noEmit",
93
+ "test": "vitest run",
94
+ "test:watch": "vitest --watch"
95
+ }
96
+ }
package/slots.md ADDED
@@ -0,0 +1,331 @@
1
+ # Angular CopilotKit Component Slots Documentation
2
+
3
+ This document provides a comprehensive inventory of all customization slots available in the Angular CopilotKit components. Each slot can be customized using templates, components, or CSS classes.
4
+
5
+ ## Table of Contents
6
+ - [Overview](#overview)
7
+ - [Slot Types](#slot-types)
8
+ - [Component Inventory](#component-inventory)
9
+ - [CopilotChatView](#copilotchatview)
10
+ - [CopilotChatMessageView](#copilotchatmessageview)
11
+ - [CopilotChatAssistantMessage](#copilotchatassistantmessage)
12
+ - [CopilotChatUserMessage](#copilotchatusermessage)
13
+ - [CopilotChatInput](#copilotchatinput)
14
+ - [Context Interfaces](#context-interfaces)
15
+ - [Usage Patterns](#usage-patterns)
16
+
17
+ ## Overview
18
+
19
+ Angular CopilotKit components provide extensive customization through a slot system. Each slot accepts:
20
+ - **Templates** (`TemplateRef<any>`) - Using `ng-template` with context variables
21
+ - **Components** (`Type<any>`) - Custom Angular components
22
+ - **CSS Classes** (`string`) - For styling customization
23
+
24
+ ## Slot Types
25
+
26
+ ### 1. Template Slots
27
+ - Defined using `@ContentChild('slotName', { read: TemplateRef })`
28
+ - Used with `<ng-template #slotName>`
29
+ - Receive context variables via `let-varName="contextProperty"`
30
+
31
+ ### 2. Component Slots
32
+ - Defined using `@Input() slotNameComponent?: Type<any>`
33
+ - Accept Angular component classes
34
+ - Must be standalone or properly imported
35
+
36
+ ### 3. CSS Class Slots
37
+ - Defined using `@Input() slotNameClass?: string`
38
+ - Apply custom CSS classes to default components
39
+ - Support Tailwind classes and custom CSS
40
+
41
+ ## Component Inventory
42
+
43
+ ### CopilotChatView
44
+
45
+ The top-level chat interface component with comprehensive customization options.
46
+
47
+ #### Available Slots
48
+
49
+ | Slot Name | Input Property | Template Property | CSS Property | Description |
50
+ |-----------|---------------|-------------------|--------------|-------------|
51
+ | Message View | `messageViewComponent` | `messageViewTemplate` | `messageViewClass` | Container for all messages |
52
+ | Scroll View | `scrollViewComponent` | `scrollViewTemplate` | `scrollViewClass` | Scrollable message container |
53
+ | Scroll Button | `scrollToBottomButtonComponent` | `scrollToBottomButtonTemplate` | `scrollToBottomButtonClass` | Button to scroll to bottom |
54
+ | Input | `inputComponent` | `inputTemplate` | - | Chat input field |
55
+ | Input Container | `inputContainerComponent` | `inputContainerTemplate` | `inputContainerClass` | Container around input |
56
+ | Feather | `featherComponent` | `featherTemplate` | `featherClass` | Gradient feather effect |
57
+ | Disclaimer | `disclaimerComponent` | `disclaimerTemplate` | `disclaimerClass` | Disclaimer message |
58
+
59
+ #### Content Child Templates
60
+
61
+ | Template Name | Selector | Context | Description |
62
+ |--------------|----------|---------|-------------|
63
+ | Custom Layout | `customLayout` | `{ messageView, input, scrollView, ... }` | Complete custom layout |
64
+ | Send Button | `sendButton` | `{ onClick, disabled }` | Custom send button in input |
65
+ | Toolbar | `toolbar` | `{ children }` | Input toolbar customization |
66
+ | Text Area | `textArea` | `{ value, onChange, onKeyDown }` | Custom text input area |
67
+ | Audio Recorder | `audioRecorder` | `{ isRecording, onStart, onStop }` | Audio recording UI |
68
+ | Assistant Markdown | `assistantMessageMarkdownRenderer` | `{ content }` | Markdown rendering for assistant |
69
+ | Thumbs Up Button | `thumbsUpButton` | `{ onClick, message }` | Thumbs up feedback button |
70
+ | Thumbs Down Button | `thumbsDownButton` | `{ onClick, message }` | Thumbs down feedback button |
71
+ | Read Aloud Button | `readAloudButton` | `{ onClick, message }` | Text-to-speech button |
72
+ | Regenerate Button | `regenerateButton` | `{ onClick, message }` | Regenerate response button |
73
+
74
+ #### Event Outputs
75
+
76
+ | Event | Type | Description |
77
+ |-------|------|-------------|
78
+ | `assistantMessageThumbsUp` | `EventEmitter<{ message: Message }>` | Thumbs up clicked |
79
+ | `assistantMessageThumbsDown` | `EventEmitter<{ message: Message }>` | Thumbs down clicked |
80
+ | `assistantMessageReadAloud` | `EventEmitter<{ message: Message }>` | Read aloud clicked |
81
+ | `assistantMessageRegenerate` | `EventEmitter<{ message: Message }>` | Regenerate clicked |
82
+ | `userMessageCopy` | `EventEmitter<{ message: Message }>` | Copy message clicked |
83
+ | `userMessageEdit` | `EventEmitter<{ message: Message }>` | Edit message clicked |
84
+
85
+ ### CopilotChatMessageView
86
+
87
+ Container for displaying a list of chat messages.
88
+
89
+ #### Available Slots
90
+
91
+ | Slot Name | Input Property | Template Property | CSS Property | Description |
92
+ |-----------|---------------|-------------------|--------------|-------------|
93
+ | Assistant Message | `assistantMessageComponent` | `assistantMessageTemplate` | `assistantMessageClass` | Assistant message display |
94
+ | User Message | `userMessageComponent` | `userMessageTemplate` | `userMessageClass` | User message display |
95
+ | Cursor | `cursorComponent` | `cursorTemplate` | `cursorClass` | Typing indicator cursor |
96
+
97
+ #### Content Child Templates
98
+
99
+ | Template Name | Selector | Context | Description |
100
+ |--------------|----------|---------|-------------|
101
+ | Custom Layout | `customLayout` | `{ showCursor, messages, messageElements }` | Custom message layout |
102
+
103
+ ### CopilotChatAssistantMessage
104
+
105
+ Component for displaying assistant/AI messages.
106
+
107
+ #### Available Slots
108
+
109
+ | Slot Name | Input Property | Template Property | CSS Property | Description |
110
+ |-----------|---------------|-------------------|--------------|-------------|
111
+ | Markdown Renderer | `markdownRendererSlot` | `markdownRenderer` (ContentChild) | `markdownRendererClass` | Markdown content renderer |
112
+ | Toolbar | `toolbarSlot` | `toolbar` (ContentChild) | `toolbarClass` | Message toolbar |
113
+ | Copy Button | `copyButtonSlot` | `copyButton` (ContentChild) | `copyButtonClass` | Copy message button |
114
+ | Thumbs Up Button | `thumbsUpButtonSlot` | `thumbsUpButton` (ContentChild) | `thumbsUpButtonClass` | Positive feedback |
115
+ | Thumbs Down Button | `thumbsDownButtonSlot` | `thumbsDownButton` (ContentChild) | `thumbsDownButtonClass` | Negative feedback |
116
+ | Read Aloud Button | `readAloudButtonSlot` | `readAloudButton` (ContentChild) | `readAloudButtonClass` | Text-to-speech |
117
+ | Regenerate Button | `regenerateButtonSlot` | `regenerateButton` (ContentChild) | `regenerateButtonClass` | Regenerate response |
118
+
119
+ #### Additional Inputs
120
+
121
+ | Input | Type | Description |
122
+ |-------|------|-------------|
123
+ | `message` | `AssistantMessage` | The message data |
124
+ | `additionalToolbarItems` | `TemplateRef<any>` | Extra toolbar items |
125
+ | `toolbarVisible` | `boolean` | Show/hide toolbar |
126
+ | `inputClass` | `string` | Additional CSS classes |
127
+
128
+ ### CopilotChatUserMessage
129
+
130
+ Component for displaying user messages.
131
+
132
+ #### Available Slots
133
+
134
+ | Slot Name | Input Property | Template Property | CSS Property | Description |
135
+ |-----------|---------------|-------------------|--------------|-------------|
136
+ | Markdown Renderer | `markdownRendererSlot` | `markdownRenderer` (ContentChild) | `markdownRendererClass` | Message content renderer |
137
+ | Toolbar | `toolbarSlot` | `toolbar` (ContentChild) | `toolbarClass` | Message toolbar |
138
+ | Copy Button | `copyButtonSlot` | `copyButton` (ContentChild) | `copyButtonClass` | Copy message button |
139
+ | Edit Button | `editButtonSlot` | `editButton` (ContentChild) | `editButtonClass` | Edit message button |
140
+
141
+ #### Additional Inputs
142
+
143
+ | Input | Type | Description |
144
+ |-------|------|-------------|
145
+ | `message` | `UserMessage` | The message data |
146
+ | `additionalToolbarItems` | `TemplateRef<any>` | Extra toolbar items |
147
+ | `toolbarVisible` | `boolean` | Show/hide toolbar |
148
+ | `inputClass` | `string` | Additional CSS classes |
149
+
150
+ ### CopilotChatInput
151
+
152
+ The chat input component with rich customization options.
153
+
154
+ #### Available Slots
155
+
156
+ | Slot Name | Input Property | Template Property | CSS Property | Description |
157
+ |-----------|---------------|-------------------|--------------|-------------|
158
+ | Text Area | `textAreaSlot` | `textArea` (ContentChild) | `textAreaClass` | Input text area |
159
+ | Send Button | `sendButtonSlot` | `sendButton` (ContentChild) | `sendButtonClass` | Send message button |
160
+ | Audio Recorder | `audioRecorderSlot` | `audioRecorder` (ContentChild) | `audioRecorderClass` | Voice recording UI |
161
+ | Toolbar | `toolbarSlot` | `toolbar` (ContentChild) | `toolbarClass` | Input toolbar |
162
+
163
+ #### Additional Inputs
164
+
165
+ | Input | Type | Description |
166
+ |-------|------|-------------|
167
+ | `placeholder` | `string` | Input placeholder text |
168
+ | `disabled` | `boolean` | Disable input |
169
+ | `inputClass` | `string` | Additional CSS classes |
170
+
171
+ ## Context Interfaces
172
+
173
+ ### AssistantMessageMarkdownRendererContext
174
+ ```typescript
175
+ interface AssistantMessageMarkdownRendererContext {
176
+ content: string;
177
+ }
178
+ ```
179
+
180
+ ### AssistantMessageToolbarContext
181
+ ```typescript
182
+ interface AssistantMessageToolbarContext {
183
+ children: any;
184
+ }
185
+ ```
186
+
187
+ ### AssistantMessageCopyButtonContext
188
+ ```typescript
189
+ interface AssistantMessageCopyButtonContext {
190
+ onClick: () => void;
191
+ }
192
+ ```
193
+
194
+ ### ThumbsUpButtonContext
195
+ ```typescript
196
+ interface ThumbsUpButtonContext {
197
+ onClick: () => void;
198
+ }
199
+ ```
200
+
201
+ ### ThumbsDownButtonContext
202
+ ```typescript
203
+ interface ThumbsDownButtonContext {
204
+ onClick: () => void;
205
+ }
206
+ ```
207
+
208
+ ### ReadAloudButtonContext
209
+ ```typescript
210
+ interface ReadAloudButtonContext {
211
+ onClick: () => void;
212
+ }
213
+ ```
214
+
215
+ ### RegenerateButtonContext
216
+ ```typescript
217
+ interface RegenerateButtonContext {
218
+ onClick: () => void;
219
+ }
220
+ ```
221
+
222
+ ### InputContext
223
+ ```typescript
224
+ interface InputContext {
225
+ onSend: (message: string) => void;
226
+ placeholder?: string;
227
+ disabled?: boolean;
228
+ }
229
+ ```
230
+
231
+ ### ScrollButtonContext
232
+ ```typescript
233
+ interface ScrollButtonContext {
234
+ onClick: () => void;
235
+ visible: boolean;
236
+ }
237
+ ```
238
+
239
+ ## Usage Patterns
240
+
241
+ ### Template Customization
242
+ ```html
243
+ <copilot-chat-view>
244
+ <ng-template #disclaimer>
245
+ <div class="custom-disclaimer">
246
+ Custom disclaimer content
247
+ </div>
248
+ </ng-template>
249
+
250
+ <ng-template #sendButton let-onClick="onClick" let-disabled="disabled">
251
+ <button (click)="onClick()" [disabled]="disabled">
252
+ Send Message
253
+ </button>
254
+ </ng-template>
255
+ </copilot-chat-view>
256
+ ```
257
+
258
+ ### Component Customization
259
+ ```typescript
260
+ @Component({
261
+ template: `
262
+ <copilot-chat-view
263
+ [disclaimerComponent]="customDisclaimerComponent"
264
+ [inputComponent]="customInputComponent">
265
+ </copilot-chat-view>
266
+ `
267
+ })
268
+ export class MyComponent {
269
+ customDisclaimerComponent = CustomDisclaimerComponent;
270
+ customInputComponent = CustomInputComponent;
271
+ }
272
+ ```
273
+
274
+ ### CSS Customization
275
+ ```html
276
+ <copilot-chat-view
277
+ [disclaimerClass]="'bg-blue-500 text-white p-4 rounded-lg'"
278
+ [inputClass]="'border-2 border-gray-300 focus:border-blue-500'"
279
+ [messageViewClass]="'max-w-4xl mx-auto'">
280
+ </copilot-chat-view>
281
+ ```
282
+
283
+ ### Event Handling
284
+ ```typescript
285
+ @Component({
286
+ template: `
287
+ <copilot-chat-view
288
+ (assistantMessageThumbsUp)="handleThumbsUp($event)"
289
+ (assistantMessageThumbsDown)="handleThumbsDown($event)"
290
+ (userMessageEdit)="handleEdit($event)">
291
+ </copilot-chat-view>
292
+ `
293
+ })
294
+ export class MyComponent {
295
+ handleThumbsUp(event: { message: Message }) {
296
+ console.log('Thumbs up for message:', event.message);
297
+ }
298
+
299
+ handleThumbsDown(event: { message: Message }) {
300
+ console.log('Thumbs down for message:', event.message);
301
+ }
302
+
303
+ handleEdit(event: { message: Message }) {
304
+ console.log('Edit message:', event.message);
305
+ }
306
+ }
307
+ ```
308
+
309
+ ## Best Practices
310
+
311
+ 1. **Use Templates for Dynamic Content**: When you need to pass context variables or handle events, use templates.
312
+
313
+ 2. **Use Components for Complex Logic**: When customization requires significant logic or state management, create a custom component.
314
+
315
+ 3. **Use CSS Classes for Simple Styling**: For basic visual customization, CSS classes are the simplest approach.
316
+
317
+ 4. **Combine Approaches**: You can mix templates, components, and CSS classes for different slots in the same component.
318
+
319
+ 5. **Type Safety**: Define proper TypeScript interfaces for your context objects when creating custom templates.
320
+
321
+ 6. **Performance**: Use `ChangeDetectionStrategy.OnPush` in custom components for better performance.
322
+
323
+ 7. **Accessibility**: Ensure custom components maintain proper ARIA attributes and keyboard navigation.
324
+
325
+ ## Future Enhancements
326
+
327
+ - Additional slot positions for more granular customization
328
+ - Built-in theme presets
329
+ - Animation and transition customization slots
330
+ - Custom loading states and error handling slots
331
+ - Plugin system for extending functionality