oxy-uni-ui 1.2.0 → 2.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 (306) hide show
  1. package/attributes.json +1 -1
  2. package/components/common/abstracts/variable.scss +396 -321
  3. package/components/common/path.ts +9 -0
  4. package/components/common/util.ts +200 -5
  5. package/components/composables/index.ts +1 -0
  6. package/components/composables/useGlobalLoading.ts +42 -0
  7. package/components/composables/useGlobalMessage.ts +48 -0
  8. package/components/composables/useGlobalToast.ts +84 -0
  9. package/components/composables/usePopover.ts +24 -20
  10. package/components/composables/useVirtualScroll.ts +13 -11
  11. package/components/composables/useWindowResize.ts +35 -0
  12. package/components/oxy-action-sheet/index.scss +24 -11
  13. package/components/oxy-action-sheet/oxy-action-sheet.vue +27 -19
  14. package/components/oxy-action-sheet/types.ts +7 -0
  15. package/components/oxy-backtop/index.scss +3 -3
  16. package/components/oxy-backtop/oxy-backtop.vue +9 -6
  17. package/components/oxy-backtop/types.ts +7 -7
  18. package/components/oxy-badge/index.scss +4 -4
  19. package/components/oxy-badge/oxy-badge.vue +3 -3
  20. package/components/oxy-badge/types.ts +2 -2
  21. package/components/oxy-button/index.scss +5 -5
  22. package/components/oxy-button/oxy-button.vue +5 -1
  23. package/components/oxy-calendar/index.scss +11 -11
  24. package/components/oxy-calendar/oxy-calendar.vue +1 -0
  25. package/components/oxy-calendar/types.ts +5 -0
  26. package/components/oxy-calendar-view/month/index.scss +4 -4
  27. package/components/oxy-calendar-view/month/types.ts +36 -0
  28. package/components/oxy-calendar-view/monthPanel/index.scss +7 -7
  29. package/components/oxy-calendar-view/monthPanel/month-panel.vue +14 -8
  30. package/components/oxy-calendar-view/year/index.scss +4 -4
  31. package/components/oxy-calendar-view/yearPanel/index.scss +4 -4
  32. package/components/oxy-calendar-view/yearPanel/year-panel.vue +21 -5
  33. package/components/oxy-card/index.scss +2 -2
  34. package/components/oxy-cell/index.scss +8 -8
  35. package/components/oxy-cell/oxy-cell.vue +15 -2
  36. package/components/oxy-cell/types.ts +4 -0
  37. package/components/oxy-checkbox/index.scss +8 -8
  38. package/components/oxy-checkbox/oxy-checkbox.vue +2 -2
  39. package/components/oxy-checkbox-group/index.scss +2 -2
  40. package/components/oxy-circle/oxy-circle.vue +10 -7
  41. package/components/oxy-circle/types.ts +5 -5
  42. package/components/oxy-col/oxy-col.vue +2 -2
  43. package/components/oxy-col-picker/index.scss +4 -4
  44. package/components/oxy-col-picker/oxy-col-picker.vue +9 -5
  45. package/components/oxy-col-picker/types.ts +12 -3
  46. package/components/oxy-collapse/index.scss +2 -2
  47. package/components/oxy-collapse-item/oxy-collapse-item.vue +3 -3
  48. package/components/oxy-corner/index.scss +32 -32
  49. package/components/oxy-corner/oxy-corner.vue +15 -3
  50. package/components/oxy-corner/types.ts +15 -1
  51. package/components/oxy-count-to/oxy-count-to.vue +3 -3
  52. package/components/oxy-curtain/index.scss +15 -15
  53. package/components/oxy-curtain/oxy-curtain.vue +4 -2
  54. package/components/oxy-curtain/types.ts +6 -1
  55. package/components/oxy-date-strip/index.scss +10 -0
  56. package/components/oxy-date-strip/oxy-date-strip.vue +198 -0
  57. package/components/oxy-date-strip/types.ts +98 -0
  58. package/components/oxy-date-strip/utils.ts +67 -0
  59. package/components/oxy-date-strip-item/index.scss +94 -0
  60. package/components/oxy-date-strip-item/oxy-date-strip-item.vue +102 -0
  61. package/components/oxy-date-strip-item/types.ts +53 -0
  62. package/components/oxy-datetime-picker/index.scss +11 -11
  63. package/components/oxy-datetime-picker/oxy-datetime-picker.vue +4 -1
  64. package/components/oxy-datetime-picker/types.ts +10 -1
  65. package/components/oxy-drop-menu/index.scss +3 -3
  66. package/components/oxy-drop-menu/oxy-drop-menu.vue +3 -3
  67. package/components/oxy-drop-menu-item/index.scss +1 -1
  68. package/components/oxy-drop-menu-item/oxy-drop-menu-item.vue +4 -3
  69. package/components/oxy-drop-menu-item/types.ts +5 -0
  70. package/components/oxy-echarts/index.scss +17 -0
  71. package/components/oxy-echarts/index.ts +1 -0
  72. package/components/oxy-echarts/oxy-echarts.vue +32 -0
  73. package/components/oxy-echarts/types.ts +18 -0
  74. package/components/oxy-fab/index.scss +8 -8
  75. package/components/oxy-fab/oxy-fab.vue +22 -3
  76. package/components/oxy-file-list/index.scss +42 -15
  77. package/components/oxy-file-list/oxy-file-list.vue +208 -34
  78. package/components/oxy-file-list/types.ts +58 -2
  79. package/components/oxy-floating-panel/oxy-floating-panel.vue +13 -9
  80. package/components/oxy-floating-panel/{type.ts → types.ts} +8 -8
  81. package/components/oxy-footer/index.scss +19 -0
  82. package/components/oxy-footer/oxy-footer.vue +78 -0
  83. package/components/oxy-footer/types.ts +17 -0
  84. package/components/oxy-form-item/types.ts +22 -1
  85. package/components/oxy-gap/oxy-gap.vue +2 -2
  86. package/components/oxy-gap/types.ts +2 -2
  87. package/components/oxy-global-loading/oxy-global-loading.vue +53 -0
  88. package/components/oxy-global-message/oxy-global-message.vue +64 -0
  89. package/components/oxy-global-toast/oxy-global-toast.vue +53 -0
  90. package/components/oxy-grid/oxy-grid.vue +1 -1
  91. package/components/oxy-grid/types.ts +1 -1
  92. package/components/oxy-grid-item/index.scss +1 -1
  93. package/components/oxy-grid-item/oxy-grid-item.vue +7 -5
  94. package/components/oxy-grid-item/types.ts +1 -1
  95. package/components/oxy-guidance/index.scss +75 -0
  96. package/components/oxy-guidance/oxy-guidance.vue +201 -0
  97. package/components/oxy-guidance/types.ts +33 -0
  98. package/components/oxy-icon/oxy-icon.vue +2 -2
  99. package/components/oxy-icon/types.ts +1 -1
  100. package/components/oxy-img/oxy-img.vue +4 -4
  101. package/components/oxy-img/types.ts +3 -3
  102. package/components/oxy-img-cropper/index.scss +12 -12
  103. package/components/oxy-img-cropper/oxy-img-cropper.vue +97 -52
  104. package/components/oxy-img-cropper/types.ts +2 -2
  105. package/components/oxy-img-lazy/index.scss +17 -0
  106. package/components/oxy-img-lazy/oxy-img-lazy.vue +332 -0
  107. package/components/oxy-img-lazy/types.ts +69 -0
  108. package/components/oxy-index-anchor/index.scss +2 -2
  109. package/components/oxy-index-anchor/oxy-index-anchor.vue +2 -2
  110. package/components/oxy-index-anchor/{type.ts → types.ts} +3 -0
  111. package/components/oxy-index-bar/index.scss +3 -3
  112. package/components/oxy-index-bar/oxy-index-bar.vue +3 -3
  113. package/components/oxy-index-bar/{type.ts → types.ts} +2 -2
  114. package/components/oxy-input/index.scss +1 -1
  115. package/components/oxy-input-number/index.scss +5 -5
  116. package/components/oxy-input-number/oxy-input-number.vue +2 -2
  117. package/components/oxy-input-number/types.ts +3 -2
  118. package/components/oxy-keyboard/index.scss +5 -5
  119. package/components/oxy-keyboard/key/index.scss +3 -3
  120. package/components/oxy-keyboard/key/index.vue +2 -2
  121. package/components/oxy-keyboard/key/types.ts +15 -0
  122. package/components/oxy-keyboard/oxy-keyboard.vue +1 -0
  123. package/components/oxy-keyboard/types.ts +5 -0
  124. package/components/oxy-link/index.scss +57 -0
  125. package/components/oxy-link/oxy-link.vue +130 -0
  126. package/components/oxy-link/types.ts +81 -0
  127. package/components/oxy-list/index.scss +7 -1
  128. package/components/oxy-list/oxy-list.vue +4 -3
  129. package/components/oxy-list/types.ts +1 -1
  130. package/components/oxy-loading/oxy-loading.vue +8 -4
  131. package/components/oxy-loading/types.ts +1 -1
  132. package/components/oxy-loadmore/index.scss +3 -3
  133. package/components/oxy-long-press-menu/index.scss +93 -0
  134. package/components/oxy-long-press-menu/oxy-long-press-menu.vue +338 -0
  135. package/components/oxy-long-press-menu/types.ts +34 -0
  136. package/components/oxy-message-box/index.scss +12 -11
  137. package/components/oxy-message-box/oxy-message-box.vue +11 -3
  138. package/components/oxy-message-box/types.ts +14 -0
  139. package/components/oxy-navbar/index.scss +2 -2
  140. package/components/oxy-navbar/oxy-navbar.vue +58 -13
  141. package/components/oxy-navbar/types.ts +8 -1
  142. package/components/oxy-navbar-capsule/types.ts +3 -0
  143. package/components/oxy-notice-bar/index.scss +3 -3
  144. package/components/oxy-notice-bar/oxy-notice-bar.vue +9 -5
  145. package/components/oxy-notice-bar/types.ts +3 -3
  146. package/components/oxy-notify/index.ts +1 -0
  147. package/components/oxy-notify/oxy-notify.vue +3 -2
  148. package/components/oxy-notify/types.ts +7 -0
  149. package/components/oxy-pagination/index.scss +1 -1
  150. package/components/oxy-password-input/oxy-password-input.vue +2 -2
  151. package/components/oxy-password-input/types.ts +1 -1
  152. package/components/oxy-picker/index.scss +45 -2
  153. package/components/oxy-picker/oxy-picker.vue +103 -14
  154. package/components/oxy-picker/types.ts +33 -1
  155. package/components/oxy-picker-view/index.scss +3 -3
  156. package/components/oxy-picker-view/oxy-picker-view.vue +4 -4
  157. package/components/oxy-popover/index.scss +9 -9
  158. package/components/oxy-popup/index.scss +2 -2
  159. package/components/oxy-popup/oxy-popup.vue +35 -2
  160. package/components/oxy-popup/types.ts +8 -1
  161. package/components/oxy-progress/index.scss +3 -3
  162. package/components/oxy-qrcode/draw.ts +398 -0
  163. package/components/oxy-qrcode/index.scss +2 -0
  164. package/components/oxy-qrcode/oxy-qrcode.vue +124 -0
  165. package/components/oxy-qrcode/qrcode.ts +936 -0
  166. package/components/oxy-qrcode/types.ts +42 -0
  167. package/components/oxy-radio/index.scss +13 -13
  168. package/components/oxy-radio/oxy-radio.vue +1 -1
  169. package/components/oxy-radio-group/index.scss +2 -2
  170. package/components/oxy-rate/types.ts +4 -4
  171. package/components/oxy-resize/index.scss +2 -2
  172. package/components/oxy-resize/oxy-resize.vue +4 -4
  173. package/components/oxy-resize/types.ts +3 -0
  174. package/components/oxy-rich-text/icon/emjio.svg +1 -0
  175. package/components/oxy-rich-text/icon/quote.svg +1 -0
  176. package/components/oxy-rich-text/icon/text.svg +1 -0
  177. package/components/oxy-rich-text/icon/title.svg +1 -0
  178. package/components/oxy-rich-text/index.scss +160 -0
  179. package/components/oxy-rich-text/mp-html/card/card.vue +122 -0
  180. package/components/oxy-rich-text/mp-html/card/index.js +7 -0
  181. package/components/oxy-rich-text/mp-html/editable/config.js +15 -0
  182. package/components/oxy-rich-text/mp-html/editable/index.js +553 -0
  183. package/components/oxy-rich-text/mp-html/emoji/index.js +203 -0
  184. package/components/oxy-rich-text/mp-html/highlight/config.js +5 -0
  185. package/components/oxy-rich-text/mp-html/highlight/index.js +96 -0
  186. package/components/oxy-rich-text/mp-html/highlight/prism.css +1 -0
  187. package/components/oxy-rich-text/mp-html/highlight/prism.min.js +7 -0
  188. package/components/oxy-rich-text/mp-html/img-cache/index.js +138 -0
  189. package/components/oxy-rich-text/mp-html/latex/index.js +80 -0
  190. package/components/oxy-rich-text/mp-html/latex/katex.css +1 -0
  191. package/components/oxy-rich-text/mp-html/latex/katex.min.js +1 -0
  192. package/components/oxy-rich-text/mp-html/markdown/index.js +50 -0
  193. package/components/oxy-rich-text/mp-html/markdown/marked.min.js +71 -0
  194. package/components/oxy-rich-text/mp-html/mp-html.d.ts +184 -0
  195. package/components/oxy-rich-text/mp-html/mp-html.vue +684 -0
  196. package/components/oxy-rich-text/mp-html/node/node.vue +1172 -0
  197. package/components/oxy-rich-text/mp-html/parser.js +1428 -0
  198. package/components/oxy-rich-text/mp-html/search/index.js +132 -0
  199. package/components/oxy-rich-text/mp-html/style/index.js +129 -0
  200. package/components/oxy-rich-text/mp-html/style/parser.js +175 -0
  201. package/components/oxy-rich-text/mp-html/template/index.js +67 -0
  202. package/components/oxy-rich-text/mp-html/txv-video/index.js +46 -0
  203. package/components/oxy-rich-text/oxy-rich-text.vue +642 -0
  204. package/components/oxy-rich-text/types.ts +76 -0
  205. package/components/oxy-row/oxy-row.vue +3 -3
  206. package/components/oxy-row/types.ts +1 -1
  207. package/components/oxy-search/index.scss +3 -3
  208. package/components/oxy-segmented/index.scss +16 -16
  209. package/components/oxy-segmented/oxy-segmented.vue +23 -3
  210. package/components/oxy-select/index.scss +331 -0
  211. package/components/oxy-select/oxy-select.vue +456 -0
  212. package/components/oxy-select/types.ts +83 -0
  213. package/components/oxy-select-picker/index.scss +7 -7
  214. package/components/oxy-select-picker/oxy-select-picker.vue +4 -0
  215. package/components/oxy-select-picker/types.ts +7 -1
  216. package/components/oxy-sidebar-item/index.scss +1 -1
  217. package/components/oxy-signature/oxy-signature.vue +18 -10
  218. package/components/oxy-signature/types.ts +106 -13
  219. package/components/oxy-skeleton/oxy-skeleton.vue +6 -6
  220. package/components/oxy-skeleton/types.ts +1 -1
  221. package/components/oxy-slider/index.scss +3 -3
  222. package/components/oxy-sort-button/index.scss +8 -8
  223. package/components/oxy-status-tip/index.scss +4 -4
  224. package/components/oxy-status-tip/oxy-status-tip.vue +5 -5
  225. package/components/oxy-status-tip/types.ts +3 -3
  226. package/components/oxy-step/index.scss +14 -14
  227. package/components/oxy-sticky/oxy-sticky.vue +6 -6
  228. package/components/oxy-stream-render/index.scss +6 -0
  229. package/components/oxy-stream-render/oxy-stream-render.vue +204 -0
  230. package/components/oxy-stream-render/types.ts +8 -0
  231. package/components/oxy-swipe-action/oxy-swipe-action.vue +27 -2
  232. package/components/oxy-swiper/oxy-swiper.vue +6 -6
  233. package/components/oxy-swiper/types.ts +5 -5
  234. package/components/oxy-switch/index.scss +8 -8
  235. package/components/oxy-switch/oxy-switch.vue +2 -2
  236. package/components/oxy-switch/types.ts +1 -1
  237. package/components/oxy-tab/index.scss +11 -1
  238. package/components/oxy-tabbar/index.scss +1 -1
  239. package/components/oxy-tabbar/oxy-tabbar.vue +39 -10
  240. package/components/oxy-table/index.scss +5 -5
  241. package/components/oxy-table/oxy-table.vue +8 -6
  242. package/components/oxy-table/types.ts +2 -2
  243. package/components/oxy-table-col/oxy-table-col.vue +3 -3
  244. package/components/oxy-table-col/types.ts +2 -2
  245. package/components/oxy-tabs/index.scss +43 -15
  246. package/components/oxy-tabs/oxy-tabs.vue +53 -19
  247. package/components/oxy-tabs/types.ts +15 -3
  248. package/components/oxy-tag/index.scss +15 -15
  249. package/components/oxy-text/index.scss +5 -1
  250. package/components/oxy-text/oxy-text.vue +76 -7
  251. package/components/oxy-text/types.ts +12 -0
  252. package/components/oxy-textarea/index.scss +6 -6
  253. package/components/oxy-toast/oxy-toast.vue +24 -8
  254. package/components/oxy-tooltip/index.scss +9 -9
  255. package/components/oxy-tree/index.scss +61 -9
  256. package/components/oxy-tree/oxy-tree.vue +102 -17
  257. package/components/oxy-tree/types.ts +23 -10
  258. package/components/oxy-upload/index.scss +21 -21
  259. package/components/oxy-upload/types.ts +2 -2
  260. package/components/oxy-verification-code/index.scss +6 -0
  261. package/components/oxy-verification-code/oxy-verification-code.vue +187 -0
  262. package/components/oxy-verification-code/types.ts +82 -0
  263. package/components/oxy-video-preview/index.scss +4 -4
  264. package/components/oxy-virtual-scroll/index.scss +4 -4
  265. package/components/oxy-virtual-scroll/oxy-virtual-scroll.vue +11 -7
  266. package/components/oxy-virtual-scroll/types.ts +14 -14
  267. package/components/oxy-voice-player/index.scss +908 -0
  268. package/components/oxy-voice-player/oxy-voice-player.vue +821 -0
  269. package/components/oxy-voice-player/types.ts +567 -0
  270. package/components/oxy-waterfall/index.scss +18 -0
  271. package/components/oxy-waterfall/oxy-waterfall.vue +218 -0
  272. package/components/oxy-waterfall/types.ts +90 -0
  273. package/components/oxy-waterfall-item/index.scss +8 -0
  274. package/components/oxy-waterfall-item/oxy-waterfall-item.vue +89 -0
  275. package/components/oxy-waterfall-item/types.ts +16 -0
  276. package/components/oxy-watermark/oxy-watermark.vue +35 -13
  277. package/components/oxy-watermark/types.ts +14 -14
  278. package/global.d.ts +9 -0
  279. package/index.ts +3 -0
  280. package/locale/lang/ar-SA.ts +3 -0
  281. package/locale/lang/en-US.ts +29 -0
  282. package/locale/lang/zh-CN.ts +29 -0
  283. package/package.json +97 -1
  284. package/tags.json +1 -1
  285. package/uni-echarts/changelog.md +2 -0
  286. package/uni-echarts/components/index.js +1 -0
  287. package/uni-echarts/components/uni-echarts/events.js +95 -0
  288. package/uni-echarts/components/uni-echarts/types.d.ts +183 -0
  289. package/uni-echarts/components/uni-echarts/types.js +1 -0
  290. package/uni-echarts/components/uni-echarts/uni-echarts.vue +530 -0
  291. package/uni-echarts/components/uni-echarts/uni-echarts.vue.d.ts +19 -0
  292. package/uni-echarts/global.d.ts +7 -0
  293. package/uni-echarts/index.d.ts +440 -0
  294. package/uni-echarts/index.js +2 -0
  295. package/uni-echarts/package.json +105 -0
  296. package/uni-echarts/shared-core.d.ts +269 -0
  297. package/uni-echarts/shared-core.js +900 -0
  298. package/web-types.json +1 -1
  299. package/components/oxy-number-keyboard/index.scss +0 -78
  300. package/components/oxy-number-keyboard/key/index.scss +0 -81
  301. package/components/oxy-number-keyboard/key/index.vue +0 -78
  302. package/components/oxy-number-keyboard/key/types.ts +0 -11
  303. package/components/oxy-number-keyboard/oxy-number-keyboard.vue +0 -151
  304. package/components/oxy-number-keyboard/types.ts +0 -83
  305. package/components/oxy-tree/components/tree-node-content.vue +0 -72
  306. package/components/oxy-tree/index.ts +0 -51
