@cratis/components 4.15.0 → 4.16.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.
Files changed (128) hide show
  1. package/compat-manifest.json +11 -11
  2. package/dist/esm/Chat/ChatConversation.d.ts +10 -1
  3. package/dist/esm/Chat/ChatConversation.js +4 -3
  4. package/dist/esm/Chat/ChatConversation.js.map +1 -1
  5. package/dist/esm/Chat/ChatSidebar.d.ts +7 -2
  6. package/dist/esm/Chat/ChatSidebar.js +37 -6
  7. package/dist/esm/Chat/ChatSidebar.js.map +1 -1
  8. package/dist/esm/Chat/ChatSidebarForObservableQueries.d.ts +2 -2
  9. package/dist/esm/Chat/ChatSidebarForObservableQueries.js +60 -12
  10. package/dist/esm/Chat/ChatSidebarForObservableQueries.js.map +1 -1
  11. package/dist/esm/Chat/ChatStatus.d.ts +12 -0
  12. package/dist/esm/Chat/ChatStatus.d.ts.map +1 -0
  13. package/dist/esm/Chat/ChatStatus.js +10 -0
  14. package/dist/esm/Chat/ChatStatus.js.map +1 -0
  15. package/dist/esm/Chat/ChatTopicList.d.ts +10 -1
  16. package/dist/esm/Chat/ChatTopicList.js +3 -2
  17. package/dist/esm/Chat/ChatTopicList.js.map +1 -1
  18. package/dist/esm/Chat/Kit/ChatComposer.d.ts +2 -0
  19. package/dist/esm/Chat/Kit/ChatComposer.js +14 -7
  20. package/dist/esm/Chat/Kit/ChatComposer.js.map +1 -1
  21. package/dist/esm/Chat/index.d.ts +1 -0
  22. package/dist/esm/Chat/index.js +1 -0
  23. package/dist/esm/Chat/index.js.map +1 -1
  24. package/dist/esm/CommandDialog/CommandDialog.d.ts +11 -1
  25. package/dist/esm/CommandDialog/CommandDialog.js +12 -20
  26. package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
  27. package/dist/esm/CommandDialog/CommandStepper.d.ts +8 -1
  28. package/dist/esm/CommandDialog/CommandStepper.js +11 -19
  29. package/dist/esm/CommandDialog/CommandStepper.js.map +1 -1
  30. package/dist/esm/CommandDialog/CommandStepperContent.d.ts +2 -0
  31. package/dist/esm/CommandDialog/CommandStepperContent.js +20 -26
  32. package/dist/esm/CommandDialog/CommandStepperContent.js.map +1 -1
  33. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts +8 -1
  34. package/dist/esm/CommandDialog/StepperCommandDialog.js +25 -23
  35. package/dist/esm/CommandDialog/StepperCommandDialog.js.map +1 -1
  36. package/dist/esm/CommandDialog/commandValuesUnchanged.d.ts +5 -0
  37. package/dist/esm/CommandDialog/commandValuesUnchanged.d.ts.map +1 -0
  38. package/dist/esm/CommandDialog/commandValuesUnchanged.js +22 -0
  39. package/dist/esm/CommandDialog/commandValuesUnchanged.js.map +1 -0
  40. package/dist/esm/CommandDialog/confirmBeforeExecute.d.ts +9 -0
  41. package/dist/esm/CommandDialog/confirmBeforeExecute.d.ts.map +1 -0
  42. package/dist/esm/CommandDialog/confirmBeforeExecute.js +12 -0
  43. package/dist/esm/CommandDialog/confirmBeforeExecute.js.map +1 -0
  44. package/dist/esm/CommandDialog/index.d.ts +1 -0
  45. package/dist/esm/CommandDialog/transitionStep.d.ts +16 -0
  46. package/dist/esm/CommandDialog/transitionStep.js +15 -0
  47. package/dist/esm/CommandDialog/transitionStep.js.map +1 -0
  48. package/dist/esm/CommandDialog/useCommandExecution.d.ts +9 -0
  49. package/dist/esm/CommandDialog/useCommandExecution.js +52 -0
  50. package/dist/esm/CommandDialog/useCommandExecution.js.map +1 -0
  51. package/dist/esm/CommandDialog/useSubmissionFlight.d.ts +8 -0
  52. package/dist/esm/CommandDialog/useSubmissionFlight.d.ts.map +1 -0
  53. package/dist/esm/CommandDialog/useSubmissionFlight.js +30 -0
  54. package/dist/esm/CommandDialog/useSubmissionFlight.js.map +1 -0
  55. package/dist/esm/Common/DatePickerInputImplementation.js +16 -7
  56. package/dist/esm/Common/DatePickerInputImplementation.js.map +1 -1
  57. package/dist/esm/Common/Tooltip.d.ts +3 -3
  58. package/dist/esm/Common/Tooltip.d.ts.map +1 -1
  59. package/dist/esm/Common/TooltipImplementation.js +1 -1
  60. package/dist/esm/Common/TooltipImplementation.js.map +1 -1
  61. package/dist/esm/DataTables/DataTableCore.js +1 -1
  62. package/dist/esm/DataTables/DataTableCore.js.map +1 -1
  63. package/dist/esm/DataTables/resolveDataTableStatus.d.ts +1 -0
  64. package/dist/esm/DataTables/resolveDataTableStatus.js +8 -8
  65. package/dist/esm/DataTables/resolveDataTableStatus.js.map +1 -1
  66. package/dist/esm/Filter/CheckboxListFilter.d.ts +5 -1
  67. package/dist/esm/Filter/CheckboxListFilter.js +16 -4
  68. package/dist/esm/Filter/CheckboxListFilter.js.map +1 -1
  69. package/dist/esm/Filter/FilterPanel.d.ts +5 -1
  70. package/dist/esm/Filter/FilterPanel.js +37 -6
  71. package/dist/esm/Filter/FilterPanel.js.map +1 -1
  72. package/dist/esm/Filter/types.d.ts +4 -0
  73. package/dist/esm/Filter/types.d.ts.map +1 -1
  74. package/dist/esm/PivotViewer/PivotViewer.d.ts +1 -1
  75. package/dist/esm/PivotViewer/PivotViewer.js +9 -7
  76. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  77. package/dist/esm/PivotViewer/PivotViewerLabels.d.ts +32 -0
  78. package/dist/esm/PivotViewer/PivotViewerLabels.d.ts.map +1 -0
  79. package/dist/esm/PivotViewer/PivotViewerLabels.js +4 -0
  80. package/dist/esm/PivotViewer/PivotViewerLabels.js.map +1 -0
  81. package/dist/esm/PivotViewer/components/FilterPanel.d.ts +6 -1
  82. package/dist/esm/PivotViewer/components/FilterPanel.js +3 -2
  83. package/dist/esm/PivotViewer/components/FilterPanel.js.map +1 -1
  84. package/dist/esm/PivotViewer/components/PivotCanvas.js +15 -4
  85. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  86. package/dist/esm/PivotViewer/components/Toolbar.d.ts +3 -1
  87. package/dist/esm/PivotViewer/components/Toolbar.js +2 -3
  88. package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
  89. package/dist/esm/PivotViewer/components/pivot/animation.d.ts +2 -0
  90. package/dist/esm/PivotViewer/components/pivot/animation.js +6 -1
  91. package/dist/esm/PivotViewer/components/pivot/animation.js.map +1 -1
  92. package/dist/esm/PivotViewer/components/pivot/sprites.js +1 -0
  93. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  94. package/dist/esm/PivotViewer/components/pivot/syncScrollSprites.d.ts +4 -0
  95. package/dist/esm/PivotViewer/components/pivot/syncScrollSprites.js +8 -0
  96. package/dist/esm/PivotViewer/components/pivot/syncScrollSprites.js.map +1 -0
  97. package/dist/esm/PivotViewer/components/pivot/visibility.d.ts +2 -0
  98. package/dist/esm/PivotViewer/components/pivot/visibility.js +26 -65
  99. package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
  100. package/dist/esm/PivotViewer/engine/store.d.ts +1 -1
  101. package/dist/esm/PivotViewer/engine/store.js +29 -12
  102. package/dist/esm/PivotViewer/engine/store.js.map +1 -1
  103. package/dist/esm/PivotViewer/engine/types.d.ts +2 -1
  104. package/dist/esm/PivotViewer/engine/types.d.ts.map +1 -1
  105. package/dist/esm/PivotViewer/hooks/useCurrentFilters.js +6 -9
  106. package/dist/esm/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
  107. package/dist/esm/PivotViewer/hooks/useFieldExtractors.js +17 -35
  108. package/dist/esm/PivotViewer/hooks/useFieldExtractors.js.map +1 -1
  109. package/dist/esm/PivotViewer/index.d.ts +1 -0
  110. package/dist/esm/PivotViewer/types.d.ts +4 -1
  111. package/dist/esm/PivotViewer/types.js.map +1 -1
  112. package/dist/esm/PivotViewer/utils/presentGrouping.d.ts +4 -0
  113. package/dist/esm/PivotViewer/utils/presentGrouping.js +22 -0
  114. package/dist/esm/PivotViewer/utils/presentGrouping.js.map +1 -0
  115. package/dist/esm/QueryStatus/QueryStatus.d.ts +8 -0
  116. package/dist/esm/QueryStatus/QueryStatus.d.ts.map +1 -0
  117. package/dist/esm/QueryStatus/QueryStatus.js +10 -0
  118. package/dist/esm/QueryStatus/QueryStatus.js.map +1 -0
  119. package/dist/esm/QueryStatus/resolveQueryStatus.d.ts +9 -0
  120. package/dist/esm/QueryStatus/resolveQueryStatus.js +14 -0
  121. package/dist/esm/QueryStatus/resolveQueryStatus.js.map +1 -0
  122. package/dist/esm/styles.Canvas.css +23 -3
  123. package/dist/esm/styles.Chat.css +23 -3
  124. package/dist/esm/styles.css +23 -3
  125. package/dist/esm/types/parts.d.ts +2 -2
  126. package/dist/esm/types/parts.js +2 -2
  127. package/dist/esm/types/parts.js.map +1 -1
  128. package/package.json +3 -2
