koishi-plugin-chat-patch 3.0.2 → 5.0.0

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 (194) hide show
  1. package/client/vue/index.vue +60 -634
  2. package/client/web/env.d.ts +56 -0
  3. package/client/web/index.html +21 -0
  4. package/client/web/package-lock.json +3419 -0
  5. package/client/web/package.json +62 -0
  6. package/client/web/public/bcui/css/color-dark.css +35 -0
  7. package/client/web/public/bcui/css/color-light.css +35 -0
  8. package/client/web/public/bcui/css/style.css +468 -0
  9. package/client/web/public/bcui/js/main.js +193 -0
  10. package/client/web/public/css/append-dark.css +13 -0
  11. package/client/web/public/css/append-light.css +13 -0
  12. package/client/web/public/css/append-napcat-dark.css +14 -0
  13. package/client/web/public/css/append-napcat-light.css +14 -0
  14. package/client/web/public/favicon.ico +0 -0
  15. package/client/web/public/img/icons/icon-for-fuck-apple.png +0 -0
  16. package/client/web/public/img/icons/icon-maskable.png +0 -0
  17. package/client/web/public/img/icons/icon.png +0 -0
  18. package/client/web/public/img/icons/icon.svg +10 -0
  19. package/client/web/public/robots.txt +2 -0
  20. package/client/web/public/sw.js +58 -0
  21. package/client/web/scripts/copy-bcui.mjs +17 -0
  22. package/client/web/src/App.vue +1127 -0
  23. package/client/web/src/assets/css/append/append_darwin.css +68 -0
  24. package/client/web/src/assets/css/append/append_full_vibrancy.css +290 -0
  25. package/client/web/src/assets/css/append/append_linux.css +125 -0
  26. package/client/web/src/assets/css/append/append_linux_vibrancy.css +22 -0
  27. package/client/web/src/assets/css/append/append_napcat.css +35 -0
  28. package/client/web/src/assets/css/append/append_new.css +843 -0
  29. package/client/web/src/assets/css/append/append_vibrancy.css +113 -0
  30. package/client/web/src/assets/css/append/append_win32.css +109 -0
  31. package/client/web/src/assets/css/append/mobile/append_mobile_horizontal.css +349 -0
  32. package/client/web/src/assets/css/append/mobile/append_mobile_vertical.css +96 -0
  33. package/client/web/src/assets/css/chat.css +2104 -0
  34. package/client/web/src/assets/css/msg.css +941 -0
  35. package/client/web/src/assets/css/options.css +811 -0
  36. package/client/web/src/assets/css/sys_notice.css +62 -0
  37. package/client/web/src/assets/css/view.css +2105 -0
  38. package/client/web/src/assets/font//346/226/271/346/255/243/345/226/265/345/221/234/344/275/223.ttf +0 -0
  39. package/client/web/src/assets/img/Vue.png +0 -0
  40. package/client/web/src/assets/img/cakes.svg +189 -0
  41. package/client/web/src/assets/img/icons/AppIcon.png +0 -0
  42. package/client/web/src/assets/img/icons/AppIconDark.png +0 -0
  43. package/client/web/src/assets/img/icons/CapacitorAppIcon.png +0 -0
  44. package/client/web/src/assets/img/icons/CapacitorAppIconDark.png +0 -0
  45. package/client/web/src/assets/img/icons/NapcatAppIcon.png +0 -0
  46. package/client/web/src/assets/img/icons/NapcatAppIconDark.png +0 -0
  47. package/client/web/src/assets/img/icons/exit.png +0 -0
  48. package/client/web/src/assets/img/icons/pen.png +0 -0
  49. package/client/web/src/assets/img/stars.svg +89 -0
  50. package/client/web/src/assets/img//346/234/237/345/276/205.png +0 -0
  51. package/client/web/src/assets/l10n/_About I10n.md +35 -0
  52. package/client/web/src/assets/l10n/_l10nconfig.json +7 -0
  53. package/client/web/src/assets/l10n/zh-CN.po +1941 -0
  54. package/client/web/src/assets/logo.png +0 -0
  55. package/client/web/src/assets/pathMap/LLOneBot.yaml +2 -0
  56. package/client/web/src/assets/pathMap/Lagrange.OneBot.yaml +180 -0
  57. package/client/web/src/assets/pathMap/NapCat.Onebot.yaml +224 -0
  58. package/client/web/src/assets/pathMap/SnowLuma.yaml +80 -0
  59. package/client/web/src/assets/qed.txt +1 -0
  60. package/client/web/src/components/AboutPan.vue +197 -0
  61. package/client/web/src/components/BulletinBody.vue +129 -0
  62. package/client/web/src/components/DepPan.vue +310 -0
  63. package/client/web/src/components/EmojiFace.vue +32 -0
  64. package/client/web/src/components/FacePan.vue +461 -0
  65. package/client/web/src/components/FileBody.vue +129 -0
  66. package/client/web/src/components/FileManager.vue +532 -0
  67. package/client/web/src/components/FriendBody.vue +54 -0
  68. package/client/web/src/components/GlobalSessionSearchBar.vue +301 -0
  69. package/client/web/src/components/History.vue +49 -0
  70. package/client/web/src/components/LazyLottie.vue +82 -0
  71. package/client/web/src/components/MergePan.vue +127 -0
  72. package/client/web/src/components/MsgBody.vue +1478 -0
  73. package/client/web/src/components/MusicPlayer.vue +549 -0
  74. package/client/web/src/components/NoticeBody.vue +168 -0
  75. package/client/web/src/components/QzonePermissionPan.vue +150 -0
  76. package/client/web/src/components/RawMsgRenderPreviewPan.vue +190 -0
  77. package/client/web/src/components/ThemeColorPickerPan.vue +420 -0
  78. package/client/web/src/components/TinySessionBody.vue +51 -0
  79. package/client/web/src/components/UmamiInfoPan.vue +1549 -0
  80. package/client/web/src/components/UpdatePan.vue +263 -0
  81. package/client/web/src/components/ViewerCom.vue +1360 -0
  82. package/client/web/src/components/VoiceMsg.vue +626 -0
  83. package/client/web/src/components/WelPan.vue +894 -0
  84. package/client/web/src/components/msg-body/.gitkeep +0 -0
  85. package/client/web/src/components/msg-component/JsonSegComp.vue +138 -0
  86. package/client/web/src/components/msg-component/XmlSegComp.vue +132 -0
  87. package/client/web/src/components/msg-component/jsonComp/AutoReply.vue +97 -0
  88. package/client/web/src/components/msg-component/jsonComp/Contact.lua.vue +129 -0
  89. package/client/web/src/components/msg-component/jsonComp/Feed.lua.vue +94 -0
  90. package/client/web/src/components/msg-component/jsonComp/Forum.vue +84 -0
  91. package/client/web/src/components/msg-component/jsonComp/Mannounce.vue +111 -0
  92. package/client/web/src/components/msg-component/jsonComp/Map.vue +52 -0
  93. package/client/web/src/components/msg-component/jsonComp/Miniapp.lua.vue +53 -0
  94. package/client/web/src/components/msg-component/jsonComp/Miniapp.vue +69 -0
  95. package/client/web/src/components/msg-component/jsonComp/Music.lua.vue +135 -0
  96. package/client/web/src/components/msg-component/jsonComp/Tuwen.lua.vue +56 -0
  97. package/client/web/src/components/notice-component/.gitkeep +0 -0
  98. package/client/web/src/components/notice-component/MealHungryPan.vue +119 -0
  99. package/client/web/src/components/tooltip/CustomFaceTooltip.vue +22 -0
  100. package/client/web/src/components/tooltip/Tooltip.vue +50 -0
  101. package/client/web/src/components/tooltip/Tooltips.vue +14 -0
  102. package/client/web/src/components/tooltip/UserInfoTooltip.vue +69 -0
  103. package/client/web/src/function/base.ts +238 -0
  104. package/client/web/src/function/connect.ts +2042 -0
  105. package/client/web/src/function/debug.ts +10 -0
  106. package/client/web/src/function/elements/information.ts +141 -0
  107. package/client/web/src/function/elements/system.ts +101 -0
  108. package/client/web/src/function/elements/vueComp.ts +62 -0
  109. package/client/web/src/function/favicon.ts +76 -0
  110. package/client/web/src/function/input.ts +69 -0
  111. package/client/web/src/function/model/emoji.ts +127 -0
  112. package/client/web/src/function/model/img.ts +150 -0
  113. package/client/web/src/function/model/msg-body.ts +51 -0
  114. package/client/web/src/function/msg.ts +2674 -0
  115. package/client/web/src/function/notify.ts +225 -0
  116. package/client/web/src/function/option.ts +749 -0
  117. package/client/web/src/function/satori-model.ts +818 -0
  118. package/client/web/src/function/satori.ts +325 -0
  119. package/client/web/src/function/sender.ts +178 -0
  120. package/client/web/src/function/tooltip.ts +49 -0
  121. package/client/web/src/function/utils/appUtil.ts +2288 -0
  122. package/client/web/src/function/utils/avatarUtil.ts +31 -0
  123. package/client/web/src/function/utils/backgroundUtil.ts +110 -0
  124. package/client/web/src/function/utils/linkViewUtil.ts +101 -0
  125. package/client/web/src/function/utils/localHistoryUtil.ts +517 -0
  126. package/client/web/src/function/utils/msgUtil.ts +1242 -0
  127. package/client/web/src/function/utils/pinyin.ts +141 -0
  128. package/client/web/src/function/utils/recordUtil.ts +187 -0
  129. package/client/web/src/function/utils/sessionUtil.ts +114 -0
  130. package/client/web/src/function/utils/systemUtil.ts +664 -0
  131. package/client/web/src/main.ts +91 -0
  132. package/client/web/src/pages/Chat.vue +3453 -0
  133. package/client/web/src/pages/Friends.vue +636 -0
  134. package/client/web/src/pages/Info.vue +717 -0
  135. package/client/web/src/pages/Messages.vue +875 -0
  136. package/client/web/src/pages/Options.vue +82 -0
  137. package/client/web/src/pages/Qzone.vue +1178 -0
  138. package/client/web/src/pages/chat-view/ChatDanmaku.vue +759 -0
  139. package/client/web/src/pages/chat-view/ChatGlagame.vue +642 -0
  140. package/client/web/src/pages/chat-view/ChatTerminal.vue +1044 -0
  141. package/client/web/src/pages/chat-view/SystemNotice.vue +171 -0
  142. package/client/web/src/pages/options/OptAccount.vue +107 -0
  143. package/client/web/src/pages/options/OptAddon.vue +185 -0
  144. package/client/web/src/pages/options/OptDev.vue +704 -0
  145. package/client/web/src/pages/options/OptFunction.vue +403 -0
  146. package/client/web/src/pages/options/OptInfo.vue +165 -0
  147. package/client/web/src/pages/options/OptView.vue +846 -0
  148. package/client/web/src/runtime/backend.ts +310 -0
  149. package/client/web/src/state/auth.ts +14 -0
  150. package/client/web/src/state/chat.ts +36 -0
  151. package/client/web/src/state/connection.ts +20 -0
  152. package/client/web/src/state/contact.ts +37 -0
  153. package/client/web/src/state/qzone.ts +18 -0
  154. package/client/web/src/state/sessionHistory.ts +25 -0
  155. package/client/web/src/state/settings.ts +18 -0
  156. package/client/web/src/state/sticker.ts +10 -0
  157. package/client/web/src/state/ui.ts +56 -0
  158. package/client/web/tsconfig.json +27 -0
  159. package/client/web/tsconfig.tsbuildinfo +1 -0
  160. package/client/web/vite.config.ts +33 -0
  161. package/dist/index.js +1 -12
  162. package/dist/style.css +1 -1
  163. package/lib/index.js +2070 -2077
  164. package/package.json +15 -2
  165. package/readme.md +0 -22
  166. package/src/bootstrap.ts +71 -0
  167. package/src/cache.ts +319 -0
  168. package/src/config.ts +23 -35
  169. package/src/database.ts +650 -0
  170. package/src/index.ts +27 -59
  171. package/src/media.ts +302 -0
  172. package/src/recorder.ts +175 -0
  173. package/src/self-message.ts +456 -0
  174. package/src/server.d.ts +26 -0
  175. package/src/types.ts +108 -48
  176. package/src/web.ts +712 -0
  177. package/client/vue/chat-logic.ts +0 -683
  178. package/client/vue/composables/useChatActions.ts +0 -61
  179. package/client/vue/composables/useChatData.ts +0 -185
  180. package/client/vue/composables/useImageCache.ts +0 -281
  181. package/client/vue/composables/useVideoCache.ts +0 -125
  182. package/client/vue/types.ts +0 -72
  183. package/lib/api-handlers.d.ts +0 -25
  184. package/lib/config.d.ts +0 -14
  185. package/lib/file-manager.d.ts +0 -124
  186. package/lib/index.d.ts +0 -17
  187. package/lib/logger.d.ts +0 -9
  188. package/lib/message-handler.d.ts +0 -35
  189. package/lib/types.d.ts +0 -57
  190. package/lib/utils.d.ts +0 -18
  191. package/src/api-handlers.ts +0 -646
  192. package/src/file-manager.ts +0 -1436
  193. package/src/message-handler.ts +0 -507
  194. package/src/utils.ts +0 -189
