@opentiny/vue-docs 3.24.1 → 3.24.3

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.
@@ -1,391 +1,380 @@
1
- <template>
2
- <div class="header">
3
- <div class="qr-code-trigger" @click="showQrCode = true">
4
- <IconAi class="qr-icon" />
5
- <div class="qr-text-wrapper">
6
- <span class="qr-label">手机遥控</span>
7
- <span class="qr-desc">扫码体验移动端操作</span>
8
- </div>
9
- </div>
10
- </div>
11
- <div class="app-container">
12
- <!-- 主体内容区域 -->
13
- <div class="main-content">
14
- <Demo />
15
- </div>
16
- <div class="right-panel" :class="{ collapsed: !appData.showTinyRobot }">
17
- <tiny-robot-chat :prompt-items="promptItems" :suggestion-pill-items="suggestionPillItems" />
18
- </div>
19
- <IconAi @click="appData.showTinyRobot = !appData.showTinyRobot" class="style-settings-icon"></IconAi>
20
- </div>
21
-
22
- <!-- QR Code Modal -->
23
- <Teleport to="body">
24
- <div class="qr-modal" v-if="showQrCode" @click.self="showQrCode = false">
25
- <div class="qr-modal-content">
26
- <div class="qr-modal-header">
27
- <h3>手机遥控体验</h3>
28
- </div>
29
- <div class="qr-modal-body">
30
- <div class="qr-wrapper">
31
- <tiny-qr-code :value="sessionUrl" :size="200" color="#1677ff"></tiny-qr-code>
32
- <div class="qr-status">
33
- <div class="status-dot"></div>
34
- <span>链接已生成</span>
35
- </div>
36
- </div>
37
- <div class="qr-instructions">
38
- <p class="instruction-title">使用说明</p>
39
- <ol class="instruction-steps">
40
- <li>使用微信扫一扫,扫描上方二维码</li>
41
- <li>然后点击微信右上角的 "..." 图标</li>
42
- <li>选择在默认浏览器中打开</li>
43
- <li>可以选择直接语音交互也可使用AI对话框进行交互</li>
44
- </ol>
45
- </div>
46
- </div>
47
- </div>
48
- </div>
49
- </Teleport>
50
- </template>
51
-
52
- <script setup lang="ts">
53
- import { watch, ref, h } from 'vue'
54
- import TinyRobotChat from '@/components/tiny-robot-chat.vue'
55
- import { globalConversation } from '@/composable/utils'
56
- import { IconAi } from '@opentiny/tiny-robot-svgs'
57
- import CryptoJS from 'crypto-js'
58
- import { TinyQrCode } from '@opentiny/vue'
59
- import Demo from './Demo.vue'
60
- import { appData } from '@/tools/appData'
61
-
62
- appData.showTinyRobot = true
63
- const showQrCode = ref(false)
64
- const sessionUrl = ref('placeholder')
65
-
66
- const promptItems = [
67
- {
68
- label: '识别网页的内容',
69
- description: '帮我在商品列表中查询最贵的手机和最便宜的笔记本',
70
- icon: h('span', { style: { fontSize: '18px' } }, '💡')
71
- },
72
- {
73
- label: '智能操作网页',
74
- description: '帮我在商品列表中删除最贵的且分类为手机的商品',
75
- icon: h('span', { style: { fontSize: '18px' } }, '🕹')
76
- },
77
- {
78
- label: '智能操作网页',
79
- description: '帮我在商品列表中添加一个华为p60品牌的手机商品',
80
- icon: h('span', { style: { fontSize: '18px' } }, '🕹')
81
- }
82
- ]
83
-
84
- const suggestionPillItems = [
85
- {
86
- id: '1',
87
- text: '商品列表',
88
- icon: h('span', { style: { fontSize: '18px' } }, '🏢')
89
- }
90
- ]
91
-
92
- watch(
93
- () => globalConversation.sessionId,
94
- (newVal) => {
95
- if (newVal) {
96
- const encryptedId = CryptoJS.AES.encrypt(newVal, 'secret-session-id').toString()
97
-
98
- const secretId = encodeURIComponent(encryptedId)
99
- sessionUrl.value = 'http://39.108.160.245?id=' + secretId
100
- }
101
- },
102
- { immediate: true }
103
- )
104
- </script>
105
-
106
- <style scoped>
107
- .header {
108
- width: calc(100% - 502px);
109
- display: flex;
110
- justify-content: space-between;
111
- align-items: center;
112
- padding: 10px 20px;
113
- background-color: #f5f5f5;
114
- }
115
-
116
- .qr-code-trigger {
117
- display: flex;
118
- align-items: center;
119
- cursor: pointer;
120
- padding: 12px 20px;
121
- border-radius: 12px;
122
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
123
- background: linear-gradient(135deg, #1677ff 0%, #06b6d4 100%);
124
- position: relative;
125
- overflow: hidden;
126
- }
127
-
128
- .qr-code-trigger::before {
129
- content: '';
130
- position: absolute;
131
- top: 0;
132
- left: 0;
133
- width: 100%;
134
- height: 100%;
135
- background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
136
- transform: translateX(-100%);
137
- transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
138
- }
139
-
140
- .qr-code-trigger:hover {
141
- transform: translateY(-2px);
142
- box-shadow: 0 8px 20px rgba(22, 119, 255, 0.3);
143
- }
144
-
145
- .qr-code-trigger:hover::before {
146
- transform: translateX(100%);
147
- }
148
-
149
- .qr-icon {
150
- font-size: 24px;
151
- margin-right: 12px;
152
- color: white;
153
- filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));
154
- animation: float 3s ease-in-out infinite;
155
- }
156
-
157
- .qr-text-wrapper {
158
- display: flex;
159
- flex-direction: column;
160
- }
161
-
162
- .qr-label {
163
- font-size: 16px;
164
- font-weight: 600;
165
- color: white;
166
- margin-bottom: 2px;
167
- text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
168
- }
169
-
170
- .qr-desc {
171
- font-size: 13px;
172
- color: rgba(255, 255, 255, 0.9);
173
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
174
- }
175
-
176
- @keyframes float {
177
- 0%,
178
- 100% {
179
- transform: translateY(0);
180
- }
181
- 50% {
182
- transform: translateY(-3px);
183
- }
184
- }
185
-
186
- .qr-modal {
187
- position: fixed;
188
- top: 0;
189
- left: 0;
190
- width: 100%;
191
- height: 100%;
192
- background-color: rgba(0, 0, 0, 0.5);
193
- display: flex;
194
- justify-content: center;
195
- align-items: center;
196
- z-index: 1000;
197
- animation: fadeIn 0.3s ease;
198
- }
199
-
200
- .qr-modal-content {
201
- background: white;
202
- border-radius: 12px;
203
- padding: 32px;
204
- width: 460px;
205
- box-shadow:
206
- 0 20px 25px -5px rgba(0, 0, 0, 0.1),
207
- 0 10px 10px -5px rgba(0, 0, 0, 0.04);
208
- }
209
-
210
- .qr-modal-header {
211
- margin-bottom: 32px;
212
- }
213
-
214
- .qr-modal-header h3 {
215
- font-size: 22px;
216
- font-weight: 600;
217
- color: #1f2937;
218
- }
219
-
220
- .close-icon {
221
- cursor: pointer;
222
- font-size: 20px;
223
- color: #999;
224
- transition: color 0.3s;
225
- }
226
-
227
- .close-icon:hover {
228
- color: #666;
229
- }
230
-
231
- .qr-modal-body {
232
- display: flex;
233
- flex-direction: column;
234
- align-items: center;
235
- }
236
-
237
- .qr-wrapper {
238
- background-color: #f8f9fa;
239
- padding: 24px;
240
- border-radius: 8px;
241
- display: flex;
242
- flex-direction: column;
243
- align-items: center;
244
- margin-bottom: 24px;
245
- position: relative;
246
- animation: glow 2s ease-in-out infinite;
247
- }
248
-
249
- .qr-wrapper::before {
250
- content: '';
251
- position: absolute;
252
- top: -2px;
253
- left: -2px;
254
- right: -2px;
255
- bottom: -2px;
256
- background: linear-gradient(45deg, #1677ff, #10b981, #1677ff);
257
- border-radius: 10px;
258
- z-index: -1;
259
- filter: blur(8px);
260
- opacity: 0.5;
261
- transition: opacity 0.3s ease;
262
- }
263
-
264
- .qr-wrapper:hover::before {
265
- opacity: 0.7;
266
- }
267
-
268
- @keyframes glow {
269
- 0% {
270
- box-shadow:
271
- 0 0 5px rgba(22, 119, 255, 0.2),
272
- 0 0 10px rgba(22, 119, 255, 0.2),
273
- 0 0 15px rgba(22, 119, 255, 0.2);
274
- }
275
- 50% {
276
- box-shadow:
277
- 0 0 10px rgba(22, 119, 255, 0.3),
278
- 0 0 20px rgba(22, 119, 255, 0.3),
279
- 0 0 30px rgba(22, 119, 255, 0.3);
280
- }
281
- 100% {
282
- box-shadow:
283
- 0 0 5px rgba(22, 119, 255, 0.2),
284
- 0 0 10px rgba(22, 119, 255, 0.2),
285
- 0 0 15px rgba(22, 119, 255, 0.2);
286
- }
287
- }
288
-
289
- .qr-status {
290
- display: flex;
291
- align-items: center;
292
- margin-top: 16px;
293
- background: #fff;
294
- padding: 6px 12px;
295
- border-radius: 16px;
296
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
297
- }
298
-
299
- .status-dot {
300
- width: 8px;
301
- height: 8px;
302
- background-color: #10b981;
303
- border-radius: 50%;
304
- margin-right: 8px;
305
- animation: pulse 2s infinite;
306
- }
307
-
308
- .qr-instructions {
309
- background-color: #f8f9fa;
310
- border-radius: 8px;
311
- padding: 20px;
312
- }
313
-
314
- .instruction-title {
315
- font-size: 16px;
316
- font-weight: 500;
317
- color: #1f2937;
318
- margin-bottom: 12px;
319
- }
320
-
321
- .instruction-steps {
322
- margin: 0;
323
- padding-left: 20px;
324
- }
325
-
326
- .instruction-steps li {
327
- color: #4b5563;
328
- margin-bottom: 8px;
329
- font-size: 14px;
330
- }
331
-
332
- .instruction-steps li:last-child {
333
- margin-bottom: 0;
334
- }
335
-
336
- @keyframes pulse {
337
- 0% {
338
- box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4);
339
- }
340
- 70% {
341
- box-shadow: 0 0 0 6px rgba(16, 185, 129, 0);
342
- }
343
- 100% {
344
- box-shadow: 0 0 0 0 rgba(16, 185, 129, 0);
345
- }
346
- }
347
-
348
- @keyframes fadeIn {
349
- from {
350
- opacity: 0;
351
- }
352
- to {
353
- opacity: 1;
354
- }
355
- }
356
-
357
- .app-container {
358
- display: flex;
359
- height: 100%;
360
- position: relative;
361
- }
362
-
363
- .main-content {
364
- padding: 10px 10px;
365
- height: 100%;
366
- width: calc(100% - 502px);
367
- position: relative;
368
- }
369
-
370
- .right-panel {
371
- width: 480px;
372
- height: 100%;
373
- position: relative;
374
- background: #fff;
375
- border-left: 1px solid #e4e7ed;
376
- }
377
-
378
- .right-panel.collapsed {
379
- width: 0;
380
- overflow: hidden;
381
- }
382
-
383
- .style-settings-icon {
384
- position: fixed;
385
- bottom: 100px;
386
- right: 100px;
387
- font-size: 24px;
388
- z-index: 30;
389
- cursor: pointer;
390
- }
391
- </style>
1
+ <template>
2
+ <div class="header">
3
+ <div class="qr-code-trigger" @click="showQrCode = true">
4
+ <IconAi class="qr-icon" />
5
+ <div class="qr-text-wrapper">
6
+ <span class="qr-label">手机遥控</span>
7
+ <span class="qr-desc">扫码体验移动端操作</span>
8
+ </div>
9
+ </div>
10
+ </div>
11
+ <div class="app-container">
12
+ <!-- 主体内容区域 -->
13
+ <div class="main-content">
14
+ <Demo />
15
+ </div>
16
+ <div class="right-panel" :class="{ collapsed: !appData.showTinyRobot }">
17
+ <tiny-robot-chat :prompt-items="promptItems" :suggestion-pill-items="suggestionPillItems" />
18
+ </div>
19
+ <IconAi @click="appData.showTinyRobot = !appData.showTinyRobot" class="style-settings-icon"></IconAi>
20
+ </div>
21
+
22
+ <!-- QR Code Modal -->
23
+ <Teleport to="body">
24
+ <div class="qr-modal" v-if="showQrCode" @click.self="showQrCode = false">
25
+ <div class="qr-modal-content">
26
+ <div class="qr-modal-header">
27
+ <h3>手机遥控体验</h3>
28
+ </div>
29
+ <div class="qr-modal-body">
30
+ <div class="qr-wrapper">
31
+ <tiny-qr-code :value="sessionUrl" :size="200" color="#1677ff"></tiny-qr-code>
32
+ <div class="qr-status">
33
+ <div class="status-dot"></div>
34
+ <span>链接已生成</span>
35
+ </div>
36
+ </div>
37
+ <div class="qr-instructions">
38
+ <p class="instruction-title">使用说明</p>
39
+ <ol class="instruction-steps">
40
+ <li>使用微信扫一扫,扫描上方二维码</li>
41
+ <li>然后点击微信右上角的 "..." 图标</li>
42
+ <li>选择在默认浏览器中打开</li>
43
+ <li>可以选择直接语音交互也可使用AI对话框进行交互</li>
44
+ </ol>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </Teleport>
50
+ </template>
51
+
52
+ <script setup lang="ts">
53
+ import { watch, ref, h } from 'vue'
54
+ import TinyRobotChat from '@/components/tiny-robot-chat.vue'
55
+ import { globalConversation } from '@/composable/utils'
56
+ import { IconAi } from '@opentiny/tiny-robot-svgs'
57
+ import CryptoJS from 'crypto-js'
58
+ import { TinyQrCode } from '@opentiny/vue'
59
+ import Demo from './Demo.vue'
60
+ import { appData } from '@/tools/appData'
61
+
62
+ appData.showTinyRobot = true
63
+ const showQrCode = ref(false)
64
+ const sessionUrl = ref('placeholder')
65
+
66
+ const promptItems = [
67
+ {
68
+ label: '识别网页的内容',
69
+ description: '帮我在商品列表中查询最贵的手机和最便宜的笔记本',
70
+ icon: h('span', { style: { fontSize: '18px' } }, '💡')
71
+ },
72
+ {
73
+ label: '智能操作网页',
74
+ description: '帮我在商品列表中删除最贵的且分类为手机的商品',
75
+ icon: h('span', { style: { fontSize: '18px' } }, '🕹')
76
+ },
77
+ {
78
+ label: '智能操作网页',
79
+ description: '帮我在商品列表中添加一个华为p60品牌的手机商品',
80
+ icon: h('span', { style: { fontSize: '18px' } }, '🕹')
81
+ }
82
+ ]
83
+
84
+ const suggestionPillItems = [
85
+ {
86
+ id: '1',
87
+ text: '商品列表',
88
+ icon: h('span', { style: { fontSize: '18px' } }, '🏢')
89
+ }
90
+ ]
91
+
92
+ watch(
93
+ () => globalConversation.sessionId,
94
+ (newVal) => {
95
+ if (newVal) {
96
+ const encryptedId = CryptoJS.AES.encrypt(newVal, 'secret-session-id').toString()
97
+
98
+ const secretId = encodeURIComponent(encryptedId)
99
+ sessionUrl.value = `https://agent.icjs.ink?id=${secretId}`
100
+ }
101
+ },
102
+ { immediate: true }
103
+ )
104
+ </script>
105
+
106
+ <style scoped>
107
+ .header {
108
+ width: calc(100% - 502px);
109
+ display: flex;
110
+ justify-content: space-between;
111
+ align-items: center;
112
+ padding: 10px 20px;
113
+ background-color: #f5f5f5;
114
+ }
115
+
116
+ .qr-code-trigger {
117
+ display: flex;
118
+ align-items: center;
119
+ cursor: pointer;
120
+ padding: 12px 20px;
121
+ border-radius: 12px;
122
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
123
+ background: linear-gradient(135deg, #1677ff 0%, #06b6d4 100%);
124
+ position: relative;
125
+ overflow: hidden;
126
+ }
127
+
128
+ .qr-code-trigger::before {
129
+ content: '';
130
+ position: absolute;
131
+ top: 0;
132
+ left: 0;
133
+ width: 100%;
134
+ height: 100%;
135
+ background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
136
+ transform: translateX(-100%);
137
+ transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
138
+ }
139
+
140
+ .qr-code-trigger:hover {
141
+ transform: translateY(-2px);
142
+ box-shadow: 0 8px 20px rgba(22, 119, 255, 0.3);
143
+ }
144
+
145
+ .qr-code-trigger:hover::before {
146
+ transform: translateX(100%);
147
+ }
148
+
149
+ .qr-icon {
150
+ font-size: 24px;
151
+ margin-right: 12px;
152
+ color: white;
153
+ filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));
154
+ animation: float 3s ease-in-out infinite;
155
+ }
156
+
157
+ .qr-text-wrapper {
158
+ display: flex;
159
+ flex-direction: column;
160
+ }
161
+
162
+ .qr-label {
163
+ font-size: 16px;
164
+ font-weight: 600;
165
+ color: white;
166
+ margin-bottom: 2px;
167
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
168
+ }
169
+
170
+ .qr-desc {
171
+ font-size: 13px;
172
+ color: rgba(255, 255, 255, 0.9);
173
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
174
+ }
175
+
176
+ @keyframes float {
177
+ 0%,
178
+ 100% {
179
+ transform: translateY(0);
180
+ }
181
+ 50% {
182
+ transform: translateY(-3px);
183
+ }
184
+ }
185
+
186
+ .qr-modal {
187
+ position: fixed;
188
+ top: 0;
189
+ left: 0;
190
+ width: 100%;
191
+ height: 100%;
192
+ background-color: rgba(0, 0, 0, 0.5);
193
+ display: flex;
194
+ justify-content: center;
195
+ align-items: center;
196
+ z-index: 1000;
197
+ animation: fadeIn 0.3s ease;
198
+ }
199
+
200
+ .qr-modal-content {
201
+ background: white;
202
+ border-radius: 12px;
203
+ padding: 32px;
204
+ width: 460px;
205
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
206
+ }
207
+
208
+ .qr-modal-header {
209
+ margin-bottom: 32px;
210
+ }
211
+
212
+ .qr-modal-header h3 {
213
+ font-size: 22px;
214
+ font-weight: 600;
215
+ color: #1f2937;
216
+ }
217
+
218
+ .close-icon {
219
+ cursor: pointer;
220
+ font-size: 20px;
221
+ color: #999;
222
+ transition: color 0.3s;
223
+ }
224
+
225
+ .close-icon:hover {
226
+ color: #666;
227
+ }
228
+
229
+ .qr-modal-body {
230
+ display: flex;
231
+ flex-direction: column;
232
+ align-items: center;
233
+ }
234
+
235
+ .qr-wrapper {
236
+ background-color: #f8f9fa;
237
+ padding: 24px;
238
+ border-radius: 8px;
239
+ display: flex;
240
+ flex-direction: column;
241
+ align-items: center;
242
+ margin-bottom: 24px;
243
+ position: relative;
244
+ animation: glow 2s ease-in-out infinite;
245
+ }
246
+
247
+ .qr-wrapper::before {
248
+ content: '';
249
+ position: absolute;
250
+ top: -2px;
251
+ left: -2px;
252
+ right: -2px;
253
+ bottom: -2px;
254
+ background: linear-gradient(45deg, #1677ff, #10b981, #1677ff);
255
+ border-radius: 10px;
256
+ z-index: -1;
257
+ filter: blur(8px);
258
+ opacity: 0.5;
259
+ transition: opacity 0.3s ease;
260
+ }
261
+
262
+ .qr-wrapper:hover::before {
263
+ opacity: 0.7;
264
+ }
265
+
266
+ @keyframes glow {
267
+ 0% {
268
+ box-shadow: 0 0 5px rgba(22, 119, 255, 0.2), 0 0 10px rgba(22, 119, 255, 0.2), 0 0 15px rgba(22, 119, 255, 0.2);
269
+ }
270
+ 50% {
271
+ box-shadow: 0 0 10px rgba(22, 119, 255, 0.3), 0 0 20px rgba(22, 119, 255, 0.3), 0 0 30px rgba(22, 119, 255, 0.3);
272
+ }
273
+ 100% {
274
+ box-shadow: 0 0 5px rgba(22, 119, 255, 0.2), 0 0 10px rgba(22, 119, 255, 0.2), 0 0 15px rgba(22, 119, 255, 0.2);
275
+ }
276
+ }
277
+
278
+ .qr-status {
279
+ display: flex;
280
+ align-items: center;
281
+ margin-top: 16px;
282
+ background: #fff;
283
+ padding: 6px 12px;
284
+ border-radius: 16px;
285
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
286
+ }
287
+
288
+ .status-dot {
289
+ width: 8px;
290
+ height: 8px;
291
+ background-color: #10b981;
292
+ border-radius: 50%;
293
+ margin-right: 8px;
294
+ animation: pulse 2s infinite;
295
+ }
296
+
297
+ .qr-instructions {
298
+ background-color: #f8f9fa;
299
+ border-radius: 8px;
300
+ padding: 20px;
301
+ }
302
+
303
+ .instruction-title {
304
+ font-size: 16px;
305
+ font-weight: 500;
306
+ color: #1f2937;
307
+ margin-bottom: 12px;
308
+ }
309
+
310
+ .instruction-steps {
311
+ margin: 0;
312
+ padding-left: 20px;
313
+ }
314
+
315
+ .instruction-steps li {
316
+ color: #4b5563;
317
+ margin-bottom: 8px;
318
+ font-size: 14px;
319
+ }
320
+
321
+ .instruction-steps li:last-child {
322
+ margin-bottom: 0;
323
+ }
324
+
325
+ @keyframes pulse {
326
+ 0% {
327
+ box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4);
328
+ }
329
+ 70% {
330
+ box-shadow: 0 0 0 6px rgba(16, 185, 129, 0);
331
+ }
332
+ 100% {
333
+ box-shadow: 0 0 0 0 rgba(16, 185, 129, 0);
334
+ }
335
+ }
336
+
337
+ @keyframes fadeIn {
338
+ from {
339
+ opacity: 0;
340
+ }
341
+ to {
342
+ opacity: 1;
343
+ }
344
+ }
345
+
346
+ .app-container {
347
+ display: flex;
348
+ height: 100%;
349
+ position: relative;
350
+ }
351
+
352
+ .main-content {
353
+ padding: 10px 10px;
354
+ height: 100%;
355
+ width: calc(100% - 502px);
356
+ position: relative;
357
+ }
358
+
359
+ .right-panel {
360
+ width: 480px;
361
+ height: 100%;
362
+ position: relative;
363
+ background: #fff;
364
+ border-left: 1px solid #e4e7ed;
365
+ }
366
+
367
+ .right-panel.collapsed {
368
+ width: 0;
369
+ overflow: hidden;
370
+ }
371
+
372
+ .style-settings-icon {
373
+ position: fixed;
374
+ bottom: 100px;
375
+ right: 100px;
376
+ font-size: 24px;
377
+ z-index: 30;
378
+ cursor: pointer;
379
+ }
380
+ </style>