@nodeblocks/frontend-chat-conversation-block 0.1.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/dist/context.d.ts +86 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/index.cjs.js +46742 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +46722 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/lib.d.ts +87 -0
- package/dist/lib.d.ts.map +1 -0
- package/package.json +41 -0
- package/readme.md +64 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { AvatarProps } from '@basaldev/blocks-frontend-framework';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
type ChatConversationContextValue = {
|
|
4
|
+
/** Callback when submitting a message*/
|
|
5
|
+
onMessageSubmit?: (text: string) => void;
|
|
6
|
+
/** Callback on comment change */
|
|
7
|
+
onInputChange?: (text: string) => void;
|
|
8
|
+
/** Configs for the comment input at the bottom of the page */
|
|
9
|
+
commentInput?: {
|
|
10
|
+
/** Disables input (while submitting or similar) */
|
|
11
|
+
isDisabled?: boolean;
|
|
12
|
+
/** Error message to show below the comment input field */
|
|
13
|
+
errorText?: string;
|
|
14
|
+
};
|
|
15
|
+
/** Configs for the comment input submit button */
|
|
16
|
+
commentSubmitButton?: {
|
|
17
|
+
/** Disables input (while submitting or similar) */
|
|
18
|
+
isDisabled?: boolean;
|
|
19
|
+
};
|
|
20
|
+
/** Chat panel configuration */
|
|
21
|
+
chatView: {
|
|
22
|
+
/** Configuration for the chat view heading above the chat view */
|
|
23
|
+
heading?: {
|
|
24
|
+
avatar?: AvatarProps;
|
|
25
|
+
buttonHref: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Loading state for either overall view or for previous methods
|
|
29
|
+
* (depends on whether messages is empty)
|
|
30
|
+
*/
|
|
31
|
+
isLoading?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Callback when the user has scrolled up and reached the top of the chat view
|
|
34
|
+
* This can be used to fetch more messages from the server.
|
|
35
|
+
*/
|
|
36
|
+
onScrollTop?: (earliestMessageId: string) => void;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* The list of messages to show in the chat view
|
|
40
|
+
* Messages should always be provided newest-first.
|
|
41
|
+
* They will be displayed with the newest at the bottom.
|
|
42
|
+
*
|
|
43
|
+
* When the latest message id changes, the user scroll will be
|
|
44
|
+
* updated automatically if the user is currently at the bottom, otherwise
|
|
45
|
+
* they will remain where they are.
|
|
46
|
+
*/
|
|
47
|
+
messages: {
|
|
48
|
+
/** Avatar used if no image is provided; if not provided, no avatar shown */
|
|
49
|
+
avatarColor?: AvatarProps['avatarColor'];
|
|
50
|
+
/** Avatar link href (requires onNavigate) */
|
|
51
|
+
avatarHref?: AvatarProps['href'];
|
|
52
|
+
/** Avatar picture */
|
|
53
|
+
avatarUrl?: AvatarProps['avatarUrl'];
|
|
54
|
+
/** Message bubble content */
|
|
55
|
+
content: string;
|
|
56
|
+
/**
|
|
57
|
+
* Date time the message was created at, as an ISO string
|
|
58
|
+
* Messages will then be grouped by days based on the configured locale via
|
|
59
|
+
* the luxon library
|
|
60
|
+
*/
|
|
61
|
+
createdAt: string;
|
|
62
|
+
/** Identifier for this message (for callbacks) */
|
|
63
|
+
id: string;
|
|
64
|
+
/** Messages that are your own are highlighted */
|
|
65
|
+
isOwnMessage?: boolean;
|
|
66
|
+
/** Title string (appears above the bubble) */
|
|
67
|
+
title?: string;
|
|
68
|
+
}[];
|
|
69
|
+
/** Label text configuration */
|
|
70
|
+
labels: {
|
|
71
|
+
chatViewHeadingButtonText?: string;
|
|
72
|
+
chatViewHeadingText?: string;
|
|
73
|
+
};
|
|
74
|
+
/** Navigation callback (required for href) */
|
|
75
|
+
onNavigate: (url: string) => void;
|
|
76
|
+
/** Placeholder text configuration */
|
|
77
|
+
placeholders: {
|
|
78
|
+
commentInput: string;
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
export declare const ChatConversationProvider: ({ children, ...value }: ChatConversationContextValue & {
|
|
82
|
+
children: ReactNode;
|
|
83
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
84
|
+
export declare const useChatConversationContext: () => ChatConversationContextValue;
|
|
85
|
+
export {};
|
|
86
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAiB,SAAS,EAAc,MAAM,OAAO,CAAC;AAE7D,KAAK,4BAA4B,GAAG;IAClC,wCAAwC;IACxC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,iCAAiC;IACjC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC,8DAA8D;IAC9D,YAAY,CAAC,EAAE;QACb,mDAAmD;QACnD,UAAU,CAAC,EAAE,OAAO,CAAC;QAIrB,0DAA0D;QAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,kDAAkD;IAClD,mBAAmB,CAAC,EAAE;QACpB,mDAAmD;QACnD,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,+BAA+B;IAC/B,QAAQ,EAAE;QACR,kEAAkE;QAClE,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,EAAE,WAAW,CAAC;YACrB,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;QACF;;;WAGG;QACH,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB;;;WAGG;QACH,WAAW,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,IAAI,CAAC;KACnD,CAAC;IACF;;;;;;;;OAQG;IACH,QAAQ,EAAE;QACR,4EAA4E;QAC5E,WAAW,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;QACzC,6CAA6C;QAC7C,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,qBAAqB;QACrB,SAAS,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;QACrC,6BAA6B;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB;;;;WAIG;QACH,SAAS,EAAE,MAAM,CAAC;QAClB,kDAAkD;QAClD,EAAE,EAAE,MAAM,CAAC;QACX,iDAAiD;QACjD,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,8CAA8C;QAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;IACJ,+BAA+B;IAC/B,MAAM,EAAE;QACN,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,8CAA8C;IAC9C,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qCAAqC;IACrC,YAAY,EAAE;QACZ,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH,CAAC;AAIF,eAAO,MAAM,wBAAwB,GAAI,wBAGtC,4BAA4B,GAAG;IAChC,QAAQ,EAAE,SAAS,CAAC;CACrB,4CAEA,CAAC;AAEF,eAAO,MAAM,0BAA0B,oCAOtC,CAAC"}
|