@bagelink/vue 0.0.160 → 0.0.162

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 (82) hide show
  1. package/dist/components/Btn.vue.d.ts +2 -2
  2. package/dist/components/Btn.vue.d.ts.map +1 -1
  3. package/dist/components/Comments.vue.d.ts.map +1 -1
  4. package/dist/components/DropDown.vue.d.ts.map +1 -1
  5. package/dist/components/FileUploader.vue.d.ts.map +1 -1
  6. package/dist/components/LangText.vue.d.ts.map +1 -1
  7. package/dist/components/NavBar.vue.d.ts.map +1 -1
  8. package/dist/components/PersonPreview.vue.d.ts +1 -1
  9. package/dist/components/PersonPreview.vue.d.ts.map +1 -1
  10. package/dist/components/PersonPreviewFormkit.vue.d.ts +1 -1
  11. package/dist/components/PersonPreviewFormkit.vue.d.ts.map +1 -1
  12. package/dist/components/RTXEditor.vue.d.ts.map +1 -1
  13. package/dist/components/TableSchema.vue.d.ts.map +1 -1
  14. package/dist/components/charts/BarChart.vue.d.ts.map +1 -1
  15. package/dist/components/dashboard/Lineart.vue.d.ts +1 -1
  16. package/dist/components/dashboard/Lineart.vue.d.ts.map +1 -1
  17. package/dist/components/form/inputs/CheckInput.vue.d.ts.map +1 -1
  18. package/dist/components/form/inputs/Checkbox.vue.d.ts.map +1 -1
  19. package/dist/components/form/inputs/PasswordInput.vue.d.ts.map +1 -1
  20. package/dist/components/formkit/AddressArray.vue.d.ts.map +1 -1
  21. package/dist/components/formkit/BankDetailsArray.vue.d.ts.map +1 -1
  22. package/dist/components/formkit/ContactArrayFormKit.vue.d.ts.map +1 -1
  23. package/dist/components/formkit/FileUploader.vue.d.ts.map +1 -1
  24. package/dist/components/formkit/MiscFields.vue.d.ts.map +1 -1
  25. package/dist/index.cjs +60 -49
  26. package/dist/index.mjs +60 -49
  27. package/dist/style.css +1468 -1402
  28. package/package.json +1 -1
  29. package/src/components/Btn.vue +127 -132
  30. package/src/components/Comments.vue +155 -169
  31. package/src/components/DropDown.vue +73 -77
  32. package/src/components/FileUploader.vue +133 -141
  33. package/src/components/FormKitTable.vue +191 -205
  34. package/src/components/LangText.vue +14 -14
  35. package/src/components/NavBar.vue +264 -261
  36. package/src/components/PersonPreview.vue +123 -148
  37. package/src/components/PersonPreviewFormkit.vue +124 -148
  38. package/src/components/RTXEditor.vue +91 -91
  39. package/src/components/TableSchema.vue +150 -156
  40. package/src/components/charts/BarChart.vue +212 -227
  41. package/src/components/dashboard/Lineart.vue +117 -130
  42. package/src/components/form/inputs/CheckInput.vue +90 -90
  43. package/src/components/form/inputs/Checkbox.vue +38 -41
  44. package/src/components/form/inputs/PasswordInput.vue +56 -63
  45. package/src/components/formkit/AddressArray.vue +150 -173
  46. package/src/components/formkit/BankDetailsArray.vue +175 -198
  47. package/src/components/formkit/ContactArrayFormKit.vue +124 -142
  48. package/src/components/formkit/FileUploader.vue +256 -260
  49. package/src/components/formkit/MiscFields.vue +42 -42
  50. package/src/components/formkit/Toggle.vue +97 -97
  51. package/src/styles/bagel.css +1 -0
  52. package/src/styles/buttons.css +5 -0
  53. package/src/styles/dark.css +46 -0
  54. package/src/styles/fonts/Ploni.css +8 -8
  55. package/src/styles/inputs.css +57 -13
  56. package/src/styles/layout.css +43 -0
  57. package/src/styles/text.css +83 -10
  58. package/src/styles/theme.css +25 -155
  59. package/src/styles/fonts/Ploni/ploni-black.eot +0 -0
  60. package/src/styles/fonts/Ploni/ploni-black.woff +0 -0
  61. package/src/styles/fonts/Ploni/ploni-black.woff2 +0 -0
  62. package/src/styles/fonts/Ploni/ploni-bold.eot +0 -0
  63. package/src/styles/fonts/Ploni/ploni-bold.woff +0 -0
  64. package/src/styles/fonts/Ploni/ploni-bold.woff2 +0 -0
  65. package/src/styles/fonts/Ploni/ploni-demibold.eot +0 -0
  66. package/src/styles/fonts/Ploni/ploni-demibold.woff +0 -0
  67. package/src/styles/fonts/Ploni/ploni-demibold.woff2 +0 -0
  68. package/src/styles/fonts/Ploni/ploni-light.eot +0 -0
  69. package/src/styles/fonts/Ploni/ploni-light.woff +0 -0
  70. package/src/styles/fonts/Ploni/ploni-light.woff2 +0 -0
  71. package/src/styles/fonts/Ploni/ploni-medium.eot +0 -0
  72. package/src/styles/fonts/Ploni/ploni-medium.woff +0 -0
  73. package/src/styles/fonts/Ploni/ploni-medium.woff2 +0 -0
  74. package/src/styles/fonts/Ploni/ploni-regular.eot +0 -0
  75. package/src/styles/fonts/Ploni/ploni-regular.woff +0 -0
  76. package/src/styles/fonts/Ploni/ploni-regular.woff2 +0 -0
  77. package/src/styles/fonts/Ploni/ploni-ultrabold.eot +0 -0
  78. package/src/styles/fonts/Ploni/ploni-ultrabold.woff +0 -0
  79. package/src/styles/fonts/Ploni/ploni-ultrabold.woff2 +0 -0
  80. package/src/styles/fonts/Ploni/ploni-ultralight.eot +0 -0
  81. package/src/styles/fonts/Ploni/ploni-ultralight.woff +0 -0
  82. package/src/styles/fonts/Ploni/ploni-ultralight.woff2 +0 -0
