botframework-webchat-fluent-theme 4.18.1-main.20250528.43d5b5c → 4.18.1-main.20250703.da78356

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 (41) hide show
  1. package/dist/botframework-webchat-fluent-theme.css.map +1 -1
  2. package/dist/botframework-webchat-fluent-theme.development.css.map +1 -1
  3. package/dist/botframework-webchat-fluent-theme.development.js +8 -8
  4. package/dist/botframework-webchat-fluent-theme.development.js.map +1 -1
  5. package/dist/botframework-webchat-fluent-theme.js +1 -1
  6. package/dist/botframework-webchat-fluent-theme.js.map +1 -1
  7. package/dist/botframework-webchat-fluent-theme.mjs +1 -1
  8. package/dist/botframework-webchat-fluent-theme.mjs.map +1 -1
  9. package/dist/botframework-webchat-fluent-theme.production.min.css.map +1 -1
  10. package/dist/botframework-webchat-fluent-theme.production.min.js +8 -8
  11. package/dist/botframework-webchat-fluent-theme.production.min.js.map +1 -1
  12. package/package.json +6 -6
  13. package/src/components/activity/ActivityDecorator.module.css +12 -2
  14. package/src/components/dropZone/DropZone.tsx +2 -2
  15. package/src/components/icon/FluentIcon.module.css +53 -0
  16. package/src/components/icon/FluentIcon.tsx +51 -0
  17. package/src/components/icon/index.ts +1 -0
  18. package/src/components/preChatActivity/PreChatMessageActivity.module.css +1 -0
  19. package/src/components/preChatActivity/StarterPromptsCardAction.module.css +1 -1
  20. package/src/components/preChatActivity/StarterPromptsCardAction.tsx +7 -4
  21. package/src/components/sendBox/AddAttachmentButton.tsx +3 -2
  22. package/src/components/sendBox/SendBox.module.css +69 -5
  23. package/src/components/sendBox/SendBox.tsx +18 -14
  24. package/src/components/sendBox/TelephoneKeypadToolbarButton.tsx +2 -2
  25. package/src/components/sendBox/Toolbar.module.css +2 -0
  26. package/src/components/suggestedActions/SuggestedAction.tsx +2 -2
  27. package/src/components/suggestedActions/SuggestedActions.tsx +2 -2
  28. package/src/components/telephoneKeypad/private/TelephoneKeypad.tsx +4 -4
  29. package/src/components/theme/Theme.module.css +25 -22
  30. package/src/components/typingIndicator/SlidingDotsTypingIndicator.module.css +1 -1
  31. package/src/private/FluentThemeProvider.tsx +6 -10
  32. package/src/components/sendBox/Attachments.module.css +0 -7
  33. package/src/components/sendBox/Attachments.tsx +0 -35
  34. package/src/components/sendBox/TextArea.module.css +0 -82
  35. package/src/components/sendBox/TextArea.tsx +0 -111
  36. package/src/icons/AddDocumentIcon.tsx +0 -13
  37. package/src/icons/AttachmentIcon.tsx +0 -13
  38. package/src/icons/InfoSmallIcon.tsx +0 -13
  39. package/src/icons/SendIcon.tsx +0 -13
  40. package/src/icons/TelephoneKeypadIcon.tsx +0 -13
  41. package/src/icons/index.ts +0 -5
@@ -172,7 +172,7 @@
172
172
  --webchat-strokeWidthThicker: var(--strokeWidthThicker, 3px);
173
173
 
174
174
  /* https://github.com/microsoft/fluentui/blob/master/packages/tokens/src/global/durations.ts */
175
- --webchat-durationUltraFast: var(--durationUltraFast, 0);
175
+ --webchat-durationUltraFast: var(--durationUltraFast, 50ms);
176
176
  --webchat-durationNormal: var(--durationNormal, 200ms);
177
177
  --webchat-durationUltraSlow: var(--durationUltraSlow, 500ms);
178
178
 
@@ -224,11 +224,12 @@
224
224
  }
225
225
 
226
226
  /* Scrollbars */
