acecoderz-chat-ui 1.0.0
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 +309 -0
- package/browser/index.ts +15 -0
- package/dist/adapters/react/ChatUI.d.ts +32 -0
- package/dist/adapters/react/ChatUI.d.ts.map +1 -0
- package/dist/adapters/react/ChatUI.js +170 -0
- package/dist/adapters/react/index.d.ts +5 -0
- package/dist/adapters/react/index.d.ts.map +1 -0
- package/dist/adapters/react/index.js +2 -0
- package/dist/adapters/react/useChat.d.ts +14 -0
- package/dist/adapters/react/useChat.d.ts.map +1 -0
- package/dist/adapters/react/useChat.js +64 -0
- package/dist/adapters/solid/createChat.d.ts +13 -0
- package/dist/adapters/solid/createChat.d.ts.map +1 -0
- package/dist/adapters/solid/createChat.js +34 -0
- package/dist/adapters/solid/index.d.ts +3 -0
- package/dist/adapters/solid/index.d.ts.map +1 -0
- package/dist/adapters/solid/index.js +1 -0
- package/dist/adapters/vanilla/index.d.ts +31 -0
- package/dist/adapters/vanilla/index.d.ts.map +1 -0
- package/dist/adapters/vanilla/index.js +346 -0
- package/dist/browser/Archive.zip +0 -0
- package/dist/browser/cdn-example.html +177 -0
- package/dist/browser/chatbot-ui.css +508 -0
- package/dist/browser/chatbot-ui.js +878 -0
- package/dist/browser/chatbot-ui.js.map +7 -0
- package/dist/browser/chatbot-ui.min.js +71 -0
- package/dist/browser/chatbot.html +100 -0
- package/dist/core/src/ChatEngine.d.ts +30 -0
- package/dist/core/src/ChatEngine.d.ts.map +1 -0
- package/dist/core/src/ChatEngine.js +357 -0
- package/dist/core/src/apiLogger.d.ts +47 -0
- package/dist/core/src/apiLogger.d.ts.map +1 -0
- package/dist/core/src/apiLogger.js +199 -0
- package/dist/core/src/index.d.ts +7 -0
- package/dist/core/src/index.d.ts.map +1 -0
- package/dist/core/src/index.js +3 -0
- package/dist/core/src/types.d.ts +62 -0
- package/dist/core/src/types.d.ts.map +1 -0
- package/dist/core/src/types.js +1 -0
- package/dist/core/src/urlWhitelist.d.ts +19 -0
- package/dist/core/src/urlWhitelist.d.ts.map +1 -0
- package/dist/core/src/urlWhitelist.js +66 -0
- package/dist/src/ChatUI.stories.d.ts +37 -0
- package/dist/src/ChatUI.stories.d.ts.map +1 -0
- package/dist/src/ChatUI.stories.js +65 -0
- package/dist/src/ChatUIThemes.stories.d.ts +28 -0
- package/dist/src/ChatUIThemes.stories.d.ts.map +1 -0
- package/dist/src/ChatUIThemes.stories.js +109 -0
- package/dist/src/ThemeProperties.stories.d.ts +92 -0
- package/dist/src/ThemeProperties.stories.d.ts.map +1 -0
- package/dist/src/ThemeProperties.stories.js +195 -0
- package/dist/src/UseChat.stories.d.ts +21 -0
- package/dist/src/UseChat.stories.d.ts.map +1 -0
- package/dist/src/UseChat.stories.js +66 -0
- package/dist/src/VanillaAdapter.stories.d.ts +39 -0
- package/dist/src/VanillaAdapter.stories.d.ts.map +1 -0
- package/dist/src/VanillaAdapter.stories.js +78 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +8 -0
- package/package.json +117 -0
- package/styles/chat.css +508 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useChat } from '../adapters/react/useChat';
|
|
3
|
+
function UseChatDemo({ apiUrl }) {
|
|
4
|
+
const { messages, input, isLoading, sendMessage, setInput, clearMessages } = useChat({
|
|
5
|
+
apiUrl,
|
|
6
|
+
});
|
|
7
|
+
return (_jsxs("div", { style: { padding: '1rem', maxWidth: '600px', margin: '0 auto' }, children: [_jsx("h3", { style: { marginBottom: '1rem' }, children: "useChat Hook Demo" }), _jsxs("div", { style: {
|
|
8
|
+
border: '1px solid #e2e8f0',
|
|
9
|
+
borderRadius: '0.5rem',
|
|
10
|
+
padding: '1rem',
|
|
11
|
+
marginBottom: '1rem',
|
|
12
|
+
minHeight: '300px',
|
|
13
|
+
maxHeight: '400px',
|
|
14
|
+
overflowY: 'auto',
|
|
15
|
+
backgroundColor: '#f8fafc'
|
|
16
|
+
}, children: [messages.length === 0 ? (_jsx("p", { style: { color: '#64748b', textAlign: 'center', marginTop: '2rem' }, children: "No messages yet. Send a message to start!" })) : (messages.map((msg) => (_jsxs("div", { style: {
|
|
17
|
+
marginBottom: '1rem',
|
|
18
|
+
padding: '0.75rem',
|
|
19
|
+
borderRadius: '0.5rem',
|
|
20
|
+
backgroundColor: msg.role === 'user' ? '#3b82f6' : '#f1f5f9',
|
|
21
|
+
color: msg.role === 'user' ? 'white' : '#1e293b',
|
|
22
|
+
textAlign: msg.role === 'user' ? 'right' : 'left',
|
|
23
|
+
}, children: [_jsx("div", { style: { fontWeight: 'bold', marginBottom: '0.25rem' }, children: msg.role === 'user' ? 'You' : 'Assistant' }), _jsx("div", { children: msg.content }), _jsx("div", { style: { fontSize: '0.75rem', opacity: 0.7, marginTop: '0.25rem' }, children: new Date(msg.timestamp).toLocaleTimeString() })] }, msg.id)))), isLoading && (_jsx("div", { style: { padding: '0.75rem', color: '#64748b' }, children: "Thinking..." }))] }), _jsxs("div", { style: { display: 'flex', gap: '0.5rem' }, children: [_jsx("input", { type: "text", value: input, onChange: (e) => setInput(e.target.value), onKeyDown: (e) => {
|
|
24
|
+
if (e.key === 'Enter' && !isLoading && input.trim()) {
|
|
25
|
+
sendMessage(input);
|
|
26
|
+
}
|
|
27
|
+
}, placeholder: "Type a message...", disabled: isLoading, style: {
|
|
28
|
+
flex: 1,
|
|
29
|
+
padding: '0.75rem',
|
|
30
|
+
border: '1px solid #e2e8f0',
|
|
31
|
+
borderRadius: '0.5rem',
|
|
32
|
+
fontSize: '1rem',
|
|
33
|
+
} }), _jsx("button", { onClick: () => sendMessage(input), disabled: isLoading || !input.trim(), style: {
|
|
34
|
+
padding: '0.75rem 1.5rem',
|
|
35
|
+
backgroundColor: '#3b82f6',
|
|
36
|
+
color: 'white',
|
|
37
|
+
border: 'none',
|
|
38
|
+
borderRadius: '0.5rem',
|
|
39
|
+
cursor: isLoading || !input.trim() ? 'not-allowed' : 'pointer',
|
|
40
|
+
opacity: isLoading || !input.trim() ? 0.5 : 1,
|
|
41
|
+
}, children: "Send" }), _jsx("button", { onClick: clearMessages, style: {
|
|
42
|
+
padding: '0.75rem 1rem',
|
|
43
|
+
backgroundColor: '#ef4444',
|
|
44
|
+
color: 'white',
|
|
45
|
+
border: 'none',
|
|
46
|
+
borderRadius: '0.5rem',
|
|
47
|
+
cursor: 'pointer',
|
|
48
|
+
}, children: "Clear" })] })] }));
|
|
49
|
+
}
|
|
50
|
+
const meta = {
|
|
51
|
+
title: 'React/useChat Hook',
|
|
52
|
+
component: UseChatDemo,
|
|
53
|
+
parameters: {
|
|
54
|
+
layout: 'centered',
|
|
55
|
+
},
|
|
56
|
+
tags: ['autodocs'],
|
|
57
|
+
argTypes: {
|
|
58
|
+
apiUrl: { control: 'text' },
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
export default meta;
|
|
62
|
+
export const Default = {
|
|
63
|
+
args: {
|
|
64
|
+
apiUrl: 'http://localhost:3000/api/chat',
|
|
65
|
+
},
|
|
66
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react';
|
|
2
|
+
import type { ChatTheme } from '../core/src/types';
|
|
3
|
+
declare function VanillaAdapterDemo({ apiUrl, theme, enableMarkdown, placeholder, showTimestamp, showAvatar, initialGreeting }: {
|
|
4
|
+
apiUrl: string;
|
|
5
|
+
theme?: ChatTheme;
|
|
6
|
+
enableMarkdown?: boolean;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
showTimestamp?: boolean;
|
|
9
|
+
showAvatar?: boolean;
|
|
10
|
+
initialGreeting?: string;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare const meta: {
|
|
13
|
+
title: string;
|
|
14
|
+
component: typeof VanillaAdapterDemo;
|
|
15
|
+
parameters: {
|
|
16
|
+
layout: string;
|
|
17
|
+
};
|
|
18
|
+
tags: string[];
|
|
19
|
+
argTypes: {
|
|
20
|
+
apiUrl: {
|
|
21
|
+
control: "text";
|
|
22
|
+
};
|
|
23
|
+
enableMarkdown: {
|
|
24
|
+
control: "boolean";
|
|
25
|
+
};
|
|
26
|
+
showTimestamp: {
|
|
27
|
+
control: "boolean";
|
|
28
|
+
};
|
|
29
|
+
showAvatar: {
|
|
30
|
+
control: "boolean";
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export default meta;
|
|
35
|
+
type Story = StoryObj<typeof meta>;
|
|
36
|
+
export declare const Default: Story;
|
|
37
|
+
export declare const CustomTheme: Story;
|
|
38
|
+
export declare const NoMarkdown: Story;
|
|
39
|
+
//# sourceMappingURL=VanillaAdapter.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VanillaAdapter.stories.d.ts","sourceRoot":"","sources":["../../src/VanillaAdapter.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,iBAAS,kBAAkB,CAAC,EAC1B,MAAM,EACN,KAAK,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,UAAU,EACV,eAAe,EAChB,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,2CA8CA;AAED,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;CAaiC,CAAA;AAE3C,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAElC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAUzB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAKxB,CAAA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from 'react';
|
|
3
|
+
import { createChatUI } from '../adapters/vanilla/index';
|
|
4
|
+
function VanillaAdapterDemo({ apiUrl, theme, enableMarkdown, placeholder, showTimestamp, showAvatar, initialGreeting }) {
|
|
5
|
+
const containerRef = useRef(null);
|
|
6
|
+
const instanceRef = useRef(null);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
if (containerRef.current && !instanceRef.current) {
|
|
9
|
+
const instance = createChatUI({
|
|
10
|
+
container: containerRef.current,
|
|
11
|
+
config: {
|
|
12
|
+
apiUrl: apiUrl || 'http://localhost:3000/api/chat',
|
|
13
|
+
},
|
|
14
|
+
theme,
|
|
15
|
+
enableMarkdown: enableMarkdown !== false,
|
|
16
|
+
placeholder: placeholder || 'Type your message...',
|
|
17
|
+
showTimestamp: showTimestamp !== false,
|
|
18
|
+
showAvatar: showAvatar !== false,
|
|
19
|
+
emptyStateMessage: initialGreeting ? undefined : 'Start a conversation...',
|
|
20
|
+
loadingMessage: 'Thinking...',
|
|
21
|
+
});
|
|
22
|
+
instanceRef.current = instance;
|
|
23
|
+
// Add initial greeting if provided
|
|
24
|
+
if (initialGreeting) {
|
|
25
|
+
instance.engine.addMessage({
|
|
26
|
+
id: `greeting-${Date.now()}`,
|
|
27
|
+
content: initialGreeting,
|
|
28
|
+
role: 'assistant',
|
|
29
|
+
timestamp: new Date(),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return () => {
|
|
34
|
+
if (instanceRef.current) {
|
|
35
|
+
instanceRef.current.destroy();
|
|
36
|
+
instanceRef.current = null;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}, []);
|
|
40
|
+
return (_jsx("div", { style: { width: '600px', height: '600px', margin: '0 auto' }, children: _jsx("div", { ref: containerRef, style: { width: '100%', height: '100%' } }) }));
|
|
41
|
+
}
|
|
42
|
+
const meta = {
|
|
43
|
+
title: 'Vanilla JS/createChatUI',
|
|
44
|
+
component: VanillaAdapterDemo,
|
|
45
|
+
parameters: {
|
|
46
|
+
layout: 'centered',
|
|
47
|
+
},
|
|
48
|
+
tags: ['autodocs'],
|
|
49
|
+
argTypes: {
|
|
50
|
+
apiUrl: { control: 'text' },
|
|
51
|
+
enableMarkdown: { control: 'boolean' },
|
|
52
|
+
showTimestamp: { control: 'boolean' },
|
|
53
|
+
showAvatar: { control: 'boolean' },
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
export default meta;
|
|
57
|
+
export const Default = {
|
|
58
|
+
args: {
|
|
59
|
+
apiUrl: 'http://localhost:3000/api/chat',
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
export const CustomTheme = {
|
|
63
|
+
args: {
|
|
64
|
+
apiUrl: 'http://localhost:3000/api/chat',
|
|
65
|
+
theme: {
|
|
66
|
+
primaryColor: '#8b5cf6',
|
|
67
|
+
userMessageColor: '#8b5cf6',
|
|
68
|
+
assistantMessageColor: '#ede9fe',
|
|
69
|
+
borderRadius: '1rem',
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
export const NoMarkdown = {
|
|
74
|
+
args: {
|
|
75
|
+
apiUrl: 'http://localhost:3000/api/chat',
|
|
76
|
+
enableMarkdown: false,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { ChatEngine } from '../core/src/ChatEngine';
|
|
2
|
+
export type { Message, ChatConfig, ChatTheme, ChatEventType, ChatEventListener } from '../core/src/types';
|
|
3
|
+
export { ChatUI, useChat } from '../adapters/react';
|
|
4
|
+
export type { ChatUIProps, UseChatReturn } from '../adapters/react';
|
|
5
|
+
export { createChat } from '../adapters/solid';
|
|
6
|
+
export type { CreateChatReturn } from '../adapters/solid';
|
|
7
|
+
export { createChatUI } from '../adapters/vanilla';
|
|
8
|
+
export type { ChatUIOptions, ChatUIInstance } from '../adapters/vanilla';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG1G,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGpE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Core exports
|
|
2
|
+
export { ChatEngine } from '../core/src/ChatEngine';
|
|
3
|
+
// React adapter
|
|
4
|
+
export { ChatUI, useChat } from '../adapters/react';
|
|
5
|
+
// Solid adapter
|
|
6
|
+
export { createChat } from '../adapters/solid';
|
|
7
|
+
// Vanilla JS adapter
|
|
8
|
+
export { createChatUI } from '../adapters/vanilla';
|
package/package.json
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "acecoderz-chat-ui",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A framework-agnostic, fully customizable chat UI package that works with React, Solid, Vanilla JS, and any other framework",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"chat",
|
|
7
|
+
"ui",
|
|
8
|
+
"react",
|
|
9
|
+
"solid",
|
|
10
|
+
"vanilla",
|
|
11
|
+
"chatbot",
|
|
12
|
+
"conversation",
|
|
13
|
+
"messaging",
|
|
14
|
+
"typescript",
|
|
15
|
+
"framework-agnostic"
|
|
16
|
+
],
|
|
17
|
+
"author": "",
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git@bitbucket.org:sudhir_pratap_/chatbot.git",
|
|
22
|
+
"directory": "packages/chat-ui"
|
|
23
|
+
},
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://bitbucket.org/sudhir_pratap_/chatbot/issues"
|
|
26
|
+
},
|
|
27
|
+
"homepage": "https://bitbucket.org/sudhir_pratap_/chatbot#readme",
|
|
28
|
+
"type": "module",
|
|
29
|
+
"main": "./dist/index.js",
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"import": "./dist/index.js",
|
|
34
|
+
"types": "./dist/index.d.ts"
|
|
35
|
+
},
|
|
36
|
+
"./core": {
|
|
37
|
+
"import": "./dist/core/src/index.js",
|
|
38
|
+
"types": "./dist/core/src/index.d.ts"
|
|
39
|
+
},
|
|
40
|
+
"./react": {
|
|
41
|
+
"import": "./dist/adapters/react/index.js",
|
|
42
|
+
"types": "./dist/adapters/react/index.d.ts"
|
|
43
|
+
},
|
|
44
|
+
"./solid": {
|
|
45
|
+
"import": "./dist/adapters/solid/index.js",
|
|
46
|
+
"types": "./dist/adapters/solid/index.d.ts"
|
|
47
|
+
},
|
|
48
|
+
"./vanilla": {
|
|
49
|
+
"import": "./dist/adapters/vanilla/index.js",
|
|
50
|
+
"types": "./dist/adapters/vanilla/index.d.ts"
|
|
51
|
+
},
|
|
52
|
+
"./styles": "./styles/chat.css",
|
|
53
|
+
"./browser": {
|
|
54
|
+
"import": "./dist/browser/chatbot-ui.js",
|
|
55
|
+
"types": "./browser/index.ts"
|
|
56
|
+
},
|
|
57
|
+
"./cdn": {
|
|
58
|
+
"import": "./dist/browser/chatbot-ui.min.js",
|
|
59
|
+
"types": "./browser/index.ts"
|
|
60
|
+
},
|
|
61
|
+
"./cdn/css": "./styles/chat.css"
|
|
62
|
+
},
|
|
63
|
+
"scripts": {
|
|
64
|
+
"build": "tsc",
|
|
65
|
+
"build:browser": "node build-browser.js",
|
|
66
|
+
"build:all": "pnpm build && pnpm build:browser",
|
|
67
|
+
"dev": "tsc --watch",
|
|
68
|
+
"check-types": "tsc --noEmit",
|
|
69
|
+
"docs:storybook": "storybook dev -p 6006",
|
|
70
|
+
"docs:storybook:build": "storybook build",
|
|
71
|
+
"docs:typedoc": "typedoc",
|
|
72
|
+
"docs:build": "pnpm docs:typedoc && pnpm docs:storybook:build"
|
|
73
|
+
},
|
|
74
|
+
"devDependencies": {
|
|
75
|
+
"@storybook/addon-essentials": "^8.6.15",
|
|
76
|
+
"@storybook/addon-interactions": "^8.6.15",
|
|
77
|
+
"@storybook/addon-links": "^8.6.15",
|
|
78
|
+
"@storybook/blocks": "^8.6.15",
|
|
79
|
+
"@storybook/react": "^8.6.15",
|
|
80
|
+
"@storybook/react-vite": "^8.6.15",
|
|
81
|
+
"@storybook/test": "^8.6.15",
|
|
82
|
+
"@types/react": "^19.2.5",
|
|
83
|
+
"@types/react-dom": "^19.2.3",
|
|
84
|
+
"@vitejs/plugin-react": "^4.3.1",
|
|
85
|
+
"esbuild": "^0.24.2",
|
|
86
|
+
"react": "^19.0.0",
|
|
87
|
+
"react-dom": "^19.0.0",
|
|
88
|
+
"storybook": "^8.6.15",
|
|
89
|
+
"typedoc": "^0.26.0",
|
|
90
|
+
"typescript": "~5.9.3",
|
|
91
|
+
"vite": "^5.4.0"
|
|
92
|
+
},
|
|
93
|
+
"peerDependencies": {
|
|
94
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
95
|
+
"react-dom": "^18.0.0 || ^19.0.0",
|
|
96
|
+
"react-markdown": "^10.0.0",
|
|
97
|
+
"remark-gfm": "^4.0.0",
|
|
98
|
+
"solid-js": "^1.0.0"
|
|
99
|
+
},
|
|
100
|
+
"peerDependenciesMeta": {
|
|
101
|
+
"react-markdown": {
|
|
102
|
+
"optional": true
|
|
103
|
+
},
|
|
104
|
+
"remark-gfm": {
|
|
105
|
+
"optional": true
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"files": [
|
|
109
|
+
"dist",
|
|
110
|
+
"styles",
|
|
111
|
+
"browser",
|
|
112
|
+
"README.md"
|
|
113
|
+
],
|
|
114
|
+
"engines": {
|
|
115
|
+
"node": ">=18"
|
|
116
|
+
}
|
|
117
|
+
}
|