@@ -1,99 +1,86 @@
1
1
  <template>
2
- <div class="files-wrapper flex">
3
- <div
4
- ref="dropZoneEl"
5
- class="drop-zone flex-grow"
6
- @click="openFileDialog"
7
- @drop.prevent.stop="onDrop"
8
- @dragleave="draggingOver = false"
9
- >
10
- <Transition name="pop">
11
- <div
12
- ref="dropCircle"
13
- v-if="draggingOver"
14
- class="drop-circle"
15
- />
16
- </Transition>
17
- <div
18
- class="img-label"
19
- v-if="allowUpload"
20
- >
21
- <p>
22
- {{ dragDropLabel }} <span>{{ browseLabel }}</span>
23
- </p>
24
- </div>
25
- <div class="uploading-wrap">
26
- <div
27
- v-for="(item, index) in files"
28
- :class="{ uploading: item.uploading }"
29
- :key="index"
30
- >
31
- <div class="load-file-bar">
32
- <!-- Preview File if image -->
33
- <img
34
- width="40"
35
- v-if="isImg(item)"
36
- :src="item.dataUrl"
37
- :alt="item.name"
38
- style="margin-inline-end: 10px"
39
- >
40
- <p>
41
- {{ item.name }}
42
- </p>
43
- <div class="flex">
44
- <div
45
- class="pie"
46
- :style="`--p:${item.progress}`"
47
- style="--b: 2px"
48
- :class="{ complete: item.progress === 100 }"
49
- >
50
- <span
51
- class="progress"
52
- v-if="item.progress < 100"
53
- >{{
54
- `${item.progress.toFixed(0)}`
55
- }}</span>
56
- <MaterialIcon
57
- class="success"
58
- icon="check"
59
- />
60
- </div>
61
- <Btn
62
- thin
63
- class="delete-btn"
64
- @click.stop="deleteImg(item)"
65
- icon="delete"
66
- v-if="item.progress === 100"
67
- />
68
- </div>
69
- </div>
70
- </div>
71
- </div>
72
- </div>
73
- <input
74
- class="file-input"
75
- type="file"
76
- @change="handleFileInput"
77
- ref="fileInputEl"
78
- :multiple="context?.attrs.multiple || false"
79
- >
80
- </div>
2
+ <div class="files-wrapper flex">
3
+ <div
4
+ ref="dropZoneEl"
5
+ class="drop-zone flex-grow"
6
+ @click="openFileDialog"
7
+ @drop.prevent.stop="onDrop"
8
+ @dragleave="draggingOver = false"
9
+ >
10
+ <Transition name="pop">
11
+ <div ref="dropCircle" v-if="draggingOver" class="drop-circle" />
12
+ </Transition>
13
+ <div class="img-label" v-if="allowUpload">
14
+ <p>
15
+ {{ dragDropLabel }} <span>{{ browseLabel }}</span>
16
+ </p>
17
+ </div>
18
+ <div class="uploading-wrap">
19
+ <div
20
+ v-for="(item, index) in files"
21
+ :class="{ uploading: item.uploading }"
22
+ :key="index"
23
+ >
24
+ <div class="load-file-bar">
25
+ <!-- Preview File if image -->
26
+ <img
27
+ width="40"
28
+ v-if="isImg(item)"
29
+ :src="item.dataUrl"
30
+ :alt="item.name"
31
+ style="margin-inline-end: 10px"
32
+ />
33
+ <p>
34
+ {{ item.name }}
35
+ </p>
36
+ <div class="flex">
37
+ <div
38
+ class="pie"
39
+ :style="`--p:${item.progress}`"
40
+ style="--b: 2px"
41
+ :class="{ complete: item.progress === 100 }"
42
+ >
43
+ <span class="progress" v-if="item.progress < 100">{{
44
+ `${item.progress.toFixed(0)}`
45
+ }}</span>
46
+ <MaterialIcon class="success" icon="check" />
47
+ </div>
48
+ <Btn
49
+ thin
50
+ class="delete-btn"
51
+ @click.stop="deleteImg(item)"
52
+ icon="delete"
53
+ v-if="item.progress === 100"
54
+ />
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ <input
61
+ class="file-input"
62
+ type="file"
63
+ @change="handleFileInput"
64
+ ref="fileInputEl"
65
+ :multiple="context?.attrs.multiple || false"
66
+ />
67
+ </div>
81
68
  </template>
