@admin-layout/tailwind-chat-pro 12.2.4-alpha.102

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 (65) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/LICENSE +21 -0
  3. package/lib/components/index.d.ts +2 -0
  4. package/lib/components/index.d.ts.map +1 -0
  5. package/lib/components/messages-container-ui/DefaultInputToolBar.d.ts +21 -0
  6. package/lib/components/messages-container-ui/DefaultInputToolBar.d.ts.map +1 -0
  7. package/lib/components/messages-container-ui/DefaultInputToolBar.js +46 -0
  8. package/lib/components/messages-container-ui/DefaultInputToolBar.js.map +1 -0
  9. package/lib/components/messages-container-ui/DefaultMessageGroup.d.ts +16 -0
  10. package/lib/components/messages-container-ui/DefaultMessageGroup.d.ts.map +1 -0
  11. package/lib/components/messages-container-ui/DefaultMessageGroup.js +64 -0
  12. package/lib/components/messages-container-ui/DefaultMessageGroup.js.map +1 -0
  13. package/lib/components/messages-container-ui/ErrorFixCard.d.ts +10 -0
  14. package/lib/components/messages-container-ui/ErrorFixCard.d.ts.map +1 -0
  15. package/lib/components/messages-container-ui/ErrorFixCard.js +219 -0
  16. package/lib/components/messages-container-ui/ErrorFixCard.js.map +1 -0
  17. package/lib/components/messages-container-ui/FilesList.d.ts +19 -0
  18. package/lib/components/messages-container-ui/FilesList.d.ts.map +1 -0
  19. package/lib/components/messages-container-ui/FilesList.js +75 -0
  20. package/lib/components/messages-container-ui/FilesList.js.map +1 -0
  21. package/lib/components/messages-container-ui/MessagesContainerUI.d.ts +98 -0
  22. package/lib/components/messages-container-ui/MessagesContainerUI.d.ts.map +1 -0
  23. package/lib/components/messages-container-ui/MessagesContainerUI.js +88 -0
  24. package/lib/components/messages-container-ui/MessagesContainerUI.js.map +1 -0
  25. package/lib/components/messages-container-ui/ModernMessageGroup.d.ts +46 -0
  26. package/lib/components/messages-container-ui/ModernMessageGroup.d.ts.map +1 -0
  27. package/lib/components/messages-container-ui/ModernMessageGroup.js +1568 -0
  28. package/lib/components/messages-container-ui/ModernMessageGroup.js.map +1 -0
  29. package/lib/components/messages-container-ui/PlanModeView.d.ts +107 -0
  30. package/lib/components/messages-container-ui/PlanModeView.d.ts.map +1 -0
  31. package/lib/components/messages-container-ui/PlanModeView.js +294 -0
  32. package/lib/components/messages-container-ui/PlanModeView.js.map +1 -0
  33. package/lib/components/messages-container-ui/index.d.ts +12 -0
  34. package/lib/components/messages-container-ui/index.d.ts.map +1 -0
  35. package/lib/components/messages-container-ui/messenger-slot-fill-name-enum.d.ts +16 -0
  36. package/lib/components/messages-container-ui/messenger-slot-fill-name-enum.d.ts.map +1 -0
  37. package/lib/components/messages-container-ui/messenger-slot-fill-name-enum.js +16 -0
  38. package/lib/components/messages-container-ui/messenger-slot-fill-name-enum.js.map +1 -0
  39. package/lib/components/messages-container-ui/modernStreaming.d.ts +11 -0
  40. package/lib/components/messages-container-ui/modernStreaming.d.ts.map +1 -0
  41. package/lib/components/messages-container-ui/modernStreaming.js +17 -0
  42. package/lib/components/messages-container-ui/modernStreaming.js.map +1 -0
  43. package/lib/components/messages-container-ui/types.d.ts +63 -0
  44. package/lib/components/messages-container-ui/types.d.ts.map +1 -0
  45. package/lib/index.d.ts +2 -0
  46. package/lib/index.d.ts.map +1 -0
  47. package/lib/index.js +1 -0
  48. package/lib/index.js.map +1 -0
  49. package/lib/routes.json +1 -0
  50. package/package.json +48 -0
  51. package/rollup.config.mjs +34 -0
  52. package/src/components/index.ts +1 -0
  53. package/src/components/messages-container-ui/DefaultInputToolBar.tsx +63 -0
  54. package/src/components/messages-container-ui/DefaultMessageGroup.tsx +75 -0
  55. package/src/components/messages-container-ui/ErrorFixCard.tsx +239 -0
  56. package/src/components/messages-container-ui/FilesList.tsx +89 -0
  57. package/src/components/messages-container-ui/MessagesContainerUI.tsx +178 -0
  58. package/src/components/messages-container-ui/ModernMessageGroup.tsx +1885 -0
  59. package/src/components/messages-container-ui/PlanModeView.tsx +457 -0
  60. package/src/components/messages-container-ui/index.ts +18 -0
  61. package/src/components/messages-container-ui/messenger-slot-fill-name-enum.ts +15 -0
  62. package/src/components/messages-container-ui/modernStreaming.tsx +18 -0
  63. package/src/components/messages-container-ui/types.ts +68 -0
  64. package/src/index.ts +1 -0
  65. package/tsconfig.json +27 -0