@@ -68,7 +68,7 @@
68
68
  {
69
69
  "name": "@cratis/components",
70
70
  "role": "core",
71
- "version": "4.15.0",
71
+ "version": "4.16.0",
72
72
  "releaseMajorRange": ">=4 <5",
73
73
  "independentRelease": false,
74
74
  "private": false,
@@ -92,7 +92,7 @@
92
92
  {
93
93
  "name": "@cratis/eslint-plugin-components",
94
94
  "role": "eslint",
95
- "version": "4.15.0",
95
+ "version": "4.16.0",
96
96
  "releaseMajorRange": ">=4 <5",
97
97
  "independentRelease": false,
98
98
  "private": false,
@@ -105,7 +105,7 @@
105
105
  {
106
106
  "name": "@cratis/components.migrator",
107
107
  "role": "migrator",
108
- "version": "4.15.0",
108
+ "version": "4.16.0",
109
109
  "releaseMajorRange": ">=4 <5",
110
110
  "independentRelease": false,
111
111
  "private": false,
@@ -116,13 +116,13 @@
116
116
  {
117
117
  "name": "@cratis/components.conformance",
118
118
  "role": "conformance",
119
- "version": "4.15.0",
119
+ "version": "4.16.0",
120
120
  "releaseMajorRange": ">=4 <5",
121
121
  "independentRelease": false,
122
122
  "private": false,
123
123
  "packageAccess": "public",
124
124
  "peerDependencies": {
125
- "@cratis/components": "4.15.0",
125
+ "@cratis/components": "4.16.0",
126
126
  "react": "^19.0.0",
127
127
  "react-dom": "^19.0.0"
128
128
  },
@@ -132,13 +132,13 @@
132
132
  {
133
133
  "name": "@cratis/components.mui",
134
134
  "role": "renderer-adapter",
135
- "version": "4.15.0",
135
+ "version": "4.16.0",
136
136
  "releaseMajorRange": ">=4 <5",
137
137
  "independentRelease": false,
138
138
  "private": false,
139
139
  "packageAccess": "public",
140
140
  "peerDependencies": {
141
- "@cratis/components": "4.15.0",
141
+ "@cratis/components": "4.16.0",
142
142
  "@emotion/react": ">=11.5 <12",
143
143
  "@emotion/styled": ">=11.11 <12",
144
144
  "@mui/material": ">=9 <10",
@@ -188,13 +188,13 @@
188
188
  {
189
189
  "name": "@cratis/components.primereact",
190
190
  "role": "renderer-adapter",
191
- "version": "4.15.0",
191
+ "version": "4.16.0",
192
192
  "releaseMajorRange": ">=4 <5",
193
193
  "independentRelease": false,
194
194
  "private": false,
195
195
  "packageAccess": "public",
196
196
  "peerDependencies": {
197
- "@cratis/components": "4.15.0",
197
+ "@cratis/components": "4.16.0",
198
198
  "@primereact/core": ">=11 <12",
199
199
  "@primereact/ui": ">=11 <12",
200
200
  "@primeuix/themes": ">=3 <4",
@@ -256,13 +256,13 @@
256
256
  {
257
257
  "name": "@cratis/components.primereact10",
258
258
  "role": "renderer-adapter",
259
- "version": "4.15.0",
259
+ "version": "4.16.0",
260
260
  "releaseMajorRange": ">=4 <5",
261
261
  "independentRelease": false,
262
262
  "private": false,
263
263
  "packageAccess": "public",
264
264
  "peerDependencies": {
265
- "@cratis/components": "4.15.0",
265
+ "@cratis/components": "4.16.0",
266
266
  "primereact": ">=10.9.9 <11",
267
267
  "react": "^19.0.0",
268
268
  "react-dom": "^19.0.0"
@@ -7,12 +7,19 @@ import type { ChatAuthor } from './ChatAuthor.js';
7
7
  import { type ChatIdentifier } from './ChatIdentifier.js';
8
8
  import type { ChatMention } from './ChatMention.js';
9
9
  import type { ChatMessage } from './ChatMessage.js';
10
+ import { ChatStatus } from './ChatStatus.js';
10
11
  import type { ChatMessageAction } from './ChatMessageAction.js';
11
12
  import { type RelativeTimestampLabels } from './relativeTimestamp.js';
12
13
  /** Overrides for every label the {@link ChatConversation} renders. Any field left unset falls
13
14
  * back to a literal English default — this library ships no i18n mechanism of its own, so a host
14
15
  * that localizes passes its own translated strings through here. */
15
16
  export interface ChatConversationLabels {
17
+ /** Shown while loading without messages. Defaults to `'Loading messages…'`. */
18
+ loading?: string;
19
+ /** Shown when loading messages fails, alongside any existing messages. Defaults to `'Could not load messages.'`. */
20
+ failed?: string;
21
+ /** Shown when access is denied; replaces any existing messages. Defaults to `'You are not authorized to view these messages.'`. */
22
+ unauthorized?: string;
16
23
  /** Shown when there are no messages yet. Defaults to `'No messages yet. Say hello!'`. */
17
24
  empty?: string;
18
25
  /** One author typing. `{name}` is substituted. Defaults to `'{name} is typing'`. */
@@ -38,6 +45,8 @@ export interface ChatConversationProps<TMessage extends ChatMessage = ChatMessag
38
45
  * (observable) query delivers and the conversation re-renders as it changes.
39
46
  */
40
47
  messages: TMessage[];
48
+ /** Query display state. Defaults to {@link ChatStatus.Ready}; existing messages remain visible on loading or failure, and unauthorized disables the composer. */
49
+ status?: ChatStatus;
41
50
  /**
42
51
  * Invoked when a message is sent, with the trimmed body and who it mentions. Everything else
43
52
  * about persisting the message is the host's business.
@@ -102,4 +111,4 @@ export interface ChatConversationProps<TMessage extends ChatMessage = ChatMessag
102
111
  * {@link ChatConversationProps.onSendMessage | onSendMessage} without any opinion about the
103
112
  * backend behind it. Mentions and the emoji picker come along through the composer.
104
113
  */
105
- export declare const ChatConversation: <TMessage extends ChatMessage = ChatMessage>({ messages, onSendMessage, authorOf, renderAvatar, renderAuthorName, actions, mentionCandidates, resolveMentionCandidates, typingAuthors, quickReply, buildAvatarUrl, autoFocus, labels, className, }: ChatConversationProps<TMessage>) => import("react").JSX.Element;
114
+ export declare const ChatConversation: <TMessage extends ChatMessage = ChatMessage>({ messages, status, onSendMessage, authorOf, renderAvatar, renderAuthorName, actions, mentionCandidates, resolveMentionCandidates, typingAuthors, quickReply, buildAvatarUrl, autoFocus, labels, className, }: ChatConversationProps<TMessage>) => import("react").JSX.Element;
@@ -5,6 +5,7 @@ import { ChatAuthorKind } from './Kit/ChatAuthorKind.js';
5
5
  import { ChatComposer } from './Kit/ChatComposer.js';
6
6
  import { TypingIndicator } from './Kit/TypingIndicator.js';
7
7
  import { chatIdentifierString } from './ChatIdentifier.js';
8
+ import { ChatStatus } from './ChatStatus.js';
8
9
  import { ChatMessageBody } from './ChatMessageBody.js';
9
10
  import { relativeTimestamp } from './relativeTimestamp.js';
10
11
 
@@ -38,7 +39,7 @@ const typingLabel = (authors, labels) => {
38
39
  .replace('{second}', authors[1].name);
39
40
  return labels?.typingSeveral ?? 'Several people are typing';
40
41
  };
41
- const ChatConversation = ({ messages, onSendMessage, authorOf, renderAvatar, renderAuthorName, actions, mentionCandidates, resolveMentionCandidates, typingAuthors = [], quickReply = true, buildAvatarUrl, autoFocus = false, labels, className, }) => {
42
+ const ChatConversation = ({ messages, status = ChatStatus.Ready, onSendMessage, authorOf, renderAvatar, renderAuthorName, actions, mentionCandidates, resolveMentionCandidates, typingAuthors = [], quickReply = true, buildAvatarUrl, autoFocus = false, labels, className, }) => {
42
43
  const composerRef = useRef(null);
43
44
  const messagesEndRef = useRef(null);
44
45
  const renderInfo = useMemo(() => computeRenderInfo(messages), [messages]);
@@ -55,7 +56,7 @@ const ChatConversation = ({ messages, onSendMessage, authorOf, renderAvatar, ren
55
56
  kind: candidate.kind,
56
57
  })));
57
58
  const quickReplyTo = (name) => composerRef.current?.prefill(`@${name} `);
58
- return (jsxs("div", { className: `cratis-chat-conversation${className ? ` ${className}` : ''}`, children: [jsxs("div", { className: 'cratis-chat-conversation__messages', children: [messages.length === 0 && (jsx("p", { className: 'cratis-chat-conversation__empty', children: labels?.empty ?? 'No messages yet. Say hello!' })), messages.map((message, index) => {
59
+ return (jsxs("div", { className: `cratis-chat-conversation${className ? ` ${className}` : ''}`, children: [jsxs("div", { className: 'cratis-chat-conversation__messages', "aria-busy": status === ChatStatus.Loading && messages.length > 0 || undefined, children: [(messages.length === 0 || status === ChatStatus.Failed || status === ChatStatus.Unauthorized) && (jsx("p", { className: 'cratis-chat-conversation__empty', children: status === ChatStatus.Loading ? (jsx("span", { role: 'status', children: labels?.loading ?? 'Loading messages…' }, status)) : status === ChatStatus.Failed ? (jsx("span", { role: 'alert', children: labels?.failed ?? 'Could not load messages.' }, status)) : status === ChatStatus.Unauthorized ? (jsx("span", { role: 'alert', children: labels?.unauthorized ?? 'You are not authorized to view these messages.' }, status)) : (labels?.empty ?? 'No messages yet. Say hello!') })), status !== ChatStatus.Unauthorized && messages.map((message, index) => {
59
60
  const author = authorFor(message.authorId);
60
61
  const { showAuthor, showTimestamp } = renderInfo[index];
61
62
  const availableActions = (actions ?? []).filter((action) => action.isAvailable?.(message) ?? true);
@@ -67,7 +68,7 @@ const ChatConversation = ({ messages, onSendMessage, authorOf, renderAvatar, ren
67
68
  : author.name })] })), jsxs("div", { className: 'cratis-chat-message__content', children: [jsxs("div", { className: `cratis-chat-message__panel${showActionsRow ? ' cratis-chat-message__panel--with-actions' : ''}`, children: [jsx(ChatMessageBody, { body: message.body, mentions: message.mentions }), showActionsRow && (jsxs("div", { className: 'cratis-chat-message__actions', children: [quickReply && (jsx("button", { type: 'button', className: 'cratis-chat-message__action', title: (labels?.quickReplyTo ??
68
69
  'Reply to {name}').replace('{name}', author.name), "aria-label": (labels?.quickReplyTo ??
69
70
  'Reply to {name}').replace('{name}', author.name), onClick: () => quickReplyTo(author.name), children: jsx(ReplyIcon, {}) })), availableActions.map((action) => (jsx("button", { type: 'button', className: 'cratis-chat-message__action', title: action.label, "aria-label": action.label, onClick: () => action.onInvoke(message), children: typeof action.icon === 'string' ? (jsx("i", { className: action.icon, "aria-hidden": 'true' })) : (action.icon) }, action.id)))] }))] }), showTimestamp && (jsx("span", { className: 'cratis-chat-message__time', children: relativeTimestamp(timestampOf(message), new Date(), labels?.timestamps) }))] })] }, chatIdentifierString(message.id)));
70
- }), jsx(TypingIndicator, { authors: typingAuthors, label: typingLabel(typingAuthors, labels), buildAvatarUrl: buildAvatarUrl }), jsx("div", { ref: messagesEndRef })] }), jsx(ChatComposer, { ref: composerRef, mentionCandidates: mentionCandidates, resolveMentionCandidates: resolveMentionCandidates, onSend: send, autoFocus: autoFocus, buildAvatarUrl: buildAvatarUrl, labels: labels?.composer })] }));
71
+ }), status !== ChatStatus.Unauthorized && (jsx(TypingIndicator, { authors: typingAuthors, label: typingLabel(typingAuthors, labels), buildAvatarUrl: buildAvatarUrl })), jsx("div", { ref: messagesEndRef })] }), jsx(ChatComposer, { ref: composerRef, mentionCandidates: mentionCandidates, resolveMentionCandidates: resolveMentionCandidates, onSend: send, disabled: status === ChatStatus.Unauthorized, autoFocus: autoFocus, buildAvatarUrl: buildAvatarUrl, labels: labels?.composer })] }));
71
72
  };
72
73
 
73
74
  export { ChatConversation };
@@ -1 +1 @@
1
- {"version":3,"file":"ChatConversation.js","sources":["../../../Chat/ChatConversation.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"ChatConversation.js","sources":["../../../Chat/ChatConversation.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -4,6 +4,7 @@ import { type ChatIdentifier } from './ChatIdentifier.js';
4
4
  import type { ChatMention } from './ChatMention.js';
5
5
  import type { ChatMessage } from './ChatMessage.js';
6
6
  import type { ChatTopic } from './ChatTopic.js';
7
+ import type { ChatStatus } from './ChatStatus.js';
7
8
  import type { ChatTopicListLabels } from './ChatTopicList.js';
8
9
  type ChatSidebarPartAttributes<TElement> = HTMLAttributes<TElement> & {
9
10
  [attribute: `data-${string}`]: string | number | boolean | undefined;
@@ -47,7 +48,7 @@ export interface ChatSidebarLabels {
47
48
  * @typeParam TMessage The host's message type — anything extending {@link ChatMessage}.
48
49
  * @typeParam TTopic The host's topic type — anything extending {@link ChatTopic}.
49
50
  */
50
- export interface ChatSidebarProps<TMessage extends ChatMessage = ChatMessage, TTopic extends ChatTopic = ChatTopic> extends Omit<ChatConversationProps<TMessage>, 'messages' | 'onSendMessage' | 'labels' | 'className'> {
51
+ export interface ChatSidebarProps<TMessage extends ChatMessage = ChatMessage, TTopic extends ChatTopic = ChatTopic> extends Omit<ChatConversationProps<TMessage>, 'messages' | 'onSendMessage' | 'labels' | 'className' | 'status'> {
51
52
  /** Whether the sidebar is open. */
52
53
  open: boolean;
53
54
  /** Invoked when the sidebar asks to close — the host owns {@link open}, so closing means the host flips it. */
@@ -63,6 +64,10 @@ export interface ChatSidebarProps<TMessage extends ChatMessage = ChatMessage, TT
63
64
  * (observable) query delivers and the conversation re-renders as it changes.
64
65
  */
65
66
  messages: TMessage[];
67
+ /** Topic-list query display state. Defaults to ready when omitted. */
68
+ topicsStatus?: ChatStatus;
69
+ /** Conversation query display state. Defaults to ready when omitted. */
70
+ messagesStatus?: ChatStatus;
66
71
  /**
67
72
  * The open topic, for hosts that own the selection themselves: an identifier opens that
68
73
  * topic's conversation, `null` shows the topic list, and leaving the prop unset lets the
@@ -133,5 +138,5 @@ export interface ChatSidebarProps<TMessage extends ChatMessage = ChatMessage, TT
133
138
  * a name through {@link ChatSidebarProps.onRequestTopicName | onRequestTopicName} — rendering a
134
139
  * pending placeholder until the name arrives.
135
140
  */
136
- export declare const ChatSidebar: <TMessage extends ChatMessage = ChatMessage, TTopic extends ChatTopic = ChatTopic>({ open, onClose, topics, messages, selectedTopicId, onTopicSelected, onStartTopic, onSendMessage, onRequestTopicName, isTopicUnnamed, position, width, modal, labels, className, pt, ...conversation }: ChatSidebarProps<TMessage, TTopic>) => false | import("react").JSX.Element;
141
+ export declare const ChatSidebar: <TMessage extends ChatMessage = ChatMessage, TTopic extends ChatTopic = ChatTopic>({ open, onClose, topics, messages, topicsStatus, messagesStatus, selectedTopicId, onTopicSelected, onStartTopic, onSendMessage, onRequestTopicName, isTopicUnnamed, position, width, modal, labels, className, pt, ...conversation }: ChatSidebarProps<TMessage, TTopic>) => false | import("react").JSX.Element | null;
137
142
  export {};
@@ -1,5 +1,5 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
- import { useState } from 'react';
2
+ import { useState, useRef, useEffect } from 'react';
3
3
  import { createPortal } from 'react-dom';
4
4
  import { ModalOverlay, Modal } from 'react-aria-components';
5
5
  import { ChatConversation } from './ChatConversation.js';
@@ -8,11 +8,36 @@ import { ChatTopicList } from './ChatTopicList.js';
8
8
  import { isTopicUnnamed } from './isTopicUnnamed.js';
9
9
  import { shouldRequestTopicName } from './shouldRequestTopicName.js';
10
10
  import { useCratisIcon } from '../configuration/useCratisIcon.js';
11
+ import { unstable_useOverlayEnvironment } from '../renderer/RendererContext.js';
11
12
 
12
13
  const classNames = (...values) => values.filter(Boolean).join(' ');
13
14
  const BackIcon = () => (jsxs("svg", { width: '14', height: '14', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '2.5', "aria-hidden": 'true', children: [jsx("line", { x1: '19', y1: '12', x2: '5', y2: '12' }), jsx("polyline", { points: '12 19 5 12 12 5' })] }));
14
- const ChatSidebar = ({ open, onClose, topics, messages, selectedTopicId, onTopicSelected, onStartTopic, onSendMessage, onRequestTopicName, isTopicUnnamed: isTopicUnnamed$1, position = 'right', width = '24rem', modal = false, labels, className, pt, ...conversation }) => {
15
+ const ChatSidebar = ({ open, onClose, topics, messages, topicsStatus, messagesStatus, selectedTopicId, onTopicSelected, onStartTopic, onSendMessage, onRequestTopicName, isTopicUnnamed: isTopicUnnamed$1, position = 'right', width = '24rem', modal = false, labels, className, pt, ...conversation }) => {
15
16
  const icon = useCratisIcon();
17
+ const overlayEnvironment = unstable_useOverlayEnvironment();
18
+ const [mounted, setMounted] = useState(false);
19
+ const nonModalPanel = useRef(null);
20
+ const [nonModalPhase, setNonModalPhase] = useState('closed');
21
+ useEffect(() => setMounted(true), []);
22
+ useEffect(() => {
23
+ setNonModalPhase((phase) => open ? 'entering' : phase === 'closed' ? 'closed' : 'exiting');
24
+ }, [open]);
25
+ const portalContainer = !modal && mounted && nonModalPhase !== 'closed'
26
+ ? overlayEnvironment.getContainer()
27
+ : null;
28
+ useEffect(() => {
29
+ if (nonModalPhase !== 'entering' && nonModalPhase !== 'exiting')
30
+ return;
31
+ if (!modal && (window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ||
32
+ nonModalPanel.current?.getAnimations?.().length === 0)) {
33
+ setNonModalPhase(nonModalPhase === 'entering' ? 'open' : 'closed');
34
+ return;
35
+ }
36
+ const timeout = setTimeout(() => {
37
+ setNonModalPhase(nonModalPhase === 'entering' ? 'open' : 'closed');
38
+ }, 250);
39
+ return () => clearTimeout(timeout);
40
+ }, [modal, nonModalPhase, portalContainer]);
16
41
  const [internalSelectedId, setInternalSelectedId] = useState();
17
42
  const isControlled = selectedTopicId !== undefined;
18
43
  const openTopicId = isControlled
@@ -57,19 +82,25 @@ const ChatSidebar = ({ open, onClose, topics, messages, selectedTopicId, onTopic
57
82
  const titleIsPending = openTopicId !== undefined && (!openTopic || unnamed(openTopic));
58
83
  const panel = (jsxs(Fragment, { children: [jsxs("header", { ...pt?.header, className: classNames('cratis-chat-sidebar__header', pt?.header?.className), "data-cratis-part": 'header', children: [openTopicId !== undefined && (jsx("button", { ...pt?.back, type: 'button', className: classNames('cratis-chat-sidebar__back', pt?.back?.className), "data-cratis-part": 'back', title: labels?.back ?? 'Back to topics', "aria-label": labels?.back ?? 'Back to topics', onClick: () => select(undefined), children: jsx(BackIcon, {}) })), jsx("h2", { ...pt?.title, className: classNames('cratis-chat-sidebar__title', titleIsPending
59
84
  ? 'cratis-chat-sidebar__title--pending'
60
- : undefined, pt?.title?.className), "data-cratis-part": 'title', children: title }), jsx("button", { ...pt?.close, type: 'button', className: classNames('cratis-chat-sidebar__close', pt?.close?.className), "data-cratis-part": 'close', "aria-label": labels?.close ?? 'Close chat', onClick: onClose, children: jsx("span", { "aria-hidden": 'true', children: icon('close', '×') }) })] }), jsx("div", { ...pt?.content, className: classNames('cratis-chat-sidebar__content', pt?.content?.className), "data-cratis-part": 'content', children: openTopicId === undefined ? (jsx(ChatTopicList, { topics: topics, onOpen: (topic) => select(topic.id, topic), onStart: onStartTopic
85
+ : undefined, pt?.title?.className), "data-cratis-part": 'title', children: title }), jsx("button", { ...pt?.close, type: 'button', className: classNames('cratis-chat-sidebar__close', pt?.close?.className), "data-cratis-part": 'close', "aria-label": labels?.close ?? 'Close chat', onClick: onClose, children: jsx("span", { "aria-hidden": 'true', children: icon('close', '×') }) })] }), jsx("div", { ...pt?.content, className: classNames('cratis-chat-sidebar__content', pt?.content?.className), "data-cratis-part": 'content', children: openTopicId === undefined ? (jsx(ChatTopicList, { topics: topics, status: topicsStatus, onOpen: (topic) => select(topic.id, topic), onStart: onStartTopic
61
86
  ? () => {
62
87
  void startTopic();
63
88
  }
64
89
  : undefined, authorOf: conversation.authorOf, renderAvatar: conversation.renderAvatar, isTopicUnnamed: isTopicUnnamed$1, buildAvatarUrl: conversation.buildAvatarUrl, labels: {
65
90
  unnamedTopic: labels?.unnamedTopic,
66
91
  ...labels?.topicList,
67
- } })) : (jsx(ChatConversation, { ...conversation, messages: openMessages, onSendMessage: send, labels: labels?.conversation })) })] }));
92
+ } })) : (jsx(ChatConversation, { ...conversation, messages: openMessages, status: messagesStatus, onSendMessage: send, labels: labels?.conversation })) })] }));
68
93
  return modal ? (jsx(ModalOverlay, { ...pt?.backdrop, isOpen: open, onOpenChange: (openState) => {
69
94
  if (!openState)
70
95
  onClose();
71
- }, isDismissable: modal, isKeyboardDismissDisabled: !modal, className: classNames('cratis-chat-sidebar__backdrop', pt?.backdrop?.className), "data-cratis-part": 'backdrop', "data-modal": modal, "data-open": open || undefined, "data-selected": openTopicId !== undefined || undefined, children: jsx(Modal, { ...pt?.root, className: classNames('cratis-chat-sidebar', pt?.root?.className, className), style: { width, ...pt?.root?.style }, "data-cratis-part": 'root', "data-position": position, "data-open": open || undefined, "data-selected": openTopicId !== undefined || undefined, children: panel }) })) : (open &&
72
- createPortal(jsx("div", { ...pt?.backdrop, className: classNames('cratis-chat-sidebar__backdrop', pt?.backdrop?.className), "data-cratis-part": 'backdrop', "data-modal": false, "data-open": true, "data-selected": openTopicId !== undefined || undefined, children: jsx("div", { ...pt?.root, className: classNames('cratis-chat-sidebar', pt?.root?.className, className), style: { width, ...pt?.root?.style }, "data-cratis-part": 'root', "data-position": position, "data-open": true, "data-selected": openTopicId !== undefined || undefined, children: panel }) }), document.body));
96
+ }, isDismissable: modal, isKeyboardDismissDisabled: !modal, className: classNames('cratis-chat-sidebar__backdrop', pt?.backdrop?.className), "data-cratis-part": 'backdrop', "data-modal": modal, "data-open": open || undefined, "data-selected": openTopicId !== undefined || undefined, children: jsx(Modal, { ...pt?.root, className: classNames('cratis-chat-sidebar', pt?.root?.className, className), style: { width, ...pt?.root?.style }, "data-cratis-part": 'root', "data-position": position, "data-open": open || undefined, "data-selected": openTopicId !== undefined || undefined, children: panel }) })) : (nonModalPhase !== 'closed' &&
97
+ portalContainer &&
98
+ createPortal(jsx("div", { ...pt?.backdrop, className: classNames('cratis-chat-sidebar__backdrop', pt?.backdrop?.className), "data-cratis-part": 'backdrop', "data-modal": false, "data-open": open || undefined, "data-selected": openTopicId !== undefined || undefined, "data-entering": nonModalPhase === 'entering' || undefined, "data-exiting": nonModalPhase === 'exiting' || undefined, children: jsx("div", { ...pt?.root, ref: nonModalPanel, className: classNames('cratis-chat-sidebar', pt?.root?.className, className), style: { width, ...pt?.root?.style }, "data-cratis-part": 'root', "data-position": position, "data-open": open || undefined, "data-selected": openTopicId !== undefined || undefined, "data-entering": nonModalPhase === 'entering' || undefined, "data-exiting": nonModalPhase === 'exiting' || undefined, onAnimationEnd: (event) => {
99
+ pt?.root?.onAnimationEnd?.(event);
100
+ if (event.target !== event.currentTarget)
101
+ return;
102
+ setNonModalPhase((phase) => phase === 'entering' ? 'open' : phase === 'exiting' ? 'closed' : phase);
103
+ }, children: panel }) }), portalContainer));
73
104
  };