82
69
 
83
70
  <script setup lang="ts">
84
71
  interface UploadFile {
85
- dataUrl: string;
86
- progress: number;
87
- uploading: boolean;
88
- file?: File;
89
- name: string;
90
- serverFile?: any;
91
- uploaded: boolean;
72
+ dataUrl: string;
73
+ progress: number;
74
+ uploading: boolean;
75
+ file?: File;
76
+ name: string;
77
+ serverFile?: any;
78
+ uploaded: boolean;
92
79
  }
93
80
 
94
- import { onMounted, onUnmounted } from 'vue';
81
+ import { onMounted, onUnmounted } from "vue";
95
82
 
96
- import { MaterialIcon, Btn, useBagel } from '@bagelink/vue';
83
+ import { MaterialIcon, Btn, useBagel } from "@bagelink/vue";
97
84
 
98
85
  const bagel = useBagel();
99
86
 
@@ -104,125 +91,130 @@ const fileInputEl = $ref<HTMLInputElement>();
104
91
 
105
92
  const files = $ref<UploadFile[]>([]);
106
93
 
107
- const props = withDefaults(defineProps<{
108
- context: Record<string, any>;
109
- dragDropLabel?: string;
110
- browseLabel?: string;
111
- }>(), {
112
- dragDropLabel: 'Drag and drop your files here',
113
- browseLabel: 'or browse',
114
- });
94
+ const props = withDefaults(
95
+ defineProps<{
96
+ context: Record<string, any>;
97
+ dragDropLabel?: string;
98
+ browseLabel?: string;
99
+ }>(),
100
+ {
101
+ dragDropLabel: "Drag and drop your files here",
102
+ browseLabel: "or browse",
103
+ }
104
+ );
115
105
 
