@capillarytech/creatives-library 3.8.10 → 3.8.11

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 (38) hide show
  1. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +7 -8
  2. package/components/TemplatePreview/_templatePreview.scss +279 -20
  3. package/components/TemplatePreview/assets/images/home-screen-android.svg +21 -0
  4. package/components/TemplatePreview/assets/images/home-screen-ios.svg +16 -0
  5. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -0
  6. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +16 -0
  7. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -0
  8. package/components/TemplatePreview/index.js +180 -20
  9. package/components/TemplatePreview/messages.js +16 -0
  10. package/package-lock.json +3096 -0
  11. package/package.json +1 -1
  12. package/v2Components/FormBuilder/index.js +17 -7
  13. package/v2Components/MobilePushPreviewV2/index.js +40 -32
  14. package/v2Components/MobilePushPreviewV2/messages.js +0 -8
  15. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +64 -0
  16. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +101 -19
  17. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +12 -0
  18. package/v2Components/TemplatePreview/_templatePreview.scss +13 -4
  19. package/v2Components/TemplatePreview/assets/images/home-screen-android.svg +21 -0
  20. package/v2Components/TemplatePreview/assets/images/home-screen-ios.svg +16 -0
  21. package/v2Components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -0
  22. package/v2Components/TemplatePreview/assets/images/wechat-home-screen-android.svg +21 -0
  23. package/v2Components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -0
  24. package/v2Components/TemplatePreview/index.js +147 -20
  25. package/v2Components/TemplatePreview/messages.js +8 -0
  26. package/v2Containers/CreativesContainer/SlideBoxContent.js +15 -1
  27. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -1
  28. package/v2Containers/CreativesContainer/index.js +3 -1
  29. package/v2Containers/CreativesContainer/messages.js +2 -2
  30. package/v2Containers/Email/_email.scss +7 -1
  31. package/v2Containers/Email/index.js +39 -13
  32. package/v2Containers/Email/messages.js +4 -0
  33. package/v2Containers/EmailWrapper/index.js +4 -0
  34. package/v2Containers/MobilePush/Create/index.js +5 -0
  35. package/v2Containers/MobilePush/Edit/index.js +5 -0
  36. package/v2Containers/MobilepushWrapper/index.js +4 -1
  37. package/v2Containers/Sms/Create/index.js +2 -1
  38. package/v2Containers/Sms/Edit/index.js +2 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capillarytech/creatives-library",
3
3
  "author": "meharaj",
4
- "version": "3.8.10",
4
+ "version": "3.8.11",
5
5
  "description": "Capillary creatives ui",
6
6
  "main": "./index.js",
7
7
  "module": "./index.es.js",
@@ -11,7 +11,7 @@ import PropTypes from 'prop-types';
11
11
  import React from 'react';
12
12
  import _ from 'lodash';
13
13
  import { Tabs, Table, Modal} from 'antd';
14
- import { CapDrawer, CapButton, CapInput, CapPopover, CapCheckbox, CapRadio, CapSelect, CapTable, CapRow, CapColumn, CapNotification, CapUploader, CapHeading, CapIcon} from '@capillarytech/cap-ui-library';
14
+ import { CapDrawer, CapButton, CapInput, CapPopover, CapImage, CapCheckbox, CapRadio, CapSelect, CapTable, CapRow, CapColumn, CapNotification, CapUploader, CapHeading, CapIcon} from '@capillarytech/cap-ui-library';
15
15
  import { injectIntl, intlShape, FormattedMessage } from 'react-intl';
16
16
  import LabelHOC from '@capillarytech/cap-ui-library/assets/HOCs/ComponentWithLabelHOC';
17
17
  import { CAP_SPACE_12, CAP_SPACE_08, FONT_COLOR_05, FONT_COLOR_04 } from '@capillarytech/cap-ui-library/styled/variables';
@@ -2197,7 +2197,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2197
2197
  //
2198
2198
  const imgSrc = template && template.versions && template.versions.base ? template.versions.base.preview_http_url : '';
2199
2199
  // const ifPreviewGenerated = template && template.versions && template.versions.base ? template.versions.base.isPreviewGenerated : 0;
2200
- const content = <img src={imgSrc || ''} alt="" />;
2200
+ const content = <CapImage src={imgSrc || ''} alt="" />;
2201
2201
 
2202
2202
  temp.content = (
2203
2203
  <div
@@ -2382,8 +2382,10 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2382
2382
  content={content}
2383
2383
  charCounterEnabled={val.charCounterEnabled}
2384
2384
  unicodeEnabled={unicodeEnabled}
2385
- >
2386
- </TemplatePreview>
2385
+ showTestAndPreviewIcon
2386
+ onPreviewContentClicked={this.props.onPreviewContentClicked}
2387
+ onTestContentClicked={this.props.onTestContentClicked}
2388
+ />
2387
2389
  </CapColumn>
2388
2390
  );
2389
2391
  break;
@@ -2822,7 +2824,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2822
2824
  <div>
2823
2825
  <div className={`image-container ${ifError ? 'error' : ''}`}>
2824
2826
  {self.state && !!self.state.formData[`${self.state.currentTab - 1}`].image ?
2825
- <img src={self.state.formData[`${self.state.currentTab - 1}`].image} alt={val.alt} style={val.style}/>
2827
+ <CapImage src={self.state.formData[`${self.state.currentTab - 1}`].image} alt={val.alt} style={val.style}/>
2826
2828
  :
2827
2829
  <div style={{width: "100%", textAlign: "center"}}><span className="image-placeholder">{val.placeholder}</span></div>
2828
2830
  }
@@ -2838,9 +2840,10 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2838
2840
  const ImageComponent = (props) => (
2839
2841
  <div key={`${val.id}-${this.state.currentTab}`}>
2840
2842
  <div className={`image-container ${props.ifError ? 'error' : ''}`}>
2843
+
2841
2844
  {isImage ?
2842
- <img src={self.state.formData[`${self.state.currentTab - 1}`].image} alt={props.alt} style={props.style}/>
2843
- :
2845
+ <CapImage src={self.state.formData[`${self.state.currentTab - 1}`].image} alt={props.alt} style={props.style}/>
2846
+ :
2844
2847
  <div style={{width: "100%", textAlign: "center"}}><span className="image-placeholder">{props.placeholder}</span></div>
2845
2848
  }
2846
2849
  </div>
@@ -2954,6 +2957,9 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2954
2957
  content={content}
2955
2958
  charCounterEnabled={val.charCounterEnabled}
2956
2959
  unicodeEnabled={unicodeEnabled}
2960
+ showTestAndPreviewIcon
2961
+ onPreviewContentClicked={this.props.onPreviewContentClicked}
2962
+ onTestContentClicked={this.props.onTestContentClicked}
2957
2963
  >
2958
2964
  </TemplatePreview>
2959
2965
  </CapColumn>
@@ -3003,6 +3009,10 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3003
3009
  ],
