foucui 1.0.1

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 (378) hide show
  1. package/README.md +43 -0
  2. package/components/QiuAffix/index.vue +186 -0
  3. package/components/QiuAlert/index.vue +208 -0
  4. package/components/QiuAnchor/context.ts +18 -0
  5. package/components/QiuAnchor/index.vue +180 -0
  6. package/components/QiuAnchorLink/index.vue +67 -0
  7. package/components/QiuApp/index.vue +9 -0
  8. package/components/QiuAutocomplete/index.vue +408 -0
  9. package/components/QiuAvatar/index.vue +140 -0
  10. package/components/QiuBacktop/index.vue +121 -0
  11. package/components/QiuBadge/api/index.ts +389 -0
  12. package/components/QiuBadge/components/BadgeImagePickerDialog.vue +243 -0
  13. package/components/QiuBadge/components/BadgeLibraryManagerDialog.vue +30 -0
  14. package/components/QiuBadge/components/BadgeLibraryPanel.vue +182 -0
  15. package/components/QiuBadge/composables/useTableHostHeight.ts +53 -0
  16. package/components/QiuBadge/index.ts +18 -0
  17. package/components/QiuBadge/shared/BadgeTemplateRenderer.vue +32 -0
  18. package/components/QiuBadge/shared/assetUrl.ts +26 -0
  19. package/components/QiuBadge/shared/badgeTemplate.ts +309 -0
  20. package/components/QiuBadge/utils/chinaAreaData.ts +44 -0
  21. package/components/QiuBadge/utils/hostRegion.ts +22 -0
  22. package/components/QiuBadge/utils/pca-code.json +1 -0
  23. package/components/QiuBadge/utils/pdfFromElement.ts +348 -0
  24. package/components/QiuBadge/views/BadgeLibraryView.vue +32 -0
  25. package/components/QiuBadge/views/BadgeManageView.vue +1364 -0
  26. package/components/QiuBadge/views/BadgeTemplateEditorView.vue +10 -0
  27. package/components/QiuBadge/views/BadgeTemplateListView.vue +229 -0
  28. package/components/QiuBadge/views/DeskLabelTemplateListView.vue +227 -0
  29. package/components/QiuBadge/views/DeskLabelView.vue +683 -0
  30. package/components/QiuBadgeDot/index.vue +87 -0
  31. package/components/QiuButton/index.vue +247 -0
  32. package/components/QiuButtonGroup/index.vue +63 -0
  33. package/components/QiuCanvasKit/QiuCanvasEditor.vue +5503 -0
  34. package/components/QiuCanvasKit/QiuCanvasRenderer.vue +348 -0
  35. package/components/QiuCanvasKit/assetUrl.ts +11 -0
  36. package/components/QiuCanvasKit/components/DataModulesPanel.vue +352 -0
  37. package/components/QiuCanvasKit/export/html.ts +132 -0
  38. package/components/QiuCanvasKit/export/pdf.ts +48 -0
  39. package/components/QiuCanvasKit/export/png.ts +50 -0
  40. package/components/QiuCanvasKit/index.ts +20 -0
  41. package/components/QiuCanvasKit/modules/badgeCompat.ts +84 -0
  42. package/components/QiuCanvasKit/modules/dataRegistry.ts +207 -0
  43. package/components/QiuCanvasKit/modules/merge.ts +71 -0
  44. package/components/QiuCanvasKit/presets/badge.ts +67 -0
  45. package/components/QiuCanvasKit/presets/banner.ts +79 -0
  46. package/components/QiuCanvasKit/types.ts +138 -0
  47. package/components/QiuCard/index.vue +104 -0
  48. package/components/QiuCarousel/context.ts +16 -0
  49. package/components/QiuCarousel/index.vue +343 -0
  50. package/components/QiuCarouselItem/index.vue +47 -0
  51. package/components/QiuCascader/index.vue +879 -0
  52. package/components/QiuCascader/types.ts +48 -0
  53. package/components/QiuCheckbox/QiuCheckboxGroup.vue +78 -0
  54. package/components/QiuCheckbox/index.vue +231 -0
  55. package/components/QiuCheckbox/types.ts +8 -0
  56. package/components/QiuCode/index.vue +64 -0
  57. package/components/QiuCol/col.scss +55 -0
  58. package/components/QiuCol/index.vue +64 -0
  59. package/components/QiuCollapse/context.ts +10 -0
  60. package/components/QiuCollapse/index.vue +70 -0
  61. package/components/QiuCollapseItem/index.vue +167 -0
  62. package/components/QiuColorField/index.vue +296 -0
  63. package/components/QiuColorPicker/README.md +118 -0
  64. package/components/QiuColorPicker/index.vue +60 -0
  65. package/components/QiuColorfulCard/index.vue +101 -0
  66. package/components/QiuCombobox/index.vue +277 -0
  67. package/components/QiuConfigProvider/index.vue +31 -0
  68. package/components/QiuContextMenu/index.vue +209 -0
  69. package/components/QiuDate/index.vue +1134 -0
  70. package/components/QiuDescriptions/context.ts +20 -0
  71. package/components/QiuDescriptions/index.vue +115 -0
  72. package/components/QiuDescriptionsItem/index.vue +103 -0
  73. package/components/QiuDialog/index.vue +828 -0
  74. package/components/QiuDigitalCard/index.vue +159 -0
  75. package/components/QiuDivider/index.vue +185 -0
  76. package/components/QiuDot/index.vue +83 -0
  77. package/components/QiuDrawer/index.vue +350 -0
  78. package/components/QiuDropdown/QiuDropdownItem.vue +74 -0
  79. package/components/QiuDropdown/QiuDropdownMenu.vue +22 -0
  80. package/components/QiuDropdown/context.ts +9 -0
  81. package/components/QiuDropdown/index.vue +189 -0
  82. package/components/QiuEmpty/index.vue +73 -0
  83. package/components/QiuForm/index.vue +172 -0
  84. package/components/QiuForm/types.ts +39 -0
  85. package/components/QiuFormItem/index.vue +276 -0
  86. package/components/QiuFullscreen/index.vue +11 -0
  87. package/components/QiuGrid/index.vue +408 -0
  88. package/components/QiuHoverCard/index.vue +192 -0
  89. package/components/QiuIcon/index.vue +117 -0
  90. package/components/QiuIconPicker/iconify.libraries.ts +182 -0
  91. package/components/QiuIconPicker/icons.catalog.ts +3072 -0
  92. package/components/QiuIconPicker/index.vue +488 -0
  93. package/components/QiuImage/index.vue +177 -0
  94. package/components/QiuInput/index.vue +328 -0
  95. package/components/QiuInputNumber/index.vue +295 -0
  96. package/components/QiuInputOtp/index.vue +190 -0
  97. package/components/QiuKbd/index.vue +57 -0
  98. package/components/QiuLayoutContainer/index.vue +50 -0
  99. package/components/QiuLinkPreview/index.vue +224 -0
  100. package/components/QiuLoading/index.ts +176 -0
  101. package/components/QiuLoading/spinner.vue +820 -0
  102. package/components/QiuLoading/types.ts +44 -0
  103. package/components/QiuMention/index.vue +299 -0
  104. package/components/QiuMenu/QiuMenuRoot.vue +241 -0
  105. package/components/QiuMenu/components/QiuMenuItem.vue +340 -0
  106. package/components/QiuMenu/components/QiuSubMenu.vue +504 -0
  107. package/components/QiuMenu/context.ts +21 -0
  108. package/components/QiuMenu/index.vue +43 -0
  109. package/components/QiuMenuNav/QiuMenuNavItem.vue +100 -0
  110. package/components/QiuMenuNav/QiuMenuNavSub.vue +120 -0
  111. package/components/QiuMenuNav/context.ts +14 -0
  112. package/components/QiuMenuNav/index.vue +148 -0
  113. package/components/QiuMsg/QiuMsgItem.vue +180 -0
  114. package/components/QiuMsg/index.ts +158 -0
  115. package/components/QiuMsg/types.ts +23 -0
  116. package/components/QiuMsgBox/index.ts +147 -0
  117. package/components/QiuNotification/QiuNotificationItem.vue +168 -0
  118. package/components/QiuNotification/index.ts +155 -0
  119. package/components/QiuNotification/types.ts +14 -0
  120. package/components/QiuPage/index.vue +12 -0
  121. package/components/QiuPageHeader/index.vue +115 -0
  122. package/components/QiuPageMain/index.vue +78 -0
  123. package/components/QiuPagination/index.vue +421 -0
  124. package/components/QiuPasswordStrength/index.vue +101 -0
  125. package/components/QiuPopconfirm/index.vue +196 -0
  126. package/components/QiuPopover/index.vue +277 -0
  127. package/components/QiuProgress/index.vue +235 -0
  128. package/components/QiuQrcode/index.vue +302 -0
  129. package/components/QiuQueryForm/components/QiuQueryFormBottomPanel.vue +13 -0
  130. package/components/QiuQueryForm/components/QiuQueryFormLeftPanel.vue +37 -0
  131. package/components/QiuQueryForm/components/QiuQueryFormRightPanel.vue +37 -0
  132. package/components/QiuQueryForm/components/QiuQueryFormTopPanel.vue +13 -0
  133. package/components/QiuQueryForm/index.vue +117 -0
  134. package/components/QiuRadio/QiuRadioGroup.vue +75 -0
  135. package/components/QiuRadio/index.vue +191 -0
  136. package/components/QiuRadio/types.ts +9 -0
  137. package/components/QiuRate/index.vue +184 -0
  138. package/components/QiuRefresh/index.vue +32 -0
  139. package/components/QiuResult/index.vue +103 -0
  140. package/components/QiuRow/index.vue +60 -0
  141. package/components/QiuRow/types.ts +5 -0
  142. package/components/QiuScrollbar/index.vue +107 -0
  143. package/components/QiuSearchBar/index.vue +154 -0
  144. package/components/QiuSegmented/index.vue +120 -0
  145. package/components/QiuSelect/QiuOption.vue +93 -0
  146. package/components/QiuSelect/index.vue +452 -0
  147. package/components/QiuSelect/types.ts +15 -0
  148. package/components/QiuSkeleton/index.vue +78 -0
  149. package/components/QiuSlider/index.vue +266 -0
  150. package/components/QiuSpace/index.vue +95 -0
  151. package/components/QiuSparkline/index.vue +92 -0
  152. package/components/QiuStatistic/index.vue +4 -0
  153. package/components/QiuStatistics/index.vue +123 -0
  154. package/components/QiuStep/index.vue +220 -0
  155. package/components/QiuSteps/context.ts +25 -0
  156. package/components/QiuSteps/index.vue +84 -0
  157. package/components/QiuSwitch/index.vue +145 -0
  158. package/components/QiuTabBar/index.vue +218 -0
  159. package/components/QiuTabBar/types.ts +19 -0
  160. package/components/QiuTabPane/index.vue +82 -0
  161. package/components/QiuTable/columns.ts +16 -0
  162. package/components/QiuTable/export.ts +102 -0
  163. package/components/QiuTable/index.ts +24 -0
  164. package/components/QiuTable/index.vue +3503 -0
  165. package/components/QiuTable/registry.ts +75 -0
  166. package/components/QiuTable/styles/table.scss +1230 -0
  167. package/components/QiuTable/types.ts +413 -0
  168. package/components/QiuTable/useArea.ts +202 -0
  169. package/components/QiuTable/useColumns.ts +325 -0
  170. package/components/QiuTable/useEdit.ts +136 -0
  171. package/components/QiuTable/useExtras.ts +115 -0
  172. package/components/QiuTable/useHistory.ts +77 -0
  173. package/components/QiuTable/useMerge.ts +105 -0
  174. package/components/QiuTable/useResize.ts +86 -0
  175. package/components/QiuTable/useScrollSync.ts +152 -0
  176. package/components/QiuTable/useVirtual.ts +97 -0
  177. package/components/QiuTable/utils.ts +165 -0
  178. package/components/QiuTableColumn/index.vue +101 -0
  179. package/components/QiuTag/index.vue +143 -0
  180. package/components/QiuText/index.vue +99 -0
  181. package/components/QiuTime/index.vue +548 -0
  182. package/components/QiuTimeAgo/index.vue +103 -0
  183. package/components/QiuTimeline/index.vue +54 -0
  184. package/components/QiuTimelineItem/index.vue +140 -0
  185. package/components/QiuTips/index.vue +323 -0
  186. package/components/QiuTooltip/index.vue +237 -0
  187. package/components/QiuTransfer/index.vue +277 -0
  188. package/components/QiuTree/QiuTreeNode.vue +146 -0
  189. package/components/QiuTree/index.vue +143 -0
  190. package/components/QiuTree/types.ts +30 -0
  191. package/components/QiuTreeSelect/index.vue +259 -0
  192. package/components/QiuTrend/index.vue +92 -0
  193. package/components/QiuUpload/index.vue +628 -0
  194. package/components/QiuUploadCrop/index.vue +1267 -0
  195. package/components/QiuWatermark/index.vue +121 -0
  196. package/components/useBodyScrollLock.ts +28 -0
  197. package/dist/components/QiuAnchor/context.d.ts +15 -0
  198. package/dist/components/QiuAnchorLink/index.vue.d.ts +23 -0
  199. package/dist/components/QiuBadge/api/index.d.ts +110 -0
  200. package/dist/components/QiuBadge/components/BadgeImagePickerDialog.vue.d.ts +16 -0
  201. package/dist/components/QiuBadge/components/BadgeLibraryManagerDialog.vue.d.ts +9 -0
  202. package/dist/components/QiuBadge/components/BadgeLibraryPanel.vue.d.ts +5 -0
  203. package/dist/components/QiuBadge/composables/useTableHostHeight.d.ts +7 -0
  204. package/dist/components/QiuBadge/index.d.ts +18 -0
  205. package/dist/components/QiuBadge/shared/BadgeTemplateRenderer.vue.d.ts +14 -0
  206. package/dist/components/QiuBadge/shared/assetUrl.d.ts +1 -0
  207. package/dist/components/QiuBadge/shared/badgeTemplate.d.ts +132 -0
  208. package/dist/components/QiuBadge/utils/chinaAreaData.d.ts +9 -0
  209. package/dist/components/QiuBadge/utils/hostRegion.d.ts +3 -0
  210. package/dist/components/QiuBadge/utils/pca-code.json.d.ts +3 -0
  211. package/dist/components/QiuBadge/utils/pdfFromElement.d.ts +14 -0
  212. package/dist/components/QiuBadge/views/BadgeLibraryView.vue.d.ts +2 -0
  213. package/dist/components/QiuBadge/views/BadgeManageView.vue.d.ts +7 -0
  214. package/dist/components/QiuBadge/views/BadgeTemplateListView.vue.d.ts +4 -0
  215. package/dist/components/QiuBadge/views/DeskLabelTemplateListView.vue.d.ts +4 -0
  216. package/dist/components/QiuBadge/views/DeskLabelView.vue.d.ts +4 -0
  217. package/dist/components/QiuButton/index.vue.d.ts +52 -0
  218. package/dist/components/QiuCanvasKit/QiuCanvasEditor.vue.d.ts +24 -0
  219. package/dist/components/QiuCanvasKit/QiuCanvasRenderer.vue.d.ts +13 -0
  220. package/dist/components/QiuCanvasKit/assetUrl.d.ts +7 -0
  221. package/dist/components/QiuCanvasKit/components/DataModulesPanel.vue.d.ts +23 -0
  222. package/dist/components/QiuCanvasKit/export/html.d.ts +12 -0
  223. package/dist/components/QiuCanvasKit/export/pdf.d.ts +9 -0
  224. package/dist/components/QiuCanvasKit/export/png.d.ts +8 -0
  225. package/dist/components/QiuCanvasKit/index.d.ts +19 -0
  226. package/dist/components/QiuCanvasKit/modules/badgeCompat.d.ts +8 -0
  227. package/dist/components/QiuCanvasKit/modules/dataRegistry.d.ts +23 -0
  228. package/dist/components/QiuCanvasKit/modules/merge.d.ts +12 -0
  229. package/dist/components/QiuCanvasKit/presets/badge.d.ts +12 -0
  230. package/dist/components/QiuCanvasKit/presets/banner.d.ts +4 -0
  231. package/dist/components/QiuCanvasKit/types.d.ts +119 -0
  232. package/dist/components/QiuCarousel/context.d.ts +13 -0
  233. package/dist/components/QiuCarouselItem/index.vue.d.ts +20 -0
  234. package/dist/components/QiuCascader/types.d.ts +25 -0
  235. package/dist/components/QiuCheckbox/QiuCheckboxGroup.vue.d.ts +33 -0
  236. package/dist/components/QiuCheckbox/index.vue.d.ts +38 -0
  237. package/dist/components/QiuCheckbox/types.d.ts +7 -0
  238. package/dist/components/QiuCode/index.vue.d.ts +15 -0
  239. package/dist/components/QiuCollapse/context.d.ts +8 -0
  240. package/dist/components/QiuCollapseItem/index.vue.d.ts +30 -0
  241. package/dist/components/QiuColorField/index.vue.d.ts +23 -0
  242. package/dist/components/QiuColorPicker/index.vue.d.ts +21 -0
  243. package/dist/components/QiuCombobox/index.vue.d.ts +54 -0
  244. package/dist/components/QiuContextMenu/index.vue.d.ts +46 -0
  245. package/dist/components/QiuDescriptions/context.d.ts +16 -0
  246. package/dist/components/QiuDescriptionsItem/index.vue.d.ts +25 -0
  247. package/dist/components/QiuDigitalCard/index.vue.d.ts +45 -0
  248. package/dist/components/QiuDropdown/QiuDropdownItem.vue.d.ts +30 -0
  249. package/dist/components/QiuDropdown/QiuDropdownMenu.vue.d.ts +17 -0
  250. package/dist/components/QiuDropdown/context.d.ts +7 -0
  251. package/dist/components/QiuDropdown/index.vue.d.ts +46 -0
  252. package/dist/components/QiuForm/types.d.ts +31 -0
  253. package/dist/components/QiuHoverCard/index.vue.d.ts +44 -0
  254. package/dist/components/QiuIcon/index.vue.d.ts +18 -0
  255. package/dist/components/QiuIconPicker/iconify.libraries.d.ts +18 -0
  256. package/dist/components/QiuIconPicker/icons.catalog.d.ts +12 -0
  257. package/dist/components/QiuInput/index.vue.d.ts +71 -0
  258. package/dist/components/QiuInputNumber/index.vue.d.ts +38 -0
  259. package/dist/components/QiuInputOtp/index.vue.d.ts +28 -0
  260. package/dist/components/QiuKbd/index.vue.d.ts +22 -0
  261. package/dist/components/QiuLayoutContainer/index.vue.d.ts +29 -0
  262. package/dist/components/QiuLinkPreview/index.vue.d.ts +43 -0
  263. package/dist/components/QiuLoading/index.d.ts +26 -0
  264. package/dist/components/QiuLoading/spinner.vue.d.ts +14 -0
  265. package/dist/components/QiuLoading/types.d.ts +2 -0
  266. package/dist/components/QiuMention/index.vue.d.ts +35 -0
  267. package/dist/components/QiuMenu/QiuMenuRoot.vue.d.ts +36 -0
  268. package/dist/components/QiuMenu/context.d.ts +19 -0
  269. package/dist/components/QiuMenuNav/QiuMenuNavItem.vue.d.ts +26 -0
  270. package/dist/components/QiuMenuNav/QiuMenuNavSub.vue.d.ts +25 -0
  271. package/dist/components/QiuMenuNav/context.d.ts +12 -0
  272. package/dist/components/QiuMenuNav/index.vue.d.ts +35 -0
  273. package/dist/components/QiuMsg/QiuMsgItem.vue.d.ts +15 -0
  274. package/dist/components/QiuMsg/index.d.ts +30 -0
  275. package/dist/components/QiuMsg/types.d.ts +12 -0
  276. package/dist/components/QiuMsgBox/index.d.ts +14 -0
  277. package/dist/components/QiuNotification/QiuNotificationItem.vue.d.ts +16 -0
  278. package/dist/components/QiuNotification/index.d.ts +30 -0
  279. package/dist/components/QiuNotification/types.d.ts +12 -0
  280. package/dist/components/QiuPageMain/index.vue.d.ts +27 -0
  281. package/dist/components/QiuPagination/index.vue.d.ts +44 -0
  282. package/dist/components/QiuPasswordStrength/index.vue.d.ts +9 -0
  283. package/dist/components/QiuQrcode/index.vue.d.ts +20 -0
  284. package/dist/components/QiuRadio/QiuRadioGroup.vue.d.ts +33 -0
  285. package/dist/components/QiuRadio/types.d.ts +8 -0
  286. package/dist/components/QiuRow/types.d.ts +4 -0
  287. package/dist/components/QiuSearchBar/index.vue.d.ts +38 -0
  288. package/dist/components/QiuSelect/QiuOption.vue.d.ts +24 -0
  289. package/dist/components/QiuSelect/index.vue.d.ts +52 -0
  290. package/dist/components/QiuSelect/types.d.ts +13 -0
  291. package/dist/components/QiuSparkline/index.vue.d.ts +18 -0
  292. package/dist/components/QiuStep/index.vue.d.ts +31 -0
  293. package/dist/components/QiuSteps/context.d.ts +21 -0
  294. package/dist/components/QiuSwitch/index.vue.d.ts +25 -0
  295. package/dist/components/QiuTabBar/index.vue.d.ts +32 -0
  296. package/dist/components/QiuTabBar/types.d.ts +16 -0
  297. package/dist/components/QiuTabPane/index.vue.d.ts +25 -0
  298. package/dist/components/QiuTable/columns.d.ts +1 -0
  299. package/dist/components/QiuTable/export.d.ts +18 -0
  300. package/dist/components/QiuTable/index.d.ts +3 -0
  301. package/dist/components/QiuTable/index.vue.d.ts +322 -0
  302. package/dist/components/QiuTable/registry.d.ts +39 -0
  303. package/dist/components/QiuTable/types.d.ts +353 -0
  304. package/dist/components/QiuTable/useArea.d.ts +51 -0
  305. package/dist/components/QiuTable/useColumns.d.ts +67 -0
  306. package/dist/components/QiuTable/useEdit.d.ts +36 -0
  307. package/dist/components/QiuTable/useExtras.d.ts +38 -0
  308. package/dist/components/QiuTable/useHistory.d.ts +44 -0
  309. package/dist/components/QiuTable/useMerge.d.ts +28 -0
  310. package/dist/components/QiuTable/useResize.d.ts +19 -0
  311. package/dist/components/QiuTable/useScrollSync.d.ts +25 -0
  312. package/dist/components/QiuTable/useVirtual.d.ts +30 -0
  313. package/dist/components/QiuTable/utils.d.ts +54 -0
  314. package/dist/components/QiuTime/index.vue.d.ts +43 -0
  315. package/dist/components/QiuTimeAgo/index.vue.d.ts +35 -0
  316. package/dist/components/QiuTimelineItem/index.vue.d.ts +35 -0
  317. package/dist/components/QiuTooltip/index.vue.d.ts +38 -0
  318. package/dist/components/QiuTree/types.d.ts +13 -0
  319. package/dist/components/QiuTrend/index.vue.d.ts +34 -0
  320. package/dist/components/QiuUpload/index.vue.d.ts +86 -0
  321. package/dist/components/QiuUploadCrop/index.vue.d.ts +136 -0
  322. package/dist/components/useBodyScrollLock.d.ts +4 -0
  323. package/dist/foucui.css +1 -0
  324. package/dist/foucui.js +26509 -0
  325. package/dist/foucui.umd.cjs +125 -0
  326. package/dist/index.d.ts +46 -0
  327. package/dist/src/bridge/@/api/media.d.ts +7 -0
  328. package/dist/src/bridge/@/api/notice.d.ts +5 -0
  329. package/dist/src/bridge/@/config/index.d.ts +29 -0
  330. package/dist/src/bridge/@/config/media.config.d.ts +15 -0
  331. package/dist/src/bridge/@/config/security.config.d.ts +7 -0
  332. package/dist/src/bridge/@/i18n/index.d.ts +7 -0
  333. package/dist/src/bridge/@/store/modules/bing.d.ts +3 -0
  334. package/dist/src/bridge/@/store/modules/errorLog.d.ts +3 -0
  335. package/dist/src/bridge/@/store/modules/media.d.ts +4 -0
  336. package/dist/src/bridge/@/store/modules/routes.d.ts +3 -0
  337. package/dist/src/bridge/@/store/modules/settings.d.ts +3 -0
  338. package/dist/src/bridge/@/store/modules/tabs.d.ts +3 -0
  339. package/dist/src/bridge/@/store/modules/user.d.ts +3 -0
  340. package/dist/src/bridge/@/utils/convertToCamelCase.d.ts +2 -0
  341. package/dist/src/bridge/@/utils/index.d.ts +5 -0
  342. package/dist/src/bridge/@/utils/pageTitle.d.ts +1 -0
  343. package/dist/src/bridge/@/utils/routes.d.ts +11 -0
  344. package/dist/src/bridge/@/utils/validate.d.ts +13 -0
  345. package/dist/src/bridge/@qiu/plugins/shortcuts.d.ts +2 -0
  346. package/dist/src/i18n.d.ts +2 -0
  347. package/package.json +83 -0
  348. package/plugins/qiu.ts +83 -0
  349. package/plugins/shortcuts.ts +69 -0
  350. package/src/bridge/@/api/media.ts +8 -0
  351. package/src/bridge/@/api/notice.ts +5 -0
  352. package/src/bridge/@/config/index.ts +38 -0
  353. package/src/bridge/@/config/media.config.ts +37 -0
  354. package/src/bridge/@/config/security.config.ts +8 -0
  355. package/src/bridge/@/i18n/index.ts +6 -0
  356. package/src/bridge/@/store/modules/bing.ts +9 -0
  357. package/src/bridge/@/store/modules/errorLog.ts +9 -0
  358. package/src/bridge/@/store/modules/media.ts +10 -0
  359. package/src/bridge/@/store/modules/routes.ts +10 -0
  360. package/src/bridge/@/store/modules/settings.ts +9 -0
  361. package/src/bridge/@/store/modules/tabs.ts +9 -0
  362. package/src/bridge/@/store/modules/user.ts +9 -0
  363. package/src/bridge/@/utils/convertToCamelCase.ts +11 -0
  364. package/src/bridge/@/utils/index.ts +9 -0
  365. package/src/bridge/@/utils/pageTitle.ts +4 -0
  366. package/src/bridge/@/utils/routes.ts +14 -0
  367. package/src/bridge/@/utils/validate.ts +17 -0
  368. package/src/bridge/@qiu/plugins/shortcuts.ts +3 -0
  369. package/src/i18n.ts +8 -0
  370. package/src/icons/qiu-logo.svg +1 -0
  371. package/styles/dark.scss +194 -0
  372. package/styles/normalize.css +349 -0
  373. package/styles/plain.scss +423 -0
  374. package/styles/qiu-tokens.scss +40 -0
  375. package/styles/qiu.scss +1149 -0
  376. package/styles/technology.scss +452 -0
  377. package/styles/var.scss +382 -0
  378. package/styles/variables.scss +77 -0