116
106
  const allowUpload = $computed(() => {
117
- const tooManyFiles = !props.context?.attrs.multiple && files.length > 0;
118
- return !tooManyFiles;
107
+ const tooManyFiles = !props.context?.attrs.multiple && files.length > 0;
108
+ return !tooManyFiles;
119
109
  });
120
110
 
121
- const openFileDialog = () => (allowUpload ? fileInputEl?.click() : '');
111
+ const openFileDialog = () => (allowUpload ? fileInputEl?.click() : "");
122
112
 
123
113
  function animateCircle(e: DragEvent) {
124
- e.preventDefault();
125
- const zoneRect = dropZoneEl?.getBoundingClientRect?.();
126
- if (!zoneRect) return;
127
- draggingOver = true;
128
- const left = e.clientX - zoneRect.left;
129
- const top = e.clientY - zoneRect.top;
130
- dropCircle?.style?.setProperty?.('left', `${left}px`);
131
- dropCircle?.style?.setProperty?.('top', `${top}px`);
114
+ e.preventDefault();
115
+ const zoneRect = dropZoneEl?.getBoundingClientRect?.();
116
+ if (!zoneRect) return;
117
+ draggingOver = true;
118
+ const left = e.clientX - zoneRect.left;
119
+ const top = e.clientY - zoneRect.top;
120
+ dropCircle?.style?.setProperty?.("left", `${left}px`);
121
+ dropCircle?.style?.setProperty?.("top", `${top}px`);
132
122
  }
133
123
 
134
124
  function emitValue() {
135
- // const fileValues = files.map((f) => f.serverFile?.id);
136
- // console.log({ files });
137
- if (!props.context?.attrs.multiple) props.context?.node.input(files[0].serverFile);
138
- // eslint-disable-next-line no-alert
139
- else alert('not implemented');
125
+ // const fileValues = files.map((f) => f.serverFile?.id);
126
+ // console.log({ files });
127
+ if (!props.context?.attrs.multiple)
128
+ props.context?.node.input(files[0].serverFile);
129
+ // eslint-disable-next-line no-alert
130
+ else alert("not implemented");
140
131
  }
141
132
 
142
- const isImg = (file: UploadFile) => file.file?.type.includes('image') ||
143
- file.serverFile?.mimetype?.match(/image\/|jpg|png|gif|bmp|jpeg/i) ||
144
- file.serverFile.extension?.match(/jpg|png|gif|bmp|jpeg/i);
133
+ const isImg = (file: UploadFile) =>
134
+ file.file?.type.includes("image") ||
135
+ file.serverFile?.mimetype?.match(/image\/|jpg|png|gif|bmp|jpeg/i) ||
136
+ file.serverFile.extension?.match(/jpg|png|gif|bmp|jpeg/i);
145
137
 
146
138
  function uploadFiles() {
147
- files.forEach(async (file) => {
148
- if (file.uploaded || file.uploading || !file.file) return;
149
- file.uploading = true;
150
- file.serverFile = await bagel.uploadFile(file.file, {
151
- onUploadProgress: (e) => (file.progress = e.progress * 100 - 1),
152
- });
153
- file.progress += 1;
154
- emitValue();
155
- file.uploaded = true;
156
- file.uploading = false;
157
- });
139
+ files.forEach(async (file) => {
140
+ if (file.uploaded || file.uploading || !file.file) return;
141
+ file.uploading = true;
142
+ file.serverFile = await bagel.uploadFile(file.file, {
143
+ onUploadProgress: (e) => (file.progress = e.progress * 100 - 1),
144
+ });
145
+ file.progress += 1;
146
+ emitValue();
147
+ file.uploaded = true;
148
+ file.uploading = false;
149
+ });
158
150
  }
159
151
 
160
152
  const deleteImg = async (file: UploadFile) => {
161
- await bagel.delete(`files/${file.serverFile.id}`);
162
- const index = files.indexOf(file);
163
- files.splice(index, 1);
164
- emitValue();
153
+ await bagel.delete(`files/${file.serverFile.id}`);
154
+ const index = files.indexOf(file);
155
+ files.splice(index, 1);
156
+ emitValue();
165
157
  };
166
158
 