@@ -0,0 +1,178 @@
1
+ import React from 'react';
2
+ import clsx from 'clsx';
3
+ import { PlanModeView } from './PlanModeView';
4
+ import type { PlanMessage, MessageGroupComponentType } from './types';
5
+ import type { PlanModeViewInputToolbarProps } from './PlanModeView';
6
+
7
+ export interface MessagesContainerUIProps {
8
+ messages: PlanMessage[];
9
+ streamingContent?: string;
10
+ currentUser: { id: string; name?: string; avatar?: string; [key: string]: any };
11
+ onSend: (text: string) => void;
12
+ /** Optional classes applied to the container root (useful for width/padding tweaks). */
13
+ className?: string;
14
+ /** Optional ref for the scroll container inside PlanModeView. */
15
+ scrollContainerRef?: React.Ref<HTMLDivElement>;
16
+ /** Optional className applied to PlanModeView root wrapper. */
17
+ planModeViewClassName?: string;
18
+ /** Optional className applied to PlanModeView scroll container element. */
19
+ planModeScrollContainerClassName?: string;
20
+ /** When true, hide scrollbar visuals but keep it scrollable. */
21
+ hideScrollbar?: boolean;
22
+ disabled?: boolean;
23
+ isLoading?: boolean;
24
+ onStop?: () => void;
25
+ showDate?: boolean;
26
+ showAvatar?: boolean;
27
+ showMessageBubbleBorder?: boolean;
28
+ /** When false (default), do NOT create an internal scroll container (avoids nested scroll). */
29
+ useInternalScroll?: boolean;
30
+ /** When true, the built-in input toolbar area is not rendered. */
31
+ hideInputToolbar?: boolean;
32
+ /**
33
+ * Where to place the input toolbar.
34
+ * - `bottom` (default): render toolbar in the bottom area.
35
+ * - `inlineWhenEmpty`: when there are no messages and no streaming/loading, render the toolbar inline
36
+ * inside the empty state (matches landing UI), otherwise use bottom placement.
37
+ */
38
+ inputPlacement?: 'bottom' | 'inlineWhenEmpty';
39
+ /**
40
+ * Optional: render the input composer; receives value, onChange, onSend, disabled.
41
+ * Defaults to `@admin-layout/tailwind-ui`'s `InputToolBar`, so the base works out of the box.
42
+ */
43
+ renderInputToolbar?: (props: PlanModeViewInputToolbarProps) => React.ReactNode;
44
+ /** Placeholder for the default input composer (ignored when `renderInputToolbar` is provided). */
45
+ inputPlaceholder?: string;
46
+ /** Optional: passed to the injected message-group renderer */
47
+ onOpen?: (element?: any) => void;
48
+ onMessageClick?: (msg: any) => void;
49
+ isDesktopView?: boolean;
50
+ isSmallScreen?: boolean;
51
+ sandboxErrors?: any[];
52
+ currentFiles?: Record<string, string>;
53
+ onFixError?: (errorMessage: string) => Promise<void>;
54
+ /** Optional: error message to show above messages; use with onRetry for retry button */
55
+ error?: string | null;
56
+ /** Optional: called when user clicks retry (e.g. after error) */
57
+ onRetry?: () => void;
58
+ /**
59
+ * Optional: custom content when there are no messages and no streaming/loading.
60
+ * Receives input toolbar props so you can render the composer inline (e.g. landing UI).
61
+ */
62
+ renderEmptyState?: (ctx: { inputToolbarProps: PlanModeViewInputToolbarProps }) => React.ReactNode;
63
+ /**
64
+ * Optional: when provided, scroll to bottom whenever these deps change (e.g. [streamingContent, messages.length]).
65
+ * Use from the parent to keep the view at bottom on each stream chunk.
66
+ */
67
+ scrollToBottomDeps?: React.DependencyList;
68
+ /** Optional: className applied to the content wrapper inside PlanModeView. */
69
+ contentClassName?: string;
70
+ /** Optional: className applied to the post container inside PlanModeView. */
71
+ postContainerClassName?: string;
72
+ /** When true, code blocks show copy and download actions (default: true). */
73
+ showCopyDownloadOnCodeBlock?: boolean;
74
+
75
+ // ----- Customization (the "base, customizable" surface) -----
76
+ /**
77
+ * The message-group renderer. Defaults to a plain-text bubble renderer so the base
78
+ * works standalone. Inject a rich renderer (e.g. messenger-box's
79
+ * `ModernMessageGroupComponent`) for markdown / code / widget-card rendering.
80
+ */
81
+ MessageGroupComponent?: MessageGroupComponentType;
82
+ /** Optional: how to render the in-flight streaming assistant content (default: plain text). */
83
+ renderStreamingContent?: (content: string) => React.ReactNode;
84
+ /** Optional: override how a PlanMessage is mapped to the post shape handed to the renderer. */
85
+ mapMessageToPost?: (msg: PlanMessage, currentUser: MessagesContainerUIProps['currentUser']) => any;
86
+ }
87
+
88
+ /**
89
+ * MessagesContainerUI — a customizable base chat container for plan mode
90
+ * (chat / search / research). Owns the layout, scrolling, streaming area,
91
+ * empty / error / loading states and the input-toolbar slot. The actual message
92
+ * rendering is delegated to an injectable `MessageGroupComponent` (defaults to a
93
+ * plain-text bubble renderer), so consumers plug in their own rich renderer.
94
+ */
95
+ export function MessagesContainerUI({
96
+ messages,
97
+ streamingContent,
98
+ currentUser,
99
+ onSend,
100
+ className,
101
+ scrollContainerRef,
102
+ planModeViewClassName,
103
+ planModeScrollContainerClassName,
104
+ hideScrollbar = false,
105
+ disabled = false,
106
+ isLoading = false,
107
+ onStop,
108
+ showDate = false,
109
+ showAvatar = false,
110
+ showMessageBubbleBorder = false,
111
+ useInternalScroll = false,
112
+ hideInputToolbar = false,
113
+ inputPlacement = 'bottom',
114
+ renderInputToolbar,
115
+ inputPlaceholder,
116
+ onOpen,
117
+ onMessageClick,
118
+ isDesktopView = false,
119
+ isSmallScreen = false,
120
+ sandboxErrors,
121
+ currentFiles,
122
+ onFixError,
123
+ error = null,
124
+ onRetry,
125
+ renderEmptyState,
126
+ scrollToBottomDeps,
127
+ contentClassName,
128
+ postContainerClassName,
129
+ showCopyDownloadOnCodeBlock = true,
130
+ MessageGroupComponent,
131
+ renderStreamingContent,
132
+ mapMessageToPost,
133
+ }: MessagesContainerUIProps) {
134
+ return (
135
+ <div className={clsx('flex flex-col flex-1 min-h-0', className)}>
136
+ <PlanModeView
137
+ messages={messages}
138
+ streamingContent={streamingContent}
139
+ currentUser={currentUser}
140
+ onSend={onSend}
141
+ disabled={disabled}
142
+ isLoading={isLoading}
143
+ onStop={onStop}
144
+ showDate={showDate}
145
+ showAvatar={showAvatar}
146
+ showMessageBubbleBorder={showMessageBubbleBorder}
147
+ useInternalScroll={useInternalScroll}
148
+ scrollContainerRef={scrollContainerRef}
149
+ className={planModeViewClassName}
150
+ scrollContainerClassName={planModeScrollContainerClassName}
151
+ hideScrollbar={hideScrollbar}
152
+ hideInputToolbar={hideInputToolbar}
153
+ inputPlacement={inputPlacement}
154
+ renderInputToolbar={renderInputToolbar}
155
+ inputPlaceholder={inputPlaceholder}
156
+ onOpen={onOpen}
157
+ onMessageClick={onMessageClick}
158
+ isDesktopView={isDesktopView}
159
+ isSmallScreen={isSmallScreen}
160
+ sandboxErrors={sandboxErrors}
161
+ currentFiles={currentFiles}
162
+ onFixError={onFixError}
163
+ error={error}
164
+ onRetry={onRetry}
165
+ renderEmptyState={renderEmptyState}
166
+ scrollToBottomDeps={scrollToBottomDeps}
167
+ contentClassName={contentClassName}
168
+ postContainerClassName={postContainerClassName}
169
+ showCopyDownloadOnCodeBlock={showCopyDownloadOnCodeBlock}
170
+ MessageGroupComponent={MessageGroupComponent}
171
+ renderStreamingContent={renderStreamingContent}
172
+ mapMessageToPost={mapMessageToPost}
173
+ />
174
+ </div>
175
+ );
176
+ }
177
+
178
+ export default MessagesContainerUI;