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