foucui 1.0.1 → 1.0.2

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 (234) hide show
  1. package/dist/components/QiuCanvasKit/QiuCanvasEditor.vue.d.ts +3 -1
  2. package/dist/components/QiuCanvasKit/components/DataModulesPanel.vue.d.ts +1 -0
  3. package/dist/components/QiuTable/index.vue.d.ts +12 -12
  4. package/dist/foucui.css +1 -1
  5. package/dist/foucui.js +7476 -7373
  6. package/dist/foucui.umd.cjs +19 -19
  7. package/package.json +23 -13
  8. package/components/QiuAffix/index.vue +0 -186
  9. package/components/QiuAlert/index.vue +0 -208
  10. package/components/QiuAnchor/context.ts +0 -18
  11. package/components/QiuAnchor/index.vue +0 -180
  12. package/components/QiuAnchorLink/index.vue +0 -67
  13. package/components/QiuApp/index.vue +0 -9
  14. package/components/QiuAutocomplete/index.vue +0 -408
  15. package/components/QiuAvatar/index.vue +0 -140
  16. package/components/QiuBacktop/index.vue +0 -121
  17. package/components/QiuBadge/api/index.ts +0 -389
  18. package/components/QiuBadge/components/BadgeImagePickerDialog.vue +0 -243
  19. package/components/QiuBadge/components/BadgeLibraryManagerDialog.vue +0 -30
  20. package/components/QiuBadge/components/BadgeLibraryPanel.vue +0 -182
  21. package/components/QiuBadge/composables/useTableHostHeight.ts +0 -53
  22. package/components/QiuBadge/index.ts +0 -18
  23. package/components/QiuBadge/shared/BadgeTemplateRenderer.vue +0 -32
  24. package/components/QiuBadge/shared/assetUrl.ts +0 -26
  25. package/components/QiuBadge/shared/badgeTemplate.ts +0 -309
  26. package/components/QiuBadge/utils/chinaAreaData.ts +0 -44
  27. package/components/QiuBadge/utils/hostRegion.ts +0 -22
  28. package/components/QiuBadge/utils/pca-code.json +0 -1
  29. package/components/QiuBadge/utils/pdfFromElement.ts +0 -348
  30. package/components/QiuBadge/views/BadgeLibraryView.vue +0 -32
  31. package/components/QiuBadge/views/BadgeManageView.vue +0 -1364
  32. package/components/QiuBadge/views/BadgeTemplateEditorView.vue +0 -10
  33. package/components/QiuBadge/views/BadgeTemplateListView.vue +0 -229
  34. package/components/QiuBadge/views/DeskLabelTemplateListView.vue +0 -227
  35. package/components/QiuBadge/views/DeskLabelView.vue +0 -683
  36. package/components/QiuBadgeDot/index.vue +0 -87
  37. package/components/QiuButton/index.vue +0 -247
  38. package/components/QiuButtonGroup/index.vue +0 -63
  39. package/components/QiuCanvasKit/QiuCanvasEditor.vue +0 -5503
  40. package/components/QiuCanvasKit/QiuCanvasRenderer.vue +0 -348
  41. package/components/QiuCanvasKit/assetUrl.ts +0 -11
  42. package/components/QiuCanvasKit/components/DataModulesPanel.vue +0 -352
  43. package/components/QiuCanvasKit/export/html.ts +0 -132
  44. package/components/QiuCanvasKit/export/pdf.ts +0 -48
  45. package/components/QiuCanvasKit/export/png.ts +0 -50
  46. package/components/QiuCanvasKit/index.ts +0 -20
  47. package/components/QiuCanvasKit/modules/badgeCompat.ts +0 -84
  48. package/components/QiuCanvasKit/modules/dataRegistry.ts +0 -207
  49. package/components/QiuCanvasKit/modules/merge.ts +0 -71
  50. package/components/QiuCanvasKit/presets/badge.ts +0 -67
  51. package/components/QiuCanvasKit/presets/banner.ts +0 -79
  52. package/components/QiuCanvasKit/types.ts +0 -138
  53. package/components/QiuCard/index.vue +0 -104
  54. package/components/QiuCarousel/context.ts +0 -16
  55. package/components/QiuCarousel/index.vue +0 -343
  56. package/components/QiuCarouselItem/index.vue +0 -47
  57. package/components/QiuCascader/index.vue +0 -879
  58. package/components/QiuCascader/types.ts +0 -48
  59. package/components/QiuCheckbox/QiuCheckboxGroup.vue +0 -78
  60. package/components/QiuCheckbox/index.vue +0 -231
  61. package/components/QiuCheckbox/types.ts +0 -8
  62. package/components/QiuCode/index.vue +0 -64
  63. package/components/QiuCol/col.scss +0 -55
  64. package/components/QiuCol/index.vue +0 -64
  65. package/components/QiuCollapse/context.ts +0 -10
  66. package/components/QiuCollapse/index.vue +0 -70
  67. package/components/QiuCollapseItem/index.vue +0 -167
  68. package/components/QiuColorField/index.vue +0 -296
  69. package/components/QiuColorPicker/README.md +0 -118
  70. package/components/QiuColorPicker/index.vue +0 -60
  71. package/components/QiuColorfulCard/index.vue +0 -101
  72. package/components/QiuCombobox/index.vue +0 -277
  73. package/components/QiuConfigProvider/index.vue +0 -31
  74. package/components/QiuContextMenu/index.vue +0 -209
  75. package/components/QiuDate/index.vue +0 -1134
  76. package/components/QiuDescriptions/context.ts +0 -20
  77. package/components/QiuDescriptions/index.vue +0 -115
  78. package/components/QiuDescriptionsItem/index.vue +0 -103
  79. package/components/QiuDialog/index.vue +0 -828
  80. package/components/QiuDigitalCard/index.vue +0 -159
  81. package/components/QiuDivider/index.vue +0 -185
  82. package/components/QiuDot/index.vue +0 -83
  83. package/components/QiuDrawer/index.vue +0 -350
  84. package/components/QiuDropdown/QiuDropdownItem.vue +0 -74
  85. package/components/QiuDropdown/QiuDropdownMenu.vue +0 -22
  86. package/components/QiuDropdown/context.ts +0 -9
  87. package/components/QiuDropdown/index.vue +0 -189
  88. package/components/QiuEmpty/index.vue +0 -73
  89. package/components/QiuForm/index.vue +0 -172
  90. package/components/QiuForm/types.ts +0 -39
  91. package/components/QiuFormItem/index.vue +0 -276
  92. package/components/QiuFullscreen/index.vue +0 -11
  93. package/components/QiuGrid/index.vue +0 -408
  94. package/components/QiuHoverCard/index.vue +0 -192
  95. package/components/QiuIcon/index.vue +0 -117
  96. package/components/QiuIconPicker/iconify.libraries.ts +0 -182
  97. package/components/QiuIconPicker/icons.catalog.ts +0 -3072
  98. package/components/QiuIconPicker/index.vue +0 -488
  99. package/components/QiuImage/index.vue +0 -177
  100. package/components/QiuInput/index.vue +0 -328
  101. package/components/QiuInputNumber/index.vue +0 -295
  102. package/components/QiuInputOtp/index.vue +0 -190
  103. package/components/QiuKbd/index.vue +0 -57
  104. package/components/QiuLayoutContainer/index.vue +0 -50
  105. package/components/QiuLinkPreview/index.vue +0 -224
  106. package/components/QiuLoading/index.ts +0 -176
  107. package/components/QiuLoading/spinner.vue +0 -820
  108. package/components/QiuLoading/types.ts +0 -44
  109. package/components/QiuMention/index.vue +0 -299
  110. package/components/QiuMenu/QiuMenuRoot.vue +0 -241
  111. package/components/QiuMenu/components/QiuMenuItem.vue +0 -340
  112. package/components/QiuMenu/components/QiuSubMenu.vue +0 -504
  113. package/components/QiuMenu/context.ts +0 -21
  114. package/components/QiuMenu/index.vue +0 -43
  115. package/components/QiuMenuNav/QiuMenuNavItem.vue +0 -100
  116. package/components/QiuMenuNav/QiuMenuNavSub.vue +0 -120
  117. package/components/QiuMenuNav/context.ts +0 -14
  118. package/components/QiuMenuNav/index.vue +0 -148
  119. package/components/QiuMsg/QiuMsgItem.vue +0 -180
  120. package/components/QiuMsg/index.ts +0 -158
  121. package/components/QiuMsg/types.ts +0 -23
  122. package/components/QiuMsgBox/index.ts +0 -147
  123. package/components/QiuNotification/QiuNotificationItem.vue +0 -168
  124. package/components/QiuNotification/index.ts +0 -155
  125. package/components/QiuNotification/types.ts +0 -14
  126. package/components/QiuPage/index.vue +0 -12
  127. package/components/QiuPageHeader/index.vue +0 -115
  128. package/components/QiuPageMain/index.vue +0 -78
  129. package/components/QiuPagination/index.vue +0 -421
  130. package/components/QiuPasswordStrength/index.vue +0 -101
  131. package/components/QiuPopconfirm/index.vue +0 -196
  132. package/components/QiuPopover/index.vue +0 -277
  133. package/components/QiuProgress/index.vue +0 -235
  134. package/components/QiuQrcode/index.vue +0 -302
  135. package/components/QiuQueryForm/components/QiuQueryFormBottomPanel.vue +0 -13
  136. package/components/QiuQueryForm/components/QiuQueryFormLeftPanel.vue +0 -37
  137. package/components/QiuQueryForm/components/QiuQueryFormRightPanel.vue +0 -37
  138. package/components/QiuQueryForm/components/QiuQueryFormTopPanel.vue +0 -13
  139. package/components/QiuQueryForm/index.vue +0 -117
  140. package/components/QiuRadio/QiuRadioGroup.vue +0 -75
  141. package/components/QiuRadio/index.vue +0 -191
  142. package/components/QiuRadio/types.ts +0 -9
  143. package/components/QiuRate/index.vue +0 -184
  144. package/components/QiuRefresh/index.vue +0 -32
  145. package/components/QiuResult/index.vue +0 -103
  146. package/components/QiuRow/index.vue +0 -60
  147. package/components/QiuRow/types.ts +0 -5
  148. package/components/QiuScrollbar/index.vue +0 -107
  149. package/components/QiuSearchBar/index.vue +0 -154
  150. package/components/QiuSegmented/index.vue +0 -120
  151. package/components/QiuSelect/QiuOption.vue +0 -93
  152. package/components/QiuSelect/index.vue +0 -452
  153. package/components/QiuSelect/types.ts +0 -15
  154. package/components/QiuSkeleton/index.vue +0 -78
  155. package/components/QiuSlider/index.vue +0 -266
  156. package/components/QiuSpace/index.vue +0 -95
  157. package/components/QiuSparkline/index.vue +0 -92
  158. package/components/QiuStatistic/index.vue +0 -4
  159. package/components/QiuStatistics/index.vue +0 -123
  160. package/components/QiuStep/index.vue +0 -220
  161. package/components/QiuSteps/context.ts +0 -25
  162. package/components/QiuSteps/index.vue +0 -84
  163. package/components/QiuSwitch/index.vue +0 -145
  164. package/components/QiuTabBar/index.vue +0 -218
  165. package/components/QiuTabBar/types.ts +0 -19
  166. package/components/QiuTabPane/index.vue +0 -82
  167. package/components/QiuTable/columns.ts +0 -16
  168. package/components/QiuTable/export.ts +0 -102
  169. package/components/QiuTable/index.ts +0 -24
  170. package/components/QiuTable/index.vue +0 -3503
  171. package/components/QiuTable/registry.ts +0 -75
  172. package/components/QiuTable/styles/table.scss +0 -1230
  173. package/components/QiuTable/types.ts +0 -413
  174. package/components/QiuTable/useArea.ts +0 -202
  175. package/components/QiuTable/useColumns.ts +0 -325
  176. package/components/QiuTable/useEdit.ts +0 -136
  177. package/components/QiuTable/useExtras.ts +0 -115
  178. package/components/QiuTable/useHistory.ts +0 -77
  179. package/components/QiuTable/useMerge.ts +0 -105
  180. package/components/QiuTable/useResize.ts +0 -86
  181. package/components/QiuTable/useScrollSync.ts +0 -152
  182. package/components/QiuTable/useVirtual.ts +0 -97
  183. package/components/QiuTable/utils.ts +0 -165
  184. package/components/QiuTableColumn/index.vue +0 -101
  185. package/components/QiuTag/index.vue +0 -143
  186. package/components/QiuText/index.vue +0 -99
  187. package/components/QiuTime/index.vue +0 -548
  188. package/components/QiuTimeAgo/index.vue +0 -103
  189. package/components/QiuTimeline/index.vue +0 -54
  190. package/components/QiuTimelineItem/index.vue +0 -140
  191. package/components/QiuTips/index.vue +0 -323
  192. package/components/QiuTooltip/index.vue +0 -237
  193. package/components/QiuTransfer/index.vue +0 -277
  194. package/components/QiuTree/QiuTreeNode.vue +0 -146
  195. package/components/QiuTree/index.vue +0 -143
  196. package/components/QiuTree/types.ts +0 -30
  197. package/components/QiuTreeSelect/index.vue +0 -259
  198. package/components/QiuTrend/index.vue +0 -92
  199. package/components/QiuUpload/index.vue +0 -628
  200. package/components/QiuUploadCrop/index.vue +0 -1267
  201. package/components/QiuWatermark/index.vue +0 -121
  202. package/components/useBodyScrollLock.ts +0 -28
  203. package/dist/components/QiuBadge/utils/pca-code.json.d.ts +0 -3
  204. package/plugins/qiu.ts +0 -83
  205. package/plugins/shortcuts.ts +0 -69
  206. package/src/bridge/@/api/media.ts +0 -8
  207. package/src/bridge/@/api/notice.ts +0 -5
  208. package/src/bridge/@/config/index.ts +0 -38
  209. package/src/bridge/@/config/media.config.ts +0 -37
  210. package/src/bridge/@/config/security.config.ts +0 -8
  211. package/src/bridge/@/i18n/index.ts +0 -6
  212. package/src/bridge/@/store/modules/bing.ts +0 -9
  213. package/src/bridge/@/store/modules/errorLog.ts +0 -9
  214. package/src/bridge/@/store/modules/media.ts +0 -10
  215. package/src/bridge/@/store/modules/routes.ts +0 -10
  216. package/src/bridge/@/store/modules/settings.ts +0 -9
  217. package/src/bridge/@/store/modules/tabs.ts +0 -9
  218. package/src/bridge/@/store/modules/user.ts +0 -9
  219. package/src/bridge/@/utils/convertToCamelCase.ts +0 -11
  220. package/src/bridge/@/utils/index.ts +0 -9
  221. package/src/bridge/@/utils/pageTitle.ts +0 -4
  222. package/src/bridge/@/utils/routes.ts +0 -14
  223. package/src/bridge/@/utils/validate.ts +0 -17
  224. package/src/bridge/@qiu/plugins/shortcuts.ts +0 -3
  225. package/src/i18n.ts +0 -8
  226. package/src/icons/qiu-logo.svg +0 -1
  227. package/styles/dark.scss +0 -194
  228. package/styles/normalize.css +0 -349
  229. package/styles/plain.scss +0 -423
  230. package/styles/qiu-tokens.scss +0 -40
  231. package/styles/qiu.scss +0 -1149
  232. package/styles/technology.scss +0 -452
  233. package/styles/var.scss +0 -382
  234. package/styles/variables.scss +0 -77
@@ -1,820 +0,0 @@
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>