@@ -0,0 +1,820 @@
1
+ <template>
2
+ <div
3
+ class="qiu-loading"
4
+ :class="[
5
+ `qiu-loading--${effect}`,
6
+ {
7
+ 'is-fullscreen': fullscreen,
8
+ 'is-transparent': transparent,
9
+ },
10
+ ]"
11
+ >
12
+ <div class="qiu-loading__mask" />
13
+ <div class="qiu-loading__content">
14
+ <!-- spinner:圆环 -->
15
+ <span v-if="effect === 'spinner'" class="qiu-loading__spinner" />
16
+
17
+ <!-- dual-ring:双环 -->
18
+ <span v-else-if="effect === 'dual-ring'" class="qiu-loading__dual-ring" aria-hidden="true" />
19
+
20
+ <!-- crescent:月牙 -->
21
+ <span v-else-if="effect === 'crescent'" class="qiu-loading__crescent" aria-hidden="true" />
22
+
23
+ <!-- gradient:渐变环 -->
24
+ <span v-else-if="effect === 'gradient'" class="qiu-loading__gradient" aria-hidden="true" />
25
+
26
+ <!-- dash:虚线环 -->
27
+ <span v-else-if="effect === 'dash'" class="qiu-loading__dash" aria-hidden="true" />
28
+
29
+ <!-- dots:三点跳动 -->
30
+ <span v-else-if="effect === 'dots'" class="qiu-loading__dots" aria-hidden="true">
31
+ <i /><i /><i />
32
+ </span>
33
+
34
+ <!-- wave:波浪点 -->
35
+ <span v-else-if="effect === 'wave'" class="qiu-loading__wave" aria-hidden="true">
36
+ <i /><i /><i /><i /><i />
37
+ </span>
38
+
39
+ <!-- bounce:弹跳球 -->
40
+ <span v-else-if="effect === 'bounce'" class="qiu-loading__bounce" aria-hidden="true">
41
+ <i /><i /><i />
42
+ </span>
43
+
44
+ <!-- bars:音量条 -->
45
+ <span v-else-if="effect === 'bars'" class="qiu-loading__bars" aria-hidden="true">
46
+ <i /><i /><i /><i />
47
+ </span>
48
+
49
+ <!-- bricks:方块阶梯 -->
50
+ <span v-else-if="effect === 'bricks'" class="qiu-loading__bricks" aria-hidden="true">
51
+ <i /><i /><i /><i /><i /><i /><i /><i /><i />
52
+ </span>
53
+
54
+ <!-- square:翻转方块 -->
55
+ <span v-else-if="effect === 'square'" class="qiu-loading__square" aria-hidden="true" />
56
+
57
+ <!-- flip:3D 翻转 -->
58
+ <span v-else-if="effect === 'flip'" class="qiu-loading__flip" aria-hidden="true">
59
+ <i />
60
+ </span>
61
+
62
+ <!-- pulse:呼吸圆 -->
63
+ <span v-else-if="effect === 'pulse'" class="qiu-loading__pulse" aria-hidden="true">
64
+ <i />
65
+ </span>
66
+
67
+ <!-- ripple:水波纹 -->
68
+ <span v-else-if="effect === 'ripple'" class="qiu-loading__ripple" aria-hidden="true">
69
+ <i /><i />
70
+ </span>
71
+
72
+ <!-- orbit:双环绕 -->
73
+ <span v-else-if="effect === 'orbit'" class="qiu-loading__orbit" aria-hidden="true">
74
+ <i /><i />
75
+ </span>
76
+
77
+ <!-- radar:雷达扫描 -->
78
+ <span v-else-if="effect === 'radar'" class="qiu-loading__radar" aria-hidden="true">
79
+ <i />
80
+ </span>
81
+
82
+ <!-- spiral:螺旋点 -->
83
+ <span v-else-if="effect === 'spiral'" class="qiu-loading__spiral" aria-hidden="true">
84
+ <i /><i /><i /><i /><i /><i /><i /><i />
85
+ </span>
86
+
87
+ <!-- infinity:∞ 轨迹 -->
88
+ <span v-else-if="effect === 'infinity'" class="qiu-loading__infinity" aria-hidden="true">
89
+ <i />
90
+ </span>
91
+
92
+ <!-- hourglass:沙漏 -->
93
+ <span v-else-if="effect === 'hourglass'" class="qiu-loading__hourglass" aria-hidden="true" />
94
+
95
+ <!-- skeleton:骨架条 -->
96
+ <span v-else-if="effect === 'skeleton'" class="qiu-loading__skeleton" aria-hidden="true">
97
+ <i /><i /><i />
98
+ </span>
99
+
100
+ <!-- default fallback -->
101
+ <span v-else class="qiu-loading__spinner" />
102
+
103
+ <p v-if="text" class="qiu-loading__text">{{ text }}</p>
104
+ </div>
105
+ </div>
106
+ </template>
107
+
108
+ <script lang="ts" setup>
109
+ import type { QiuLoadingEffect } from './types'
110
+
111
+ defineOptions({ name: 'QiuLoading' })
112
+
113
+ withDefaults(
114
+ defineProps<{
115
+ text?: string
116
+ fullscreen?: boolean
117
+ transparent?: boolean
118
+ effect?: QiuLoadingEffect
119
+ }>(),
120
+ {
121
+ text: '',
122
+ fullscreen: false,
123
+ transparent: false,
124
+ effect: 'spinner',
125
+ }
126
+ )
127
+ </script>
128
+
129
+ <style lang="scss">
130
+ .qiu-loading {
131
+ --qiu-loading-color: var(--qiu-color-primary, var(--qiu-color-primary, #0f766e));
132
+
133
+ position: absolute;
134
+ inset: 0;
135
+ z-index: 2000;
136
+ pointer-events: none;
137
+
138
+ &.is-fullscreen {
139
+ position: fixed;
140
+ }
141
+
142
+ &.is-transparent .qiu-loading__mask {
143
+ background: rgb(255 255 255 / 45%);
144
+ }
145
+ }
146
+
147
+ .qiu-loading__mask {
148
+ position: absolute;
149
+ inset: 0;
150
+ background: var(--qiu-mask-color, rgb(255 255 255 / 88%));
151
+ pointer-events: auto;
152
+ backdrop-filter: blur(1px);
153
+ }
154
+
155
+ .qiu-loading__content {
156
+ position: absolute;
157
+ top: 50%;
158
+ left: 50%;
159
+ z-index: 1;
160
+ display: flex;
161
+ flex-direction: column;
162
+ gap: 10px;
163
+ align-items: center;
164
+ transform: translate(-50%, -50%);
165
+ pointer-events: none;
166
+ }
167
+
168
+ .qiu-loading__text {
169
+ margin: 0;
170
+ font-size: 13px;
171
+ color: var(--qiu-loading-color);
172
+ letter-spacing: 0.02em;
173
+ }
174
+
175
+ /* ---- spinner ---- */
176
+ .qiu-loading__spinner {
177
+ display: inline-block;
178
+ width: 32px;
179
+ height: 32px;
180
+ border: 3px solid var(--qiu-border-color-lighter, #ebeef5);
181
+ border-top-color: var(--qiu-loading-color);
182
+ border-radius: 50%;
183
+ animation: qiu-loading-spin 0.75s linear infinite;
184
+ }
185
+
186
+ /* ---- dual-ring ---- */
187
+ .qiu-loading__dual-ring {
188
+ position: relative;
189
+ display: inline-block;
190
+ width: 36px;
191
+ height: 36px;
192
+
193
+ &::before,
194
+ &::after {
195
+ position: absolute;
196
+ inset: 0;
197
+ content: '';
198
+ border: 3px solid transparent;
199
+ border-radius: 50%;
200
+ }
201
+
202
+ &::before {
203
+ border-top-color: var(--qiu-loading-color);
204
+ border-right-color: var(--qiu-loading-color);
205
+ animation: qiu-loading-spin 0.9s linear infinite;
206
+ }
207
+
208
+ &::after {
209
+ inset: 6px;
210
+ border-bottom-color: var(--qiu-loading-color);
211
+ border-left-color: var(--qiu-loading-color);
212
+ opacity: 0.55;
213
+ animation: qiu-loading-spin 1.2s linear infinite reverse;
214
+ }
215
+ }
216
+
217
+ /* ---- crescent ---- */
218
+ .qiu-loading__crescent {
219
+ display: inline-block;
220
+ width: 32px;
221
+ height: 32px;
222
+ border: 3px solid transparent;
223
+ border-top-color: var(--qiu-loading-color);
224
+ border-right-color: var(--qiu-loading-color);
225
+ border-radius: 50%;
226
+ animation: qiu-loading-spin 0.7s linear infinite;
227
+ }
228
+
229
+ /* ---- gradient ---- */
230
+ .qiu-loading__gradient {
231
+ display: inline-block;
232
+ width: 34px;
233
+ height: 34px;
234
+ border-radius: 50%;
235
+ background: conic-gradient(
236
+ from 0deg,
237
+ transparent 0%,
238
+ var(--qiu-loading-color) 70%,
239
+ transparent 100%
240
+ );
241
+ mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2px));
242
+ animation: qiu-loading-spin 0.85s linear infinite;
243
+ }
244
+
245
+ /* ---- dash ---- */
246
+ .qiu-loading__dash {
247
+ display: inline-block;
248
+ box-sizing: border-box;
249
+ width: 34px;
250
+ height: 34px;
251
+ border: 3px dashed var(--qiu-loading-color);
252
+ border-radius: 50%;
253
+ animation: qiu-loading-spin 1.2s linear infinite;
254
+ }
255
+
256
+ /* ---- dots ---- */
257
+ .qiu-loading__dots {
258
+ display: inline-flex;
259
+ gap: 6px;
260
+ align-items: center;
261
+ height: 28px;
262
+
263
+ i {
264
+ display: block;
265
+ width: 8px;
266
+ height: 8px;
267
+ background: var(--qiu-loading-color);
268
+ border-radius: 50%;
269
+ animation: qiu-loading-dot 1s ease-in-out infinite;
270
+
271
+ &:nth-child(2) {
272
+ animation-delay: 0.15s;
273
+ }
274
+
275
+ &:nth-child(3) {
276
+ animation-delay: 0.3s;
277
+ }
278
+ }
279
+ }
280
+
281
+ /* ---- wave ---- */
282
+ .qiu-loading__wave {
283
+ display: inline-flex;
284
+ gap: 4px;
285
+ align-items: center;
286
+ height: 28px;
287
+
288
+ i {
289
+ display: block;
290
+ width: 5px;
291
+ height: 5px;
292
+ background: var(--qiu-loading-color);
293
+ border-radius: 50%;
294
+ animation: qiu-loading-wave 1s ease-in-out infinite;
295
+
296
+ @for $n from 1 through 5 {
297
+ &:nth-child(#{$n}) {
298
+ animation-delay: #{($n - 1) * 0.1}s;
299
+ }
300
+ }
301
+ }
302
+ }
303
+
304
+ /* ---- bounce ---- */
305
+ .qiu-loading__bounce {
306
+ display: inline-flex;
307
+ gap: 6px;
308
+ align-items: flex-end;
309
+ height: 28px;
310
+
311
+ i {
312
+ display: block;
313
+ width: 10px;
314
+ height: 10px;
315
+ background: var(--qiu-loading-color);
316
+ border-radius: 50%;
317
+ animation: qiu-loading-bounce 0.7s ease-in-out infinite;
318
+
319
+ &:nth-child(2) {
320
+ animation-delay: 0.12s;
321
+ opacity: 0.75;
322
+ }
323
+
324
+ &:nth-child(3) {
325
+ animation-delay: 0.24s;
326
+ opacity: 0.5;
327
+ }
328
+ }
329
+ }
330
+
331
+ /* ---- bars ---- */
332
+ .qiu-loading__bars {
333
+ display: inline-flex;
334
+ gap: 4px;
335
+ align-items: flex-end;
336
+ height: 28px;
337
+
338
+ i {
339
+ display: block;
340
+ width: 4px;
341
+ height: 12px;
342
+ background: var(--qiu-loading-color);
343
+ border-radius: 2px;
344
+ animation: qiu-loading-bar 0.9s ease-in-out infinite;
345
+
346
+ &:nth-child(2) {
347
+ animation-delay: 0.12s;
348
+ }
349
+
350
+ &:nth-child(3) {
351
+ animation-delay: 0.24s;
352
+ }
353
+
354
+ &:nth-child(4) {
355
+ animation-delay: 0.36s;
356
+ }
357
+ }
358
+ }
359
+
360
+ /* ---- bricks ---- */
361
+ .qiu-loading__bricks {
362
+ display: grid;
363
+ grid-template-columns: repeat(3, 8px);
364
+ gap: 3px;
365
+ width: 30px;
366
+ height: 30px;
367
+
368
+ i {
369
+ display: block;
370
+ background: var(--qiu-loading-color);
371
+ border-radius: 1px;
372
+ animation: qiu-loading-brick 1s ease-in-out infinite;
373
+ opacity: 0.25;
374
+
375
+ @for $n from 1 through 9 {
376
+ &:nth-child(#{$n}) {
377
+ animation-delay: #{($n - 1) * 0.08}s;
378
+ }
379
+ }
380
+ }
381
+ }
382
+
383
+ /* ---- square ---- */
384
+ .qiu-loading__square {
385
+ display: inline-block;
386
+ width: 22px;
387
+ height: 22px;
388
+ background: var(--qiu-loading-color);
389
+ border-radius: 3px;
390
+ animation: qiu-loading-square 1s ease-in-out infinite;
391
+ }
392
+
393
+ /* ---- flip ---- */
394
+ .qiu-loading__flip {
395
+ display: inline-flex;
396
+ perspective: 80px;
397
+ width: 28px;
398
+ height: 28px;
399
+
400
+ i {
401
+ display: block;
402
+ width: 100%;
403
+ height: 100%;
404
+ background: var(--qiu-loading-color);
405
+ border-radius: 4px;
406
+ animation: qiu-loading-flip 1.1s ease-in-out infinite;
407
+ }
408
+ }
409
+
410
+ /* ---- pulse ---- */
411
+ .qiu-loading__pulse {
412
+ position: relative;
413
+ display: inline-flex;
414
+ align-items: center;
415
+ justify-content: center;
416
+ width: 36px;
417
+ height: 36px;
418
+
419
+ i {
420
+ display: block;
421
+ width: 14px;
422
+ height: 14px;
423
+ background: var(--qiu-loading-color);
424
+ border-radius: 50%;
425
+ animation: qiu-loading-pulse 1.2s ease-out infinite;
426
+ }
427
+
428
+ &::before {
429
+ position: absolute;
430
+ inset: 0;
431
+ content: '';
432
+ border: 2px solid var(--qiu-loading-color);
433
+ border-radius: 50%;
434
+ animation: qiu-loading-ring 1.2s ease-out infinite;
435
+ }
436
+ }
437
+
438
+ /* ---- ripple ---- */
439
+ .qiu-loading__ripple {
440
+ position: relative;
441
+ width: 40px;
442
+ height: 40px;
443
+
444
+ i {
445
+ position: absolute;
446
+ inset: 0;
447
+ border: 2px solid var(--qiu-loading-color);
448
+ border-radius: 50%;
449
+ opacity: 0;
450
+ animation: qiu-loading-ripple 1.4s ease-out infinite;
451
+
452
+ &:nth-child(2) {
453
+ animation-delay: 0.7s;
454
+ }
455
+ }
456
+ }
457
+
458
+ /* ---- orbit ---- */
459
+ .qiu-loading__orbit {
460
+ position: relative;
461
+ width: 36px;
462
+ height: 36px;
463
+
464
+ i {
465
+ position: absolute;
466
+ top: 50%;
467
+ left: 50%;
468
+ width: 10px;
469
+ height: 10px;
470
+ margin: -5px 0 0 -5px;
471
+ background: var(--qiu-loading-color);
472
+ border-radius: 50%;
473
+ animation: qiu-loading-orbit 1s linear infinite;
474
+
475
+ &:nth-child(2) {
476
+ width: 7px;
477
+ height: 7px;
478
+ margin: -3.5px 0 0 -3.5px;
479
+ opacity: 0.55;
480
+ animation-duration: 1.4s;
481
+ animation-direction: reverse;
482
+ }
483
+ }
484
+ }
485
+
486
+ /* ---- radar ---- */
487
+ .qiu-loading__radar {
488
+ position: relative;
489
+ box-sizing: border-box;
490
+ width: 36px;
491
+ height: 36px;
492
+ overflow: hidden;
493
+ border: 2px solid rgb(15 118 110 / 25%);
494
+ border-radius: 50%;
495
+
496
+ i {
497
+ position: absolute;
498
+ top: 50%;
499
+ left: 50%;
500
+ width: 50%;
501
+ height: 2px;
502
+ margin-top: -1px;
503
+ background: linear-gradient(90deg, var(--qiu-loading-color), transparent);
504
+ transform-origin: left center;
505
+ animation: qiu-loading-radar 1.2s linear infinite;
506
+ }
507
+
508
+ &::before,
509
+ &::after {
510
+ position: absolute;
511
+ inset: 25%;
512
+ content: '';
513
+ border: 1px solid rgb(15 118 110 / 18%);
514
+ border-radius: 50%;
515
+ }
516
+
517
+ &::after {
518
+ inset: 40%;
519
+ }
520
+ }
521
+
522
+ /* ---- spiral ---- */
523
+ .qiu-loading__spiral {
524
+ position: relative;
525
+ width: 36px;
526
+ height: 36px;
527
+
528
+ i {
529
+ position: absolute;
530
+ top: 50%;
531
+ left: 50%;
532
+ width: 6px;
533
+ height: 6px;
534
+ margin: -3px 0 0 -3px;
535
+ background: var(--qiu-loading-color);
536
+ border-radius: 50%;
537
+ animation: qiu-loading-spiral 1.2s linear infinite;
538
+
539
+ @for $n from 1 through 8 {
540
+ &:nth-child(#{$n}) {
541
+ animation-delay: #{($n - 1) * -0.15}s;
542
+ opacity: #{1 - ($n - 1) * 0.1};
543
+ }
544
+ }
545
+ }
546
+ }
547
+
548
+ /* ---- infinity ---- */
549
+ .qiu-loading__infinity {
550
+ position: relative;
551
+ width: 48px;
552
+ height: 24px;
553
+
554
+ i {
555
+ position: absolute;
556
+ top: 50%;
557
+ left: 50%;
558
+ width: 8px;
559
+ height: 8px;
560
+ margin: -4px 0 0 -4px;
561
+ background: var(--qiu-loading-color);
562
+ border-radius: 50%;
563
+ animation: qiu-loading-infinity 1.4s linear infinite;
564
+ }
565
+ }
566
+
567
+ /* ---- hourglass ---- */
568
+ .qiu-loading__hourglass {
569
+ display: inline-block;
570
+ width: 0;
571
+ height: 0;
572
+ border-style: solid;
573
+ border-width: 16px 10px;
574
+ border-color: var(--qiu-loading-color) transparent;
575
+ animation: qiu-loading-hourglass 1.2s ease-in-out infinite;
576
+ }
577
+
578
+ /* ---- skeleton ---- */
579
+ .qiu-loading__skeleton {
580
+ display: flex;
581
+ flex-direction: column;
582
+ gap: 8px;
583
+ width: 160px;
584
+
585
+ i {
586
+ display: block;
587
+ height: 10px;
588
+ background: linear-gradient(90deg, #f0f2f5 25%, #e6e8eb 37%, #f0f2f5 63%);
589
+ background-size: 400% 100%;
590
+ border-radius: 4px;
591
+ animation: qiu-loading-shimmer 1.2s ease infinite;
592
+
593
+ &:nth-child(1) {
594
+ width: 100%;
595
+ }
596
+
597
+ &:nth-child(2) {
598
+ width: 72%;
599
+ }
600
+
601
+ &:nth-child(3) {
602
+ width: 88%;
603
+ }
604
+ }
605
+ }
606
+
607
+ @keyframes qiu-loading-spin {
608
+ to {
609
+ transform: rotate(360deg);
610
+ }
611
+ }
612
+
613
+ @keyframes qiu-loading-dot {
614
+ 0%,
615
+ 80%,
616
+ 100% {
617
+ opacity: 0.35;
618
+ transform: translateY(0) scale(0.85);
619
+ }
620
+
621
+ 40% {
622
+ opacity: 1;
623
+ transform: translateY(-6px) scale(1);
624
+ }
625
+ }
626
+
627
+ @keyframes qiu-loading-wave {
628
+ 0%,
629
+ 100% {
630
+ transform: translateY(0);
631
+ opacity: 0.4;
632
+ }
633
+
634
+ 50% {
635
+ transform: translateY(-10px);
636
+ opacity: 1;
637
+ }
638
+ }
639
+
640
+ @keyframes qiu-loading-bounce {
641
+ 0%,
642
+ 100% {
643
+ transform: translateY(0);
644
+ }
645
+
646
+ 40% {
647
+ transform: translateY(-14px);
648
+ }
649
+ }
650
+
651
+ @keyframes qiu-loading-bar {
652
+ 0%,
653
+ 100% {
654
+ height: 10px;
655
+ opacity: 0.45;
656
+ }
657
+
658
+ 50% {
659
+ height: 26px;
660
+ opacity: 1;
661
+ }
662
+ }
663
+
664
+ @keyframes qiu-loading-brick {
665
+ 0%,
666
+ 100% {
667
+ opacity: 0.25;
668
+ transform: scale(0.85);
669
+ }
670
+
671
+ 40% {
672
+ opacity: 1;
673
+ transform: scale(1);
674
+ }
675
+ }
676
+
677
+ @keyframes qiu-loading-square {
678
+ 0% {
679
+ transform: rotate(0deg) scale(1);
680
+ }
681
+
682
+ 50% {
683
+ transform: rotate(180deg) scale(0.7);
684
+ border-radius: 50%;
685
+ }
686
+
687
+ 100% {
688
+ transform: rotate(360deg) scale(1);
689
+ }
690
+ }
691
+
692
+ @keyframes qiu-loading-flip {
693
+ 0% {
694
+ transform: rotateY(0deg);
695
+ }
696
+
697
+ 50% {
698
+ transform: rotateY(180deg);
699
+ }
700
+
701
+ 100% {
702
+ transform: rotateY(360deg);
703
+ }
704
+ }
705
+
706
+ @keyframes qiu-loading-pulse {
707
+ 0%,
708
+ 100% {
709
+ transform: scale(0.85);
710
+ opacity: 0.7;
711
+ }
712
+
713
+ 50% {
714
+ transform: scale(1.15);
715
+ opacity: 1;
716
+ }
717
+ }
718
+
719
+ @keyframes qiu-loading-ring {
720
+ 0% {
721
+ transform: scale(0.55);
722
+ opacity: 0.8;
723
+ }
724
+
725
+ 100% {
726
+ transform: scale(1.15);
727
+ opacity: 0;
728
+ }
729
+ }
730
+
731
+ @keyframes qiu-loading-ripple {
732
+ 0% {
733
+ transform: scale(0.2);
734
+ opacity: 0.75;
735
+ }
736
+
737
+ 100% {
738
+ transform: scale(1);
739
+ opacity: 0;
740
+ }
741
+ }
742
+
743
+ @keyframes qiu-loading-orbit {
744
+ from {
745
+ transform: rotate(0deg) translateX(12px) rotate(0deg);
746
+ }
747
+
748
+ to {
749
+ transform: rotate(360deg) translateX(12px) rotate(-360deg);
750
+ }
751
+ }
752
+
753
+ @keyframes qiu-loading-radar {
754
+ to {
755
+ transform: rotate(360deg);
756
+ }
757
+ }
758
+
759
+ @keyframes qiu-loading-spiral {
760
+ from {
761
+ transform: rotate(0deg) translateX(12px) scale(1);
762
+ }
763
+
764
+ to {
765
+ transform: rotate(360deg) translateX(12px) scale(0.6);
766
+ }
767
+ }
768
+
769
+ @keyframes qiu-loading-infinity {
770
+ 0% {
771
+ transform: translate(-14px, 0);
772
+ }
773
+
774
+ 25% {
775
+ transform: translate(0, -8px);
776
+ }
777
+
778
+ 50% {
779
+ transform: translate(14px, 0);
780
+ }
781
+
782
+ 75% {
783
+ transform: translate(0, 8px);
784
+ }
785
+
786
+ 100% {
787
+ transform: translate(-14px, 0);
788
+ }
789
+ }
790
+
791
+ @keyframes qiu-loading-hourglass {
792
+ 0% {
793
+ transform: rotate(0deg);
794
+ border-top-color: var(--qiu-loading-color);
795
+ border-bottom-color: transparent;
796
+ }
797
+
798
+ 50% {
799
+ transform: rotate(180deg);
800
+ border-top-color: transparent;
801
+ border-bottom-color: var(--qiu-loading-color);
802
+ }
803
+
804
+ 100% {
805
+ transform: rotate(360deg);
806
+ border-top-color: var(--qiu-loading-color);
807
+ border-bottom-color: transparent;
808
+ }
809
+ }
810
+
811
+ @keyframes qiu-loading-shimmer {
812
+ 0% {
813
+ background-position: 100% 0;
814
+ }
815
+
816
+ 100% {
817
+ background-position: 0 0;
818
+ }
819
+ }
820
+ </style>