167
159
  function readAsDataURL(file: File): Promise<any> {
168
- return new Promise((resolve, reject) => {
169
- const reader = new FileReader();
170
- reader.onload = () => resolve(reader.result);
171
- reader.onerror = reject;
172
- reader.readAsDataURL(file);
173
- });
160
+ return new Promise((resolve, reject) => {
161
+ const reader = new FileReader();
162
+ reader.onload = () => resolve(reader.result);
163
+ reader.onerror = reject;
164
+ reader.readAsDataURL(file);
165
+ });
174
166
  }
175
167
 
176
168
  async function addFiles(addedFiles: FileList) {
177
- if (!allowUpload) return;
178
- for (let i = 0; i < addedFiles.length; i++) {
179
- const f = addedFiles[i];
180
- const file: UploadFile = {
181
- // eslint-disable-next-line no-await-in-loop
182
- dataUrl: await readAsDataURL(f),
183
- file: f,
184
- name: f.name,
185
- progress: 0,
186
- uploading: false,
187
- uploaded: false,
188
- };
189
- files.push(file);
190
- }
191
- uploadFiles();
169
+ if (!allowUpload) return;
170
+ for (let i = 0; i < addedFiles.length; i++) {
171
+ const f = addedFiles[i];
172
+ const file: UploadFile = {
173
+ // eslint-disable-next-line no-await-in-loop
174
+ dataUrl: await readAsDataURL(f),
175
+ file: f,
176
+ name: f.name,
177
+ progress: 0,
178
+ uploading: false,
179
+ uploaded: false,
180
+ };
181
+ files.push(file);
182
+ }
183
+ uploadFiles();
192
184
  }
193
185
 
194
186
  onMounted(() => {
195
- dropZoneEl?.addEventListener('dragover', animateCircle);
196
- if (!props.context?.attrs.multiple && props.context?.value) {
197
- files.push({
198
- serverFile: props.context?.value,
199
- uploaded: true,
200
- uploading: false,
201
- progress: 100,
202
- dataUrl: props.context?.value?.url,
203
- name: props.context?.value?.name,
204
- });
205
- }
187
+ dropZoneEl?.addEventListener("dragover", animateCircle);
188
+ if (!props.context?.attrs.multiple && props.context?.value) {
189
+ files.push({
190
+ serverFile: props.context?.value,
191
+ uploaded: true,
192
+ uploading: false,
193
+ progress: 100,
194
+ dataUrl: props.context?.value?.url,
195
+ name: props.context?.value?.name,
196
+ });
197
+ }
206
198
  });
207
- onUnmounted(() => dropZoneEl?.removeEventListener('dragover', animateCircle));
199
+ onUnmounted(() => dropZoneEl?.removeEventListener("dragover", animateCircle));
208
200
 
209
201
  function handleFileInput(e: Event) {
210
- const filesToAdd: FileList = (e.target as any).files;
211
- void addFiles(filesToAdd); // TODO: Nati: should be awaited?
202
+ const filesToAdd: FileList = (e.target as any).files;
203
+ void addFiles(filesToAdd); // TODO: Nati: should be awaited?
212
204
  }
213
205
 
214
206
  function onDrop(e: DragEvent) {
215
- draggingOver = false;
216
- e.preventDefault();
217
- const filesToAdd = e.dataTransfer?.files;
218
- if (filesToAdd) void addFiles(filesToAdd); // TODO: Nati: should be awaited?
207
+ draggingOver = false;
208
+ e.preventDefault();
209
+ const filesToAdd = e.dataTransfer?.files;
210
+ if (filesToAdd) void addFiles(filesToAdd); // TODO: Nati: should be awaited?
219
211
  }
220
212
  </script>
221
213
  <style>
222
214
  .uploading-wrap {
223
- width: 100%;
224
- padding-right: 5px;
225
- padding-left: 5px;
215
+ width: 100%;
216
+ padding-right: 5px;
217
+ padding-left: 5px;
226
218
  }
227
219
 
228
220
  /*
@@ -230,162 +222,166 @@ function onDrop(e: DragEvent) {
230
222
  */
231
223
 
232
224
  .img-label .icon-font {
233
- font-size: 30px;
234
- margin-bottom: 10px;
225
+ font-size: 30px;
226
+ margin-bottom: 10px;
235
227
  }
