@unbxd-ui/unbxd-react-components 0.3.3 → 0.3.4

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.
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.WithCustomTooltipComponents = exports.StartingWithV2 = exports.StartingWithV1 = exports.Default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _PulseVersionToggler = _interopRequireDefault(require("./PulseVersionToggler"));
9
+ require("./pulse-version-toggler.css");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
12
+ var meta = {
13
+ title: 'Components/PulseVersionToggler',
14
+ component: _PulseVersionToggler["default"],
15
+ parameters: {
16
+ layout: 'fullscreen',
17
+ docs: {
18
+ description: {
19
+ component: 'A floating button component for toggling between different versions (v1/v2) with API integration, cookie management, and loading states.'
20
+ }
21
+ }
22
+ },
23
+ tags: ['autodocs'],
24
+ argTypes: {
25
+ className: {
26
+ control: 'text',
27
+ description: 'Additional CSS class names'
28
+ },
29
+ endpoint: {
30
+ control: 'text',
31
+ description: 'API endpoint for version toggle'
32
+ },
33
+ cookieName: {
34
+ control: 'text',
35
+ description: 'Name of the cookie to track version'
36
+ },
37
+ queryParamKey: {
38
+ control: 'text',
39
+ description: 'Key name for the version parameter in API request'
40
+ },
41
+ tooltipMessageOn: {
42
+ control: 'text',
43
+ description: 'Tooltip message when v2 is active (can be string or function)'
44
+ },
45
+ tooltipMessageOff: {
46
+ control: 'text',
47
+ description: 'Tooltip message when v1 is active (can be string or function)'
48
+ },
49
+ successMessage: {
50
+ control: 'text',
51
+ description: 'Success message after version switch (can be string or function)'
52
+ },
53
+ errorMessage: {
54
+ control: 'text',
55
+ description: 'Error message when version switch fails (can be string or function)'
56
+ },
57
+ reloadDelay: {
58
+ control: 'number',
59
+ description: 'Delay in milliseconds before page reload after successful switch'
60
+ },
61
+ shouldFallbackToV2: {
62
+ control: 'boolean',
63
+ description: 'Initial state when no cookie exists - true for v2, false for v1'
64
+ }
65
+ }
66
+ };
67
+ var _default = exports["default"] = meta; // Default Story
68
+ var Default = exports.Default = {
69
+ args: {
70
+ endpoint: '/api/v1/pulse/version',
71
+ cookieName: '_pulse_ver',
72
+ queryParamKey: 'version',
73
+ shouldFallbackToV2: true
74
+ },
75
+ render: function render(args) {
76
+ // Mock fetch for Storybook (without Jest)
77
+ _react["default"].useEffect(function () {
78
+ var originalFetch = global.fetch;
79
+ global.fetch = function (url, options) {
80
+ console.log('Mock API Call:', url, options === null || options === void 0 ? void 0 : options.body);
81
+ return Promise.resolve({
82
+ ok: true,
83
+ status: 200,
84
+ json: function json() {
85
+ return Promise.resolve({
86
+ success: true
87
+ });
88
+ }
89
+ });
90
+ };
91
+ return function () {
92
+ global.fetch = originalFetch;
93
+ };
94
+ }, []);
95
+ return /*#__PURE__*/_react["default"].createElement("div", {
96
+ style: {
97
+ height: '400px',
98
+ position: 'relative'
99
+ }
100
+ }, /*#__PURE__*/_react["default"].createElement(_PulseVersionToggler["default"], args), /*#__PURE__*/_react["default"].createElement("div", {
101
+ style: {
102
+ padding: '20px',
103
+ maxWidth: '600px'
104
+ }
105
+ }, /*#__PURE__*/_react["default"].createElement("h2", null, "Floating Version Toggle Button"), /*#__PURE__*/_react["default"].createElement("p", null, "This button appears in the bottom-right corner of the page."), /*#__PURE__*/_react["default"].createElement("p", null, "Hover over the button to see the tooltip and click to toggle between versions."), /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("strong", null, "Note:"), " In Storybook, the API calls are mocked and page reload is disabled.")));
106
+ }
107
+ };
108
+
109
+ // With Custom Tooltip Components
110
+ var WithCustomTooltipComponents = exports.WithCustomTooltipComponents = {
111
+ args: {
112
+ endpoint: '/api/v1/pulse/version',
113
+ cookieName: '_pulse_ver',
114
+ queryParamKey: 'version',
115
+ shouldFallbackToV2: true
116
+ },
117
+ render: function render(args) {
118
+ _react["default"].useEffect(function () {
119
+ var originalFetch = global.fetch;
120
+ global.fetch = function (url, options) {
121
+ console.log('Mock API Call:', url, options === null || options === void 0 ? void 0 : options.body);
122
+ return Promise.resolve({
123
+ ok: true,
124
+ status: 200,
125
+ json: function json() {
126
+ return Promise.resolve({
127
+ success: true
128
+ });
129
+ }
130
+ });
131
+ };
132
+ return function () {
133
+ global.fetch = originalFetch;
134
+ };
135
+ }, []);
136
+
137
+ // Custom tooltip component for v2 (on state)
138
+ var TooltipV2Component = function TooltipV2Component(currentVersion, targetVersion) {
139
+ return /*#__PURE__*/_react["default"].createElement("div", {
140
+ style: {
141
+ display: 'flex',
142
+ flexDirection: 'column',
143
+ gap: '8px'
144
+ }
145
+ }, /*#__PURE__*/_react["default"].createElement("div", {
146
+ style: {
147
+ display: 'flex',
148
+ alignItems: 'center',
149
+ gap: '8px'
150
+ }
151
+ }, /*#__PURE__*/_react["default"].createElement("span", {
152
+ style: {
153
+ background: '#10b981',
154
+ color: 'white',
155
+ padding: '2px 8px',
156
+ borderRadius: '4px',
157
+ fontSize: '12px',
158
+ fontWeight: 'bold'
159
+ }
160
+ }, currentVersion.toUpperCase()), /*#__PURE__*/_react["default"].createElement("span", null, "You're on the new experience")), /*#__PURE__*/_react["default"].createElement("div", {
161
+ style: {
162
+ fontSize: '13px',
163
+ color: '#666'
164
+ }
165
+ }, "Click to switch back to ", targetVersion.toUpperCase(), " (Classic)"));
166
+ };
167
+
168
+ // Custom tooltip component for v1 (off state)
169
+ var TooltipV1Component = function TooltipV1Component(currentVersion, targetVersion) {
170
+ return /*#__PURE__*/_react["default"].createElement("div", {
171
+ style: {
172
+ display: 'flex',
173
+ flexDirection: 'column',
174
+ gap: '8px'
175
+ }
176
+ }, /*#__PURE__*/_react["default"].createElement("div", {
177
+ style: {
178
+ display: 'flex',
179
+ alignItems: 'center',
180
+ gap: '8px'
181
+ }
182
+ }, /*#__PURE__*/_react["default"].createElement("span", {
183
+ style: {
184
+ background: '#3b82f6',
185
+ color: 'white',
186
+ padding: '2px 8px',
187
+ borderRadius: '4px',
188
+ fontSize: '12px',
189
+ fontWeight: 'bold'
190
+ }
191
+ }, currentVersion.toUpperCase()), /*#__PURE__*/_react["default"].createElement("span", null, "You're on the classic version")), /*#__PURE__*/_react["default"].createElement("div", {
192
+ style: {
193
+ fontSize: '13px',
194
+ color: '#666'
195
+ }
196
+ }, "\u2728 Try the new ", targetVersion.toUpperCase(), " experience!"));
197
+ };
198
+ return /*#__PURE__*/_react["default"].createElement("div", {
199
+ style: {
200
+ height: '400px',
201
+ position: 'relative'
202
+ }
203
+ }, /*#__PURE__*/_react["default"].createElement(_PulseVersionToggler["default"], _extends({}, args, {
204
+ tooltipMessageOn: TooltipV2Component,
205
+ tooltipMessageOff: TooltipV1Component
206
+ })), /*#__PURE__*/_react["default"].createElement("div", {
207
+ style: {
208
+ padding: '20px',
209
+ maxWidth: '600px'
210
+ }
211
+ }, /*#__PURE__*/_react["default"].createElement("h2", null, "Custom Tooltip Components"), /*#__PURE__*/_react["default"].createElement("p", null, "This example demonstrates passing React components as tooltip messages."), /*#__PURE__*/_react["default"].createElement("p", null, "The tooltips include custom styling with badges, icons, and multi-line content."), /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("strong", null, "Features:")), /*#__PURE__*/_react["default"].createElement("ul", null, /*#__PURE__*/_react["default"].createElement("li", null, "Version badges with different colors"), /*#__PURE__*/_react["default"].createElement("li", null, "Multi-line content with descriptions"), /*#__PURE__*/_react["default"].createElement("li", null, "Custom typography and spacing"), /*#__PURE__*/_react["default"].createElement("li", null, "Dynamic content based on current/target version"))));
212
+ }
213
+ };
214
+
215
+ // Starting with V1 (shouldFallbackToV2 = false)
216
+ var StartingWithV1 = exports.StartingWithV1 = {
217
+ args: {
218
+ endpoint: '/api/v1/pulse/version',
219
+ cookieName: '_pulse_ver_v1',
220
+ queryParamKey: 'version',
221
+ shouldFallbackToV2: false
222
+ },
223
+ render: function render(args) {
224
+ _react["default"].useEffect(function () {
225
+ var originalFetch = global.fetch;
226
+ global.fetch = function (url, options) {
227
+ console.log('Mock API Call:', url, options === null || options === void 0 ? void 0 : options.body);
228
+ return Promise.resolve({
229
+ ok: true,
230
+ status: 200,
231
+ json: function json() {
232
+ return Promise.resolve({
233
+ success: true
234
+ });
235
+ }
236
+ });
237
+ };
238
+ return function () {
239
+ global.fetch = originalFetch;
240
+ };
241
+ }, []);
242
+ return /*#__PURE__*/_react["default"].createElement("div", {
243
+ style: {
244
+ height: '400px',
245
+ position: 'relative'
246
+ }
247
+ }, /*#__PURE__*/_react["default"].createElement(_PulseVersionToggler["default"], args), /*#__PURE__*/_react["default"].createElement("div", {
248
+ style: {
249
+ padding: '20px',
250
+ maxWidth: '600px'
251
+ }
252
+ }, /*#__PURE__*/_react["default"].createElement("h2", null, "Starting with V1 (Classic)"), /*#__PURE__*/_react["default"].createElement("p", null, "This example sets ", /*#__PURE__*/_react["default"].createElement("code", null, "shouldFallbackToV2"), " to ", /*#__PURE__*/_react["default"].createElement("code", null, "false"), "."), /*#__PURE__*/_react["default"].createElement("p", null, "When no cookie exists, the component will default to ", /*#__PURE__*/_react["default"].createElement("strong", null, "V1"), " (classic version)."), /*#__PURE__*/_react["default"].createElement("p", null, "The button will show \"V1\" and allow users to switch to V2."), /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("strong", null, "Use case:"), " Perfect for users who should see the classic version by default.")));
253
+ }
254
+ };
255
+
256
+ // Starting with V2 (shouldFallbackToV2 = true)
257
+ var StartingWithV2 = exports.StartingWithV2 = {
258
+ args: {
259
+ endpoint: '/api/v1/pulse/version',
260
+ cookieName: '_pulse_ver_v2',
261
+ queryParamKey: 'version',
262
+ shouldFallbackToV2: true
263
+ },
264
+ render: function render(args) {
265
+ _react["default"].useEffect(function () {
266
+ var originalFetch = global.fetch;
267
+ global.fetch = function (url, options) {
268
+ console.log('Mock API Call:', url, options === null || options === void 0 ? void 0 : options.body);
269
+ return Promise.resolve({
270
+ ok: true,
271
+ status: 200,
272
+ json: function json() {
273
+ return Promise.resolve({
274
+ success: true
275
+ });
276
+ }
277
+ });
278
+ };
279
+ return function () {
280
+ global.fetch = originalFetch;
281
+ };
282
+ }, []);
283
+ return /*#__PURE__*/_react["default"].createElement("div", {
284
+ style: {
285
+ height: '400px',
286
+ position: 'relative'
287
+ }
288
+ }, /*#__PURE__*/_react["default"].createElement(_PulseVersionToggler["default"], args), /*#__PURE__*/_react["default"].createElement("div", {
289
+ style: {
290
+ padding: '20px',
291
+ maxWidth: '600px'
292
+ }
293
+ }, /*#__PURE__*/_react["default"].createElement("h2", null, "Starting with V2 (New Experience)"), /*#__PURE__*/_react["default"].createElement("p", null, "This example sets ", /*#__PURE__*/_react["default"].createElement("code", null, "shouldFallbackToV2"), " to ", /*#__PURE__*/_react["default"].createElement("code", null, "true"), "."), /*#__PURE__*/_react["default"].createElement("p", null, "When no cookie exists, the component will default to ", /*#__PURE__*/_react["default"].createElement("strong", null, "V2"), " (new version)."), /*#__PURE__*/_react["default"].createElement("p", null, "The button will show \"V2\" with the active state and allow users to switch back to V1."), /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("strong", null, "Use case:"), " Perfect for users who should see the new experience by default.")));
294
+ }
295
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _PulseVersionToggler = _interopRequireDefault(require("./PulseVersionToggler"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
+ var _default = exports["default"] = _PulseVersionToggler["default"];
@@ -0,0 +1 @@
1
+ .RCB-pulse-toggler{position:fixed;right:-5px;top:50%;transform:translateY(-50%);z-index:9999;display:flex;align-items:center;transition:right 0.3s ease}.RCB-pulse-toggler.RCB-pulse-toggler-visible{right:0}.RCB-pulse-toggler-btn-text{font-size:10px}.RCB-pulse-toggler-btn{border:none;border-radius:8px 0 0 8px;cursor:pointer;font-size:12px;font-weight:600;font-family:inherit;letter-spacing:0.5px;color:#fff;background-color:#8a8a8a;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:background-color 0.2s ease;box-shadow:-2px 2px 8px rgba(0,0,0,0.15);padding:6px 10px}.RCB-pulse-toggler-btn:hover{background-color:#6e6e6e}.RCB-pulse-toggler-btn:disabled{cursor:not-allowed;opacity:0.7}.RCB-pulse-toggler-btn.active{background-color:#3E71F2}.RCB-pulse-toggler-btn.active:hover{background-color:#3865D9}.RCB-pulse-toggler-tooltip{position:absolute;right:45px;top:50%;transform:translateY(-50%);background:#fff;color:#333;padding:10px 14px;border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,0.15);font-size:13px;line-height:1.5;width:220px;white-space:normal;pointer-events:none}.RCB-pulse-toggler-tooltip-arrow{position:absolute;right:-6px;top:50%;transform:translateY(-50%);width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #fff}.RCB-pulse-toggler-loader-wrap{display:flex;align-items:center;gap:8px}.RCB-pulse-toggler-loader{display:inline-block;width:16px;height:16px;border:2px solid #e0e0e0;border-top-color:#3E71F2;border-radius:50%;animation:RCB-pulse-spin 0.6s linear infinite;flex-shrink:0}@keyframes RCB-pulse-spin{to{transform:rotate(360deg)}}
@@ -0,0 +1,106 @@
1
+ .RCB-pulse-toggler {
2
+ position: fixed;
3
+ right: -5px;
4
+ top: 50%;
5
+ transform: translateY(-50%);
6
+ z-index: 9999;
7
+ display: flex;
8
+ align-items: center;
9
+ transition: right 0.3s ease;
10
+
11
+ &.RCB-pulse-toggler-visible {
12
+ right: 0;
13
+ }
14
+
15
+ &-btn-text {
16
+ font-size: 10px;
17
+ }
18
+
19
+ &-btn {
20
+ border: none;
21
+ border-radius: 8px 0 0 8px;
22
+ cursor: pointer;
23
+ font-size: 12px;
24
+ font-weight: 600;
25
+ font-family: inherit;
26
+ letter-spacing: 0.5px;
27
+ color: #fff;
28
+ background-color: #8a8a8a;
29
+ display: flex;
30
+ flex-direction: column;
31
+ align-items: center;
32
+ justify-content: center;
33
+ transition: background-color 0.2s ease;
34
+ box-shadow: -2px 2px 8px rgba(0, 0, 0, 0.15);
35
+ padding: 6px 10px;
36
+
37
+ &:hover {
38
+ background-color: #6e6e6e;
39
+ }
40
+
41
+ &:disabled {
42
+ cursor: not-allowed;
43
+ opacity: 0.7;
44
+ }
45
+
46
+ &.active {
47
+ background-color: #3E71F2;
48
+
49
+ &:hover {
50
+ background-color: #3865D9;
51
+ }
52
+ }
53
+ }
54
+
55
+ &-tooltip {
56
+ position: absolute;
57
+ right: 45px;
58
+ top: 50%;
59
+ transform: translateY(-50%);
60
+ background: #fff;
61
+ color: #333;
62
+ padding: 10px 14px;
63
+ border-radius: 6px;
64
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
65
+ font-size: 13px;
66
+ line-height: 1.5;
67
+ width: 220px;
68
+ white-space: normal;
69
+ pointer-events: none;
70
+
71
+ &-arrow {
72
+ position: absolute;
73
+ right: -6px;
74
+ top: 50%;
75
+ transform: translateY(-50%);
76
+ width: 0;
77
+ height: 0;
78
+ border-top: 6px solid transparent;
79
+ border-bottom: 6px solid transparent;
80
+ border-left: 6px solid #fff;
81
+ }
82
+ }
83
+
84
+ &-loader-wrap {
85
+ display: flex;
86
+ align-items: center;
87
+ gap: 8px;
88
+ }
89
+
90
+ &-loader {
91
+ display: inline-block;
92
+ width: 16px;
93
+ height: 16px;
94
+ border: 2px solid #e0e0e0;
95
+ border-top-color: #3E71F2;
96
+ border-radius: 50%;
97
+ animation: RCB-pulse-spin 0.6s linear infinite;
98
+ flex-shrink: 0;
99
+ }
100
+ }
101
+
102
+ @keyframes RCB-pulse-spin {
103
+ to {
104
+ transform: rotate(360deg);
105
+ }
106
+ }
@@ -6,13 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports["default"] = UIDItemComponent;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
- var _desktop = _interopRequireDefault(require("../../assets/desktop.svg"));
10
- var _mapPin = _interopRequireDefault(require("../../assets/map-pin.svg"));
11
- var _p = _interopRequireDefault(require("../../assets/p1.svg"));
12
- var _p2 = _interopRequireDefault(require("../../assets/p2.svg"));
13
- var _p3 = _interopRequireDefault(require("../../assets/p3.svg"));
14
- var _p4 = _interopRequireDefault(require("../../assets/p4.svg"));
15
- var _p5 = _interopRequireDefault(require("../../assets/p5.svg"));
9
+ var _icon = _interopRequireDefault(require("../../core/icon"));
16
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
17
11
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
18
12
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
@@ -36,7 +30,9 @@ function UIDItemComponent(props) {
36
30
  _props$index = props.index,
37
31
  index = _props$index === void 0 ? 0 : _props$index,
38
32
  _props$style = props.style,
39
- style = _props$style === void 0 ? {} : _props$style;
33
+ style = _props$style === void 0 ? {} : _props$style,
34
+ _props$avatars = props.avatars,
35
+ clientAvatars = _props$avatars === void 0 ? [] : _props$avatars;
40
36
  var _data$items = data.items,
41
37
  items = _data$items === void 0 ? [] : _data$items,
42
38
  _data$paginationType = data.paginationType,
@@ -44,10 +40,13 @@ function UIDItemComponent(props) {
44
40
  _data$selectItem = data.selectItem,
45
41
  serverSelectItem = _data$selectItem === void 0 ? function () {} : _data$selectItem,
46
42
  _data$selectedItems = data.selectedItems,
47
- serverSelectedItems = _data$selectedItems === void 0 ? [] : _data$selectedItems;
43
+ serverSelectedItems = _data$selectedItems === void 0 ? [] : _data$selectedItems,
44
+ _data$avatars = data.avatars,
45
+ serverAvatars = _data$avatars === void 0 ? [] : _data$avatars;
48
46
 
49
47
  // Determine the pagination type
50
48
  var paginationType = clientPaginationType ? "CLIENT" : serverPaginationType;
49
+ var avatars = paginationType !== 'SERVER' ? clientAvatars : serverAvatars;
51
50
 
52
51
  // Update the item data and select item function based on the pagination type
53
52
  var updatedItemData = paginationType !== 'SERVER' ? itemData : items[index] || {};
@@ -104,8 +103,7 @@ function UIDItemComponent(props) {
104
103
  return [].concat(_toConsumableArray(platforms), _toConsumableArray(devices)).join(", ");
105
104
  }, [platforms, devices]);
106
105
  var getAvatarSrc = function getAvatarSrc(rank) {
107
- var avatars = [_p["default"], _p2["default"], _p3["default"], _p4["default"], _p5["default"]];
108
- var avatarIndex = rank % 5;
106
+ var avatarIndex = rank % avatars.length;
109
107
  return avatars[avatarIndex];
110
108
  };
111
109
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -132,16 +130,14 @@ function UIDItemComponent(props) {
132
130
  className: "RCB-user-id-metadata"
133
131
  }, locationMetadata && /*#__PURE__*/_react["default"].createElement("div", {
134
132
  className: "RCB-user-id-metadata-item RCB-location-metadata-item"
135
- }, /*#__PURE__*/_react["default"].createElement("img", {
136
- src: _mapPin["default"],
137
- alt: "location",
138
- className: "RCB-location-icon"
133
+ }, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
134
+ icon: "map-pin",
135
+ size: "16px"
139
136
  }), /*#__PURE__*/_react["default"].createElement("span", null, " ", locationMetadata)), locationMetadata && deviceMetadata && /*#__PURE__*/_react["default"].createElement("div", null, "|"), deviceMetadata && /*#__PURE__*/_react["default"].createElement("div", {
140
137
  className: "RCB-user-id-metadata-item"
141
- }, /*#__PURE__*/_react["default"].createElement("img", {
142
- src: _desktop["default"],
143
- alt: "device",
144
- className: "RCB-device-icon"
138
+ }, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
139
+ icon: "desktop",
140
+ size: "16px"
145
141
  }), /*#__PURE__*/_react["default"].createElement("span", null, deviceMetadata))))), /*#__PURE__*/_react["default"].createElement("div", {
146
142
  className: "RCB-user-id-description"
147
143
  }, "This user is a ", /*#__PURE__*/_react["default"].createElement("b", null, user_types), " visitor with", " ", /*#__PURE__*/_react["default"].createElement("b", null, session_count), " sessions and ", /*#__PURE__*/_react["default"].createElement("b", null, total_events), " ", "events. They made ", /*#__PURE__*/_react["default"].createElement("b", null, clicks), " clicks, placed ", /*#__PURE__*/_react["default"].createElement("b", null, orders), " ", "order(s) worth ", /*#__PURE__*/_react["default"].createElement("b", null, "$", revenue), ".")))));