@@ -0,0 +1,908 @@
1
+ @import './../common/abstracts/_mixin.scss';
2
+ @import './../common/abstracts/variable.scss';
3
+
4
+ /* voice-player component variables */
5
+ $-voice-player-bg: var(--oxy-voice-player-bg, resultColor(135deg, $-color-theme, 'dark' 'light', #4d80f0 #764ba2, 0% 100%)) !default;
6
+ $-voice-player-bg-dark: var(--oxy-voice-player-bg-dark, linear-gradient(135deg, #1a1a2e 0%, #16213e 100%)) !default;
7
+ $-voice-player-radius: var(--oxy-voice-player-radius, 24rpx) !default;
8
+ $-voice-player-shadow: var(--oxy-voice-player-shadow, 0 20rpx 60rpx rgba(0, 0, 0, 0.15)) !default;
9
+ $-voice-player-playing-shadow: var(--oxy-voice-player-playing-shadow, 0 20rpx 60rpx rgba(102, 126, 234, 0.3)) !default;
10
+
11
+ $-voice-player-cover-size: var(--oxy-voice-player-cover-size, 500rpx) !default;
12
+ $-voice-player-cover-shadow: var(--oxy-voice-player-cover-shadow, 0 8rpx 32rpx rgba(0, 0, 0, 0.3), 0 0 0 8rpx rgba(255, 255, 255, 0.1), inset 0 0 40rpx rgba(0, 0, 0, 0.2)) !default;
13
+ $-voice-player-cover-rotating-shadow: var(--oxy-voice-player-cover-rotating-shadow, 0 12rpx 48rpx rgba(0, 0, 0, 0.4), 0 0 0 8rpx rgba(255, 255, 255, 0.15), inset 0 0 40rpx rgba(0, 0, 0, 0.2), 0 0 60rpx rgba(102, 126, 234, 0.3)) !default;
14
+ $-voice-player-cover-center-size: var(--oxy-voice-player-cover-center-size, 80rpx) !default;
15
+ $-voice-player-cover-center-dot-size: var(--oxy-voice-player-cover-center-dot-size, 24rpx) !default;
16
+ $-voice-player-cover-center-dot-bg: var(--oxy-voice-player-cover-center-dot-bg, rgba(102, 126, 234, 0.8)) !default;
17
+
18
+ $-voice-player-title-fs: var(--oxy-voice-player-title-fs, 40rpx) !default;
19
+ $-voice-player-title-color: var(--oxy-voice-player-title-color, #fff) !default;
20
+ $-voice-player-artist-fs: var(--oxy-voice-player-artist-fs, 30rpx) !default;
21
+ $-voice-player-artist-color: var(--oxy-voice-player-artist-color, rgba(255, 255, 255, 0.9)) !default;
22
+ $-voice-player-album-fs: var(--oxy-voice-player-album-fs, 26rpx) !default;
23
+ $-voice-player-album-color: var(--oxy-voice-player-album-color, rgba(255, 255, 255, 0.7)) !default;
24
+
25
+ $-voice-player-lyric-height: var(--oxy-voice-player-lyric-height, 300rpx) !default;
26
+ $-voice-player-lyric-expanded-height: var(--oxy-voice-player-lyric-expanded-height, 600rpx) !default;
27
+ $-voice-player-lyric-fs: var(--oxy-voice-player-lyric-fs, 32rpx) !default;
28
+ $-voice-player-lyric-color: var(--oxy-voice-player-lyric-color, rgba(255, 255, 255, 0.7)) !default;
29
+ $-voice-player-lyric-active-fs: var(--oxy-voice-player-lyric-active-fs, 36rpx) !default;
30
+ $-voice-player-lyric-active-color: var(--oxy-voice-player-lyric-active-color, #fff) !default;
31
+ $-voice-player-lyric-translation-fs: var(--oxy-voice-player-lyric-translation-fs, 26rpx) !default;
32
+ $-voice-player-lyric-translation-color: var(--oxy-voice-player-lyric-translation-color, rgba(255, 255, 255, 0.5)) !default;
33
+ $-voice-player-lyric-translation-active-color: var(--oxy-voice-player-lyric-translation-active-color, rgba(255, 255, 255, 0.9)) !default;
34
+
35
+ $-voice-player-time-fs: var(--oxy-voice-player-time-fs, 26rpx) !default;
36
+ $-voice-player-time-color: var(--oxy-voice-player-time-color, rgba(255, 255, 255, 0.9)) !default;
37
+
38
+ $-voice-player-progress-height: var(--oxy-voice-player-progress-height, 4rpx) !default;
39
+ $-voice-player-progress-bg: var(--oxy-voice-player-progress-bg, rgba(255, 255, 255, 0.15)) !default;
40
+ $-voice-player-progress-buffered-bg: var(--oxy-voice-player-progress-buffered-bg, rgba(255, 255, 255, 0.25)) !default;
41
+ $-voice-player-progress-filled-bg: var(--oxy-voice-player-progress-filled-bg, linear-gradient(90deg, rgba(255, 255, 255, 0.95) 0%, rgba(255, 255, 255, 0.85) 100%)) !default;
42
+ $-voice-player-progress-shadow: var(--oxy-voice-player-progress-shadow, 0 0 8rpx rgba(255, 255, 255, 0.3)) !default;
43
+ $-voice-player-progress-dot-size: var(--oxy-voice-player-progress-dot-size, 24rpx) !default;
44
+ $-voice-player-progress-dot-shadow: var(--oxy-voice-player-progress-dot-shadow, 0 2rpx 8rpx rgba(0, 0, 0, 0.2), 0 0 0 4rpx rgba(255, 255, 255, 0.2)) !default;
45
+ $-voice-player-progress-dot-active-shadow: var(--oxy-voice-player-progress-dot-active-shadow, 0 4rpx 16rpx rgba(0, 0, 0, 0.3), 0 0 0 6rpx rgba(255, 255, 255, 0.15)) !default;
46
+
47
+ $-voice-player-control-btn-size: var(--oxy-voice-player-control-btn-size, 80rpx) !default;
48
+ $-voice-player-control-btn-bg: var(--oxy-voice-player-control-btn-bg, rgba(255, 255, 255, 0.2)) !default;
49
+ $-voice-player-control-btn-shadow: var(--oxy-voice-player-control-btn-shadow, 0 4rpx 16rpx rgba(0, 0, 0, 0.1)) !default;
50
+ $-voice-player-control-btn-active-shadow: var(--oxy-voice-player-control-btn-active-shadow, 0 2rpx 8rpx rgba(0, 0, 0, 0.15)) !default;
51
+ $-voice-player-control-btn-play-size: var(--oxy-voice-player-control-btn-play-size, 100rpx) !default;
52
+ $-voice-player-control-btn-play-bg: var(--oxy-voice-player-control-btn-play-bg, resultColor(135deg, $-color-theme, 'dark' 'light', #667eea #764ba2, 0% 100%)) !default;
53
+ $-voice-player-control-icon-fs: var(--oxy-voice-player-control-icon-fs, 60rpx) !default;
54
+ $-voice-player-control-btn-icon-fs: var(--oxy-voice-player-control-btn-icon-fs, 80rpx) !default;
55
+
56
+ $-voice-player-extra-btn-size: var(--oxy-voice-player-extra-btn-size, 72rpx) !default;
57
+ $-voice-player-extra-btn-bg: var(--oxy-voice-player-extra-btn-bg, rgba(255, 255, 255, 0.2)) !default;
58
+ $-voice-player-extra-btn-shadow: var(--oxy-voice-player-extra-btn-shadow, 0 2rpx 8rpx rgba(0, 0, 0, 0.1)) !default;
59
+ $-voice-player-extra-btn-active-shadow: var(--oxy-voice-player-extra-btn-active-shadow, 0 1rpx 4rpx rgba(0, 0, 0, 0.15)) !default;
60
+ $-voice-player-extra-btn-icon-fs: var(--oxy-voice-player-extra-btn-icon-fs, 40rpx) !default;
61
+ $-voice-player-extra-btn-favorite-color: var(--oxy-voice-player-extra-btn-favorite-color, #ff4757) !default;
62
+
63
+ $-voice-player-volume-panel-bg: var(--oxy-voice-player-volume-panel-bg, rgba(255, 255, 255, 0.15)) !default;
64
+ $-voice-player-volume-panel-radius: var(--oxy-voice-player-volume-panel-radius, 16rpx) !default;
65
+ $-voice-player-volume-panel-shadow: var(--oxy-voice-player-volume-panel-shadow, 0 4rpx 16rpx rgba(0, 0, 0, 0.1)) !default;
66
+ $-voice-player-volume-track-height: var(--oxy-voice-player-volume-track-height, 3rpx) !default;
67
+ $-voice-player-volume-track-bg: var(--oxy-voice-player-volume-track-bg, rgba(255, 255, 255, 0.15)) !default;
68
+ $-voice-player-volume-filled-bg: var(--oxy-voice-player-volume-filled-bg, linear-gradient(90deg, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0.8) 100%)) !default;
69
+ $-voice-player-volume-shadow: var(--oxy-voice-player-volume-shadow, 0 0 6rpx rgba(255, 255, 255, 0.3)) !default;
70
+ $-voice-player-volume-dot-size: var(--oxy-voice-player-volume-dot-size, 20rpx) !default;
71
+ $-voice-player-volume-dot-shadow: var(--oxy-voice-player-volume-dot-shadow, 0 2rpx 6rpx rgba(0, 0, 0, 0.15), 0 0 0 3rpx rgba(255, 255, 255, 0.2)) !default;
72
+ $-voice-player-volume-text-fs: var(--oxy-voice-player-volume-text-fs, 26rpx) !default;
73
+ $-voice-player-volume-text-color: var(--oxy-voice-player-volume-text-color, rgba(255, 255, 255, 0.9)) !default;
74
+
75
+ $-voice-player-mini-padding: var(--oxy-voice-player-mini-padding, 20rpx 24rpx) !default;
76
+ $-voice-player-mini-shadow: var(--oxy-voice-player-mini-shadow, 0 -4rpx 20rpx rgba(0, 0, 0, 0.1)) !default;
77
+ $-voice-player-mini-cover-size: var(--oxy-voice-player-mini-cover-size, 100rpx) !default;
78
+ $-voice-player-mini-cover-shadow: var(--oxy-voice-player-mini-cover-shadow, 0 4rpx 12rpx rgba(0, 0, 0, 0.25), 0 0 0 4rpx rgba(255, 255, 255, 0.1)) !default;
79
+ $-voice-player-mini-cover-center-size: var(--oxy-voice-player-mini-cover-center-size, 32rpx) !default;
80
+ $-voice-player-mini-cover-center-dot-size: var(--oxy-voice-player-mini-cover-center-dot-size, 12rpx) !default;
81
+ $-voice-player-mini-title-fs: var(--oxy-voice-player-mini-title-fs, 28rpx) !default;
82
+ $-voice-player-mini-artist-fs: var(--oxy-voice-player-mini-artist-fs, 24rpx) !default;
83
+ $-voice-player-mini-artist-color: var(--oxy-voice-player-mini-artist-color, rgba(255, 255, 255, 0.8)) !default;
84
+ $-voice-player-mini-control-btn-size: var(--oxy-voice-player-mini-control-btn-size, 56rpx) !default;
85
+ $-voice-player-mini-control-btn-play-size: var(--oxy-voice-player-mini-control-btn-play-size, 64rpx) !default;
86
+ $-voice-player-mini-control-btn-play-bg: var(--oxy-voice-player-mini-control-btn-play-bg, rgba(255, 255, 255, 0.3)) !default;
87
+ $-voice-player-mini-control-btn-play-shadow: var(--oxy-voice-player-mini-control-btn-play-shadow, 0 4rpx 12rpx rgba(0, 0, 0, 0.2)) !default;
88
+ $-voice-player-mini-btn-icon-fs: var(--oxy-voice-player-mini-btn-icon-fs, 32rpx) !default;
89
+ $-voice-player-mini-progress-height: var(--oxy-voice-player-mini-progress-height, 3rpx) !default;
90
+ $-voice-player-mini-progress-bg: var(--oxy-voice-player-mini-progress-bg, rgba(255, 255, 255, 0.12)) !default;
91
+ $-voice-player-mini-progress-bar-bg: var(--oxy-voice-player-mini-progress-bar-bg, linear-gradient(90deg, rgba(255, 255, 255, 0.95) 0%, rgba(255, 255, 255, 0.85) 100%)) !default;
92
+ $-voice-player-mini-progress-shadow: var(--oxy-voice-player-mini-progress-shadow, 0 0 8rpx rgba(255, 255, 255, 0.4)) !default;
93
+ $-voice-player-mini-progress-dot-size: var(--oxy-voice-player-mini-progress-dot-size, 12rpx) !default;
94
+ $-voice-player-mini-progress-dot-shadow: var(--oxy-voice-player-mini-progress-dot-shadow, 0 2rpx 6rpx rgba(0, 0, 0, 0.2), 0 0 0 2rpx rgba(255, 255, 255, 0.3)) !default;
95
+
96
+ $-voice-player-simple-padding: var(--oxy-voice-player-simple-padding, 16rpx 20rpx) !default;
97
+ $-voice-player-simple-bg: var(--oxy-voice-player-simple-bg, transparent) !default;
98
+ $-voice-player-simple-radius: var(--oxy-voice-player-simple-radius, 12rpx) !default;
99
+ $-voice-player-simple-time-fs: var(--oxy-voice-player-simple-time-fs, 24rpx) !default;
100
+ $-voice-player-simple-time-color: var(--oxy-voice-player-simple-time-color, inherit) !default;
101
+ $-voice-player-simple-progress-height: var(--oxy-voice-player-simple-progress-height, 4rpx) !default;
102
+ $-voice-player-simple-progress-bg: var(--oxy-voice-player-simple-progress-bg, rgba(0, 0, 0, 0.1)) !default;
103
+ $-voice-player-simple-progress-filled-bg: var(--oxy-voice-player-simple-progress-filled-bg, linear-gradient(90deg, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.75) 100%)) !default;
104
+ $-voice-player-simple-progress-shadow: var(--oxy-voice-player-simple-progress-shadow, 0 0 6rpx rgba(0, 0, 0, 0.2)) !default;
105
+ $-voice-player-simple-progress-dot-size: var(--oxy-voice-player-simple-progress-dot-size, 16rpx) !default;
106
+ $-voice-player-simple-progress-dot-shadow: var(--oxy-voice-player-simple-progress-dot-shadow, 0 2rpx 6rpx rgba(0, 0, 0, 0.2), 0 0 0 3rpx rgba(0, 0, 0, 0.1)) !default;
107
+
108
+ @include b(voice-player) {
109
+ background: $-voice-player-bg;
110
+ border-radius: $-voice-player-radius;
111
+ overflow: hidden;
112
+ position: relative;
113
+ box-shadow: $-voice-player-shadow;
114
+ transition: all 0.3s ease;
115
+ --oxy-slider-handle-radius: 18rpx;
116
+ --oxy-slider-axie-height: 6rpx;
117
+ &::before {
118
+ content: '';
119
+ position: absolute;
120
+ top: 0;
121
+ left: 0;
122
+ right: 0;
123
+ bottom: 0;
124
+ background: $-voice-player-bg;
125
+ z-index: -1;
126
+ }
127
+
128
+ @include when(theme-dark) {
129
+ background: $-voice-player-bg-dark;
130
+ color: #fff;
131
+
132
+ &::before {
133
+ background: $-voice-player-bg-dark;
134
+ }
135
+ }
136
+
137
+ @include when(mode-mini) {
138
+ padding: 0;
139
+ border-radius: 0;
140
+ box-shadow: none;
141
+ background: $-voice-player-bg;
142
+
143
+ &::before {
144
+ background: $-voice-player-bg;
145
+ border-radius: 0;
146
+ }
147
+ }
148
+
149
+ @include when(mode-simple) {
150
+ background: transparent;
151
+ box-shadow: none;
152
+
153
+ &::before {
154
+ background: transparent;
155
+ }
156
+ @include when(playing) {
157
+ box-shadow: none;
158
+ }
159
+ }
160
+
161
+ @include when(mode-hideView) {
162
+ display: none;
163
+ }
164
+
165
+ @include when(playing) {
166
+ box-shadow: $-voice-player-playing-shadow;
167
+ }
168
+
169
+ @include e(normal-mode-container) {
170
+ position: relative;
171
+ overflow: hidden;
172
+ width: 100%;
173
+ min-height: 200rpx;
174
+ padding: 40rpx;
175
+ }
176
+
177
+ @include e(cover-section) {
178
+ display: flex;
179
+ justify-content: center;
180
+ margin-bottom: 40rpx;
181
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
182
+ opacity: 1;
183
+ transform: translateX(0);
184
+ max-height: 500rpx;
185
+ position: relative;
186
+ background: transparent;
187
+
188
+ @include when(hidden) {
189
+ opacity: 0;
190
+ transform: translateX(-100%);
191
+ max-height: 0;
192
+ margin-bottom: 0;
193
+ overflow: hidden;
194
+ pointer-events: none;
195
+ background: transparent;
196
+ }
197
+ }
198
+
199
+ @include e(cover-container) {
200
+ width: $-voice-player-cover-size;
201
+ height: $-voice-player-cover-size;
202
+ display: flex;
203
+ align-items: center;
204
+ justify-content: center;
205
+ position: relative;
206
+ }
207
+
208
+ @include e(cover-disc) {
209
+ width: 100%;
210
+ height: 100%;
211
+ border-radius: 50%;
212
+ position: relative;
213
+ overflow: hidden;
214
+ box-shadow: $-voice-player-cover-shadow;
215
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
216
+ transform-origin: center center;
217
+
218
+ @include when(rotating) {
219
+ animation: rotateDisc 20s linear infinite;
220
+ box-shadow: $-voice-player-cover-rotating-shadow;
221
+ }
222
+
223
+ @include when(paused) {
224
+ animation-play-state: paused;
225
+ }
226
+ }
227
+
228
+ @include e(cover-image) {
229
+ width: 100%;
230
+ height: 100%;
231
+ border-radius: 50%;
232
+ display: block;
233
+ object-fit: cover;
234
+ }
235
+
236
+ @include e(cover-center) {
237
+ position: absolute;
238
+ top: 50%;
239
+ left: 50%;
240
+ transform: translate(-50%, -50%);
241
+ width: $-voice-player-cover-center-size;
242
+ height: $-voice-player-cover-center-size;
243
+ border-radius: 50%;
244
+ background: linear-gradient(135deg, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0.7) 100%);
245
+ box-shadow: inset 0 2rpx 8rpx rgba(0, 0, 0, 0.2), 0 2rpx 8rpx rgba(0, 0, 0, 0.15);
246
+ z-index: 2;
247
+
248
+ &::before {
249
+ content: '';
250
+ position: absolute;
251
+ top: 50%;
252
+ left: 50%;
253
+ transform: translate(-50%, -50%);
254
+ width: $-voice-player-cover-center-dot-size;
255
+ height: $-voice-player-cover-center-dot-size;
256
+ border-radius: 50%;
257
+ background: $-voice-player-cover-center-dot-bg;
258
+ box-shadow: inset 0 1rpx 3rpx rgba(0, 0, 0, 0.3);
259
+ }
260
+ }
261
+
262
+ @include e(info) {
263
+ text-align: center;
264
+ margin-bottom: 40rpx;
265
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
266
+ opacity: 1;
267
+ transform: translateX(0);
268
+ max-height: 200rpx;
269
+ background: transparent;
270
+
271
+ @include when(hidden) {
272
+ opacity: 0;
273
+ transform: translateX(-100%);
274
+ max-height: 0;
275
+ margin-bottom: 0;
276
+ overflow: hidden;
277
+ pointer-events: none;
278
+ background: transparent;
279
+ }
280
+ }
281
+
282
+ @include e(song-title) {
283
+ display: block;
284
+ font-size: $-voice-player-title-fs;
285
+ font-weight: 600;
286
+ color: $-voice-player-title-color;
287
+ margin-bottom: 20rpx;
288
+ text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2);
289
+ letter-spacing: 1rpx;
290
+ }
291
+
292
+ @include e(song-artist) {
293
+ display: block;
294
+ font-size: $-voice-player-artist-fs;
295
+ color: $-voice-player-artist-color;
296
+ margin-bottom: 12rpx;
297
+ text-shadow: 0 1rpx 4rpx rgba(0, 0, 0, 0.15);
298
+ }
299
+
300
+ @include e(song-album) {
301
+ display: block;
302
+ font-size: $-voice-player-album-fs;
303
+ color: $-voice-player-album-color;
304
+ }
305
+
306
+ @include e(lyrics) {
307
+ height: $-voice-player-lyric-height;
308
+ margin-bottom: 32rpx;
309
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
310
+ background: transparent;
311
+ overflow: hidden;
312
+
313
+ @include when(expanded) {
314
+ height: $-voice-player-lyric-expanded-height;
315
+ margin-bottom: 40rpx;
316
+ background: transparent;
317
+ }
318
+ }
319
+
320
+ @include e(lyrics-container) {
321
+ height: 100%;
322
+ overflow-y: auto;
323
+ padding: 20rpx 0;
324
+ background: transparent;
325
+ }
326
+
327
+ @include e(lyric-line) {
328
+ padding: 16rpx 32rpx;
329
+ text-align: center;
330
+ transition: all 0.3s ease;
331
+
332
+ @include when(active) {
333
+ .oxy-voice-player__lyric-text {
334
+ font-size: $-voice-player-lyric-active-fs;
335
+ font-weight: 600;
336
+ color: $-voice-player-lyric-active-color;
337
+ text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.3);
338
+ }
339
+
340
+ .oxy-voice-player__lyric-translation {
341
+ font-size: $-voice-player-lyric-translation-fs;
342
+ color: $-voice-player-lyric-translation-active-color;
343
+ margin-top: 8rpx;
344
+ }
345
+ }
346
+ }
347
+
348
+ @include e(lyric-text) {
349
+ display: block;
350
+ font-size: $-voice-player-lyric-fs;
351
+ color: $-voice-player-lyric-color;
352
+ line-height: 1.6;
353
+ transition: all 0.3s ease;
354
+ }
355
+
356
+ @include e(lyric-translation) {
357
+ display: block;
358
+ font-size: $-voice-player-lyric-translation-fs;
359
+ color: $-voice-player-lyric-translation-color;
360
+ line-height: 1.5;
361
+ margin-top: 6rpx;
362
+ transition: all 0.3s ease;
363
+ }
364
+
365
+ @include e(progress-section) {
366
+ margin-bottom: 10rpx;
367
+ }
368
+
369
+ @include e(time-info) {
370
+ display: flex;
371
+ justify-content: space-between;
372
+ align-items: center;
373
+ margin-bottom: 20rpx;
374
+ }
375
+
376
+ @include e(current-time) {
377
+ font-size: $-voice-player-time-fs;
378
+ color: $-voice-player-time-color;
379
+ font-weight: 500;
380
+ text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.1);
381
+ }
382
+
383
+ @include e(total-time) {
384
+ font-size: $-voice-player-time-fs;
385
+ color: $-voice-player-time-color;
386
+ font-weight: 500;
387
+ text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.1);
388
+ }
389
+
390
+ @include e(slider-wrapper) {
391
+ position: relative;
392
+ width: 100%;
393
+ padding: 32rpx 0;
394
+ // #ifdef H5
395
+ touch-action: none;
396
+ // #endif
397
+ }
398
+
399
+ @include e(progress-track) {
400
+ position: relative;
401
+ width: 100%;
402
+ height: $-voice-player-progress-height;
403
+ background: $-voice-player-progress-bg;
404
+ border-radius: 2rpx;
405
+ overflow: visible;
406
+ }
407
+
408
+ @include e(progress-buffered) {
409
+ position: absolute;
410
+ top: 50%;
411
+ left: 0;
412
+ height: 6rpx;
413
+ background: $-voice-player-progress-buffered-bg;
414
+ border-radius: 2rpx;
415
+ transition: width 0.3s ease;
416
+ z-index: 1;
417
+ transform: translateY(-50%);
418
+ }
419
+
420
+ @include e(progress-filled) {
421
+ position: absolute;
422
+ top: 0;
423
+ left: 0;
424
+ height: 100%;
425
+ background: $-voice-player-progress-filled-bg;
426
+ border-radius: 2rpx;
427
+ transition: width 0.1s linear;
428
+ z-index: 2;
429
+ box-shadow: $-voice-player-progress-shadow;
430
+ }
431
+
432
+ @include e(progress-dot) {
433
+ position: absolute;
434
+ right: -12rpx;
435
+ top: 50%;
436
+ transform: translateY(-50%) scale(0.8);
437
+ width: $-voice-player-progress-dot-size;
438
+ height: $-voice-player-progress-dot-size;
439
+ background: #fff;
440
+ border-radius: 50%;
441
+ box-shadow: $-voice-player-progress-dot-shadow;
442
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
443
+ opacity: 0;
444
+
445
+ @include when(dragging) {
446
+ opacity: 1;
447
+ transform: translateY(-50%) scale(1.2);
448
+ box-shadow: $-voice-player-progress-dot-active-shadow;
449
+ }
450
+ }
451
+
452
+ @include e(progress-slider) {
453
+ position: absolute;
454
+ top: 0;
455
+ left: 0;
456
+ width: 100%;
457
+ height: 100%;
458
+ opacity: 0;
459
+ z-index: 10;
460
+ margin: 0;
461
+ }
462
+
463
+ @include e(controls-section) {
464
+ .oxy-voice-player__main-controls {
465
+ display: flex;
466
+ justify-content: center;
467
+ align-items: center;
468
+ gap: 40rpx;
469
+
470
+ }
471
+
472
+ .oxy-voice-player__extra-controls {
473
+ display: flex;
474
+ justify-content: center;
475
+ align-items: center;
476
+ gap: 32rpx;
477
+ margin-top: 32rpx;
478
+ }
479
+ }
480
+
481
+ @include e(control-btn) {
482
+ width: $-voice-player-control-btn-size;
483
+ height: $-voice-player-control-btn-size;
484
+ border-radius: 50%;
485
+ border: none;
486
+ background: $-voice-player-control-btn-bg;
487
+ display: flex;
488
+ align-items: center;
489
+ justify-content: center;
490
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
491
+ box-shadow: $-voice-player-control-btn-shadow;
492
+
493
+ &:active {
494
+ transform: scale(0.9);
495
+ box-shadow: $-voice-player-control-btn-active-shadow;
496
+ }
497
+
498
+ &.oxy-voice-player--play-btn {
499
+ width: $-voice-player-control-btn-play-size;
500
+ height: $-voice-player-control-btn-play-size;
501
+ background: $-voice-player-control-btn-play-bg;
502
+
503
+ &:active {
504
+ transform: scale(0.92);
505
+ }
506
+ }
507
+ }
508
+ :deep(.oxy-voice-player__control-icon) {
509
+ font-size: $-voice-player-control-icon-fs;
510
+ color: #fff;
511
+ text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.2);
512
+ }
513
+
514
+ :deep(.oxy-voice-player__btn-icon) {
515
+ font-size: $-voice-player-control-btn-icon-fs;
516
+ color: #fff;
517
+ text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.2);
518
+ }
519
+
520
+ @include e(extra-btn) {
521
+ width: $-voice-player-extra-btn-size;
522
+ height: $-voice-player-extra-btn-size;
523
+ border-radius: 50%;
524
+ border: none;
525
+ background: $-voice-player-extra-btn-bg;
526
+ display: flex;
527
+ align-items: center;
528
+ justify-content: center;
529
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
530
+ box-shadow: $-voice-player-extra-btn-shadow;
531
+
532
+ &:active {
533
+ transform: scale(0.88);
534
+ box-shadow: $-voice-player-extra-btn-active-shadow;
535
+ }
536
+
537
+ @include m(favorite-btn) {
538
+ .oxy-voice-player__extra-btn-icon {
539
+ color: #fff;
540
+
541
+ @include when(favorited) {
542
+ color: $-voice-player-extra-btn-favorite-color;
543
+ }
544
+ }
545
+ }
546
+ }
547
+
548
+ :deep(.oxy-voice-player__extra-btn-icon) {
549
+ font-size: $-voice-player-extra-btn-icon-fs;
550
+ color: #fff;
551
+ text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.2);
552
+ }
553
+
554
+ @include e(volume-panel) {
555
+ display: flex;
556
+ align-items: center;
557
+ gap: 20rpx;
558
+ margin-top: 24rpx;
559
+ padding: 0 32rpx;
560
+ background: $-voice-player-volume-panel-bg;
561
+ border-radius: $-voice-player-volume-panel-radius;
562
+ box-shadow: $-voice-player-volume-panel-shadow;
563
+ }
564
+
565
+ @include e(volume-slider-wrapper) {
566
+ flex: 1;
567
+ position: relative;
568
+ padding: 28rpx 0;
569
+ }
570
+
571
+ @include e(volume-track) {
572
+ position: relative;
573
+ width: 100%;
574
+ height: $-voice-player-volume-track-height;
575
+ background: $-voice-player-volume-track-bg;
576
+ border-radius: 2rpx;
577
+ }
578
+
579
+ @include e(volume-filled) {
580
+ position: absolute;
581
+ top: 0;
582
+ left: 0;
583
+ height: 100%;
584
+ background: $-voice-player-volume-filled-bg;
585
+ border-radius: 2rpx;
586
+ transition: width 0.2s ease;
587
+ box-shadow: $-voice-player-volume-shadow;
588
+ }
589
+
590
+ @include e(volume-dot) {
591
+ position: absolute;
592
+ right: -10rpx;
593
+ top: 50%;
594
+ transform: translateY(-50%) scale(0.8);
595
+ width: $-voice-player-volume-dot-size;
596
+ height: $-voice-player-volume-dot-size;
597
+ background: #fff;
598
+ border-radius: 50%;
599
+ box-shadow: $-voice-player-volume-dot-shadow;
600
+ opacity: 0;
601
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
602
+ }
603
+
604
+ @include e(volume-slider) {
605
+ position: absolute;
606
+ top: 0;
607
+ left: 0;
608
+ width: 100%;
609
+ height: 100%;
610
+ opacity: 0;
611
+ z-index: 10;
612
+ }
613
+
614
+ @include e(volume-text) {
615
+ font-size: $-voice-player-volume-text-fs;
616
+ color: $-voice-player-volume-text-color;
617
+ font-weight: 500;
618
+ min-width: 70rpx;
619
+ text-align: right;
620
+ text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.1);
621
+ }
622
+
623
+ @include e(mini-player) {
624
+ display: flex;
625
+ align-items: center;
626
+ padding: $-voice-player-mini-padding;
627
+ background: linear-gradient(135deg, rgba(102, 126, 234, 0.95) 0%, rgba(118, 75, 162, 0.95) 100%);
628
+ position: relative;
629
+ box-shadow: $-voice-player-mini-shadow;
630
+ min-width: 0;
631
+ overflow: hidden;
632
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
633
+ }
634
+
635
+ @include e(mini-cover) {
636
+ width: $-voice-player-mini-cover-size;
637
+ height: $-voice-player-mini-cover-size;
638
+ min-width: $-voice-player-mini-cover-size;
639
+ min-height: $-voice-player-mini-cover-size;
640
+ flex-shrink: 0;
641
+ margin-right: 16rpx;
642
+ }
643
+
644
+ @include e(mini-cover-disc) {
645
+ width: $-voice-player-mini-cover-size;
646
+ height: $-voice-player-mini-cover-size;
647
+ border-radius: 50%;
648
+ position: relative;
649
+ overflow: hidden;
650
+ box-shadow: $-voice-player-mini-cover-shadow;
651
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
652
+
653
+ @include when(rotating) {
654
+ animation: rotateDisc 20s linear infinite;
655
+ }
656
+
657
+ @include when(paused) {
658
+ animation-play-state: paused;
659
+ }
660
+ }
661
+
662
+ @include e(mini-cover-image) {
663
+ width: $-voice-player-mini-cover-size;
664
+ height: $-voice-player-mini-cover-size;
665
+ border-radius: 50%;
666
+ display: block;
667
+ object-fit: cover;
668
+ }
669
+
670
+ @include e(mini-cover-center) {
671
+ position: absolute;
672
+ top: 50%;
673
+ left: 50%;
674
+ transform: translate(-50%, -50%);
675
+ width: $-voice-player-mini-cover-center-size;
676
+ height: $-voice-player-mini-cover-center-size;
677
+ border-radius: 50%;
678
+ background: linear-gradient(135deg, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0.7) 100%);
679
+ box-shadow: inset 0 1rpx 4rpx rgba(0, 0, 0, 0.2), 0 1rpx 4rpx rgba(0, 0, 0, 0.15);
680
+ z-index: 2;
681
+
682
+ &::before {
683
+ content: '';
684
+ position: absolute;
685
+ top: 50%;
686
+ left: 50%;
687
+ transform: translate(-50%, -50%);
688
+ width: $-voice-player-mini-cover-center-dot-size;
689
+ height: $-voice-player-mini-cover-center-dot-size;
690
+ border-radius: 50%;
691
+ background: $-voice-player-cover-center-dot-bg;
692
+ box-shadow: inset 0 1rpx 2rpx rgba(0, 0, 0, 0.3);
693
+ }
694
+ }
695
+
696
+ @include e(mini-info) {
697
+ flex: 1;
698
+ min-width: 0;
699
+ margin-right: 16rpx;
700
+ overflow: hidden;
701
+ }
702
+
703
+ @include e(mini-title) {
704
+ display: block;
705
+ font-size: $-voice-player-mini-title-fs;
706
+ font-weight: 600;
707
+ color: #fff;
708
+ margin-bottom: 6rpx;
709
+ overflow: hidden;
710
+ text-overflow: ellipsis;
711
+ white-space: nowrap;
712
+ text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.1);
713
+ }
714
+
715
+ @include e(mini-artist) {
716
+ display: block;
717
+ font-size: $-voice-player-mini-artist-fs;
718
+ color: $-voice-player-mini-artist-color;
719
+ overflow: hidden;
720
+ text-overflow: ellipsis;
721
+ white-space: nowrap;
722
+ }
723
+
724
+ @include e(mini-controls) {
725
+ display: flex;
726
+ align-items: center;
727
+ gap: 12rpx;
728
+ }
729
+
730
+ @include e(mini-control-btn) {
731
+ width: $-voice-player-mini-control-btn-size;
732
+ height: $-voice-player-mini-control-btn-size;
733
+ border-radius: 50%;
734
+ border: none;
735
+ background: $-voice-player-control-btn-bg;
736
+ display: flex;
737
+ align-items: center;
738
+ justify-content: center;
739
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
740
+ box-shadow: $-voice-player-control-btn-shadow;
741
+
742
+ &:active {
743
+ transform: scale(0.9);
744
+ box-shadow: $-voice-player-control-btn-active-shadow;
745
+ }
746
+ &.oxy-voice-player{
747
+ margin-bottom: 0;
748
+ }
749
+
750
+ @include m(play-btn) {
751
+ width: $-voice-player-mini-control-btn-play-size;
752
+ height: $-voice-player-mini-control-btn-play-size;
753
+ background: $-voice-player-mini-control-btn-play-bg;
754
+ box-shadow: $-voice-player-mini-control-btn-play-shadow;
755
+ }
756
+ }
757
+
758
+ :deep(.oxy-voice-player__mini-btn-icon) {
759
+ font-size: $-voice-player-mini-btn-icon-fs;
760
+ color: #fff;
761
+ text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.2);
762
+ }
763
+
764
+ @include e(mini-progress) {
765
+ position: absolute;
766
+ bottom: 0;
767
+ left: 0;
768
+ right: 0;
769
+ height: $-voice-player-mini-progress-height;
770
+ background: $-voice-player-mini-progress-bg;
771
+ overflow: visible;
772
+ }
773
+
774
+ @include e(mini-progress-bar) {
775
+ height: 100%;
776
+ background: $-voice-player-mini-progress-bar-bg;
777
+ transition: width 0.1s linear;
778
+ box-shadow: $-voice-player-mini-progress-shadow;
779
+ position: relative;
780
+
781
+ &::after {
782
+ content: '';
783
+ position: absolute;
784
+ top: 50%;
785
+ right: -6rpx;
786
+ transform: translateY(-50%);
787
+ width: $-voice-player-mini-progress-dot-size;
788
+ height: $-voice-player-mini-progress-dot-size;
789
+ background: rgba(255, 255, 255, 1);
790
+ border-radius: 50%;
791
+ box-shadow: $-voice-player-mini-progress-dot-shadow;
792
+ opacity: 0;
793
+ transition: opacity 0.2s ease;
794
+ }
795
+ }
796
+
797
+ @include e(simple-player) {
798
+ padding: $-voice-player-simple-padding;
799
+ background: $-voice-player-simple-bg;
800
+ border-radius: $-voice-player-simple-radius;
801
+ }
802
+
803
+ @include e(simple-time-info) {
804
+ display: flex;
805
+ justify-content: space-between;
806
+ align-items: center;
807
+ margin-bottom: 12rpx;
808
+ }
809
+
810
+ @include e(simple-current-time) {
811
+ font-size: $-voice-player-simple-time-fs;
812
+ color: $-voice-player-simple-time-color;
813
+ font-weight: 500;
814
+ }
815
+
816
+ @include e(simple-total-time) {
817
+ font-size: $-voice-player-simple-time-fs;
818
+ color: $-voice-player-simple-time-color;
819
+ font-weight: 500;
820
+ }
821
+
822
+ @include e(simple-progress-section) {
823
+ position: relative;
824
+ width: 100%;
825
+ }
826
+
827
+ @include e(simple-slider-wrapper) {
828
+ position: relative;
829
+ width: 100%;
830
+ padding: 32rpx 0;
831
+ }
832
+
833
+ @include e(simple-progress-track) {
834
+ position: relative;
835
+ width: 100%;
836
+ height: $-voice-player-simple-progress-height;
837
+ background: $-voice-player-simple-progress-bg;
838
+ border-radius: 2rpx;
839
+ overflow: visible;
840
+ }
841
+
842
+ @include e(simple-progress-filled) {
843
+ position: absolute;
844
+ top: 0;
845
+ left: 0;
846
+ height: 100%;
847
+ background: $-voice-player-simple-progress-filled-bg;
848
+ border-radius: 2rpx;
849
+ transition: width 0.1s linear;
850
+ z-index: 2;
851
+ box-shadow: $-voice-player-simple-progress-shadow;
852
+
853
+ &::after {
854
+ content: '';
855
+ position: absolute;
856
+ top: 50%;
857
+ right: -8rpx;
858
+ transform: translateY(-50%);
859
+ width: $-voice-player-simple-progress-dot-size;
860
+ height: $-voice-player-simple-progress-dot-size;
861
+ background: rgba(255, 255, 255, 1);
862
+ border-radius: 50%;
863
+ box-shadow: $-voice-player-simple-progress-dot-shadow;
864
+ opacity: 0;
865
+ transition: opacity 0.2s ease;
866
+ }
867
+ }
868
+
869
+ @include e(simple-progress-slider) {
870
+ position: absolute;
871
+ top: 0;
872
+ left: 0;
873
+ width: 100%;
874
+ height: 100%;
875
+ opacity: 0;
876
+ z-index: 3;
877
+ }
878
+ }
879
+
880
+ @keyframes rotateDisc {
881
+ from {
882
+ transform: rotate(0deg);
883
+ }
884
+ to {
885
+ transform: rotate(360deg);
886
+ }
887
+ }
888
+
889
+ @media (max-width: 375px) {
890
+ .oxy-voice-player__cover-container {
891
+ width: 300rpx;
892
+ height: 300rpx;
893
+ }
894
+
895
+ .oxy-voice-player__main-controls {
896
+ gap: 24rpx;
897
+
898
+ .oxy-voice-player__control-btn {
899
+ width: 72rpx;
900
+ height: 72rpx;
901
+
902
+ &.oxy-voice-player--play-btn {
903
+ width: 96rpx;
904
+ height: 96rpx;
905
+ }
906
+ }
907
+ }
908
+ }