74
105
 
75
106
  export { ChatSidebar };
@@ -1 +1 @@
1
- {"version":3,"file":"ChatSidebar.js","sources":["../../../Chat/ChatSidebar.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","isTopicUnnamed","defaultIsTopicUnnamed","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"ChatSidebar.js","sources":["../../../Chat/ChatSidebar.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","isTopicUnnamed","defaultIsTopicUnnamed","_Fragment"],"mappings":"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"}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import type { Constructor } from '@cratis/fundamentals';
3
3
  import type { IObservableQueryFor } from '@cratis/arc/queries';
4
4
  import { type ChatSidebarProps } from './ChatSidebar.js';
5
- import type { ChatIdentifier } from './ChatIdentifier.js';
5
+ import { type ChatIdentifier } from './ChatIdentifier.js';
6
6
  import type { ChatMessage } from './ChatMessage.js';
7
7
  import type { ChatTopic } from './ChatTopic.js';
8
8
  /**
@@ -14,7 +14,7 @@ import type { ChatTopic } from './ChatTopic.js';
14
14
  * @typeParam TTopicsArguments The topics query's argument type.
15
15
  * @typeParam TMessagesArguments The messages query's argument type.
16
16
  */
17
- export interface ChatSidebarForObservableQueriesProps<TMessage extends ChatMessage, TTopic extends ChatTopic, TTopicsQuery extends IObservableQueryFor<TTopic[], TTopicsArguments>, TMessagesQuery extends IObservableQueryFor<TMessage[], TMessagesArguments>, TTopicsArguments extends object = object, TMessagesArguments extends object = object> extends Omit<ChatSidebarProps<TMessage, TTopic>, 'topics' | 'messages' | 'selectedTopicId'> {
17
+ export interface ChatSidebarForObservableQueriesProps<TMessage extends ChatMessage, TTopic extends ChatTopic, TTopicsQuery extends IObservableQueryFor<TTopic[], TTopicsArguments>, TMessagesQuery extends IObservableQueryFor<TMessage[], TMessagesArguments>, TTopicsArguments extends object = object, TMessagesArguments extends object = object> extends Omit<ChatSidebarProps<TMessage, TTopic>, 'topics' | 'messages' | 'selectedTopicId' | 'topicsStatus' | 'messagesStatus'> {
18
18
  /** The observable query delivering the topics. */
19
19
  topicsQuery: Constructor<TTopicsQuery>;
20
20
  /** Arguments for the topics query, when it takes any. */
@@ -1,21 +1,69 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { useState } from 'react';
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { useState, useCallback, useEffect, useLayoutEffect } from 'react';
3
3
  import { useObservableQuery } from '@cratis/arc.react/queries';
4
+ import { QueryStatus } from '../QueryStatus/QueryStatus.js';
5
+ import { resolveQueryStatus } from '../QueryStatus/resolveQueryStatus.js';
4
6
  import { ChatSidebar } from './ChatSidebar.js';
7
+ import { chatIdentifierString } from './ChatIdentifier.js';
8
+ import { ChatStatus } from './ChatStatus.js';
5
9
 
10
+ const chatStatusByQueryStatus = {
11
+ [QueryStatus.Ready]: ChatStatus.Ready,
12
+ [QueryStatus.Loading]: ChatStatus.Loading,
13
+ [QueryStatus.Failed]: ChatStatus.Failed,
14
+ [QueryStatus.Unauthorized]: ChatStatus.Unauthorized,
15
+ };
16
+ const resolveChatStatus = (result) => chatStatusByQueryStatus[resolveQueryStatus(result)];
17
+ const useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;
18
+ const serializeArguments = (args) => {
19
+ if (!args || Object.keys(args).length === 0)
20
+ return '';
21
+ const sorted = Object.keys(args).sort().reduce((entries, key) => {
22
+ entries[key] = args[key];
23
+ return entries;
24
+ }, {});
25
+ return JSON.stringify(sorted);
26
+ };
27
+ const KeyedQuerySubscriber = ({ query, args, queryKey, onResult, }) => {
28
+ const [result] = useObservableQuery(query, args);
29
+ useIsomorphicLayoutEffect(() => { onResult(queryKey, result); }, [queryKey, result, onResult]);
30
+ return null;
31
+ };
6
32
  const ChatSidebarForObservableQueries = ({ topicsQuery, topicsArguments, messagesQuery, messagesArguments, onTopicSelected, ...sidebar }) => {
7
33
  const [selectedId, setSelectedId] = useState(undefined);
8
- const [topicsResult] = useObservableQuery(topicsQuery, topicsArguments);
34
+ const [topicsSnapshot, setTopicsSnapshot] = useState();
35
+ const onTopicsResult = useCallback((queryKey, result) => {
36
+ const topics = Array.isArray(result.data) ? result.data : [];
37
+ const status = resolveChatStatus(result);
38
+ setTopicsSnapshot((previous) => {
39
+ if (previous?.queryKey === queryKey && previous.status === status &&
40
+ (previous.topics === topics || previous.topics.length === 0 && topics.length === 0)) {
41
+ return previous;
42
+ }
43
+ return { queryKey, topics, status };
44
+ });
45
+ }, []);
46
+ const [messagesSnapshot, setMessagesSnapshot] = useState();
47
+ const onMessagesResult = useCallback((queryKey, result) => {
48
+ setMessagesSnapshot({
49
+ queryKey,
50
+ messages: Array.isArray(result.data) ? result.data : [],
51
+ status: resolveChatStatus(result),
52
+ });
53
+ }, []);
54
+ const topicsQueryKey = serializeArguments(topicsArguments);
55
+ const currentTopics = topicsQueryKey === topicsSnapshot?.queryKey ? topicsSnapshot : undefined;
9
56
  const messagesQueryArguments = messagesArguments(selectedId);
10
- const [messagesResult] = useObservableQuery(messagesQuery, messagesQueryArguments, undefined, selectedId !== undefined && messagesQueryArguments !== undefined);
11
- const topics = Array.isArray(topicsResult.data) ? topicsResult.data : [];
12
- const messages = selectedId !== undefined && Array.isArray(messagesResult.data)
13
- ? messagesResult.data
14
- : [];
15
- return (jsx(ChatSidebar, { ...sidebar, topics: topics, messages: messages, selectedTopicId: selectedId ?? null, onTopicSelected: (topicId, topic) => {
16
- setSelectedId(topicId);
17
- onTopicSelected?.(topicId, topic);
18
- } }));
57
+ const messagesQueryKey = selectedId !== undefined && messagesQueryArguments !== undefined
58
+ ? JSON.stringify([chatIdentifierString(selectedId), serializeArguments(messagesQueryArguments)])
59
+ : undefined;
60
+ const currentMessages = messagesQueryKey === messagesSnapshot?.queryKey ? messagesSnapshot : undefined;
61
+ return (jsxs(Fragment, { children: [jsx(KeyedQuerySubscriber, { query: topicsQuery, args: topicsArguments, queryKey: topicsQueryKey, onResult: onTopicsResult }, topicsQueryKey), messagesQueryKey !== undefined && messagesQueryArguments !== undefined && (jsx(KeyedQuerySubscriber, { query: messagesQuery, args: messagesQueryArguments, queryKey: messagesQueryKey, onResult: onMessagesResult }, messagesQueryKey)), jsx(ChatSidebar, { ...sidebar, topics: currentTopics?.topics ?? [], messages: currentMessages?.messages ?? [], topicsStatus: currentTopics?.status ?? ChatStatus.Loading, messagesStatus: messagesQueryKey === undefined
62
+ ? ChatStatus.Ready
63
+ : currentMessages?.status ?? ChatStatus.Loading, selectedTopicId: selectedId ?? null, onTopicSelected: (topicId, topic) => {
64
+ setSelectedId(topicId);
65
+ onTopicSelected?.(topicId, topic);
66
+ } })] }));
19
67
  };
20
68
 
21
69
  export { ChatSidebarForObservableQueries };
@@ -1 +1 @@
1
- {"version":3,"file":"ChatSidebarForObservableQueries.js","sources":["../../../Chat/ChatSidebarForObservableQueries.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;MA2Da,+BAA+B,GAAG,CAO7C,EACE,WAAW,EACX,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,GAAG,OAAO,EAQb,KAAI;IACD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAA6B,SAAS,CAAC;IAEnF,MAAM,CAAC,YAAY,CAAC,GAAG,kBAAkB,CACrC,WAAW,EACX,eAAe,CAClB;AAED,IAAA,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,UAAU,CAAC;IAC5D,MAAM,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAKvC,aAAa,EACb,sBAAsB,EACtB,SAAS,EACT,UAAU,KAAK,SAAS,IAAI,sBAAsB,KAAK,SAAS,CACnE;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,EAAE;AACxE,IAAA,MAAM,QAAQ,GACV,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI;UACvD,cAAc,CAAC;UACf,EAAE;IAEZ,QACIA,GAAA,CAAC,WAAW,EAAA,EAAA,GACJ,OAAO,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,UAAU,IAAI,IAAI,EACnC,eAAe,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;YAChC,aAAa,CAAC,OAAO,CAAC;AACtB,YAAA,eAAe,GAAG,OAAO,EAAE,KAAK,CAAC;QACrC,CAAC,EAAA,CACH;AAEV;;"}
1
+ {"version":3,"file":"ChatSidebarForObservableQueries.js","sources":["../../../Chat/ChatSidebarForObservableQueries.tsx"],"sourcesContent":[null],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /** Display state of a chat topic list or conversation. */
2
+ export declare enum ChatStatus {
3
+ /** Shows topics or messages, or the empty state when nothing is pending. */
4
+ Ready = "ready",
5
+ /** Shows a loading message without data, or retains existing content during a refetch. */
6
+ Loading = "loading",
7
+ /** Shows a failure alert, alongside any existing topics or messages kept after a failure. */
8
+ Failed = "failed",
9
+ /** Shows an access-denied message instead of existing content. */
10
+ Unauthorized = "unauthorized"
11
+ }
12
+ //# sourceMappingURL=ChatStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatStatus.d.ts","sourceRoot":"","sources":["../../../Chat/ChatStatus.ts"],"names":[],"mappings":"AAGA,0DAA0D;AAC1D,oBAAY,UAAU;IAClB,4EAA4E;IAC5E,KAAK,UAAU;IACf,0FAA0F;IAC1F,OAAO,YAAY;IACnB,6FAA6F;IAC7F,MAAM,WAAW;IACjB,kEAAkE;IAClE,YAAY,iBAAiB;CAChC"}
@@ -0,0 +1,10 @@
1
+ var ChatStatus;
2
+ (function (ChatStatus) {
3
+ ChatStatus["Ready"] = "ready";
4
+ ChatStatus["Loading"] = "loading";
5
+ ChatStatus["Failed"] = "failed";
6
+ ChatStatus["Unauthorized"] = "unauthorized";
7
+ })(ChatStatus || (ChatStatus = {}));
8
+
9
+ export { ChatStatus };
10
+ //# sourceMappingURL=ChatStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatStatus.js","sources":["../../../Chat/ChatStatus.ts"],"sourcesContent":[null],"names":[],"mappings":"IAIY;AAAZ,CAAA,UAAY,UAAU,EAAA;AAElB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AAEf,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AAEnB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAEjB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AACjC,CAAC,EATW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;"}
@@ -3,6 +3,7 @@ import { type BuildAvatarUrlParams } from './Kit/Avatar/index.js';
3
3
  import type { ChatAuthor } from './ChatAuthor.js';
4
4
  import { type ChatIdentifier } from './ChatIdentifier.js';
5
5
  import type { ChatTopic } from './ChatTopic.js';
6
+ import { ChatStatus } from './ChatStatus.js';
6
7
  import { type RelativeTimestampLabels } from './relativeTimestamp.js';
7
8
  /** Overrides for every label the {@link ChatTopicList} renders. Any field left unset falls back
8
9
  * to a literal English default. */
@@ -13,6 +14,12 @@ export interface ChatTopicListLabels {
13
14
  unnamedTopic?: string;
14
15
  /** The started-by line under a topic's name. `{name}` is substituted. Defaults to `'Started by {name}'`. */
15
16
  startedBy?: string;
17
+ /** Shown while loading without topics. Defaults to `'Loading topics…'`. */
18
+ loading?: string;
19
+ /** Shown when loading topics fails, alongside any existing topics. Defaults to `'Could not load topics.'`. */
20
+ failed?: string;
21
+ /** Shown when access is denied; replaces any existing topics. Defaults to `'You are not authorized to view these topics.'`. */
22
+ unauthorized?: string;
16
23
  /** Shown when there are no topics yet. Defaults to `'No topics yet. Start the first one!'`. */
17
24
  empty?: string;
18
25
  /** Overrides for the relative last-activity timestamps. */
@@ -28,6 +35,8 @@ export interface ChatTopicListProps<TTopic extends ChatTopic = ChatTopic> {
28
35
  * the array a live (observable) query delivers and the list re-renders as it changes.
29
36
  */
30
37
  topics: TTopic[];
38
+ /** Query display state. Defaults to {@link ChatStatus.Ready}; existing topics remain visible on loading or failure, and unauthorized disables starting a topic. */
39
+ status?: ChatStatus;
31
40
  /**
32
41
  * Invoked when a topic is picked from the list.
33
42
  * @param topic The topic that was picked.
@@ -73,4 +82,4 @@ export interface ChatTopicListProps<TTopic extends ChatTopic = ChatTopic> {
73
82
  * host-side auto-naming, the name arrives through the data once the host has produced it, and
74
83
  * the placeholder simply stops being needed.
75
84
  */
76
- export declare const ChatTopicList: <TTopic extends ChatTopic = ChatTopic>({ topics, onOpen, onStart, authorOf, renderAvatar, isTopicUnnamed, buildAvatarUrl, labels, className, }: ChatTopicListProps<TTopic>) => import("react").JSX.Element;
85
+ export declare const ChatTopicList: <TTopic extends ChatTopic = ChatTopic>({ topics, status, onOpen, onStart, authorOf, renderAvatar, isTopicUnnamed, buildAvatarUrl, labels, className, }: ChatTopicListProps<TTopic>) => import("react").JSX.Element;
@@ -2,18 +2,19 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { PersonAvatarCircle } from './Kit/Avatar/PersonAvatarCircle.js';
3
3
  import { ChatAuthorKind } from './Kit/ChatAuthorKind.js';
4
4
  import { chatIdentifierString } from './ChatIdentifier.js';
5
+ import { ChatStatus } from './ChatStatus.js';
5
6
  import { isTopicUnnamed } from './isTopicUnnamed.js';
6
7
  import { relativeTimestamp } from './relativeTimestamp.js';
7
8
  import { topicsByActivity } from './topicsByActivity.js';
8
9
 
9
10
  const PlusIcon = () => (jsxs("svg", { width: '14', height: '14', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '2.5', "aria-hidden": 'true', children: [jsx("line", { x1: '12', y1: '5', x2: '12', y2: '19' }), jsx("line", { x1: '5', y1: '12', x2: '19', y2: '12' })] }));
10
- const ChatTopicList = ({ topics, onOpen, onStart, authorOf, renderAvatar, isTopicUnnamed: isTopicUnnamed$1, buildAvatarUrl, labels, className, }) => {
11
+ const ChatTopicList = ({ topics, status = ChatStatus.Ready, onOpen, onStart, authorOf, renderAvatar, isTopicUnnamed: isTopicUnnamed$1, buildAvatarUrl, labels, className, }) => {
11
12
  const unnamed = isTopicUnnamed$1 ?? isTopicUnnamed;
12
13
  const authorFor = (authorId) => authorOf?.(authorId) ?? {
13
14
  name: chatIdentifierString(authorId),
14
15
  kind: ChatAuthorKind.User,
15
16
  };
16
- return (jsxs("div", { className: `cratis-chat-topics${className ? ` ${className}` : ''}`, children: [onStart && (jsxs("button", { type: 'button', className: 'cratis-chat-topics__start', onClick: onStart, children: [jsx(PlusIcon, {}), jsx("span", { children: labels?.newTopic ?? 'New topic' })] })), topics.length === 0 && (jsx("p", { className: 'cratis-chat-topics__empty', children: labels?.empty ?? 'No topics yet. Start the first one!' })), jsx("ul", { className: 'cratis-chat-topics__list', children: topicsByActivity(topics).map((topic) => {
17
+ return (jsxs("div", { className: `cratis-chat-topics${className ? ` ${className}` : ''}`, "aria-busy": status === ChatStatus.Loading && topics.length > 0 || undefined, children: [onStart && (jsxs("button", { type: 'button', className: 'cratis-chat-topics__start', disabled: status === ChatStatus.Unauthorized, onClick: onStart, children: [jsx(PlusIcon, {}), jsx("span", { children: labels?.newTopic ?? 'New topic' })] })), (topics.length === 0 || status === ChatStatus.Failed || status === ChatStatus.Unauthorized) && (jsx("p", { className: 'cratis-chat-topics__empty', children: status === ChatStatus.Loading ? (jsx("span", { role: 'status', children: labels?.loading ?? 'Loading topics…' }, status)) : status === ChatStatus.Failed ? (jsx("span", { role: 'alert', children: labels?.failed ?? 'Could not load topics.' }, status)) : status === ChatStatus.Unauthorized ? (jsx("span", { role: 'alert', children: labels?.unauthorized ?? 'You are not authorized to view these topics.' }, status)) : (labels?.empty ?? 'No topics yet. Start the first one!') })), jsx("ul", { className: 'cratis-chat-topics__list', children: status !== ChatStatus.Unauthorized && topicsByActivity(topics).map((topic) => {
17
18
  const starter = topic.startedBy === undefined
18
19
  ? undefined
19
20
  : authorFor(topic.startedBy);
@@ -1 +1 @@
1
- {"version":3,"file":"ChatTopicList.js","sources":["../../../Chat/ChatTopicList.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","isTopicUnnamed","defaultIsTopicUnnamed"],"mappings":"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"}
1
+ {"version":3,"file":"ChatTopicList.js","sources":["../../../Chat/ChatTopicList.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","isTopicUnnamed","defaultIsTopicUnnamed"],"mappings":";;;;;;;;;AAcA,MAAM,QAAQ,GAAG,OACbA,IAAA,CAAA,KAAA,EAAA,EACI,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EAAA,aAAA,EACL,MAAM,aAElBC,GAAA,CAAA,MAAA,EAAA,EAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAA,CAAG,EACvCA,GAAA,CAAA,MAAA,EAAA,EAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAA,CAAG,CAAA,EAAA,CACrC,CACT;AAiGM,MAAM,aAAa,GAAG,CAAuC,EAChE,MAAM,EACN,MAAM,GAAG,UAAU,CAAC,KAAK,EACzB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,YAAY,kBACZC,gBAAc,EACd,cAAc,EACd,MAAM,EACN,SAAS,GACgB,KAAI;AAC7B,IAAA,MAAM,OAAO,GAAGA,gBAAc,IAAIC,cAAqB;AAEvD,IAAA,MAAM,SAAS,GAAG,CAAC,QAAwB,KACvC,QAAQ,GAAG,QAAQ,CAAC,IAAI;AACpB,QAAA,IAAI,EAAE,oBAAoB,CAAC,QAAQ,CAAC;QACpC,IAAI,EAAE,cAAc,CAAC,IAAI;KAC5B;IAEL,QACIH,cAAK,SAAS,EAAE,qBAAqB,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,EAAE,GAAG,EAAE,CAAA,CAAE,eAAa,MAAM,KAAK,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,EAAA,QAAA,EAAA,CAC9I,OAAO,KACJA,IAAA,CAAA,QAAA,EAAA,EACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,2BAA2B,EACrC,QAAQ,EAAE,MAAM,KAAK,UAAU,CAAC,YAAY,EAC5C,OAAO,EAAE,OAAO,EAAA,QAAA,EAAA,CAEhBC,IAAC,QAAQ,EAAA,EAAA,CAAG,EACZA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,MAAM,EAAE,QAAQ,IAAI,WAAW,GAAQ,CAAA,EAAA,CACzC,CACZ,EACA,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,UAAU,CAAC,MAAM,IAAI,MAAM,KAAK,UAAU,CAAC,YAAY,MACvFA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,2BAA2B,YACnC,MAAM,KAAK,UAAU,CAAC,OAAO,IAC1BA,cAAmB,IAAI,EAAC,QAAQ,EAAA,QAAA,EAAE,MAAM,EAAE,OAAO,IAAI,iBAAiB,IAA3D,MAAM,CAA6D,IAC9E,MAAM,KAAK,UAAU,CAAC,MAAM,IAC5BA,cAAmB,IAAI,EAAC,OAAO,EAAA,QAAA,EAAE,MAAM,EAAE,MAAM,IAAI,wBAAwB,IAAhE,MAAM,CAAkE,IACnF,MAAM,KAAK,UAAU,CAAC,YAAY,IAClCA,cAAmB,IAAI,EAAC,OAAO,EAAA,QAAA,EAAE,MAAM,EAAE,YAAY,IAAI,8CAA8C,IAA5F,MAAM,CAA8F,KAE/G,MAAM,EAAE,KAAK,IAAI,qCAAqC,CACzD,EAAA,CACD,CACP,EACDA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,0BAA0B,EAAA,QAAA,EACnC,MAAM,KAAK,UAAU,CAAC,YAAY,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AAC1E,oBAAA,MAAM,OAAO,GACT,KAAK,CAAC,SAAS,KAAK;AAChB,0BAAE;AACF,0BAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;AACpC,oBAAA,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;oBAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO;oBAEpD,QACIA,GAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EACID,IAAA,CAAA,QAAA,EAAA,EACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,2BAA2B,EACrC,OAAO,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAE3B,KAAK,CAAC,SAAS,KAAK,SAAS;oCAC1B,OAAO;qCACN,YAAY,IACT,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,KAEtCC,GAAA,CAAC,kBAAkB,EAAA,EACf,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,EAC7C,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK,EACrC,IAAI,EAAE,EAAE,EACR,SAAS,EACL,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC;AAC5B,8CAAE;AACF,8CAAE,OAAO,EAEjB,OAAO,EAAE,OAAO,CAAC,aAAa,EAC9B,cAAc,EAAE,cAAc,EAAA,CAChC,CACL,CAAC,EACND,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,6BAA6B,aACzCC,GAAA,CAAA,MAAA,EAAA,EACI,SAAS,EAAE,CAAA,wBAAA,EAA2B,SAAS,GAAG,oCAAoC,GAAG,EAAE,CAAA,CAAE,YAE5F;AACG,mDAAG,MAAM,EAAE,YAAY,IAAI,WAAW;AACtC,kDAAE,KAAK,CAAC,IAAI,GACb,EACN,OAAO,KACJA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,gCAAgC,YAC3C,CACG,MAAM,EAAE,SAAS,IAAI,mBAAmB,EAC1C,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,EAAA,CAC9B,CACV,CAAA,EAAA,CACE,EACN,QAAQ,KAAK,SAAS,KACnBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,8BAA8B,EAAA,QAAA,EACzC,iBAAiB,CACd,QAAQ,EACR,IAAI,IAAI,EAAE,EACV,MAAM,EAAE,UAAU,CACrB,EAAA,CACE,CACV,IACI,EAAA,EAlDJ,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAmDlC;AAEb,gBAAA,CAAC,CAAC,EAAA,CACD,CAAA,EAAA,CACH;AAEd;;"}
@@ -41,6 +41,8 @@ export interface ChatComposerProps {
41
41
  onSend: (text: string, mentions: MentionCandidate[]) => void;
42
42
  /** Whether to take focus when mounted. */
43
43
  autoFocus?: boolean;
44
+ /** Disables drafting, emoji insertion, and sending. Defaults to false. */
45
+ disabled?: boolean;
44
46
  /** Builds the avatar image URL for mention candidates. Omit to always show initials. */
45
47
  buildAvatarUrl?: (params: BuildAvatarUrlParams) => string;
46
48
  /** Overrides for the composer's labels. Unset fields fall back to literal English defaults. */