227
+ :global(.webchat-fluent).theme :global(.send-box-attachment-bar.send-box-attachment-bar--as-list-item),
228
+ :global(.webchat-fluent).theme :global(.text-area.text-area--scroll),
227
229
  :global(.webchat-fluent).theme :global(.webchat__basic-transcript .webchat__basic-transcript__scrollable),
228
- :global(.webchat-fluent).theme :global(.webchat__view-code-dialog__code-body),
229
230
  :global(.webchat-fluent).theme :global(.webchat__render-markdown [data-math-type='block']),
230
- :global(.webchat-fluent).theme :global(.webchat__feedback-form-text-area-input--scroll),
231
- :global(.webchat-fluent).theme :global(.webchat__view-code-dialog__body) {
231
+ :global(.webchat-fluent).theme :global(.webchat__view-code-dialog__body),
232
+ :global(.webchat-fluent).theme :global(.webchat__view-code-dialog__code-body) {
232
233
  /* Edge uses -webkit-scrollbar if scrollbar-* is not set */
233
234
  scrollbar-color: unset;
234
235
  scrollbar-width: unset;
@@ -251,7 +252,12 @@
251
252
  width: var(--webchat-spacingVerticalMNudge);
252
253
  }
253
254
 
254
- &:hover::-webkit-scrollbar-thumb {
255
+ &::-webkit-scrollbar-thumb {
256
+ background-color: transparent;
257
+ }
258
+
259
+ &:hover::-webkit-scrollbar-thumb,
260
+ &:has(> :global(.text-area-input:focus))::-webkit-scrollbar-thumb {
255
261
  background-clip: padding-box;
256
262
  background-color: var(--webchat-colorNeutralForeground5);
257
263
  border-radius: 10px;
@@ -389,8 +395,8 @@
389
395
  border-color: var(--webchat-colorStrokeFocus2);
390
396
  }
391
397
 
392
- :global(.webchat__modal-dialog__close-button-image) {
393
- fill: currentColor;
398
+ :global(.webchat__modal-dialog__close-button-icon) {
399
+ color: currentColor;
394
400
  }
395
401
  }
396
402
 
@@ -414,7 +420,7 @@
414
420
  transition: background-color var(--webchat-durationNormal) var(--webchat-curveDecelerateMid);
415
421
 
416
422
  :global(.webchat__code-block-copy-button__icon) {
417
- background-color: currentColor;
423
+ --webchat__component-icon--color: currentColor;
418
424
  }
419
425
 
420
426
  &:hover {
@@ -572,6 +578,8 @@
572
578
  :global(.webchat__activity-button__icon) {
573
579
  height: 20px;
574
580
  width: 20px;
581
+
582
+ --webchat__component-icon--color: var(--webchat-colorNeutralForeground2);
575
583
  }
576
584
  }
577
585
 
@@ -624,35 +632,31 @@
624
632
  }
625
633
 
626
634
  /* Feedback Form */
627
- /* TODO: Need review */
628
- :global(.webchat-fluent).theme :global(.webchat__feedback-form) {
629
- :global(.webchat__feedback-form__form-header) {
635
+ :global(.webchat-fluent).theme :global(.feedback-form) {
636
+ :global(.feedback-form__form-header) {
630
637
  color: var(--webchat-colorNeutralForeground1);
631
- font-family: var(--webchat-fontFamilyBase);
632
638
  font-size: var(--webchat-fontSizeBase300);
633
639
  font-weight: var(--webchat-fontWeightRegular);
634
640
  line-height: var(--webchat-lineHeightBase300);
635
641
  }
636
642
 
637
- :global(.webchat__feedback-form__form) {
643
+ :global(.feedback-form__form) {
638
644
  gap: var(--webchat-spacingVerticalXS);
639
645
  }
640
646
 
641
- :global(.webchat__feedback-form__form-footer) {
647
+ :global(.feedback-form__form-footer) {
642
648
  color: var(--webchat-colorNeutralForeground1);
643
- font-family: var(--webchat-fontFamilyBase);
644
649
  font-size: var(--webchat-fontSizeBase100);
645
650
  font-weight: var(--webchat-fontWeightRegular);
646
651
  line-height: var(--webchat-lineHeightBase200);
647
652
  }
648
653
 
649
- :global(.webchat__feedback-form__submit-button) {
654
+ :global(.feedback-form__submit-button) {
650
655
  background-color: var(--webchat-colorBrandBackground);
651
656
  border: var(--webchat-strokeWidthThin) solid var(--webchat-colorBrandBackground);
652
657
  border-radius: var(--webchat-borderRadiusMedium);
653
658
  color: var(--webchat-colorNeutralForegroundOnBrand);
654
659
  cursor: pointer;
655
- font-family: var(--webchat-fontFamilyBase);
656
660
  font-size: var(--webchat-fontSizeBase300);
657
661
  padding: var(--webchat-spacingVerticalNone) var(--webchat-spacingHorizontalS);
658
662
  transition: background-color var(--webchat-durationNormal) var(--webchat-curveDecelerateMid);
@@ -673,13 +677,12 @@
673
677
  }
674
678
  }
675
679
 
676
- :global(.webchat__feedback-form__cancel-button) {
680
+ :global(.feedback-form__cancel-button) {
677
681
  background-color: var(--webchat-colorNeutralBackground1);
678
682
  border: var(--webchat-strokeWidthThin) solid var(--webchat-colorNeutralStroke1);
679
683
  border-radius: var(--webchat-borderRadiusMedium);
680
684
  color: var(--webchat-colorNeutralForeground1);
681
685
  cursor: pointer;
682
- font-family: var(--webchat-fontFamilyBase);
683
686
  font-size: var(--webchat-fontSizeBase300);
684
687
  padding: var(--webchat-spacingVerticalNone) var(--webchat-spacingHorizontalS);
685
688
  transition: background-color var(--webchat-durationNormal) var(--webchat-curveDecelerateMid);
@@ -687,6 +690,7 @@
687
690
  &:hover {
688
691
  background-color: var(--webchat-colorNeutralBackground1Hover);
689
692
  border: var(--webchat-strokeWidthThin) solid var(--webchat-colorNeutralStroke1Hover);
693
+ color: currentColor;
690
694
  }
691
695
 
692
696
  &:focus-visible {
@@ -700,21 +704,20 @@
700
704
  }
701
705
  }
702
706
 
703
- :global(.webchat__feedback-form-text-area) {
707
+ :global(.feedback-form__text-box) {
704
708
  background-color: var(--webchat-colorNeutralBackground1);
705
709
  border-radius: var(--webchat-borderRadiusMedium);
706
710
  border: var(--webchat-strokeWidthThin) solid var(--webchat-colorNeutralStroke1);
707
- font-family: var(--webchat-fontFamilyBase);
708
711
  font-size: var(--webchat-fontSizeBase300);
709
712
  line-height: var(--webchat-lineHeightBase300);
710
713
  gap: var(--webchat-spacingVerticalSNudge);
711
714
  padding: var(--webchat-spacingVerticalS) var(--webchat-spacingHorizontalM);
715
+
712
716
  &::after {
713
717
  border-bottom-left-radius: var(--webchat-borderRadiusMedium);
714
718
  border-bottom-right-radius: var(--webchat-borderRadiusMedium);
715
719
  border-bottom: var(--webchat-strokeWidthThicker) solid var(--webchat-colorBrandForeground1);
716
720
  clip-path: inset(calc(100% - var(--webchat-strokeWidthThicker)) 50% 0 50%);
717
- transition: clip-path var(--webchat-durationNormal) var(--webchat-curveDecelerateMid);
718
721
  }
719
722
  &:focus-within {
720
723
  border: var(--webchat-strokeWidthThin) solid var(--webchat-colorNeutralStroke1);
@@ -3,7 +3,7 @@
3
3
  display: flex;
4
4
  flex: none;
5
5
  height: 16px;
6
- margin: auto var(--webchat-spacingHorizontalMNudge);
6
+ margin: auto var(--webchat-spacingHorizontalMNudge) var(--webchat-spacingVerticalNone);
7
7
  }
8
8
 
9
9
  :global(.webchat-fluent) .sliding-dots-typing-indicator__image {
@@ -1,9 +1,8 @@
1
1
  import { type ActivityMiddleware, type StyleOptions, type TypingIndicatorMiddleware } from 'botframework-webchat-api';
2
2
  import {
3
+ createActivityBorderMiddleware,
3
4
  DecoratorComposer,
4
- DecoratorMiddleware,
5
- type DecoratorMiddlewareInit,
6
- type DecoratorMiddlewareTypes
5
+ type DecoratorMiddleware
7
6
  } from 'botframework-webchat-api/decorator';
8
7
  import { Components } from 'botframework-webchat-component';
9
8
  import { WebChatDecorator } from 'botframework-webchat-component/decorator';
@@ -54,15 +53,12 @@ const activityMiddleware: readonly ActivityMiddleware[] = Object.freeze([
54
53
  const sendBoxMiddleware = [() => () => () => PrimarySendBox];
55
54
 
56
55
  const decoratorMiddleware: readonly DecoratorMiddleware[] = Object.freeze([
57
- (init: DecoratorMiddlewareInit) =>
58
- init === 'activity border' &&
59
- ((next => request =>
60
- request.livestreamingState === 'preparing'
61
- ? ActivityLoader
62
- : next(request)) satisfies DecoratorMiddlewareTypes['activity border'])
56
+ createActivityBorderMiddleware(
57
+ next => request => (request.livestreamingState === 'preparing' ? ActivityLoader : next(request))
58
+ )
63
59
  ]);
64
60
 
65
- const styles = createStyles();
61
+ const styles = createStyles('fluent-theme');
66
62
 
67
63
  const fluentStyleOptions: StyleOptions = Object.freeze({
68
64
  feedbackActionsPlacement: 'activity-actions'
@@ -1,7 +0,0 @@
1
- :global(.webchat-fluent) .sendbox__attachment {
2
- border-radius: var(--webchat-borderRadiusLarge);
3
- border: 1px solid var(--webchat-colorNeutralStroke1);
4
- cursor: default;
5
- padding: 6px 8px;
6
- width: fit-content;
7
- }
@@ -1,35 +0,0 @@
1
- import { hooks } from 'botframework-webchat-component';
2
- import cx from 'classnames';
3
- import React, { memo } from 'react';
4
- import { useStyles } from '../../styles';
5
- import styles from './Attachments.module.css';
6
-
7
- const { useLocalizer, useUIState } = hooks;
8
-
9
- const attachmentsPluralStringIds = {
10
- one: 'TEXT_INPUT_ATTACHMENTS_ONE',
11
- two: 'TEXT_INPUT_ATTACHMENTS_TWO',
12
- few: 'TEXT_INPUT_ATTACHMENTS_FEW',
13
- many: 'TEXT_INPUT_ATTACHMENTS_MANY',
14
- other: 'TEXT_INPUT_ATTACHMENTS_OTHER'
15
- };
16
-
17
- function Attachments({
18
- attachments,
19
- className
20
- }: Readonly<{
21
- readonly attachments: readonly Readonly<{ blob: Blob | File; thumbnailURL?: URL | undefined }>[];
22
- readonly className?: string | undefined;
23
- }>) {
24
- const [uiState] = useUIState();
25
- const classNames = useStyles(styles);
26
- const localizeWithPlural = useLocalizer({ plural: true });
27
-
28
- return uiState !== 'blueprint' && attachments.length ? (
29
- <div className={cx(classNames['sendbox__attachment'], className)}>
30
- {localizeWithPlural(attachmentsPluralStringIds, attachments.length)}
31
- </div>
32
- ) : null;
33
- }
34
-
35
- export default memo(Attachments);
@@ -1,82 +0,0 @@
1
- :global(.webchat-fluent) .sendbox__text-area {
2
- display: grid;
3
- grid-template-areas: 'main';
4
- max-height: 200px;
5
- overflow: auto;
6
- scrollbar-gutter: stable;
7
- }
8
-
9
- :global(.webchat-fluent) .sendbox__text-area--hidden {
10
- /* TODO: Not perfect way of hiding the text box. */
11
- height: 0;
12
- visibility: collapse;
13
- }
14
-
15
- :global(.webchat-fluent) .sendbox__text-area--in-completion {
16
- .sendbox__text-area-doppelganger {
17
- visibility: unset;
18
- }
19
-
20
- .sendbox__text-area-input {
21
- background-color: transparent;
22
- caret-color: var(--webchat-colorNeutralForeground1);
23
- color: transparent;
24
- }
25
-
26
- textarea::placeholder {
27
- color: transparent;
28
- }
29
- }
30
-
31
- :global(.webchat-fluent) .sendbox__text-area-shared {
32
- border: none;
33
- font: inherit;
34
- grid-area: main;
35
- outline: inherit;
36
- overflow-wrap: anywhere;
37
- resize: inherit;
38
- }
39
-
40
- :global(.webchat-fluent) .sendbox__text-area-doppelganger {
41
- overflow: visible;
42
- pointer-events: none;
43
- user-select: none;
44
- visibility: hidden;
45
- white-space: pre-wrap;
46
- }
47
-
48
- :global(.webchat-fluent) .sendbox__text-area-input {
49
- background-color: inherit;
50
- color: currentColor;
51
- contain: size;
52
- overflow: hidden;
53
- padding: 0;
54
- }
55
-
56
- :global(.webchat-fluent) .sendbox__text-area--scroll {
57
- /* Edge uses -webkit-scrollbar if scrollbar-* is not set */
58
- scrollbar-color: unset;
59
- scrollbar-width: unset;
60
- /* Firefox */
61
- -moz-scrollbar-color: var(--webchat-colorNeutralBackground5) var(--webchat-colorNeutralForeground2);
62
- -moz-scrollbar-width: thin;
63
-
64
- /* Chrome, Edge, and Safari */
65
- &::-webkit-scrollbar {
66
- width: 8px;
67
- }
68
-
69
- &::-webkit-scrollbar-track {
70
- background-color: var(--webchat-colorNeutralBackground5);
71
- border-radius: 16px;
72
- }
73
-
74
- &::-webkit-scrollbar-thumb {
75
- background-color: var(--webchat-colorNeutralForeground2);
76
- border-radius: 16px;
77
- }
78
-
79
- &::-webkit-scrollbar-corner {
80
- background-color: var(--webchat-colorNeutralBackground5);
81
- }
82
- }
@@ -1,111 +0,0 @@
1
- import { hooks } from 'botframework-webchat-api';
2
- import cx from 'classnames';
3
- import React, {
4
- forwardRef,
5
- Fragment,
6
- useCallback,
7
- useRef,
8
- type FormEventHandler,
9
- type KeyboardEventHandler,
10
- type ReactNode
11
- } from 'react';
12
- import { useStyles } from '../../styles';
13
- import styles from './TextArea.module.css';
14
-
15
- const { useUIState } = hooks;
16
-
17
- const TextArea = forwardRef<
18
- HTMLTextAreaElement,
19
- Readonly<{
20
- 'aria-label'?: string | undefined;
21
- className?: string | undefined;
22
- completion?: ReactNode | undefined;
23
- 'data-testid'?: string | undefined;
24
-
25
- /**
26
- * `true`, if the text area should be hidden but stay in the DOM, otherwise, `false`.
27
- *
28
- * Keeping the element in the DOM while making it invisible to users and PWDs is useful in these scenarios:
29
- *
30
- * - When the DTMF keypad is going away, we need to send focus to the text area before we unmount DTMF keypad,
31
- * This ensures the flow of focus did not sent to document body
32
- */
33
- hidden?: boolean | undefined;
34
- onInput?: FormEventHandler<HTMLTextAreaElement> | undefined;
35
- placeholder?: string | undefined;
36
- startRows?: number | undefined;
37
- value?: string | undefined;
38
- }>
39
- >((props, ref) => {
40
- const [uiState] = useUIState();
41
- const classNames = useStyles(styles);
42
- const isInCompositionRef = useRef<boolean>(false);
43
-
44
- const disabled = uiState === 'disabled';
45
-
46
- const handleCompositionEnd = useCallback(() => {
47
- isInCompositionRef.current = false;
48
- }, [isInCompositionRef]);
49
-
50
- const handleCompositionStart = useCallback(() => {
51
- isInCompositionRef.current = true;
52
- }, [isInCompositionRef]);
53
-
54
- const handleKeyDown = useCallback<KeyboardEventHandler<HTMLTextAreaElement>>(event => {
55
- // Shift+Enter adds a new line
56
- // Enter requests related form submission
57
- if (!event.shiftKey && event.key === 'Enter' && !isInCompositionRef.current) {
58
- event.preventDefault();
59
-
60
- if ('form' in event.target && event.target.form instanceof HTMLFormElement) {
61
- event.target?.form?.requestSubmit();
62
- }
63
- }
64
- }, []);
65
-
66
- return (
67
- <div
68
- className={cx(
69
- classNames['sendbox__text-area'],
70
- classNames['sendbox__text-area--scroll'],
71
- { [classNames['sendbox__text-area--hidden']]: props.hidden },
72
- { [classNames['sendbox__text-area--in-completion']]: props.completion },
73
- props.className
74
- )}
75
- role={props.hidden ? 'hidden' : undefined}
76
- >
77
- {uiState === 'blueprint' ? (
78
- <div className={cx(classNames['sendbox__text-area-doppelganger'], classNames['sendbox__text-area-shared'])}>
79
- {' '}
80
- </div>
81
- ) : (
82
- <Fragment>
83
- <div className={cx(classNames['sendbox__text-area-doppelganger'], classNames['sendbox__text-area-shared'])}>
84
- {props.completion ? props.completion : props.value || props.placeholder}{' '}
85
- </div>
86
- <textarea
87
- aria-disabled={disabled}
88
- aria-label={props['aria-label']}
89
- className={cx(classNames['sendbox__text-area-input'], classNames['sendbox__text-area-shared'])}
90
- data-testid={props['data-testid']}
91
- onCompositionEnd={handleCompositionEnd}
92
- onCompositionStart={handleCompositionStart}
93
- onInput={props.onInput}
94
- onKeyDown={handleKeyDown}
95
- placeholder={props.placeholder}
96
- readOnly={disabled}
97
- ref={ref}
98
- rows={props.startRows ?? 1}
99
- // eslint-disable-next-line no-magic-numbers
100
- tabIndex={props.hidden ? -1 : undefined}
101
- value={props.value}
102
- />
103
- </Fragment>
104
- )}
105
- </div>
106
- );
107
- });
108
-
109
- TextArea.displayName = 'TextArea';
110
-
111
- export default TextArea;
@@ -1,13 +0,0 @@
1
- import { Components } from 'botframework-webchat-component';
2
- import cx from 'classnames';
3
- import React, { memo } from 'react';
4
-
5
- const { MonochromeImageMasker } = Components;
6
-
7
- const addDocumentIcon = `data:image/svg+xml;utf8,${encodeURIComponent('<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6 2a2 2 0 0 0-2 2v5.2c.32-.08.66-.15 1-.18V4a1 1 0 0 1 1-1h4v3.5c0 .83.67 1.5 1.5 1.5H15v8a1 1 0 0 1-1 1h-3.6c-.18.36-.4.7-.66 1H14a2 2 0 0 0 2-2V7.41c0-.4-.16-.78-.44-1.06l-3.91-3.91A1.5 1.5 0 0 0 10.59 2H6Zm8.8 5h-3.3a.5.5 0 0 1-.5-.5V3.2L14.8 7ZM10 14.5a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0Zm-4-2a.5.5 0 0 0-1 0V14H3.5a.5.5 0 0 0 0 1H5v1.5a.5.5 0 0 0 1 0V15h1.5a.5.5 0 0 0 0-1H6v-1.5Z"/></svg>')}`;
8
-
9
- function AddDocumentIcon(props: Readonly<{ className?: string }>) {
10
- return <MonochromeImageMasker className={cx('icon__add-document', props.className)} src={addDocumentIcon} />;
11
- }
12
-
13
- export default memo(AddDocumentIcon);
@@ -1,13 +0,0 @@
1
- import { Components } from 'botframework-webchat-component';
2
- import cx from 'classnames';
3
- import React, { memo } from 'react';
4
-
5
- const { MonochromeImageMasker } = Components;
6
-
7
- const attachmentIcon = `data:image/svg+xml;utf8,${encodeURIComponent('<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m4.83 10.48 5.65-5.65a3 3 0 0 1 4.25 4.24L8 15.8a1.5 1.5 0 0 1-2.12-2.12l6-6.01a.5.5 0 1 0-.7-.71l-6 6.01a2.5 2.5 0 0 0 3.53 3.54l6.71-6.72a4 4 0 1 0-5.65-5.66L4.12 9.78a.5.5 0 0 0 .7.7Z"/></svg>')}`;
8
-
9
- function AttachmentIcon(props: Readonly<{ className?: string }>) {
10
- return <MonochromeImageMasker className={cx('icon__attachment', props.className)} src={attachmentIcon} />;
11
- }
12
-
13
- export default memo(AttachmentIcon);
@@ -1,13 +0,0 @@
1
- import { Components } from 'botframework-webchat-component';
2
- import cx from 'classnames';
3
- import React, { memo } from 'react';
4
-
5
- const { MonochromeImageMasker } = Components;
6
-
7
- const infoSmallIcon = `data:image/svg+xml;utf8,${encodeURIComponent('<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M8.5 7.5a.5.5 0 1 0-1 0v3a.5.5 0 0 0 1 0v-3Zm.25-2a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1ZM2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8Z"/></svg>')}`;
8
-
9
- function InfoSmallIcon(props: Readonly<{ readonly className?: string }>) {
10
- return <MonochromeImageMasker className={cx('icon__info--small', props.className)} src={infoSmallIcon} />;
11
- }
12
-
13
- export default memo(InfoSmallIcon);
@@ -1,13 +0,0 @@
1
- import { Components } from 'botframework-webchat-component';
2
- import cx from 'classnames';
3
- import React, { memo } from 'react';
4
-
5
- const { MonochromeImageMasker } = Components;
6
-
7
- const sendIcon = `data:image/svg+xml;utf8,${encodeURIComponent('<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.18 2.11a.5.5 0 0 1 .54-.06l15 7.5a.5.5 0 0 1 0 .9l-15 7.5a.5.5 0 0 1-.7-.58L3.98 10 2.02 2.63a.5.5 0 0 1 .16-.52Zm2.7 8.39-1.61 6.06L16.38 10 3.27 3.44 4.88 9.5h6.62a.5.5 0 1 1 0 1H4.88Z"/></svg>')}`;
8
-
9
- function SendIcon(props: Readonly<{ readonly className?: string }>) {
10
- return <MonochromeImageMasker className={cx('icon__send', props.className)} src={sendIcon} />;
11
- }
12
-
13
- export default memo(SendIcon);
@@ -1,13 +0,0 @@
1
- import { Components } from 'botframework-webchat-component';
2
- import cx from 'classnames';
3
- import React, { memo } from 'react';
4
-
5
- const { MonochromeImageMasker } = Components;
6
-
7
- const telephoneKeypadIcon = `data:image/svg+xml;utf8,${encodeURIComponent('<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5Zm0 4a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM7.25 12a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM10 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM11.25 8a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM10 13.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM11.25 16a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM14 5.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5ZM15.25 8a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0ZM14 13.25a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5Z"/></svg>')}`;
8
-
9
- function TelephoneKeypadIcon(props: Readonly<{ readonly className?: string }>) {
10
- return <MonochromeImageMasker className={cx('icon__telephone-keypad', props.className)} src={telephoneKeypadIcon} />;
11
- }
12
-
13
- export default memo(TelephoneKeypadIcon);
@@ -1,5 +0,0 @@
1
- export { default as AddDocumentIcon } from './AddDocumentIcon';
2
- export { default as AttachmentIcon } from './AttachmentIcon';
3
- export { default as InfoSmallIcon } from './InfoSmallIcon';
4
- export { default as SendIcon } from './SendIcon';
5
- export { default as TelephoneKeypadIcon } from './TelephoneKeypadIcon';