3004
3010
  appName: val.content.appName,
3005
3011
  }}
3012
+ showTestAndPreviewIcon
3013
+ onPreviewContentClicked={this.props.onPreviewContentClicked}
3014
+ onTestContentClicked={this.props.onTestContentClicked}
3015
+ templateDataRaw={this.props.templateData}
3006
3016
  >
3007
3017
  </TemplatePreview>
3008
3018
  </CapColumn>
@@ -7,16 +7,10 @@
7
7
  import PropTypes from 'prop-types';
8
8
 
9
9
  import React from 'react';
10
- import { CapButton } from '@capillarytech/cap-ui-library';
11
- // import styled from 'styled-components';
12
-
13
- import { FormattedMessage } from 'react-intl';
14
- import { Button } from 'antd';
10
+ import { CapTab, CapIcon } from '@capillarytech/cap-ui-library';
15
11
  import { get, map, isEmpty} from 'lodash';
16
12
  import TemplatePreview from '../TemplatePreview';
17
13
  import '../PreviewSideBar/_previewsidebar.scss';
18
- import messages from './messages';
19
- const ButtonGroup = Button.Group;
20
14
 
21
15
  class MobilePushPreviewV2 extends React.Component { // eslint-disable-line react/prefer-stateless-function
22
16
  constructor(props) {
@@ -24,6 +18,9 @@ class MobilePushPreviewV2 extends React.Component { // eslint-disable-line react
24
18
  this.goToEdit = this.goToEdit.bind(this);
25
19
  this.goToDuplicate = this.goToDuplicate.bind(this);
26
20
  this.changeDevice = this.changeDevice.bind(this);
21
+ this.getPreview = this.getPreview.bind(this);
22
+ this.setContent = this.setContent.bind(this);
23
+ this.goToDuplicate = this.goToDuplicate.bind(this);
27
24
  const hasAndroid = get(props, 'templateData.versions.base.ANDROID') || get(props, 'templateData.androidContent');
28
25
  const hasIos = get(props, 'templateData.versions.base.IOS') || get(props, 'templateData.iosContent');
29
26
  let device = "android";
@@ -38,7 +35,7 @@ class MobilePushPreviewV2 extends React.Component { // eslint-disable-line react
38
35
  };
39
36
  }
40
37
 
41
- setContent = (templateData, device) => {
38
+ setContent(templateData, device) {
42
39
  const androidContent = get(templateData, 'versions.base.ANDROID') || get(templateData, 'androidContent');
43
40
  const iosContent = get(templateData, 'versions.base.IOS') || get(templateData, 'iosContent');
44
41
 
@@ -59,12 +56,21 @@ class MobilePushPreviewV2 extends React.Component { // eslint-disable-line react
59
56
  }
60
57
  return content;
61
58
  }
59
+ getPreview(device) {
60
+ return (
61
+ <TemplatePreview
62
+ device={device}
63
+ channel={this.props.channel}
64
+ content={this.state.content || ''}
65
+ templateData={this.props.templateData}
66
+ />
67
+ );
68
+ }
62
69
  goToDuplicate() {
63
70
  this.props.onDuplicateClick(this.props.templateData);
64
71
  this.props.handleClose();
65
72
  }
66
- changeDevice(ev) {
67
- const device = ev.target.value;
73
+ changeDevice(device) {
68
74
  const content = this.setContent(this.props.templateData, device);
69
75
  this.setState({device, content });
70
76
  }
@@ -72,38 +78,40 @@ class MobilePushPreviewV2 extends React.Component { // eslint-disable-line react
72
78
  this.props.onEditClick(e, this.props.templateData._id, this.props.templateData.modeType, path);
73
79
  }
74
80
  render() {
75
- const {templateData, channel} = this.props;
76
-
81
+ const {templateData} = this.props;
77
82
  const hasAndroid = get(templateData, 'versions.base.ANDROID') || get(templateData, 'androidContent');
78
83
  const hasIos = get(templateData, 'versions.base.IOS') || get(templateData, 'iosContent');
79
-
80
- const {device, content} = this.state;
84
+ const hasBothAndroidAndIos = hasAndroid && hasIos;
81
85
 
82
86
  return (
83
-
84
87
  <div>
85
88
  <div className="devices">
86
- {!isEmpty(templateData) && hasAndroid && hasIos &&
87
- <ButtonGroup onClick={this.changeDevice}>
88
- <CapButton type={device === "android" ? "primary" : "secondary"} value={"android"}><FormattedMessage {...messages.android} /></CapButton>
89
- <CapButton type={device === "iphone" ? "primary" : "secondary"} value={"iphone"}><FormattedMessage {...messages.ios} /></CapButton>
90
- </ButtonGroup>}
89
+ {!isEmpty(templateData) &&
90
+ ( hasBothAndroidAndIos ? (
91
+ <CapTab
92
+ panes={[
93
+ {
94
+ content: this.getPreview('android'),
95
+ tab: <CapIcon type="android" size="m" />,
96
+ key: 'android',
97
+ },
98
+ {
99
+ content: this.getPreview('iphone'),
100
+ tab: <CapIcon type="ios" size="m" />,
101
+ key: 'iphone',
102
+ },
103
+ ]}
104
+ onChange={(activeKey) => this.changeDevice(activeKey)}
105
+ tabBarStyle={{margin: 'auto', width: '38%'}}
106
+ />
107
+ ) : (
108
+ (hasAndroid || hasIos) && this.getPreview(hasAndroid ? 'android' : 'ios')
109
+ ))
110
+ }
91
111
  </div>
92
- <TemplatePreview
93
- device={device === "android" ? "android" : "iphone"}
94
- channel={channel}
95
- content={content || ''}
96
- templateData={templateData}
97
- >
98
- </TemplatePreview>
99
-
100
-
101
112
  </div>
102
-
103
-
104
113
  );
105
114
  }
106
-
107
115
  }
108
116
 
109
117
  MobilePushPreviewV2.propTypes = {
@@ -10,12 +10,4 @@ export default defineMessages({
10
10
  id: 'creatives.componentsv2.MobilePushPreviewV2.header',
11
11
  defaultMessage: 'This is the MobilePushPreviewV2 component !',
12
12
  },
13
- android: {
14
- id: 'creatives.componentsv2.MobilePushPreviewV2.android',
15
- defaultMessage: 'Android',
16
- },
17
- ios: {
18
- id: 'creatives.componentsv2.MobilePushPreviewV2.ios',
19
- defaultMessage: 'IOS',
20
- },
21
13
  });
@@ -1,5 +1,69 @@
1
1
  @import '~@capillarytech/cap-ui-library/styles/_variables.scss';
2
2
 
3
+ .shell-lock-screen-android .main-screen-preview .wechatMsgContainer{
4
+ position: absolute;
5
+ left: 53.5%;
6
+ top:28%;
7
+ background: white;
8
+ width: 19.5%;
9
+ text-align: left;
10
+ height: fit-content;
11
+ border-radius: 0.285rem;
12
+ }
13
+
14
+ .shell-lock-screen-android .lock-screen-preview{
15
+ .wechat-android-sender-id{
16
+ position: absolute;
17
+ top: 46%;
18
+ font-size: 10px;
19
+ left: 28%;
20
+ }
21
+ .wechat-android-title{
22
+ position: absolute;
23
+ top: 49%;
24
+ font-size: 10px;
25
+ left: 28%;
26
+ color: #5e6c84;
27
+ }
28
+ .wechat-android-action-buttons{
29
+ position: absolute;
30
+ left: 28%;
31
+ top: 53%;
32
+ font-size: 10px;
33
+ color: #3861ca;
34
+ font-weight: 500;
35
+ }
36
+ .wechat-ios-sender-id{
37
+ position: absolute;
38
+ top: 44%;
39
+ font-size: 10px;
40
+ left: 28.5%;
41
+ }
42
+ .wechat-ios-title{
43
+ position: absolute;
44
+ top: 47%;
45
+ font-size: 10px;
46
+ left: 28.5%;
47
+ color: #5e6c84;
48
+ }
49
+ .wechat-ios-action-reply{
50
+ position: absolute;
51
+ left: 35%;
52
+ top: 59%;
53
+ font-size: 12px;
54
+ color: #3861ca;
55
+ font-weight: 500;
56
+ }
57
+ .wechat-ios-action-cancel{
58
+ position: absolute;
59
+ left: 34.5%;
60
+ top: 66%;
61
+ font-size: 12px;
62
+ color: #3861ca;
63
+ font-weight: 500;
64
+ }
65
+ }
66
+
3
67
  .wechatMsgContainer{
4
68
  position: absolute;
5
69
  left: 30%;
@@ -7,14 +7,15 @@
7
7
  import React from 'react';
8
8
  import PropTypes from 'prop-types';
9
9
  // import { connect } from 'react-redux';
10
- import { CapRow, CapColumn, CapButton } from '@capillarytech/cap-react-ui-library/';
11
- import { CapHeading, CapLabel } from '@capillarytech/cap-ui-library/';
10
+ import { CapRow, CapColumn, CapButton, CapImage } from '@capillarytech/cap-react-ui-library/';
11
+ import { CapHeading, CapLabel, CapTab, CapIcon } from '@capillarytech/cap-ui-library/';
12
12
  import { FormattedMessage } from 'react-intl';
13
13
  import _ from 'lodash';
14
14
  import './_wechatRichmediaTemplatePrev.scss';
15
15
  import messages from './messages';
16
- const wechatBody = require('./../assets/images/WECHAT_5x.png');
17
-
16
+ const wechatBody = require('./../assets/images/wechat_mobile_android.svg');
17
+ const wechatLockScreenAndroid = require('./../assets/images/wechat-home-screen-android.svg');
18
+ const wechatLockScreenIos = require('./../assets/images/home-screen-ios.svg');
18
19
  class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-disable-line react/prefer-stateless-function
19
20
  preparePreviewData = (mediaList) => {
20
21
  const previewMsg = [];
@@ -23,7 +24,7 @@ class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-dis
23
24
  const contentData = content[0];
24
25
  previewMsg.push(
25
26
  <div className="richmedia-image-container">
26
- <img alt="default" width="100%" height="102px" src={contentData.image_url} />
27
+ <CapImage alt="default" width="100%" height="102px" src={contentData.image_url} />
27
28
  {mediaListLength !== 1 && (
28
29
  <div className="name-container">
29
30
  <CapHeading type="h4" style={{color: "white"}}>{contentData.title}</CapHeading>
@@ -43,7 +44,7 @@ class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-dis
43
44
  previewMsg.push(
44
45
  <div className="additional-richmedia-container">
45
46
  <div><CapLabel type="label9" style={{width: '170px', top: '12px', position: 'relative'}}>{data.title}</CapLabel></div>
46
- <img alt="default" width="34px" height="34px" src={data.image_url} />
47
+ <CapImage alt="default" width="34px" height="34px" src={data.image_url} />
47
48
  </div>
48
49
  );
49
50
  });
@@ -61,7 +62,7 @@ class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-dis
61
62
  returnObj.push(
62
63
  <div style={{ width: "100%", height: 116, position: "relative" }}>
63
64
  <CapRow>
64
- <img alt="default" width="100%" height="110px" src={contentData.image_url} />
65
+ <CapImage alt="default" width="100%" height="110px" src={contentData.image_url} />
65
66
  <div className="preview-overflow-wrap-fields" style={{ position: "absolute", bottom: "5%", left: "10%", width: "auto" }}>{contentData.title ? contentData.title : ""}</div>
66
67
  </CapRow>
67
68
  {Object.keys(mediaList).length === 1 ?
@@ -80,7 +81,7 @@ class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-dis
80
81
  {contentData.title}
81
82
  </CapColumn>
82
83
  <CapColumn style={{ float: "right" }}>
83
- <img alt="default" width="60px" height="60px" src={contentData.image_url}/>
84
+ <CapImage alt="default" width="60px" height="60px" src={contentData.image_url}/>
84
85
  </CapColumn>
85
86
  </CapRow>
86
87
  );
@@ -91,21 +92,102 @@ class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-dis
91
92
  goToEdit(e, path) {
92
93
  this.props.onEditClick(e, this.props.templateId, this.props.modeType, path);
93
94
  }
94
- render() {
95
+ getWechatRichMediaAndroidPreview = (content) => (
96
+ <div className="preview-container">
97
+ <div className="shell-lock-screen-android align-center">
98
+ <div className="lock-screen-preview">
99
+ <CapImage className="preview-image" src={wechatLockScreenAndroid} alt="Preview is being generated"/>
100
+ <div className="wechat-android-sender-id">
101
+ Muji India
102
+ </div>
103
+ <div className="wechat-android-title">
104
+ {content[0].title}
105
+ </div>
106
+ <div className="wechat-android-action-buttons">
107
+ <FormattedMessage {...messages.MarkAsRead} /> <FormattedMessage {...messages.reply} />
108
+ </div>
109
+ </div>
110
+ <div className="main-screen-preview">
111
+ <CapImage className="preview-image" src={wechatBody} alt="Preview is being generated"/>
112
+ <div className={this.props.type === 'embedded' ? "wechatMsgContainerOutbound" : "wechatMsgContainer"}>
113
+ <div className={this.props.type === 'embedded' ? "overflow-handle-preview-outbound" : "overflow-handle-preview"}>
114
+ {this.preparePreviewData(content)}
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ );
121
+
122
+ getWechatRIchMediaIosPreview = (content) => (
123
+ <div className="preview-container">
124
+ <div className="shell-lock-screen-android align-center">
125
+ <div className="lock-screen-preview">
126
+ <CapImage className="preview-image" src={wechatLockScreenIos} alt="Preview is being generated"/>
127
+ <div className="wechat-ios-sender-id">
128
+ Muji India
129
+ </div>
130
+ <div className="wechat-ios-title">
131
+ {content[0].title}
132
+ </div>
133
+ <div className="wechat-ios-action-reply">
134
+ <FormattedMessage {...messages.reply} />
135
+ </div>
136
+ <div className="wechat-ios-action-cancel">
137
+ <FormattedMessage {...messages.cancel} />
138
+ </div>
139
+ </div>
140
+ <div className="main-screen-preview">
141
+ <CapImage className="preview-image" src={wechatBody} alt="Preview is being generated"/>
142
+ <div className={this.props.type === 'embedded' ? "wechatMsgContainerOutbound" : "wechatMsgContainer"}>
143
+ <div className={this.props.type === 'embedded' ? "overflow-handle-preview-outbound" : "overflow-handle-preview"}>
144
+ {this.preparePreviewData(content)}
145
+ </div>
146
+ </div>
147
+ </div>
148
+ </div>
149
+ </div>
150
+ );
151
+
152
+ getContentForSlidebox = (content) => {
95
153
  return (
96
- <div>
97
- {this.props.contentForSlideBox ?
98
- <div className={`preview-container ${this.props.type === 'embedded' ? 'embedded-preview' : ''}`}>
99
- <div className="shell align-center" id="sms-preview">
100
- <img className="preview-image" src={wechatBody} alt="Preview is being generated"/>
101
- <div className={this.props.type === 'embedded' ? "wechatMsgContainerOutbound" : "wechatMsgContainer"}>
102
- <div className={this.props.type === 'embedded' ? "overflow-handle-preview-outbound" : "overflow-handle-preview"}>
103
- {this.preparePreviewData(this.props.content)}
104
- </div>
154
+ !this.props.showLockScreenPreview ? (
155
+ <div className={`preview-container ${this.props.type === 'embedded' ? 'embedded-preview' : ''}`}>
156
+ <div className="shell align-center" id="sms-preview">
157
+ <CapImage className="preview-image" src={wechatBody} alt="Preview is being generated"/>
158
+ <div className={this.props.type === 'embedded' ? "wechatMsgContainerOutbound" : "wechatMsgContainer"}>
159
+ <div className={this.props.type === 'embedded' ? "overflow-handle-preview-outbound" : "overflow-handle-preview"}>
160
+ {this.preparePreviewData(this.props.content)}
105
161
  </div>
106
162
  </div>
107
- {this.props.showEdit ? <CapButton onClick={(e) => this.goToEdit(e, this.props.path)} className="preview-buttons" type="primary">{this.props.type === 'embedded' ? <FormattedMessage {...messages.select} /> : <FormattedMessage {...messages.edit} /> }</CapButton> : ""}
108
163
  </div>
164
+ {this.props.showEdit ? <CapButton onClick={(e) => this.goToEdit(e, this.props.path)} className="preview-buttons" type="primary">{this.props.type === 'embedded' ? <FormattedMessage {...messages.select} /> : <FormattedMessage {...messages.edit} /> }</CapButton> : ""}
165
+ </div>
166
+ ) : (
167
+ <CapTab
168
+ panes={[
169
+ {
170
+ content: this.getWechatRichMediaAndroidPreview(this.props.content),
171
+ tab: <CapIcon type="android" size='m' />,
172
+ key: 'android',
173
+ },
174
+ {
175
+ content: this.getWechatRIchMediaIosPreview(this.props.content),
176
+ tab: <CapIcon type="ios" size='m' />,
177
+ key: 'ios',
178
+ },
179
+ ]}
180
+ tabBarStyle={{margin: 'auto', width: '14%'}}
181
+ />
182
+ )
183
+ );
184
+ };
185
+
186
+ render() {
187
+ return (
188
+ <div>
189
+ {this.props.contentForSlideBox ?
190
+ this.getContentForSlidebox(this.props.content)
109
191
  :
110
192
  <div className={`preview-container ${this.props.type === 'embedded' ? 'embedded-preview' : ''}`}>
111
193
  <div className="shell align-center" id="sms-preview">
@@ -18,4 +18,16 @@ export default defineMessages({
18
18
  id: 'creatives.components.WechatRichmediaTemplatePreview.edit',
19
19
  defaultMessage: 'Edit',
20
20
  },
21
+ MarkAsRead: {
22
+ id: 'creatives.components.WechatRichmediaTemplatePreview.MarkAsRead',
23
+ defaultMessage: 'Mark as read',
24
+ },
25
+ reply: {
26
+ id: 'creatives.components.WechatRichmediaTemplatePreview.reply',
27
+ defaultMessage: 'Reply',
28
+ },
29
+ cancel: {
30
+ id: 'creatives.components.WechatRichmediaTemplatePreview.cancel',
31
+ defaultMessage: 'Cancel',
32
+ },
21
33
  });
@@ -1,4 +1,4 @@
1
- .shell {
1
+ .shell-v2 {
2
2
  position: relative;
3
3
  -webkit-transform: translate(-50%);
4
4
  transform: translate(-50%);
@@ -15,8 +15,8 @@
15
15
 
16
16
  .msgContainer {
17
17
  position: absolute;
18
- top: 18%;
19
- left: 28.8%;
18
+ top: 20%;
19
+ left: 23%;
20
20
  width: 42%;
21
21
  height: 336px;
22
22
  display: -webkit-box;
@@ -37,6 +37,9 @@
37
37
  left: 14px;
38
38
  }
39
39
  }
40
+ &.wechat{
41
+ width: 52%;
42
+ }
40
43
 
41
44
  .message-pop{
42
45
  .unicode-disabled{
@@ -54,7 +57,7 @@
54
57
  line-height: 14px;
55
58
  padding: 0 8px 8px 8px;
56
59
  font-size: 10px;
57
- width: 80%;
60
+ width: 100%;
58
61
  font-family: 'open-sans';
59
62
  .message-pop-item{
60
63
  padding: 4px;
@@ -359,3 +362,9 @@
359
362
  font-size: 12px;
360
363
  }
361
364
  }
365
+
366
+ .test-and-preview-container{
367
+ display: flex;
368
+ margin-top: -12px;
369
+ margin-bottom: 12px;
370
+ }
@@ -0,0 +1,21 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="220" height="472" viewBox="0 0 220 472">
2
+ <g fill="none" fill-rule="evenodd">
3
+ <rect width="220" height="472" fill="#101211" rx="26"/>
4
+ <rect width="52" height="5" x="84" y="14" fill="#2E2E2E" rx="2.5"/>
5
+ <rect width="52" height="5" x="84" y="455" fill="#2E2E2E" rx="2.5"/>
6
+ <circle cx="45.5" cy="19.5" r="5.5" fill="#2E2E2E"/>
7
+ <circle cx="65.5" cy="19.5" r="3.5" fill="#2E2E2E"/>
8
+ <rect width="202" height="404" x="9" y="36" fill="#E51FA3" rx="9"/>
9
+ <path fill="#F4F5F7" d="M20.692 152h178.616c2.675 0 3.645.278 4.623.801.977.523 1.745 1.29 2.268 2.268.523.978.801 1.948.801 4.623v78.616c0 2.675-.278 3.645-.801 4.623-.523.977-1.29 1.745-2.268 2.268-.978.523-1.948.801-4.623.801H20.692c-2.675 0-3.645-.278-4.623-.801-.977-.523-1.745-1.29-2.268-2.268-.523-.978-.801-1.948-.801-4.623v-78.616c0-2.675.278-3.645.801-4.623.523-.977 1.29-1.745 2.268-2.268.978-.523 1.948-.801 4.623-.801z"/>
10
+ <text fill="#5E5E5E" font-family="Roboto-Regular, Roboto" font-size="10">
11
+ <tspan x="25" y="169">Messages</tspan>
12
+ </text>
13
+ <text fill="#5E5E5E" font-family="Roboto-Regular, Roboto" font-size="10">
14
+ <tspan x="85.146" y="169">now</tspan>
15
+ </text>
16
+ <circle cx="78" cy="167" r="1" fill="#5E5E5E" fill-rule="nonzero"/>
17
+ <path fill="#5E5E5E" d="M116.725 163.048L113.424 166.342 110.123 163.048 109.109 164.062 113.424 168.377 117.739 164.062z"/>
18
+ <path fill="#FFF" fill-opacity=".6" d="M113.75 419.333h-.625v-1.238c0-1.708-1.4-3.095-3.125-3.095s-3.125 1.387-3.125 3.095v1.238h-.625c-.688 0-1.25.557-1.25 1.238v6.19c0 .682.563 1.239 1.25 1.239h7.5c.688 0 1.25-.557 1.25-1.238v-6.19c0-.682-.563-1.239-1.25-1.239zM110 425c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm2-6h-4v-1.176c0-1.006.897-1.824 2-1.824s2 .818 2 1.824V419z"/>
19
+ <path fill="#FFF" fill-rule="nonzero" d="M86.325 111.884l6.192-8.676-.072-.072c-.84.576-1.908.864-3.204.864-1.248 0-2.472-.348-3.672-1.044-1.2-.696-2.172-1.65-2.916-2.862-.744-1.212-1.116-2.562-1.116-4.05 0-1.44.378-2.79 1.134-4.05.756-1.26 1.776-2.274 3.06-3.042 1.284-.768 2.682-1.152 4.194-1.152 1.632 0 3.09.396 4.374 1.188 1.284.792 2.28 1.818 2.988 3.078.708 1.26 1.062 2.586 1.062 3.978 0 1.32-.27 2.586-.81 3.798-.54 1.212-1.314 2.562-2.322 4.05l-6.444 9.684-2.448-1.692zm3.6-10.62c.96 0 1.854-.234 2.682-.702.828-.468 1.482-1.104 1.962-1.908.48-.804.72-1.686.72-2.646 0-.984-.24-1.878-.72-2.682s-1.134-1.44-1.962-1.908c-.828-.468-1.722-.702-2.682-.702s-1.848.234-2.664.702c-.816.468-1.464 1.104-1.944 1.908-.48.804-.72 1.698-.72 2.682 0 .96.24 1.842.72 2.646.48.804 1.128 1.44 1.944 1.908.816.468 1.704.702 2.664.702zm13.806-2.232c-.648 0-1.194-.222-1.638-.666-.444-.444-.666-.99-.666-1.638 0-.648.222-1.194.666-1.638.444-.444.99-.666 1.638-.666.624 0 1.158.222 1.602.666.444.444.666.99.666 1.638 0 .648-.222 1.194-.666 1.638-.444.444-.978.666-1.602.666zm0 14.184c-.648 0-1.194-.222-1.638-.666-.444-.444-.666-.99-.666-1.638 0-.624.222-1.158.666-1.602.444-.444.99-.666 1.638-.666.624 0 1.158.222 1.602.666.444.444.666.978.666 1.602 0 .648-.222 1.194-.666 1.638-.444.444-.978.666-1.602.666zm17.191-5.508h-11.808v-2.304l11.52-17.028h3.312v16.452h3.168v2.88h-3.168V113h-3.024v-5.292zm0-2.88V92.84h-.144l-8.172 11.988h8.316zm14.527-12.168l-4.32 3.096-1.584-2.34 7.02-5.04h1.944V113h-3.06V92.66zM90.177 134.16c-.56 0-1.074-.17-1.54-.51-.467-.34-.787-.817-.96-1.43l.81-.33c.113.427.323.777.63 1.05.306.273.666.41 1.08.41.413 0 .763-.112 1.05-.335.286-.223.43-.528.43-.915 0-.333-.122-.608-.365-.825-.244-.217-.642-.418-1.195-.605l-.45-.16c-.507-.18-.92-.417-1.24-.71-.32-.293-.48-.7-.48-1.22 0-.34.093-.655.28-.945.186-.29.446-.522.78-.695.333-.173.706-.26 1.12-.26.413 0 .773.077 1.08.23.306.153.551.34.735.56.183.22.311.437.385.65l-.8.34c-.067-.247-.219-.47-.455-.67-.237-.2-.549-.3-.935-.3-.367 0-.68.103-.94.31-.26.207-.39.467-.39.78 0 .28.11.508.33.685.22.177.553.342 1 .495l.47.16c.606.22 1.08.495 1.42.825.34.33.51.778.51 1.345 0 .46-.119.847-.355 1.16-.237.313-.535.543-.895.69-.36.147-.73.22-1.11.22zm4.995 0c-.614 0-1.082-.18-1.405-.54-.324-.36-.485-.863-.485-1.51v-3.21h.85v3.08c0 .487.11.843.33 1.07.22.227.516.34.89.34.286 0 .541-.077.765-.23.223-.153.396-.353.52-.6.123-.247.185-.507.185-.78v-2.88h.85v5.1h-.81v-.74h-.04c-.14.253-.364.467-.67.64-.307.173-.634.26-.98.26zm3.615-5.26h.81v.75h.04c.14-.253.363-.468.67-.645.307-.177.633-.265.98-.265.613 0 1.082.178 1.405.535.323.357.485.842.485 1.455V134h-.85v-3.14c0-.473-.113-.817-.34-1.03-.227-.213-.537-.32-.93-.32-.273 0-.518.077-.735.23-.217.153-.385.355-.505.605s-.18.512-.18.785V134h-.85v-5.1zm8.88 5.26c-.526 0-.986-.145-1.38-.435-.393-.29-.67-.698-.83-1.225l.8-.33c.24.787.71 1.18 1.41 1.18.394 0 .709-.137.945-.41.237-.273.355-.633.355-1.08v-5.02h.85v4.95c0 .5-.091.928-.275 1.285-.183.357-.436.627-.76.81-.323.183-.695.275-1.115.275zm5.065 0c-.613 0-1.081-.18-1.405-.54-.323-.36-.485-.863-.485-1.51v-3.21h.85v3.08c0 .487.11.843.33 1.07.22.227.517.34.89.34.287 0 .542-.077.765-.23.224-.153.397-.353.52-.6.124-.247.185-.507.185-.78v-2.88h.85v5.1h-.81v-.74h-.04c-.14.253-.363.467-.67.64-.306.173-.633.26-.98.26zm3.616-7.32h.85V134h-.85v-7.16zm2.525 7.22c-.18 0-.332-.062-.455-.185-.124-.123-.185-.275-.185-.455 0-.173.061-.322.185-.445.123-.123.275-.185.455-.185.173 0 .321.062.445.185.123.123.185.272.185.445 0 .18-.062.332-.185.455-.124.123-.272.185-.445.185zm3.67-.91c.207-.207.617-.622 1.23-1.245.613-.623 1.04-1.065 1.28-1.325.34-.367.57-.653.69-.86.12-.207.18-.457.18-.75 0-.2-.052-.388-.155-.565-.103-.177-.253-.32-.45-.43-.197-.11-.432-.165-.705-.165-.36 0-.648.105-.865.315-.217.21-.358.438-.425.685l-.78-.31c.067-.213.187-.435.36-.665.173-.23.407-.427.7-.59.293-.163.64-.245 1.04-.245.42 0 .792.09 1.115.27.323.18.575.42.755.72.18.3.27.623.27.97 0 .7-.367 1.423-1.1 2.17l-2.05 2.06h3.23v.81h-4.32v-.85zm6.435.54l1.72-2.41-.02-.02c-.233.16-.53.24-.89.24-.346 0-.686-.097-1.02-.29-.333-.193-.603-.458-.81-.795-.206-.337-.31-.712-.31-1.125 0-.4.105-.775.315-1.125.21-.35.494-.632.85-.845.357-.213.745-.32 1.165-.32.454 0 .859.11 1.215.33.357.22.634.505.83.855.197.35.295.718.295 1.105 0 .367-.075.718-.225 1.055-.15.337-.365.712-.645 1.125l-1.79 2.69-.68-.47zm1-2.95c.267 0 .515-.065.745-.195.23-.13.412-.307.545-.53.134-.223.2-.468.2-.735 0-.273-.066-.522-.2-.745-.133-.223-.315-.4-.545-.53-.23-.13-.478-.195-.745-.195-.266 0-.513.065-.74.195-.226.13-.406.307-.54.53-.133.223-.2.472-.2.745 0 .267.067.512.2.735.134.223.314.4.54.53.227.13.474.195.74.195z"/>
20
+ </g>
21
+ </svg>
@@ -0,0 +1,16 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="220" height="472" viewBox="0 0 220 472">
2
+ <g fill="none" fill-rule="evenodd">
3
+ <path fill="#101211" fill-rule="nonzero" d="M30.877 0h158.246C206.202 0 220 14.3 220 32v408c0 17.7-13.798 32-30.877 32H30.877C13.798 472 0 457.7 0 440V32C0 14.3 13.798 0 30.877 0z"/>
4
+ <path fill="#23CCCC" fill-rule="nonzero" d="M55.965 11v3c0 7.2 5.596 13 12.544 13h82.982c6.948 0 12.544-5.8 12.544-13v-3h24.123c12.254 0 22.193 10.3 22.193 23v405c0 12.7-9.939 23-22.193 23H31.842C19.588 462 9.65 451.7 9.65 439V34c0-12.7 9.939-23 22.193-23h24.123z"/>
5
+ <path fill="#2E2E2E" fill-rule="nonzero" d="M76.566 455h66.868c.695 0 1.303.467 1.303 1 0 .533-.608 1-1.303 1H76.566c-.695 0-1.303-.467-1.303-1 0-.533.608-1 1.303-1z" opacity=".4"/>
6
+ <path fill="#FFF" fill-rule="nonzero" d="M24.095 242h171.81c2.674 0 3.644.278 4.622.801.978.523 1.745 1.29 2.268 2.268.523.978.801 1.948.801 4.623v61.616c0 2.675-.278 3.645-.8 4.623-.524.977-1.291 1.745-2.269 2.268-.978.523-1.948.801-4.622.801H24.095c-2.674 0-3.644-.278-4.622-.801-.978-.523-1.745-1.29-2.268-2.268-.523-.978-.801-1.948-.801-4.623v-61.616c0-2.675.278-3.645.8-4.623.524-.977 1.291-1.745 2.269-2.268.978-.523 1.948-.801 4.622-.801zM24.095 134h171.81c2.674 0 3.644.278 4.622.801.978.523 1.745 1.29 2.268 2.268.523.978.801 1.948.801 4.623v68.616c0 2.675-.278 3.645-.8 4.623-.524.977-1.291 1.745-2.269 2.268-.978.523-1.948.801-4.622.801H24.095c-2.674 0-3.644-.278-4.622-.801-.978-.523-1.745-1.29-2.268-2.268-.523-.978-.801-1.948-.801-4.623v-68.616c0-2.675.278-3.645.8-4.623.524-.977 1.291-1.745 2.269-2.268.978-.523 1.948-.801 4.622-.801z"/>
7
+ <path fill="#DFE2E7" d="M16.404 280H203.597V281H16.404z"/>
8
+ <text fill="#97A0AF" font-family="Roboto-Regular, Roboto" font-size="10">
9
+ <tspan x="170.386" y="158">NOW</tspan>
10
+ </text>
11
+ <text fill="#97A0AF" font-family="Roboto-Regular, Roboto" font-size="10">
12
+ <tspan x="29" y="158">MESSAGES</tspan>
13
+ </text>
14
+ <path fill="#FFF" fill-rule="nonzero" d="M112.991 43.3v-3.7c0-1.7-1.35-3.1-2.991-3.1-1.64 0-2.991 1.4-2.991 3.1v3.7h5.886c0-.1.096-.1.096 0zm1.544.5c.772.5 1.254 1.4 1.254 2.5v4.4c0 1.7-1.254 3-2.894 3h-5.79c-1.64 0-2.894-1.3-2.894-3v-4.4c0-1.1.482-2 1.35-2.5 0-.1-.096-.2-.096-.3v-3.9c0-2.6 2.026-4.6 4.535-4.6 2.509 0 4.535 2.1 4.535 4.6v4.2zM70.067 120.223c.026.488.137.884.333 1.19.374.57 1.031.855 1.974.855.422 0 .806-.063 1.153-.188.67-.242 1.006-.676 1.006-1.3 0-.47-.141-.803-.424-1.003-.286-.195-.735-.365-1.345-.51l-1.125-.263c-.735-.172-1.256-.361-1.56-.568-.529-.36-.792-.897-.792-1.612 0-.773.258-1.408.774-1.904.517-.496 1.248-.744 2.194-.744.87 0 1.61.218 2.219.653.609.436.913 1.132.913 2.089H74.33c-.057-.461-.177-.814-.362-1.06-.343-.45-.925-.674-1.747-.674-.663 0-1.14.144-1.43.433-.29.29-.436.625-.436 1.008 0 .422.17.73.509.926.222.125.726.281 1.51.469l1.164.275c.562.133.995.314 1.3.545.528.402.792.986.792 1.752 0 .953-.334 1.635-1.003 2.045-.67.41-1.447.615-2.333.615-1.032 0-1.84-.273-2.425-.82-.584-.543-.87-1.28-.86-2.21h1.058zm8.038-3.498v4.166c0 .32.05.582.147.785.181.375.519.562 1.012.562.709 0 1.191-.328 1.448-.984.14-.352.209-.834.209-1.447v-3.082h1.018V123h-.962l.012-.926c-.132.239-.296.44-.492.604-.388.328-.86.492-1.414.492-.863 0-1.45-.299-1.764-.897-.17-.32-.254-.748-.254-1.283v-4.265h1.04zm5.59 0h.968v.89c.286-.367.59-.63.91-.79.32-.16.676-.241 1.068-.241.86 0 1.44.31 1.742.932.166.34.248.826.248 1.459V123h-1.034v-3.955c0-.383-.055-.691-.164-.926-.181-.39-.509-.586-.984-.586-.241 0-.439.026-.594.076-.278.086-.523.258-.735.516-.17.207-.28.42-.33.642-.051.22-.077.536-.077.946V123h-1.017v-6.275zm7.253 3.21c0 .672.138 1.235.413 1.688.275.453.716.68 1.323.68.471 0 .858-.21 1.162-.63.303-.42.455-1.023.455-1.808 0-.793-.156-1.38-.47-1.76-.312-.381-.698-.572-1.158-.572-.513 0-.928.203-1.247.61-.318.406-.478 1.003-.478 1.793zm1.533-3.322c.463 0 .851.102 1.164.305.181.117.387.322.616.615v-3.17h.979V123h-.916v-.873c-.238.387-.519.666-.843.838-.324.172-.695.258-1.114.258-.674 0-1.258-.294-1.752-.882-.494-.588-.74-1.37-.74-2.347 0-.914.224-1.706.675-2.376.45-.67 1.094-1.005 1.93-1.005zm5.211 4.717c0 .305.108.545.322.72.215.177.47.264.764.264.358 0 .704-.085 1.04-.257.565-.286.848-.752.848-1.4v-.85c-.124.082-.285.15-.48.205-.197.054-.389.093-.577.117l-.617.082c-.369.05-.646.13-.83.24-.313.184-.47.477-.47.88zm2.465-2.133c.234-.031.39-.133.47-.304.045-.094.067-.229.067-.405 0-.36-.123-.62-.37-.782-.247-.162-.6-.243-1.06-.243-.532 0-.909.148-1.13.445-.125.164-.206.408-.244.733h-.95c.019-.774.261-1.312.727-1.615.465-.302 1.005-.454 1.62-.454.712 0 1.29.14 1.735.422.441.281.662.719.662 1.313v3.615c0 .11.021.197.065.264.043.066.134.1.274.1.045 0 .096-.004.153-.01.056-.005.116-.014.18-.026v.78c-.158.046-.278.075-.361.087-.083.012-.196.018-.34.018-.35 0-.605-.13-.763-.387-.083-.137-.141-.33-.175-.58-.207.281-.505.525-.893.732-.389.207-.816.31-1.284.31-.561 0-1.02-.176-1.377-.53-.356-.353-.534-.795-.534-1.326 0-.583.175-1.034.526-1.354.35-.32.81-.518 1.38-.592l1.622-.21zm7.145-2.472h1.125c-.143.402-.461 1.32-.955 2.754-.37 1.078-.678 1.957-.927 2.636-.588 1.602-1.003 2.578-1.244 2.93-.241.351-.656.527-1.244.527-.143 0-.253-.006-.33-.017-.078-.012-.173-.034-.286-.065v-.96c.177.05.305.081.384.093.08.012.15.018.21.018.188 0 .326-.033.415-.097.089-.065.163-.144.223-.237.02-.032.087-.192.204-.48.117-.29.202-.505.254-.645l-2.239-6.457h1.154l1.622 5.109 1.634-5.11zm1.537 7.5c.26-.047.443-.237.548-.569.057-.176.085-.345.085-.51 0-.027 0-.051-.003-.073-.001-.021-.006-.046-.014-.073h-.616v-1.277h1.21v1.183c0 .465-.09.873-.271 1.225-.181.351-.494.568-.939.65v-.556zm6.172-1.225c.037-.723.181-1.352.432-1.887.25-.535.74-1.021 1.467-1.459l1.086-.65c.486-.293.827-.543 1.023-.75.31-.324.464-.695.464-1.113 0-.489-.142-.876-.424-1.163-.283-.288-.66-.431-1.131-.431-.697 0-1.18.273-1.447.82-.144.293-.223.7-.238 1.219h-1.035c.012-.73.142-1.326.39-1.787.442-.813 1.22-1.219 2.336-1.219.927 0 1.604.26 2.032.78.428.519.642 1.097.642 1.734 0 .672-.228 1.246-.684 1.722-.264.278-.737.614-1.42 1.008l-.774.446c-.37.21-.66.412-.87.603-.378.34-.615.717-.713 1.13h4.421V123h-5.557zm7.784-2.027c.03.582.246.984.65 1.207.207.117.44.175.7.175.487 0 .902-.21 1.245-.63.343-.42.586-1.272.729-2.557-.226.371-.506.632-.84.782-.333.15-.692.226-1.077.226-.78 0-1.397-.252-1.851-.756-.454-.504-.681-1.152-.681-1.945 0-.762.224-1.432.672-2.01.449-.578 1.11-.867 1.985-.867 1.18 0 1.994.55 2.442 1.652.249.605.373 1.363.373 2.273 0 1.028-.149 1.938-.446 2.73-.494 1.321-1.33 1.981-2.51 1.981-.792 0-1.393-.214-1.804-.644-.411-.43-.616-.969-.616-1.617h1.029zm1.543-1.723c.403 0 .772-.138 1.105-.413.334-.275.5-.757.5-1.444 0-.618-.15-1.078-.449-1.38-.3-.303-.681-.454-1.145-.454-.497 0-.892.172-1.184.518-.292.346-.438.808-.438 1.386 0 .547.128.981.384 1.304.257.322.665.483 1.227.483zm11.87 1.184c0 .726-.103 1.29-.31 1.693-.385.734-1.116 1.102-2.194 1.102-.622 0-1.153-.175-1.594-.525-.441-.35-.662-.972-.662-1.866v-.615h1.057v.615c0 .469.101.821.303 1.058.202.236.515.354.941.354.6 0 .992-.213 1.176-.639.113-.261.17-.756.17-1.482v-5.736h1.114v6.04zm2.764-3.71v4.167c0 .32.05.582.147.785.181.375.518.562 1.012.562.709 0 1.191-.328 1.448-.984.139-.352.209-.834.209-1.447v-3.082h1.017V123h-.96l.01-.926c-.131.239-.295.44-.491.604-.389.328-.86.492-1.414.492-.863 0-1.45-.299-1.764-.897-.17-.32-.254-.748-.254-1.283v-4.265h1.04zm5.619-2.331h1.018V123h-1.018v-8.607zm6.495 2.332h1.125c-.143.402-.462 1.32-.956 2.754-.369 1.078-.678 1.957-.927 2.636-.588 1.602-1.002 2.578-1.244 2.93-.24.351-.655.527-1.243.527-.144 0-.254-.006-.331-.017-.077-.012-.173-.034-.286-.065v-.96c.177.05.306.081.385.093.079.012.149.018.209.018.188 0 .327-.033.415-.097.09-.065.164-.144.224-.237.019-.032.087-.192.203-.48.117-.29.202-.505.255-.645l-2.24-6.457h1.154l1.623 5.109 1.634-5.11zM78.271 92.566c.11 2.135.905 3.61 2.384 4.426.76.43 1.617.645 2.57.645 1.784 0 3.304-.77 4.562-2.31 1.257-1.54 2.149-4.666 2.674-9.378-.83 1.36-1.856 2.317-3.079 2.868-1.223.552-2.54.828-3.949.828-2.86 0-5.124-.924-6.79-2.772-1.664-1.848-2.497-4.225-2.497-7.133 0-2.793.822-5.25 2.467-7.369 1.644-2.12 4.07-3.18 7.276-3.18 4.326 0 7.311 2.02 8.956 6.059.912 2.22 1.368 4.999 1.368 8.336 0 3.767-.546 7.104-1.638 10.012-1.81 4.84-4.878 7.261-9.204 7.261-2.902 0-5.107-.787-6.613-2.363-1.507-1.575-2.26-3.552-2.26-5.93h3.773zm5.66-6.316c1.478 0 2.83-.505 4.052-1.515 1.224-1.01 1.835-2.775 1.835-5.296 0-2.263-.55-3.95-1.648-5.06-1.099-1.11-2.498-1.664-4.198-1.664-1.824 0-3.272.634-4.343 1.901-1.071 1.268-1.607 2.961-1.607 5.081 0 2.005.47 3.599 1.41 4.78.94 1.182 2.44 1.773 4.499 1.773zm16.975-8.959h4.333v4.684h-4.333V77.29zm0 18.025h4.333V100h-4.333v-4.684zm21.08-6.209V75.164l-9.515 13.943h9.515zm.062 10.893v-7.52H109.03V88.7l13.6-19.552h3.15v19.96h4.375v3.372h-4.374V100h-3.732zm13.534-21.785V75.25c2.695-.272 4.575-.727 5.639-1.364 1.064-.638 1.859-2.145 2.384-4.523h2.944V100h-3.98V78.215h-6.987z"/>
15
+ </g>
16
+ </svg>
@@ -0,0 +1,22 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="220" height="472" viewBox="0 0 220 472">
2
+ <g fill="none" fill-rule="evenodd">
3
+ <rect width="220" height="472" fill="#101211" rx="26"/>
4
+ <rect width="202" height="404" x="9" y="36" fill="#F4F5F7" rx="9"/>
5
+ <rect width="182" height="136" x="19" y="92" fill="#F4F5F7" rx="17.5"/>
6
+ <path fill="#CF0E8F" d="M18 36h184c4.97 0 9 4.03 9 9v6H9v-6c0-4.97 4.03-9 9-9z"/>
7
+ <path fill="#FFF" d="M9 404h202v28.5c0 4.142-3.358 7.5-7.5 7.5h-187c-4.142 0-7.5-3.358-7.5-7.5V404z"/>
8
+ <path fill="#E51FA3" d="M9 51H211V82H9z" transform="matrix(1 0 0 -1 0 133)"/>
9
+ <rect width="52" height="5" x="84" y="14" fill="#2E2E2E" rx="2.5"/>
10
+ <rect width="52" height="5" x="84" y="455" fill="#2E2E2E" rx="2.5"/>
11
+ <circle cx="45.5" cy="19.5" r="5.5" fill="#2E2E2E"/>
12
+ <circle cx="65.5" cy="19.5" r="3.5" fill="#2E2E2E"/>
13
+ <text fill="#FFF" font-family="Roboto-Regular, Roboto" font-size="12" letter-spacing=".175">
14
+ <tspan x="49.5" y="71">Sender ID</tspan>
15
+ </text>
16
+ <circle cx="199" cy="63" r="1" fill="#FFF"/>
17
+ <circle cx="199" cy="70" r="1" fill="#FFF"/>
18
+ <circle cx="199" cy="66.5" r="1" fill="#FFF"/>
19
+ <path fill="#FFF" d="M28 66c0 .279-.226.505-.505.505h-5.556l2.42 2.42c.198.197.198.518 0 .716-.198.198-.52.198-.718 0l-2.934-2.934c-.39-.39-.39-1.024 0-1.414l2.934-2.934c.198-.198.52-.198.718 0 .198.198.198.519 0 .717l-2.42 2.419h5.556c.279 0 .505.226.505.505z"/>
20
+ <path fill="#B3BAC5" d="M189.006 427.286L201 422.143 189.006 417 189 421 197.571 422.143 189 423.286z"/>
21
+ </g>
22
+ </svg>