@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.
Files changed (123) hide show
  1. package/README.md +123 -0
  2. package/dist/index.js +1868 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/index.min.js +1868 -0
  5. package/es/constants/dom.d.ts +41 -0
  6. package/es/constants/dom.d.ts.map +1 -0
  7. package/es/constants/dom.js +30 -0
  8. package/es/constants/dom.js.map +1 -0
  9. package/es/core/chat-manager.d.ts +34 -0
  10. package/es/core/chat-manager.d.ts.map +1 -0
  11. package/es/core/chat-manager.js +93 -0
  12. package/es/core/chat-manager.js.map +1 -0
  13. package/es/core/event-emitter.d.ts +48 -0
  14. package/es/core/event-emitter.d.ts.map +1 -0
  15. package/es/core/event-emitter.js +75 -0
  16. package/es/core/event-emitter.js.map +1 -0
  17. package/es/core/mention-engine.d.ts +41 -0
  18. package/es/core/mention-engine.d.ts.map +1 -0
  19. package/es/core/mention-engine.js +117 -0
  20. package/es/core/mention-engine.js.map +1 -0
  21. package/es/index.d.ts +28 -0
  22. package/es/index.d.ts.map +1 -0
  23. package/es/index.js +140 -0
  24. package/es/index.js.map +1 -0
  25. package/es/renderer/dom-renderer.d.ts +79 -0
  26. package/es/renderer/dom-renderer.d.ts.map +1 -0
  27. package/es/renderer/dom-renderer.js +677 -0
  28. package/es/renderer/dom-renderer.js.map +1 -0
  29. package/es/renderer/style-manager.d.ts +58 -0
  30. package/es/renderer/style-manager.d.ts.map +1 -0
  31. package/es/renderer/style-manager.js +641 -0
  32. package/es/renderer/style-manager.js.map +1 -0
  33. package/es/theme/theme-manager.d.ts +33 -0
  34. package/es/theme/theme-manager.d.ts.map +1 -0
  35. package/es/theme/theme-manager.js +70 -0
  36. package/es/theme/theme-manager.js.map +1 -0
  37. package/es/theme/tokens.d.ts +57 -0
  38. package/es/theme/tokens.d.ts.map +1 -0
  39. package/es/theme/tokens.js +108 -0
  40. package/es/theme/tokens.js.map +1 -0
  41. package/es/types/index.d.ts +204 -0
  42. package/es/types/index.d.ts.map +1 -0
  43. package/es/types/index.js +10 -0
  44. package/esm/constants/dom.d.ts +41 -0
  45. package/esm/constants/dom.d.ts.map +1 -0
  46. package/esm/constants/dom.js +30 -0
  47. package/esm/constants/dom.js.map +1 -0
  48. package/esm/core/chat-manager.d.ts +34 -0
  49. package/esm/core/chat-manager.d.ts.map +1 -0
  50. package/esm/core/chat-manager.js +93 -0
  51. package/esm/core/chat-manager.js.map +1 -0
  52. package/esm/core/event-emitter.d.ts +48 -0
  53. package/esm/core/event-emitter.d.ts.map +1 -0
  54. package/esm/core/event-emitter.js +75 -0
  55. package/esm/core/event-emitter.js.map +1 -0
  56. package/esm/core/mention-engine.d.ts +41 -0
  57. package/esm/core/mention-engine.d.ts.map +1 -0
  58. package/esm/core/mention-engine.js +117 -0
  59. package/esm/core/mention-engine.js.map +1 -0
  60. package/esm/index.d.ts +28 -0
  61. package/esm/index.d.ts.map +1 -0
  62. package/esm/index.js +140 -0
  63. package/esm/index.js.map +1 -0
  64. package/esm/renderer/dom-renderer.d.ts +79 -0
  65. package/esm/renderer/dom-renderer.d.ts.map +1 -0
  66. package/esm/renderer/dom-renderer.js +677 -0
  67. package/esm/renderer/dom-renderer.js.map +1 -0
  68. package/esm/renderer/style-manager.d.ts +58 -0
  69. package/esm/renderer/style-manager.d.ts.map +1 -0
  70. package/esm/renderer/style-manager.js +641 -0
  71. package/esm/renderer/style-manager.js.map +1 -0
  72. package/esm/theme/theme-manager.d.ts +33 -0
  73. package/esm/theme/theme-manager.d.ts.map +1 -0
  74. package/esm/theme/theme-manager.js +70 -0
  75. package/esm/theme/theme-manager.js.map +1 -0
  76. package/esm/theme/tokens.d.ts +57 -0
  77. package/esm/theme/tokens.d.ts.map +1 -0
  78. package/esm/theme/tokens.js +108 -0
  79. package/esm/theme/tokens.js.map +1 -0
  80. package/esm/types/index.d.ts +204 -0
  81. package/esm/types/index.d.ts.map +1 -0
  82. package/esm/types/index.js +10 -0
  83. package/lib/constants/dom.cjs +36 -0
  84. package/lib/constants/dom.cjs.map +1 -0
  85. package/lib/constants/dom.d.ts +41 -0
  86. package/lib/constants/dom.d.ts.map +1 -0
  87. package/lib/core/chat-manager.cjs +94 -0
  88. package/lib/core/chat-manager.cjs.map +1 -0
  89. package/lib/core/chat-manager.d.ts +34 -0
  90. package/lib/core/chat-manager.d.ts.map +1 -0
  91. package/lib/core/event-emitter.cjs +76 -0
  92. package/lib/core/event-emitter.cjs.map +1 -0
  93. package/lib/core/event-emitter.d.ts +48 -0
  94. package/lib/core/event-emitter.d.ts.map +1 -0
  95. package/lib/core/mention-engine.cjs +118 -0
  96. package/lib/core/mention-engine.cjs.map +1 -0
  97. package/lib/core/mention-engine.d.ts +41 -0
  98. package/lib/core/mention-engine.d.ts.map +1 -0
  99. package/lib/index.cjs +160 -0
  100. package/lib/index.cjs.map +1 -0
  101. package/lib/index.d.ts +28 -0
  102. package/lib/index.d.ts.map +1 -0
  103. package/lib/package.json +3 -0
  104. package/lib/renderer/dom-renderer.cjs +678 -0
  105. package/lib/renderer/dom-renderer.cjs.map +1 -0
  106. package/lib/renderer/dom-renderer.d.ts +79 -0
  107. package/lib/renderer/dom-renderer.d.ts.map +1 -0
  108. package/lib/renderer/style-manager.cjs +646 -0
  109. package/lib/renderer/style-manager.cjs.map +1 -0
  110. package/lib/renderer/style-manager.d.ts +58 -0
  111. package/lib/renderer/style-manager.d.ts.map +1 -0
  112. package/lib/theme/theme-manager.cjs +71 -0
  113. package/lib/theme/theme-manager.cjs.map +1 -0
  114. package/lib/theme/theme-manager.d.ts +33 -0
  115. package/lib/theme/theme-manager.d.ts.map +1 -0
  116. package/lib/theme/tokens.cjs +110 -0
  117. package/lib/theme/tokens.cjs.map +1 -0
  118. package/lib/theme/tokens.d.ts +57 -0
  119. package/lib/theme/tokens.d.ts.map +1 -0
  120. package/lib/types/index.cjs +11 -0
  121. package/lib/types/index.d.ts +204 -0
  122. package/lib/types/index.d.ts.map +1 -0
  123. 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