@@ -0,0 +1,894 @@
1
+ <!--
2
+ * @FileDescription: 首次使用的欢迎面板
3
+ * @Author: Stapxs
4
+ * @Date: 2023-01-18
5
+ * @Version: 1.0
6
+ -->
7
+ <!-- eslint-disable max-len -->
8
+
9
+ <template>
10
+ <div v-if="show != 'home'" class="step-line">
11
+ <font-awesome-icon :class="show == 'home' ? 'select' : ''" :icon="['fas', 'earth-asia']" @click="changeView('home')" /><div />
12
+ <font-awesome-icon :class="show == 'license' ? 'select' : ''" :icon="['fas', 'pen-nib']" @click="changeView('license')" /><div />
13
+ <font-awesome-icon :class="show.startsWith('function') ? 'select' : ''" :icon="['fas', 'brush']" @click="changeView('function')" /><div />
14
+ <font-awesome-icon :class="show.startsWith('tip') ? 'select' : ''" :icon="['fas', 'book']" @click="changeView('tip')" /><div />
15
+ <font-awesome-icon :class="show.startsWith('info') ? 'select' : ''" :icon="['fas', 'circle-info']" @click="changeView('info')" /><div />
16
+ <font-awesome-icon :class="show == 'end' ? 'select' : ''" :icon="['fas', 'circle-check']" @click="changeView('end')" />
17
+ </div>
18
+ <div v-if="show == 'home'" class="wel-home">
19
+ <img src="/img/icons/icon.svg">
20
+ <span>WELCOME</span>
21
+ <div>
22
+ <span>{{ $t('Koishi Satori 聊天室') }}</span>
23
+ <a>2.0</a>
24
+ </div>
25
+ <hr>
26
+ <button class="ss-button wel-next" @click="setPage('license')">
27
+ {{ $t('继续') }}
28
+ </button>
29
+ </div>
30
+ <div v-if="show == 'license'" class="base-box">
31
+ <div class="lead">
32
+ <span>{{ $t('欢迎使用 Koishi Satori 聊天室') }}</span>
33
+ <div />
34
+ <div>
35
+ <span>{{ $t('在开始之前,请阅读以下条款:') }}</span>
36
+ <a @click="openLink(`https://github.com/${repoName}/blob/next/DISCLAIMER.md`)">Stapxs QQ Lite 免责条款(简体中文)</a>
37
+ <a @click="openLink(`https://github.com/${repoName}/blob/next/LICENSE`)">Stapxs QQ Lite 开源许可(英文)</a>
38
+ <br>
39
+ <span>{{ $t('并酌情阅读以下文档:') }}</span>
40
+ <a @click="openLink('https://www.chiark.greenend.org.uk/~sgtatham/bugs-cn.html')">《如何有效地报告 BUG》</a>
41
+ <a @click="openLink('https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md')">《提问的智慧》</a>
42
+ </div>
43
+ <span>{{ $t('点击继续则默许已阅读并同意以上条款内容') }}</span>
44
+ </div>
45
+ <button class="ss-button wel-next" @click="setPage('function')">
46
+ {{ $t('继续') }}
47
+ </button>
48
+ </div>
49
+ <div v-else-if="show == 'function'" class="function">
50
+ <div class="config">
51
+ <div>
52
+ <div class="theme_color">
53
+ <div><div /><div><div /><div /></div></div>
54
+ <div class="me">
55
+ <div /><div><div /><div /></div>
56
+ </div>
57
+ <div><div /><div><div /><div /></div></div>
58
+ </div>
59
+ </div>
60
+ <div>
61
+ <span>{{ $t('外观') }}</span>
62
+ <a>{{ $t('选择一个主题色作为主要风格,深色模式可以单独开启或关闭。') }}</a>
63
+ <div v-if="!napcat" class="opt-item wel-opt-item">
64
+ <div>
65
+ <span>{{ $t('主题色') }}</span>
66
+ <span>{{ $t('换个心情 🎵 ~') }}</span>
67
+ </div>
68
+ <div class="theme-color-col">
69
+ <label v-for="(name, index) in colors" :key="'color_id_' + index"
70
+ :title="name" class="ss-radio">
71
+ <input type="radio" name="theme_color" :data-id="index"
72
+ :checked="settingsStore.sysConfig.theme_color === undefined ?
73
+ index === 0 : Number(settingsStore.sysConfig.theme_color) === index"
74
+ @change="save($event)">
75
+ <div
76
+ :style="{ 'background': `var(--color-main-${index})` }">
77
+ <div />
78
+ </div>
79
+ </label>
80
+ </div>
81
+ </div>
82
+ <div id="opt_view_dark" class="opt-item wel-opt-item">
83
+ <div>
84
+ <span>{{ $t('深色模式') }}</span>
85
+ <span>{{ $t('是五彩斑斓的黑色!') }}</span>
86
+ </div>
87
+ <label class="ss-switch">
88
+ <input v-model="settingsStore.sysConfig.opt_dark"
89
+ type="checkbox" name="opt_dark" @change="save">
90
+ <div>
91
+ <div />
92
+ </div>
93
+ </label>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ <button class="ss-button wel-next" @click="setPage('function_msg')">
98
+ {{ $t('继续') }}
99
+ </button>
100
+ </div>
101
+ <div v-else-if="show == 'function_msg'" class="function">
102
+ <div class="config">
103
+ <div>
104
+ <div class="bubble_sort_user">
105
+ <div>
106
+ <div><font-awesome-icon style="margin-right: 5px;" :icon="['fas', 'user-group']" /></div>
107
+ <div><div>{{ $t('群收纳盒') }}</div><div /></div>
108
+ </div>
109
+ <div><div /><div><div /><div /></div></div>
110
+ <div><div /><div><div /><div /></div></div>
111
+ </div>
112
+ </div>
113
+ <div>
114
+ <span>{{ $t('群收纳盒') }}</span>
115
+ <a>{{ $t('群收纳盒将所有的群消息收进一个单独的群消息列表内并提供实时置顶新消息的功能;会话显示和群通知方式可以单独设置。') }}</a>
116
+ <div class="opt-item wel-opt-item">
117
+ <div>
118
+ <span>{{ $t('群收纳盒') }}</span>
119
+ <span>{{ $t('全都放出来!全都放出来!') }}</span>
120
+ </div>
121
+ <label class="ss-switch">
122
+ <input v-model="settingsStore.sysConfig.bubble_sort_user"
123
+ type="checkbox" name="bubble_sort_user" @change="save">
124
+ <div>
125
+ <div />
126
+ </div>
127
+ </label>
128
+ </div>
129
+ <div class="opt-item wel-opt-item">
130
+ <div>
131
+ <span>{{ $t('会话显示') }}</span>
132
+ <span>{{ $t('关闭时仅显示最近会话,开启后显示全部会话') }}</span>
133
+ </div>
134
+ <label class="ss-switch">
135
+ <input :checked="settingsStore.sysConfig.session_display_mode === 'all'"
136
+ type="checkbox" name="session_display_mode" @change="toggleSessionDisplay">
137
+ <div>
138
+ <div />
139
+ </div>
140
+ </label>
141
+ </div>
142
+ <div class="opt-item wel-opt-item">
143
+ <div>
144
+ <label for="wel-group-notice-type">{{ $t('群消息通知方式') }}</label>
145
+ <span>{{ $t('重要消息将始终发起应用内通知和系统通知') }}</span>
146
+ </div>
147
+ <div class="select-wrapper">
148
+ <select id="wel-group-notice-type" v-model="settingsStore.sysConfig.group_notice_type"
149
+ style="width: 100%;"
150
+ name="group_notice_type" title="group_notice_type" @change="save">
151
+ <option value="none">
152
+ {{ $t('不通知(默认)') }}
153
+ </option>
154
+ <option value="inner">
155
+ {{ $t('仅应用内通知') }}
156
+ </option>
157
+ <option value="all">
158
+ {{ $t('应用内通知和系统通知') }}
159
+ </option>
160
+ </select>
161
+ </div>
162
+ </div>
163
+ </div>
164
+ </div>
165
+ <button class="ss-button wel-next" @click="setPage('tip')">
166
+ {{ $t('继续') }}
167
+ </button>
168
+ </div>
169
+ <div v-else-if="show == 'tip'" class="function">
170
+ <div class="config">
171
+ <div>
172
+ <div class="theme_color menu">
173
+ <div><div /><div><div /><div /></div></div>
174
+ <a><div>
175
+ <div><div /><div /></div>
176
+ <div class="select">
177
+ <font-awesome-icon :icon="['fas', 'reply']" />
178
+ <span>{{ $t('回复') }}</span>
179
+ </div>
180
+ <div><div /><div /></div>
181
+ <div><div /><div /></div>
182
+ <div><div /><div /></div>
183
+ </div></a>
184
+ </div>
185
+ </div>
186
+ <div>
187
+ <span>{{ $t('更多菜单') }}</span>
188
+ <a>{{ $t('Stapxs QQ Lite 的部分功能包含在元素的菜单中。你可以右击(或长按)消息列表、头像、消息等元素展开菜单来使用更多功能!') }}</a>
189
+ </div>
190
+ </div>
191
+ <button class="ss-button wel-next" @click="setPage('tip_input')">
192
+ {{ $t('继续') }}
193
+ </button>
194
+ </div>
195
+ <div v-else-if="show == 'tip_input'" class="function">
196
+ <div class="config">
197
+ <div>
198
+ <div class="input_bar">
199
+ <div>
200
+ <div><div /><div /></div>
201
+ <div class="select">
202
+ <div /><div>{{ $t('林小槐') }}</div>
203
+ </div>
204
+ <div><div /><div /></div>
205
+ <div><div /><div /></div>
206
+ <div><div /><div /></div>
207
+ </div>
208
+ <div><div /><div>{{ $t('[SQ:0] 你看看这个 @林') }}</div></div>
209
+ </div>
210
+ </div>
211
+ <div>
212
+ <span>{{ $t('输入框功能') }}</span>
213
+ <a>{{ $t('消息发送框除了输入内容以外,同时支持粘贴图片、at 群成员功能;不过不支持富媒体显示和多行输入。') }}</a>
214
+ </div>
215
+ </div>
216
+ <button class="ss-button wel-next" @click="setPage('info')">
217
+ {{ $t('继续') }}
218
+ </button>
219
+ </div>
220
+ <div v-if="show == 'info'" class="base-box">
221
+ <div class="lead">
222
+ <span>{{ $t('统计选项') }}</span>
223
+ <div />
224
+ <div>
225
+ <span>{{ $t('Stapxs QQ Lite 会将部分使用数据上传到自建的 umami 服务器中用于了解用户使用情况以及制作一些有趣的统计信息。') }}</span>
226
+ <span style="margin-bottom: 20px;">{{ $t('如果你并不希望上传这些数据,可以选择关闭它。') }}</span>
227
+ <div class="opt-item wel-opt-item"
228
+ :style="{ 'background': settingsStore.sysConfig.close_ga !== true ? 'var(--color-card-1)' : 'none' }">
229
+ <font-awesome-icon :icon="['fas', 'cloud']" />
230
+ <div>
231
+ <span>{{ $t('关闭分析') }}</span>
232
+ <span>{{ $t('真的不让看吗(小声') }}</span>
233
+ </div>
234
+ <label class="ss-switch">
235
+ <input v-model="settingsStore.sysConfig.close_ga" type="checkbox"
236
+ name="close_ga" @change="save">
237
+ <div style="background: var(--color-card-2)">
238
+ <div />
239
+ </div>
240
+ </label>
241
+ </div>
242
+ </div>
243
+ </div>
244
+ <button class="ss-button wel-next" @click="setPage('info_free')">
245
+ {{ $t('继续') }}
246
+ </button>
247
+ </div>
248
+ <div v-if="show == 'info_free'" class="base-box">
249
+ <div class="lead">
250
+ <span>{{ $t('开源提醒') }}</span>
251
+ <div />
252
+ <div style="align-items: flex-end;">
253
+ <span>{{ $t('Stapxs QQ Lite 是一个开源免费的软件,这意味着没有任何激活、使用限制等付费功能;') }}</span>
254
+ <span style="margin-bottom: 20px;">{{ $t('如果你通过任何付费方式获取了 Stapxs QQ Lite,请及时追回损失并酌情反馈。') }}</span>
255
+
256
+ <span>{{ $t('Stapxs QQ Lite 仅在 GitHub 上发布。由于提供了自行部署的方式,非官方版本请谨慎使用。') }}</span>
257
+ <font-awesome-icon style="width:15vh;height:15vh;margin-top:-15vh;opacity:0.1;color:var(--color-font);"
258
+ :icon="['fas', 'triangle-exclamation']" />
259
+ </div>
260
+ </div>
261
+ <button class="ss-button wel-next" @click="setPage('end')">
262
+ {{ $t('继续') }}
263
+ </button>
264
+ </div>
265
+ <div v-else-if="show == 'end'" class="wel-end">
266
+ <svg id="Layer_1"
267
+ height="60px"
268
+ width="60px"
269
+ version="1.1"
270
+ xmlns="http://www.w3.org/2000/svg"
271
+ xmlns:xlink="http://www.w3.org/1999/xlink"
272
+ viewBox="0 0 448.019 448.019"
273
+ xml:space="preserve">
274
+ <g transform="translate(0 -1020.36)">
275
+ <g shape-rendering="auto"
276
+ image-rendering="auto"
277
+ color-rendering="auto"
278
+ color-interpolation="sRGB">
279
+ <path style="fill: var(--color-font-1)" d="M254.087,1160.22c-2.724-0.061-5.291,1.271-6.813,3.531l-12.813,18.969l-18.469-19.938c-3.013-3.232-8.076-3.408-11.308-0.395c-1.827,1.703-2.753,4.162-2.505,6.646l2.376,22.781l-26.938-3.406c-4.384-0.553-8.386,2.555-8.937,6.939c-0.314,2.498,0.565,4.998,2.374,6.748l16.469,15.938l-22.843,14.719c-3.706,2.406-4.759,7.361-2.352,11.068c1.358,2.09,3.614,3.43,6.101,3.619l22.875,1.623l-8.062,25.969c-1.286,4.227,1.099,8.697,5.327,9.982c2.394,0.729,4.99,0.295,7.017-1.172l18.531-13.438l10.531,25.063c1.728,4.066,6.425,5.963,10.492,4.236c2.308-0.98,4.023-2.986,4.633-5.42l5.563-22.219l24.187,12.438c3.932,2.018,8.754,0.465,10.77-3.467c1.15-2.242,1.177-4.895,0.073-7.158l-10.03-20.594l26.499-6c4.311-0.971,7.018-5.252,6.047-9.563c-0.557-2.475-2.255-4.539-4.575-5.563l-20.906-9.314l16.437-21.656c2.677-3.516,1.997-8.535-1.519-11.213c-2.016-1.535-4.641-2.023-7.075-1.318l-22,6.314l-1.344-27.156c-0.211-4.176-3.602-7.484-7.781-7.594L254.087,1160.22z" />
280
+ <path style="fill: var(--color-font-2)" d="M220.586,1191.282l9,9.719c3.007,3.238,8.069,3.426,11.307,0.42c0.45-0.418,0.851-0.887,1.194-1.396l5-7.438l0.656,13.219c0.211,4.414,3.959,7.82,8.373,7.611c0.614-0.029,1.223-0.131,1.814-0.299l8.626-2.469l-8,10.531c-2.674,3.518-1.991,8.537,1.526,11.211c0.494,0.377,1.031,0.693,1.599,0.945l8.187,3.656l-12.907,2.938c-4.309,0.977-7.011,5.262-6.035,9.57c0.134,0.592,0.334,1.166,0.598,1.711l3.938,8.094l-11.781-6.063c-3.932-2.016-8.754-0.463-10.77,3.469c-0.275,0.537-0.489,1.104-0.637,1.688l-2.187,8.719l-5.126-12.219c-1.716-4.072-6.408-5.982-10.48-4.266c-0.56,0.236-1.09,0.535-1.582,0.891l-7.25,5.25l3.907-12.623c1.304-4.223-1.061-8.701-5.282-10.006c-0.589-0.182-1.197-0.295-1.812-0.338l-8.97-0.623l11.157-7.188c3.71-2.4,4.772-7.354,2.371-11.064c-0.33-0.51-0.718-0.98-1.155-1.404l-6.437-6.219l13.125,1.658c4.383,0.559,8.39-2.541,8.949-6.924c0.079-0.617,0.085-1.24,0.019-1.859L220.586,1191.282z" />
281
+ <path style="fill: var(--color-font-1)" d="M231.891,1044.45c-4.418,0.068-7.944,3.707-7.875,8.125l0,0v79.813c-0.062,4.418,3.469,8.051,7.887,8.113c4.418,0.063,8.051-3.469,8.113-7.887c0.001-0.076,0.001-0.15,0-0.227v-79.813c0.069-4.418-3.456-8.056-7.875-8.125C232.058,1044.449,231.975,1044.449,231.891,1044.45z" />
282
+ </g>
283
+ <g>
284
+ <path style="fill: var(--color-font-1)" d="M224.019,1156.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S224.019,1151.95,224.019,1156.368z" />
285
+ <path style="fill: var(--color-font-1)" d="M176.019,1172.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S176.019,1167.95,176.019,1172.368z" />
286
+ <path style="fill: var(--color-font-1)" d="M152.019,1220.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S152.019,1215.95,152.019,1220.368z" />
287
+ <path style="fill: var(--color-font-1)" d="M160.019,1268.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S160.019,1263.95,160.019,1268.368z" />
288
+ <path style="fill: var(--color-font-1)" d="M200.019,1300.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S200.019,1295.95,200.019,1300.368z" />
289
+ <path style="fill: var(--color-font-1)" d="M256.019,1300.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S256.019,1295.95,256.019,1300.368z" />
290
+ <path style="fill: var(--color-font-1)" d="M288.019,1268.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S288.019,1263.95,288.019,1268.368z" />
291
+ <path style="fill: var(--color-font-1)" d="M296.019,1212.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S296.019,1207.95,296.019,1212.368z" />
292
+ <path style="fill: var(--color-font-1)" d="M272.019,1172.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S272.019,1167.95,272.019,1172.368z" />
293
+ <g shape-rendering="auto" image-rendering="auto" color-rendering="auto"
294
+ color-interpolation="sRGB">
295
+ <g>
296
+ <path style="fill: var(--color-font-1)" d="M103.734,1068.388c-4.417,0.137-7.886,3.828-7.749,8.244c0.076,2.453,1.274,4.736,3.25,6.193c27.302,20.898,41.291,44.17,53.531,69c1.959,3.961,6.758,5.584,10.719,3.625s5.584-6.758,3.625-10.719c-12.643-25.648-28.357-51.818-58.157-74.625C107.471,1068.934,105.623,1068.327,103.734,1068.388z" />
297
+ <path style="fill: var(--color-font-1)" d="M93.203,1208.7c-15.382,1.072-31.39,4.859-48.406,12.344c-4.047,1.777-5.887,6.5-4.109,10.547s6.5,5.887,10.547,4.109l0,0c30.981-13.627,56.35-13.629,83.03-7.531c4.279,1.102,8.641-1.475,9.742-5.754c1.101-4.279-1.475-8.641-5.754-9.742c-0.141-0.037-0.282-0.068-0.425-0.098C123.354,1209.266,108.587,1207.624,93.203,1208.7L93.203,1208.7z" />
298
+ <path style="fill: var(--color-font-1)" d="M369.984,1201.263c-14.917-0.225-28.656,2.047-42.469,3.125c-4.41,0.336-7.712,4.184-7.376,8.592c0.336,4.41,4.183,7.713,8.592,7.377c29.392-2.293,50.901-8.68,83.813,7.219c3.904,2.068,8.747,0.582,10.816-3.322s0.582-8.746-3.322-10.816c-0.182-0.096-0.367-0.186-0.556-0.268c-18.512-8.943-34.582-11.68-49.499-11.906H369.984z" />
299
+ <path style="fill: var(--color-font-1)" d="M360.016,1068.388c-1.796,0.014-3.535,0.629-4.938,1.75c-31.296,24.119-45.662,50.006-58.125,74.531c-2.002,3.943-0.428,8.764,3.516,10.766c3.944,2.002,8.764,0.428,10.766-3.516c12.293-24.191,24.757-46.9,53.594-69.125c3.538-2.648,4.259-7.662,1.611-11.199C364.926,1069.571,362.544,1068.382,360.016,1068.388z" />
300
+ <path style="fill: var(--color-font-1)" d="M328.111,1276.419c-4.417-0.107-8.086,3.385-8.194,7.803c-0.097,3.949,2.704,7.379,6.594,8.072c23.91,4.873,38.286,21.146,50.374,43.781c1.977,3.951,6.784,5.553,10.735,3.574c3.952-1.977,5.552-6.783,3.575-10.734c-0.068-0.137-0.14-0.27-0.216-0.402c-13.146-24.615-31.597-45.855-61.282-51.906c-0.526-0.117-1.062-0.182-1.6-0.191L328.111,1276.419z" />
301
+ <path style="fill: var(--color-font-1)" d="M271.797,1316.294c-4.418,0.09-7.927,3.742-7.838,8.16c0.038,1.875,0.732,3.676,1.962,5.09c23.275,27.518,21.758,48.701,22.094,74.938c0.055,4.418,3.681,7.955,8.099,7.9c4.418-0.055,7.956-3.68,7.901-8.098c0-0.01,0-0.018,0-0.027c-0.336-25.648,0.416-53.975-25.875-85.063c-1.559-1.889-3.896-2.959-6.344-2.906L271.797,1316.294z" />
302
+ <path style="fill: var(--color-font-1)" d="M144.173,1276.325c-0.718,0-1.433,0.096-2.125,0.287c-38.275,9.793-48.533,33.836-60.438,51.063c-2.626,3.555-1.873,8.564,1.681,11.189c3.554,2.625,8.564,1.873,11.189-1.682c0.1-0.135,0.195-0.273,0.286-0.414c13.403-19.395,17.99-36.146,51.25-44.656c4.297-1.029,6.946-5.348,5.916-9.645c-0.861-3.592-4.067-6.127-7.759-6.137V1276.325z" />
303
+ <path style="fill: var(--color-font-1)" d="M200.266,1316.263c-2.917-0.059-5.635,1.473-7.093,4c-16.816,28.021-22.731,57.02-17,85.686c0.816,4.342,4.999,7.201,9.341,6.385s7.201-4.998,6.385-9.342c-0.012-0.064-0.026-0.131-0.04-0.197c-4.926-24.648-0.176-48.984,15.032-74.314c2.329-3.754,1.174-8.688-2.581-11.016C203.094,1316.708,201.697,1316.294,200.266,1316.263z" />
304
+ </g>
305
+ <path style="fill: var(--color-font-1)" d="M58.743,1071.813c-2.153,0.059-4.193,0.982-5.656,2.563l-15.75,16.938l-21.25-9.094 c-4.061-1.742-8.765,0.137-10.507,4.197c-0.983,2.293-0.842,4.912,0.383,7.084l11.25,20.188l-15.219,17.406 c-2.918,3.318-2.593,8.373,0.726,11.291c1.877,1.65,4.418,2.328,6.868,1.834l22.656-4.469l11.875,19.844 c2.266,3.793,7.178,5.031,10.972,2.766c2.128-1.271,3.547-3.459,3.841-5.92l2.75-22.969l22.562-5.125 c4.307-0.986,6.999-5.277,6.012-9.586c-0.553-2.414-2.195-4.438-4.444-5.477l-20.968-9.719l2.062-23.031 c0.398-4.4-2.847-8.291-7.248-8.689c-0.302-0.025-0.605-0.037-0.909-0.029L58.743,1071.813z M48.867,1102.438l-0.464,5.313 c-0.315,3.369,1.524,6.574,4.594,8l4.813,2.219l-5.157,1.184c-3.302,0.742-5.78,3.482-6.187,6.844l-0.624,5.281l-2.718-4.563 c-1.735-2.91-5.116-4.412-8.438-3.748l-5.218,0.992l3.499-4c2.225-2.541,2.616-6.203,0.976-9.156l-2.594-4.656l4.907,2.094 c3.102,1.326,6.702,0.563,9-1.906L48.867,1102.438z" />
306
+ <path style="fill: var(--color-font-1)" d="M354.898,1378.251c-1.342,0.037-2.652,0.412-3.811,1.088c-1.876,1.09-3.23,2.895-3.75,5 l-5.531,22.406l-23,2.344c-4.399,0.416-7.629,4.318-7.214,8.717c0.236,2.502,1.634,4.748,3.775,6.064l19.658,12.219 l-4.875,22.594c-0.932,4.32,1.814,8.576,6.134,9.508c2.418,0.521,4.941-0.104,6.834-1.695l17.688-14.906l20,11.625 c3.835,2.195,8.723,0.865,10.918-2.971c1.212-2.115,1.391-4.67,0.488-6.936l-8.688-21.469l17.219-15.375 c3.309-2.93,3.616-7.984,0.688-11.293c-1.659-1.875-4.099-2.865-6.595-2.676l-23.062,1.686l-9.344-21.188 c-1.316-2.963-4.29-4.838-7.531-4.75L354.898,1378.251z M357.274,1410.938l2.125,4.844c1.366,3.096,4.531,4.998,7.906,4.75 l5.282-0.367l-3.938,3.531c-2.521,2.248-3.358,5.838-2.093,8.969l2.03,4.969l-4.624-2.688c-2.92-1.707-6.6-1.395-9.189,0.783 l-4.062,3.438l1.12-5.219c0.713-3.291-0.71-6.676-3.562-8.469l-4.531-2.813l5.28-0.527c3.364-0.336,6.154-2.75,6.97-6.031 L357.274,1410.938z" />
307
+ </g>
308
+ <path style="fill: var(--color-font-1)" d="M216.019,1396.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S216.019,1391.95,216.019,1396.368L216.019,1396.368z" />
309
+ <path style="fill: var(--color-font-1)" d="M40.019,1300.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S40.019,1295.95,40.019,1300.368z" />
310
+ <path style="fill: var(--color-font-1)" d="M128.019,1372.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S128.019,1367.95,128.019,1372.368z" />
311
+ <path style="fill: var(--color-font-1)" d="M112.019,1164.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S112.019,1159.95,112.019,1164.368z" />
312
+ <path style="fill: var(--color-font-1)" d="M352.019,1156.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S352.019,1151.95,352.019,1156.368z" />
313
+ <path style="fill: var(--color-font-1)" d="M384.019,1244.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S384.019,1239.95,384.019,1244.368z" />
314
+ <path style="fill: var(--color-font-1)" d="M328.019,1356.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S328.019,1351.95,328.019,1356.368z" />
315
+ <path style="fill: var(--color-font-1)" d="M160.019,1076.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S160.019,1071.95,160.019,1076.368z" />
316
+ <path style="fill: var(--color-font-1)" d="M224.019,1028.369c0,4.418,3.582,8,8,8s8-3.582,8-8c0-4.418-3.582-8-8-8S224.019,1023.951,224.019,1028.369z" />
317
+ <path style="fill: var(--color-font-1)" d="M288.019,1076.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S288.019,1071.95,288.019,1076.368z" />
318
+ <path style="fill: var(--color-font-1)" d="M72.019,1252.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S72.019,1247.95,72.019,1252.368z" />
319
+ <path style="fill: var(--color-font-1)" d="M64.019,1356.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S64.019,1351.95,64.019,1356.368z" />
320
+ <path style="fill: var(--color-font-1)" d="M16.019,1236.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S16.019,1231.95,16.019,1236.368z" />
321
+ <path style="fill: var(--color-font-1)" d="M368.019,1060.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S368.019,1055.95,368.019,1060.368z" />
322
+ <path style="fill: var(--color-font-1)" d="M432.019,1228.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S432.019,1223.95,432.019,1228.368z" />
323
+ <path style="fill: var(--color-font-1)" d="M392.019,1356.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S392.019,1351.95,392.019,1356.368z" />
324
+ <path style="fill: var(--color-font-1)" d="M176.019,1428.368c0,4.418,3.582,8,8,8s8-3.582,8-8s-3.582-8-8-8S176.019,1423.95,176.019,1428.368z" />
325
+ </g>
326
+ </g>
327
+ </svg>
328
+ <span>{{ $t('好耶') }}!</span>
329
+ <a>{{
330
+ $t('该说的都说了 —— 那么就可以愉快的用啦(大声),如果遇到什么奇怪的问题,尽管来 GitHub 仓库问哦。')
331
+ }}</a>
332
+ <button class="ss-button wel-next-end" @click="uiStore.popBoxList.shift()">
333
+ {{ $t('关闭') }}
334
+ </button>
335
+ </div>
336
+ </template>
337
+
338
+ <script setup lang="ts">
339
+ import { ref } from 'vue'
340
+ import { i18n } from '../main'
341
+ import { runAS, runASWEvent as save } from '../function/option'
342
+ import { openLink } from '../function/utils/appUtil'
343
+ import { useSettingsStore } from '../state/settings'
344
+ import { useUIStore } from '../state/ui'
345
+
346
+ const settingsStore = useSettingsStore()
347
+ const uiStore = useUIStore()
348
+
349
+ defineOptions({ name: 'WelcomePan' })
350
+
351
+ const $t = i18n.global.t
352
+
353
+ defineProps({
354
+ data: {
355
+ type: null,
356
+ default: undefined
357
+ }
358
+ })
359
+
360
+ const napcat = import.meta.env.VITE_NAPCAT
361
+ const repoName = import.meta.env.VITE_APP_REPO_NAME
362
+ const show = ref('home')
363
+ const colors = [
364
+ '林槐蓝',
365
+ '墨竹青',
366
+ '少女粉',
367
+ '微软紫',
368
+ '坏猫黄',
369
+ '玄素黑',
370
+ ]
371
+
372
+ function changeView(name: string) {
373
+ if(show.value === name || show.value === 'license') return
374
+ show.value = name
375
+ }
376
+
377
+ function setPage(name: string) {
378
+ show.value = name
379
+ }
380
+
381
+ function toggleSessionDisplay(event: Event) {
382
+ const sender = event.target as HTMLInputElement
383
+ runAS('session_display_mode', sender.checked ? 'all' : 'recent')
384
+ }
385
+ </script>
386
+
387
+ <style scoped>
388
+ .wel-next {
389
+ background: var(--color-card-2);
390
+ color: var(--color-font);
391
+ padding: 0 15px;
392
+ cursor: pointer;
393
+ position: absolute;
394
+ bottom: 10px;
395
+ right: 15px
396
+ }
397
+ .wel-next-end {
398
+ background: var(--color-main);
399
+ color: var(--color-font-r);
400
+ padding: 0 15px;
401
+ cursor: pointer;
402
+ position: absolute;
403
+ bottom: 10px;
404
+ right: 15px
405
+ }
406
+ .base-box {
407
+ padding-bottom: 30px !important;
408
+ }
409
+
410
+ .wel-home {
411
+ flex-direction: column;
412
+ align-items: center;
413
+ display: flex;
414
+ }
415
+
416
+ .wel-home > img {
417
+ width: 90px;
418
+ margin-top: -70px;
419
+ margin-bottom: 20px;
420
+ color: var(--color-main);
421
+ }
422
+
423
+ .wel-home > span {
424
+ font-size: 0.8rem;
425
+ color: var(--color-font-2);
426
+ }
427
+
428
+ .wel-home > div {
429
+ margin-top: 5px;
430
+ }
431
+
432
+ .wel-home > div > span {
433
+ font-size: 1.2rem;
434
+ }
435
+
436
+ .wel-home > div > a {
437
+ color: var(--color-font-r);
438
+ background: var(--color-main);
439
+ line-height: 1.2rem;
440
+ margin-left: 5px;
441
+ border-radius: 2rem;
442
+ padding: 4px 10px 0 10px;
443
+ }
444
+
445
+ .wel-home > hr {
446
+ background: var(--color-font-2);
447
+ width: 40%;
448
+ opacity: 0.5;
449
+ }
450
+
451
+ .wel-end > a,
452
+ .wel-home > a {
453
+ color: var(--color-font-1);
454
+ margin-bottom: 20px;
455
+ text-align: center;
456
+ font-size: 0.8rem;
457
+ }
458
+
459
+ .wel-opt-item > div:first-child {
460
+ margin-left: 0 !important;
461
+ max-width: unset !important;
462
+ height: unset !important;
463
+ }
464
+
465
+ .l10n-info {
466
+ width: calc(100% - 40px) !important;
467
+ background: transparent !important;
468
+ border-left: unset !important;
469
+ margin-bottom: 0 !important;
470
+ }
471
+
472
+ .l10n-info select {
473
+ width: 100%;
474
+ border: 0;
475
+ color: var(--color-font);
476
+ margin-bottom: 3px;
477
+ border-left: 4px solid var(--color-main);
478
+ background: var(--color-card-1);
479
+ border-radius: 4px;
480
+ padding: 5px 10px 9px 10px;
481
+ }
482
+
483
+ .wel-end {
484
+ display: flex;
485
+ flex-direction: column;
486
+ align-items: center;
487
+ }
488
+
489
+ .wel-end > span {
490
+ margin-top: 10px;
491
+ font-size: 1.3rem;
492
+ }
493
+
494
+ .step-line {
495
+ display: flex;
496
+ margin: 10px auto 0 auto;
497
+ width: calc(100% - 50px);
498
+ background: var(--color-card-1);
499
+ padding: 7px !important;
500
+ border-radius: 100px;
501
+ flex-direction: row;
502
+ justify-content: center;
503
+ align-items: center;
504
+ }
505
+ .step-line > svg {
506
+ cursor: pointer;
507
+ margin: 0 10px;
508
+ padding: 5px;
509
+ }
510
+ .step-line > div {
511
+ width: 10px;
512
+ height: 2px;
513
+ background: var(--color-font);
514
+ border-radius: 2px;
515
+ }
516
+ .step-line > svg.select {
517
+ cursor: unset;
518
+ border-radius: 100%;
519
+ background: var(--color-main);
520
+ color: var(--color-font-r);
521
+ width: 0.8rem;
522
+ height: 0.8rem;
523
+ }
524
+
525
+ .lead {
526
+ flex-direction: row;
527
+ display: flex;
528
+ flex-wrap: wrap;
529
+ }
530
+ .lead > span:nth-child(1) {
531
+ font-size: 1.1rem;
532
+ color: var(--color-main);
533
+ text-align: center;
534
+ width: 100%;
535
+ margin-bottom: 10px;
536
+ }
537
+ .lead > div:nth-child(2) {
538
+ max-width: 5px;
539
+ background: var(--color-main);
540
+ flex: 1;
541
+ border-radius: 7px;
542
+ box-shadow: 0 0 5px var(--color-shader);
543
+ margin-right: 20px;
544
+ }
545
+ .lead > div:nth-child(3) {
546
+ display: flex;
547
+ flex-direction: column;
548
+ }
549
+ .lead > span:nth-child(4) {
550
+ font-size: 0.8rem;
551
+ color: var(--color-font-2);
552
+ width: 100%;
553
+ text-align: center;
554
+ margin-top: 20px;
555
+ }
556
+ .lead > div > span {
557
+ color: var(--color-font);
558
+ }
559
+ .lead > div > a {
560
+ color: var(--color-font-2);
561
+ margin-left: 20px;
562
+ text-decoration: underline;
563
+ cursor: pointer;
564
+ }
565
+
566
+ .function > div.config {
567
+ flex-direction: row;
568
+ display: flex;
569
+ }
570
+ .function > div.config > div:first-child {
571
+ height: 45vh;
572
+ margin-left: -25vh;
573
+ width: 40vh;
574
+ display: flex;
575
+ flex-direction: column;
576
+ justify-content: center;
577
+ }
578
+ .function > div.config > div:last-child {
579
+ flex-direction: column;
580
+ margin-left: 20px;
581
+ display: flex;
582
+ flex: 1;
583
+ }
584
+ .function > div.config > div:last-child > span {
585
+ color: var(--color-main);
586
+ display: block;
587
+ font-size: 1rem;
588
+ }
589
+ .function > div.config > div:last-child > a {
590
+ color: var(--color-font-2);
591
+ margin-bottom: 10px;
592
+ font-size: 0.85rem;
593
+ display: block;
594
+ }
595
+ .function > div.config > div:last-child > div {
596
+ border-left: 3px solid var(--color-main);
597
+ padding: 0 0 0 10px;
598
+ border-radius: 3px;
599
+ margin-top: 5px;
600
+ flex-wrap: wrap;
601
+ }
602
+ .function > div.config > div:last-child > div select {
603
+ width: 100%;
604
+ }
605
+ .function > div.config > div:last-child > div:hover {
606
+ background: transparent !important;
607
+ }
608
+
609
+ .bubble_sort_user > div {
610
+ background: var(--color-card-1);
611
+ box-shadow: 0 0 5px var(--color-shader);
612
+ border-radius: 7px;
613
+ display: flex;
614
+ padding: 10px;
615
+ margin-bottom: 10px;
616
+ }
617
+ .bubble_sort_user > div > div:first-child {
618
+ background: var(--color-card-2);
619
+ margin-right: 10px;
620
+ border-radius: 7px;
621
+ overflow: hidden;
622
+ height: 35px;
623
+ width: 35px;
624
+ }
625
+ .bubble_sort_user > div > div:first-child > svg {
626
+ background: var(--color-main);
627
+ color: var(--color-font-r);
628
+ height: calc(100% - 20px);
629
+ width: calc(100% - 20px);
630
+ padding: 10px;
631
+ }
632
+ .bubble_sort_user > div > div:last-child {
633
+ flex: 1;
634
+ }
635
+ .bubble_sort_user > div > div:last-child > div:first-child {
636
+ color: var(--color-main);
637
+ font-size: 0.85rem;
638
+ }
639
+ .bubble_sort_user > div:not(:first-child) > div:last-child > div:first-child {
640
+ background: var(--color-card-2);
641
+ border-radius: 7px;
642
+ height: 0.85rem;
643
+ }
644
+ .bubble_sort_user > div > div:last-child > div:last-child {
645
+ background: var(--color-card-2);
646
+ border-radius: 7px;
647
+ margin-top: 5px;
648
+ height: 0.8rem;
649
+ width: 100%;
650
+ }
651
+
652
+ .theme_color > div {
653
+ margin-bottom: 10px;
654
+ display: flex;
655
+ }
656
+ .theme_color > div.me {
657
+ flex-direction: row-reverse;
658
+ transform: translateX(35px);
659
+ }
660
+ .theme_color > div:not(.me) {
661
+ transform: translateX(-35px);
662
+ }
663
+ .theme_color > div > div:first-child {
664
+ box-shadow: 0 0 5px var(--color-shader);
665
+ background: var(--color-card-1);
666
+ border-radius: 100%;
667
+ height: 35px;
668
+ width: 35px;
669
+ }
670
+ .theme_color > div.me > div:first-child {
671
+ opacity: 0;
672
+ }
673
+ .theme_color > div > div:last-child {
674
+ display: flex;
675
+ flex-direction: column;
676
+ justify-content: center;
677
+ flex: 1;
678
+ margin: 0 10px;
679
+ }
680
+ .theme_color > div.me > div:last-child {
681
+ align-items: flex-end;
682
+ }
683
+ .theme_color > div > div:last-child > div:first-child {
684
+ box-shadow: 0 0 5px var(--color-shader);
685
+ background: var(--color-card-1);
686
+ border-radius: 7px;
687
+ height: 0.8rem;
688
+ width: 60%;
689
+ }
690
+ .theme_color > div > div:last-child > div:last-child {
691
+ box-shadow: 0 0 5px var(--color-shader);
692
+ background: var(--color-card-1);
693
+ height: calc(0.8rem + 20px);
694
+ border-radius: 7px;
695
+ margin-top: 10px;
696
+ width: 100%;
697
+ }
698
+ .theme_color > div.me > div:last-child > div {
699
+ background: var(--color-main);
700
+ }
701
+
702
+ .menu > a > div {
703
+ width: 20vh;
704
+ background: var(--color-card-2);
705
+ box-shadow: 0 0 5px var(--color-shader);
706
+ border-radius: 7px;
707
+ margin: 0 auto 0 auto;
708
+ transform: translate(5vh, -30px);
709
+ padding: 5px
710
+ }
711
+ .menu > a > div > div {
712
+ align-items: center;
713
+ border-radius: 7px;
714
+ height: 1.1rem;
715
+ display: flex;
716
+ margin: 3px 0;
717
+ }
718
+ .menu > a > div > div.select {
719
+ background: var(--color-main);
720
+ }
721
+ .menu > a > div > div > svg {
722
+ color: var(--color-font-1-r);
723
+ opacity: 0.9;
724
+ margin: 5px;
725
+ }
726
+ .menu > a > div > div > span {
727
+ color: var(--color-font-1-r);
728
+ font-size: 0.7rem;
729
+ }
730
+ .menu > a > div > div > div:first-child {
731
+ background: var(--color-card-1);
732
+ border-radius: 7px;
733
+ height: 1rem;
734
+ width: 1rem;
735
+ }
736
+ .menu > a > div > div > div:last-child {
737
+ background: var(--color-card-1);
738
+ border-radius: 7px;
739
+ margin-left: 3px;
740
+ height: 1rem;
741
+ flex: 1;
742
+ }
743
+
744
+ .chat_pic_pan {
745
+ box-shadow: 0 0 5px var(--color-shader);
746
+ background: var(--color-card-1);
747
+ height: calc(40vh - 40px);
748
+ flex-direction: column;
749
+ pointer-events: none;
750
+ border-radius: 7px;
751
+ display: flex;
752
+ padding: 10px;
753
+ margin: 20px;
754
+ }
755
+ .chat_pic_pan > div:first-child {
756
+ justify-content: space-between;
757
+ display: flex;
758
+ }
759
+ .chat_pic_pan > div:first-child > div:first-child {
760
+ background: var(--color-card-2);
761
+ border-radius: 7px;
762
+ height: 1rem;
763
+ width: 15vh;
764
+ }
765
+ .chat_pic_pan > div:first-child > div:last-child {
766
+ background: var(--color-main);
767
+ color: var(--color-font-r);
768
+ height: calc(1rem + 3px);
769
+ font-size: 0.7rem;
770
+ text-align: center;
771
+ border-radius: 7px;
772
+ width: 7vh;
773
+ }
774
+ .chat_pic_pan > div:nth-child(2) {
775
+ flex-direction: column;
776
+ display: flex;
777
+ flex: 1;
778
+ overflow-y: scroll;
779
+ margin: 2px;
780
+ }
781
+ .chat_pic_pan > div:nth-child(2) > svg {
782
+ border: 2px solid var(--color-card-2);
783
+ color: var(--color-font-2);
784
+ border-radius: 7px;
785
+ margin-right: 5px;
786
+ margin-top: 5px;
787
+ padding: 26% 0;
788
+ }
789
+ .chat_pic_pan > div:last-child {
790
+ display: flex;
791
+ }
792
+ .chat_pic_pan > div:last-child > div:first-child {
793
+ background: var(--color-card-2);
794
+ border-radius: 7px;
795
+ height: 5vh;
796
+ width: 5vh;
797
+ }
798
+ .chat_pic_pan > div:last-child > div:last-child {
799
+ background: var(--color-card-2);
800
+ margin-left: 5px;
801
+ border-radius: 7px;
802
+ height: 5vh;
803
+ flex: 1;
804
+ }
805
+
806
+ .input_bar > div:first-child {
807
+ box-shadow: 0 0 5px var(--color-shader);
808
+ background: var(--color-card-1);
809
+ pointer-events: none;
810
+ overflow-y: scroll;
811
+ border-radius: 7px;
812
+ max-height: 6rem;
813
+ padding: 3px 5px;
814
+ width: 80%;
815
+ }
816
+ .input_bar > div:first-child > div {
817
+ align-items: center;
818
+ padding: 3px 5px;
819
+ display: flex;
820
+ }
821
+ .input_bar > div:first-child > div.select {
822
+ background: var(--color-main);
823
+ border-radius: 7px;
824
+ }
825
+ .input_bar > div:first-child > div > div:first-child {
826
+ height: 1rem;
827
+ width: 1rem;
828
+ background: var(--color-card-2);
829
+ border-radius: 100%;
830
+ margin: 3px 0;
831
+ }
832
+ .input_bar > div:first-child > div > div:last-child {
833
+ margin-left: 5px
834
+ }
835
+ .input_bar > div:first-child > div.select > div:last-child {
836
+ color: var(--color-font-r);
837
+ font-size: 0.8rem;
838
+ }
839
+ .input_bar > div:first-child > div:not(.select) > div:last-child {
840
+ background: var(--color-card-2);
841
+ height: 1rem;
842
+ flex: 1;
843
+ border-radius: 7px;
844
+ padding: 3px 5px;
845
+ }
846
+ .input_bar > div:last-child {
847
+ margin-top: 10px;
848
+ display: flex;
849
+ width: 100%;
850
+ }
851
+ .input_bar > div:last-child > div:first-child {
852
+ box-shadow: 0 0 5px var(--color-shader);
853
+ background: var(--color-card-1);
854
+ border-radius: 7px;
855
+ height: 2rem;
856
+ width: 2rem;
857
+ }
858
+ .input_bar > div:last-child > div:last-child {
859
+ box-shadow: 0 0 5px var(--color-shader);
860
+ background: var(--color-card-1);
861
+ color: var(--color-font-2);
862
+ margin-right: -10px;
863
+ align-items: center;
864
+ border-radius: 7px;
865
+ font-size: 0.8rem;
866
+ margin-left: 5px;
867
+ padding: 0 10px;
868
+ display: flex;
869
+ height: 2rem;
870
+ flex: 1;
871
+ }
872
+
873
+ @media (max-width: 700px) {
874
+ .function {
875
+ overflow-y: scroll;
876
+ overflow-x: hidden;
877
+ margin: 30px 0;
878
+ }
879
+ .function > div.config {
880
+ flex-direction: column;
881
+ }
882
+ .function > div.config > div:first-child {
883
+ align-items: center;
884
+ margin-left: 0;
885
+ width: 100%;
886
+ }
887
+ .function > div.config > div:first-child > div {
888
+ width: 80%;
889
+ }
890
+ .theme_color {
891
+ margin-left: 35px;
892
+ }
893
+ }
894
+ </style>