Skip to content

Commit 95b277d

Browse files
committed
feat: add MessageBouncePrompt styling
1 parent 1b6e710 commit 95b277d

8 files changed

Lines changed: 67 additions & 23 deletions

File tree

examples/vite/src/stream-imports-layout.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
@use 'stream-chat-react/dist/scss/v2/Location/Location-layout';
2929
//@use 'stream-chat-react/dist/scss/v2/Message/Message-layout';
3030
//@use 'stream-chat-react/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout';
31-
@use 'stream-chat-react/dist/scss/v2/MessageBouncePrompt/MessageBouncePrompt-layout';
31+
//@use 'stream-chat-react/dist/scss/v2/MessageBouncePrompt/MessageBouncePrompt-layout';
3232
//@use 'stream-chat-react/dist/scss/v2/MessageInput/MessageInput-layout'; // X
3333
@use 'stream-chat-react/dist/scss/v2/MessageList/MessageList-layout';
3434
@use 'stream-chat-react/dist/scss/v2/MessageList/VirtualizedMessageList-layout';

examples/vite/src/stream-imports-theme.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
@use 'stream-chat-react/dist/scss/v2/Location/Location-theme';
2424
//@use 'stream-chat-react/dist/scss/v2/Message/Message-theme';
2525
//@use 'stream-chat-react/dist/scss/v2/MessageActionsBox/MessageActionsBox-theme';
26-
@use 'stream-chat-react/dist/scss/v2/MessageBouncePrompt/MessageBouncePrompt-theme';
26+
//@use 'stream-chat-react/dist/scss/v2/MessageBouncePrompt/MessageBouncePrompt-theme';
2727
@use 'stream-chat-react/dist/scss/v2/MessageList/MessageList-theme';
2828
@use 'stream-chat-react/dist/scss/v2/MessageList/VirtualizedMessageList-theme';
2929
// @use 'stream-chat-react/dist/scss/v2/MessageReactions/MessageReactions-theme';

src/components/MessageActions/hooks/useBaseMessageActionSetFilter.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const useBaseMessageActionSetFilter = (
4343

4444
// filter out all actions if any of these are true
4545
if (
46+
isBounced ||
4647
isInitialMessage || // not sure whether this thing even works anymore
4748
!message.type ||
4849
message.type === 'system' ||
@@ -57,7 +58,7 @@ export const useBaseMessageActionSetFilter = (
5758
return false;
5859

5960
// failed message menu has special treatment
60-
if (isBounced || message.error) {
61+
if (message.error) {
6162
return (
6263
(type === 'resendMessage' && canSendMessage && (allowRetry || isBounced)) ||
6364
(type === 'edit' && canEdit && isBounced) ||

src/components/MessageBounce/MessageBouncePrompt.tsx

Lines changed: 48 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ import { useMessageBounceContext, useTranslationContext } from '../../context';
44
import type { MouseEventHandler, PropsWithChildren } from 'react';
55

66
import type { ModalProps } from '../Modal';
7+
import { Button } from '../Button';
8+
import clsx from 'clsx';
9+
import { IconExclamationCircle } from '../Icons';
10+
import { Prompt } from '../Dialog/base/Prompt';
711

812
export type MessageBouncePromptProps = PropsWithChildren<Pick<ModalProps, 'onClose'>>;
913

@@ -22,34 +26,58 @@ export function MessageBouncePrompt({ children, onClose }: MessageBouncePromptPr
2226
}
2327

2428
return (
25-
<div className='str-chat__message-bounce-prompt' data-testid='message-bounce-prompt'>
26-
<div className='str-chat__message-bounce-prompt-header'>
27-
{children ?? t('This message did not meet our content guidelines')}
28-
</div>
29-
<div className='str-chat__message-bounce-actions'>
30-
<button
31-
className='str-chat__message-bounce-edit'
29+
<Prompt.Root
30+
className='str-chat__message-bounce-prompt'
31+
data-testid='message-bounce-prompt'
32+
>
33+
<Prompt.Header
34+
className='str-chat__message-bounce-prompt-header'
35+
Icon={IconExclamationCircle}
36+
title={
37+
!children ? t('This message did not meet our content guidelines') : undefined
38+
}
39+
>
40+
{children}
41+
</Prompt.Header>
42+
<Prompt.Actions className={'str-chat__message-bounce-actions'}>
43+
<Button
44+
className={clsx(
45+
'str-chat__message-bounce-delete',
46+
'str-chat__button--outline',
47+
'str-chat__button--destructive',
48+
'str-chat__button--size-md',
49+
)}
50+
data-testid='message-bounce-delete'
51+
onClick={createHandler(handleDelete)}
52+
>
53+
{t('Delete')}
54+
</Button>
55+
<Button
56+
className={clsx(
57+
'str-chat__message-bounce-edit',
58+
'str-chat__button--outline',
59+
'str-chat__button--secondary',
60+
'str-chat__button--size-md',
61+
)}
3262
data-testid='message-bounce-edit'
3363
onClick={createHandler(handleEdit)}
3464
type='button'
3565
>
3666
{t('Edit Message')}
37-
</button>
38-
<button
39-
className='str-chat__message-bounce-send'
67+
</Button>
68+
<Button
69+
className={clsx(
70+
'str-chat__message-bounce-send',
71+
'str-chat__button--outline',
72+
'str-chat__button--secondary',
73+
'str-chat__button--size-md',
74+
)}
4075
data-testid='message-bounce-send'
4176
onClick={createHandler(handleRetry)}
4277
>
4378
{t('Send Anyway')}
44-
</button>
45-
<button
46-
className='str-chat__message-bounce-delete'
47-
data-testid='message-bounce-delete'
48-
onClick={createHandler(handleDelete)}
49-
>
50-
{t('Delete')}
51-
</button>
52-
</div>
53-
</div>
79+
</Button>
80+
</Prompt.Actions>
81+
</Prompt.Root>
5482
);
5583
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@use '../../../styling/utils';
2+
3+
.str-chat__message-bounce-prompt {
4+
max-width: 300px;
5+
6+
.str-chat__prompt-header svg.str-chat__icon--exclamation-circle {
7+
color: var(--text-tertiary);
8+
}
9+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@use "MessageBouncePrompt";

src/styling/_global-theme-variables.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@
4141
var(--typography-font-size-xs) / var(--typography-line-height-tight)
4242
var(--str-chat__font-family);
4343

44+
--str-chat__caption-default-text: normal var(--typography-font-weight-regular)
45+
var(--typography-font-size-sm) / var(--typography-line-height-normal)
46+
var(--str-chat__font-family);
47+
4448
--str-chat__caption-emphasis-text: normal var(--typography-font-weight-semi-bold)
4549
var(--typography-font-size-sm) / var(--typography-line-height-tight)
4650
var(--str-chat__font-family);

src/styling/index.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
@use '../components/MediaRecorder/AudioRecorder/styling' as AudioRecorder;
3434
@use '../components/Message/styling' as Message;
3535
@use '../components/MessageActions/styling' as MessageActions;
36+
@use '../components/MessageBounce/styling' as MessageBounce;
3637
@use '../components/MessageInput/styling' as MessageComposer;
3738
@use '../components/Poll/styling' as Poll;
3839
@use '../components/Reactions/styling/ReactionList' as ReactionList;

0 commit comments

Comments
 (0)