236
228
 
237
229
  .img-label span {
238
- text-decoration: underline;
230
+ text-decoration: underline;
239
231
  }
240
232
 
241
233
  .file-input {
242
- display: none;
234
+ display: none;
243
235
  }
244
236
 
245
237
  .files-wrapper {
246
- flex-direction: column;
247
- border-radius: 10px;
248
- /*overflow: hidden;*/
249
- min-height: calc(var(--input-height) * 1.5);
238
+ flex-direction: column;
239
+ border-radius: 10px;
240
+ /*overflow: hidden;*/
241
+ min-height: calc(var(--input-height) * 1.5);
250
242
 
251
- font-size: var(--input-font-size);
243
+ font-size: var(--input-font-size);
252
244
  }
253
245
 
254
246
  .drop-zone {
255
- background-color: var(--bgl-bg);
256
- height: 100%;
257
- width: 100%;
258
- flex-grow: 1;
259
- position: relative;
260
- overflow: hidden;
261
- cursor: pointer;
262
- transition: var(--bgl-transition);
263
- outline: dashed 1px var(--border-color);
264
- border-radius: 10px;
265
- padding: 1px;
266
- display: flex;
267
- flex-direction: column;
268
- align-items: center;
269
- justify-content: center;
270
- color: var(--input-color);
247
+ background-color: var(--input-bg);
248
+ height: 100%;
249
+ width: 100%;
250
+ flex-grow: 1;
251
+ position: relative;
252
+ overflow: hidden;
253
+ cursor: pointer;
254
+ transition: var(--bgl-transition);
255
+ outline: dashed 1px var(--border-color);
256
+ border-radius: 10px;
257
+ padding: 1px;
258
+ display: flex;
259
+ flex-direction: column;
260
+ align-items: center;
261
+ justify-content: center;
262
+ color: var(--input-color);
271
263
  }
272
264
 
273
265
  .drop-zone:hover {
274
- color: var(--bgl-blue);
275
- outline: dashed 1px var(--bgl-blue-tint);
266
+ color: var(--bgl-primary);
267
+ outline: dashed 1px var(--bgl-primary-tint);
276
268
  }
277
269
 
278
270
  .drop-circle {
279
- pointer-events: none;
280
- position: absolute;
281
- width: 100px;
282
- height: 100px;
283
- border-radius: 50%;
284
- background-color: var(--bgl-blue-tint);
285
- display: flex;
286
- transform: translate(-50%, -50%) scale(1);
287
- transform-origin: left top;
271
+ pointer-events: none;
272
+ position: absolute;
273
+ width: 100px;
274
+ height: 100px;
275
+ border-radius: 50%;
276
+ background-color: var(--bgl-primary-tint);
277
+ display: flex;
278
+ transform: translate(-50%, -50%) scale(1);
279
+ transform-origin: left top;
288
280
  }
289
281
 
290
282
  .load-file-bar {
291
- display: flex;
292
- align-items: center;
293
- justify-content: space-between;
294
- background: var(--bgl-white);
295
- border-radius: var(--btn-border-radius);
296
- width: 100%;
297
- color: var(--input-color);
298
- height: var(--btn-height);
299
- padding: 0.5rem;
300
- height: 46px;
301
- box-shadow: 0 1px 2px 0 rgb(0 0 0 / 10%);
302
- white-space: nowrap;
283
+ display: flex;
284
+ align-items: center;
285
+ justify-content: space-between;
286
+ background: var(--bgl-white);
287
+ border-radius: var(--btn-border-radius);
288
+ width: 100%;
289
+ color: var(--input-color);
290
+ height: var(--btn-height);
291
+ padding: 0.5rem;
292
+ height: 46px;
293
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 10%);
294
+ white-space: nowrap;
303
295
  }
304
296
 
305
297
  .load-file-bar p {
306
- width: calc(100% - 40px);
307
- overflow: hidden;
308
- text-overflow: ellipsis;
298
+ width: calc(100% - 40px);
299
+ overflow: hidden;
300
+ text-overflow: ellipsis;
309
301
  }
310
302
 
311
303
  .load-file-bar span {
312
- font-size: 10px;
304
+ font-size: 10px;
313
305
  }
