@composy/chat-core 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.
- package/README.md +123 -0
- package/dist/index.js +1868 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +1868 -0
- package/es/constants/dom.d.ts +41 -0
- package/es/constants/dom.d.ts.map +1 -0
- package/es/constants/dom.js +30 -0
- package/es/constants/dom.js.map +1 -0
- package/es/core/chat-manager.d.ts +34 -0
- package/es/core/chat-manager.d.ts.map +1 -0
- package/es/core/chat-manager.js +93 -0
- package/es/core/chat-manager.js.map +1 -0
- package/es/core/event-emitter.d.ts +48 -0
- package/es/core/event-emitter.d.ts.map +1 -0
- package/es/core/event-emitter.js +75 -0
- package/es/core/event-emitter.js.map +1 -0
- package/es/core/mention-engine.d.ts +41 -0
- package/es/core/mention-engine.d.ts.map +1 -0
- package/es/core/mention-engine.js +117 -0
- package/es/core/mention-engine.js.map +1 -0
- package/es/index.d.ts +28 -0
- package/es/index.d.ts.map +1 -0
- package/es/index.js +140 -0
- package/es/index.js.map +1 -0
- package/es/renderer/dom-renderer.d.ts +79 -0
- package/es/renderer/dom-renderer.d.ts.map +1 -0
- package/es/renderer/dom-renderer.js +677 -0
- package/es/renderer/dom-renderer.js.map +1 -0
- package/es/renderer/style-manager.d.ts +58 -0
- package/es/renderer/style-manager.d.ts.map +1 -0
- package/es/renderer/style-manager.js +641 -0
- package/es/renderer/style-manager.js.map +1 -0
- package/es/theme/theme-manager.d.ts +33 -0
- package/es/theme/theme-manager.d.ts.map +1 -0
- package/es/theme/theme-manager.js +70 -0
- package/es/theme/theme-manager.js.map +1 -0
- package/es/theme/tokens.d.ts +57 -0
- package/es/theme/tokens.d.ts.map +1 -0
- package/es/theme/tokens.js +108 -0
- package/es/theme/tokens.js.map +1 -0
- package/es/types/index.d.ts +204 -0
- package/es/types/index.d.ts.map +1 -0
- package/es/types/index.js +10 -0
- package/esm/constants/dom.d.ts +41 -0
- package/esm/constants/dom.d.ts.map +1 -0
- package/esm/constants/dom.js +30 -0
- package/esm/constants/dom.js.map +1 -0
- package/esm/core/chat-manager.d.ts +34 -0
- package/esm/core/chat-manager.d.ts.map +1 -0
- package/esm/core/chat-manager.js +93 -0
- package/esm/core/chat-manager.js.map +1 -0
- package/esm/core/event-emitter.d.ts +48 -0
- package/esm/core/event-emitter.d.ts.map +1 -0
- package/esm/core/event-emitter.js +75 -0
- package/esm/core/event-emitter.js.map +1 -0
- package/esm/core/mention-engine.d.ts +41 -0
- package/esm/core/mention-engine.d.ts.map +1 -0
- package/esm/core/mention-engine.js +117 -0
- package/esm/core/mention-engine.js.map +1 -0
- package/esm/index.d.ts +28 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +140 -0
- package/esm/index.js.map +1 -0
- package/esm/renderer/dom-renderer.d.ts +79 -0
- package/esm/renderer/dom-renderer.d.ts.map +1 -0
- package/esm/renderer/dom-renderer.js +677 -0
- package/esm/renderer/dom-renderer.js.map +1 -0
- package/esm/renderer/style-manager.d.ts +58 -0
- package/esm/renderer/style-manager.d.ts.map +1 -0
- package/esm/renderer/style-manager.js +641 -0
- package/esm/renderer/style-manager.js.map +1 -0
- package/esm/theme/theme-manager.d.ts +33 -0
- package/esm/theme/theme-manager.d.ts.map +1 -0
- package/esm/theme/theme-manager.js +70 -0
- package/esm/theme/theme-manager.js.map +1 -0
- package/esm/theme/tokens.d.ts +57 -0
- package/esm/theme/tokens.d.ts.map +1 -0
- package/esm/theme/tokens.js +108 -0
- package/esm/theme/tokens.js.map +1 -0
- package/esm/types/index.d.ts +204 -0
- package/esm/types/index.d.ts.map +1 -0
- package/esm/types/index.js +10 -0
- package/lib/constants/dom.cjs +36 -0
- package/lib/constants/dom.cjs.map +1 -0
- package/lib/constants/dom.d.ts +41 -0
- package/lib/constants/dom.d.ts.map +1 -0
- package/lib/core/chat-manager.cjs +94 -0
- package/lib/core/chat-manager.cjs.map +1 -0
- package/lib/core/chat-manager.d.ts +34 -0
- package/lib/core/chat-manager.d.ts.map +1 -0
- package/lib/core/event-emitter.cjs +76 -0
- package/lib/core/event-emitter.cjs.map +1 -0
- package/lib/core/event-emitter.d.ts +48 -0
- package/lib/core/event-emitter.d.ts.map +1 -0
- package/lib/core/mention-engine.cjs +118 -0
- package/lib/core/mention-engine.cjs.map +1 -0
- package/lib/core/mention-engine.d.ts +41 -0
- package/lib/core/mention-engine.d.ts.map +1 -0
- package/lib/index.cjs +160 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.d.ts +28 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/package.json +3 -0
- package/lib/renderer/dom-renderer.cjs +678 -0
- package/lib/renderer/dom-renderer.cjs.map +1 -0
- package/lib/renderer/dom-renderer.d.ts +79 -0
- package/lib/renderer/dom-renderer.d.ts.map +1 -0
- package/lib/renderer/style-manager.cjs +646 -0
- package/lib/renderer/style-manager.cjs.map +1 -0
- package/lib/renderer/style-manager.d.ts +58 -0
- package/lib/renderer/style-manager.d.ts.map +1 -0
- package/lib/theme/theme-manager.cjs +71 -0
- package/lib/theme/theme-manager.cjs.map +1 -0
- package/lib/theme/theme-manager.d.ts +33 -0
- package/lib/theme/theme-manager.d.ts.map +1 -0
- package/lib/theme/tokens.cjs +110 -0
- package/lib/theme/tokens.cjs.map +1 -0
- package/lib/theme/tokens.d.ts +57 -0
- package/lib/theme/tokens.d.ts.map +1 -0
- package/lib/types/index.cjs +11 -0
- package/lib/types/index.d.ts +204 -0
- package/lib/types/index.d.ts.map +1 -0
- package/package.json +107 -0
package/README.md
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# @composy/chat-core
|
|
2
|
+
|
|
3
|
+
Framework-agnostic chat runtime for LDesign. It renders message lists, bubbles, input, mentions, toolbar actions, voice input hooks, upload/drop callbacks, message status, streaming text, and light/dark/auto themes without depending on a UI framework.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Text, image, file, system, custom, revoked, and streaming messages.
|
|
8
|
+
- Mention engine with keyboard navigation, name/id filtering, and mention parsing.
|
|
9
|
+
- Toolbar callbacks for image upload, file upload, paste, drop, and browser speech recognition.
|
|
10
|
+
- Input helpers: `enterToSend`, `clearInputOnSend`, `maxInputLength`, `setInputContent`, `clearInput`, and `onInputChange`.
|
|
11
|
+
- Runtime APIs for message CRUD, streaming append/finish, scroll control, loading-more state, and message lookup.
|
|
12
|
+
- All generated classes use the `ldesign-` prefix. The default class prefix is `ldesign-chat`.
|
|
13
|
+
- Component CSS variables use `--ldesign-chat-*` and map to shared `packages/color` `--color-*` variables plus `packages/size` `--size-*` variables.
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm add @composy/chat-core
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Load the global LDesign color and size variable styles before mounting chat UI:
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import '@composy/color-core/styles.css';
|
|
25
|
+
import '@composy/size-core/styles.css';
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import { createChat } from '@composy/chat-core';
|
|
32
|
+
|
|
33
|
+
const chat = createChat({
|
|
34
|
+
container: '#chat',
|
|
35
|
+
currentUserId: 'u1',
|
|
36
|
+
theme: 'auto',
|
|
37
|
+
enableMention: true,
|
|
38
|
+
mentionMembers: [
|
|
39
|
+
{ id: 'u2', name: 'Alice' },
|
|
40
|
+
],
|
|
41
|
+
onSend(content, mentions) {
|
|
42
|
+
console.log(content, mentions);
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
chat.addMessage({
|
|
47
|
+
id: 'm1',
|
|
48
|
+
type: 'text',
|
|
49
|
+
direction: 'incoming',
|
|
50
|
+
sender: { id: 'u2', nickname: 'Alice' },
|
|
51
|
+
content: 'Hello',
|
|
52
|
+
timestamp: Date.now(),
|
|
53
|
+
});
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Public API
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
chat.addMessage(message);
|
|
60
|
+
chat.prependMessages(messages);
|
|
61
|
+
chat.updateMessage(id, updates);
|
|
62
|
+
chat.removeMessage(id);
|
|
63
|
+
chat.setMessages(messages);
|
|
64
|
+
chat.clearMessages();
|
|
65
|
+
chat.getMessages();
|
|
66
|
+
chat.getMessage(id);
|
|
67
|
+
|
|
68
|
+
chat.appendMessageContent(id, chunk);
|
|
69
|
+
chat.finishStreaming(id);
|
|
70
|
+
|
|
71
|
+
chat.scrollToBottom(true);
|
|
72
|
+
chat.isAtBottom();
|
|
73
|
+
chat.setLoadingMore(false);
|
|
74
|
+
|
|
75
|
+
chat.setTheme('dark');
|
|
76
|
+
chat.setMentionMembers(members);
|
|
77
|
+
|
|
78
|
+
chat.focusInput();
|
|
79
|
+
chat.setInputContent('hello');
|
|
80
|
+
chat.getInputContent();
|
|
81
|
+
chat.clearInput();
|
|
82
|
+
|
|
83
|
+
chat.on('message-retry', (message) => {});
|
|
84
|
+
chat.destroy();
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Styling Contract
|
|
88
|
+
|
|
89
|
+
The renderer normalizes `classPrefix`. If no prefix is passed, generated classes start with `ldesign-chat-*`. If a custom prefix does not start with `ldesign-`, it is normalized to `ldesign-${prefix}`.
|
|
90
|
+
|
|
91
|
+
Key classes:
|
|
92
|
+
|
|
93
|
+
- `ldesign-chat-container`
|
|
94
|
+
- `ldesign-chat-message-list`
|
|
95
|
+
- `ldesign-chat-message-row`
|
|
96
|
+
- `ldesign-chat-bubble`
|
|
97
|
+
- `ldesign-chat-input-area`
|
|
98
|
+
- `ldesign-chat-toolbar`
|
|
99
|
+
- `ldesign-chat-mention-panel`
|
|
100
|
+
|
|
101
|
+
The injected stylesheet defines component variables such as:
|
|
102
|
+
|
|
103
|
+
- `--ldesign-chat-bg-primary`
|
|
104
|
+
- `--ldesign-chat-text-primary`
|
|
105
|
+
- `--ldesign-chat-border-primary`
|
|
106
|
+
- `--ldesign-chat-avatar-size`
|
|
107
|
+
- `--ldesign-chat-radius-md`
|
|
108
|
+
- `--ldesign-chat-transition-fast`
|
|
109
|
+
|
|
110
|
+
Defaults are references to `--color-*` and `--size-*` tokens, so consumers can theme chat by loading or overriding the shared token styles.
|
|
111
|
+
|
|
112
|
+
## Build
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
pnpm --dir libraries/chat/packages/core type-check
|
|
116
|
+
pnpm --dir libraries/chat/packages/core build
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The build generates `dist`, `es`, `esm`, and `lib`. `postbuild` verifies required outputs and creates `dist/index.min.js`.
|
|
120
|
+
|
|
121
|
+
## License
|
|
122
|
+
|
|
123
|
+
MIT
|