314
306
 
315
307
  .pie {
316
- width: 30px;
317
- height: 30px;
318
- position: relative;
319
- display: flex;
320
- align-items: center;
321
- justify-content: center;
308
+ width: 30px;
309
+ height: 30px;
310
+ position: relative;
311
+ display: flex;
312
+ align-items: center;
313
+ justify-content: center;
322
314
  }
323
315
 
324
316
  .pie:before {
325
- content: '';
326
- position: absolute;
327
- border-radius: 50%;
328
- inset: 0;
329
- transition: all 0.2s ease-in-out;
330
- background: conic-gradient(var(--bgl-blue) calc(var(--p) * 1%), #0000 0);
331
- -webkit-mask: radial-gradient(farthest-side,
332
- #0000 calc(99% - var(--b)),
333
- #000 calc(100% - var(--b)));
334
- mask: radial-gradient(farthest-side,
335
- #0000 calc(99% - var(--b)),
336
- #000 calc(100% - var(--b)));
317
+ content: "";
318
+ position: absolute;
319
+ border-radius: 50%;
320
+ inset: 0;
321
+ transition: all 0.2s ease-in-out;
322
+ background: conic-gradient(var(--bgl-primary) calc(var(--p) * 1%), #0000 0);
323
+ -webkit-mask: radial-gradient(
324
+ farthest-side,
325
+ #0000 calc(99% - var(--b)),
326
+ #000 calc(100% - var(--b))
327
+ );
328
+ mask: radial-gradient(
329
+ farthest-side,
330
+ #0000 calc(99% - var(--b)),
331
+ #000 calc(100% - var(--b))
332
+ );
337
333
  }
338
334
 
339
335
  .pie .success {
340
- transform: scale(0);
341
- opacity: 0;
342
- transition: all 0.3s ease-in-out;
336
+ transform: scale(0);
337
+ opacity: 0;
338
+ transition: all 0.3s ease-in-out;
343
339
  }
344
340
 
345
341
  .pie .progress {
346
- position: absolute;
347
- font-size: 10px;
342
+ position: absolute;
343
+ font-size: 10px;
348
344
  }
349
345
 
350
346
  .pie.complete .progress {
351
- display: none;
347
+ display: none;
352
348
  }
353
349
 
354
350
  .pie.complete .success {
355
- transform: scale(1.3);
356
- opacity: 1;
351
+ transform: scale(1.3);
352
+ opacity: 1;
357
353
  }
358
354
 
359
355
  .pie.complete:before {
360
- background: conic-gradient(var(--bgl-green) calc(var(--p) * 1%), #0000 0);
356
+ background: conic-gradient(var(--bgl-green) calc(var(--p) * 1%), #0000 0);
361
357
  }
362
358
 
363
359
  .pie.complete {
364
- color: var(--bgl-green);
360
+ color: var(--bgl-green);
365
361
  }
366
362
  </style>
367
363
  <style>
368
364
  .pop-enter-active {
369
- transition: scale 0.2s cubic-bezier(0.55, 0, 0.1, 1);
365
+ transition: scale 0.2s cubic-bezier(0.55, 0, 0.1, 1);
370
366
  }
371
367
 
372
368
  .pop-leave-active {
373
- transition: scale 0.2s cubic-bezier(0.55, 0, 0.1, 1);
369
+ transition: scale 0.2s cubic-bezier(0.55, 0, 0.1, 1);
374
370
  }
375
371
 
376
372
  .pop-enter-from,
377
373
  .pop-leave-to {
378
- scale: 0;
374
+ scale: 0;
379
375
  }
380
376
 
381
377
  .delete-btn {
382
- margin-inline-end: -30px;
383
- opacity: 0;
384
- margin-inline-start: 10px;
378
+ margin-inline-end: -30px;
379
+ opacity: 0;
380
+ margin-inline-start: 10px;
385
381
  }
386
382
 
387
383
  .uploading-wrap:hover .delete-btn {
388
- opacity: 1;
389
- margin-inline-end: 0;
384
+ opacity: 1;
385
+ margin-inline-end: 0;
390
386
  }
391
387
  </style>