@fui-org/fui-cli 1.3.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +19 -3
  2. package/dist/fui-bmg5pnmq.js +379 -0
  3. package/dist/fui.js +1 -1
  4. package/package.json +3 -6
  5. package/skills/fui/SKILL.md +9 -41
  6. package/skills/fui-skill/SKILL.md +95 -225
  7. package/skills/fui-skill/assets/projectdefaultstyle-3.0.css +555 -0
  8. package/skills/fui-skill/assets/projectdefaultstyle.css +207 -235
  9. package/skills/fui-skill/references/INDEX.md +105 -137
  10. package/skills/fui-skill/references/advanced-techniques.md +76 -68
  11. package/skills/fui-skill/references/coding-standards.md +56 -56
  12. package/skills/fui-skill/references/component-design.md +166 -173
  13. package/skills/fui-skill/references/component-quickref.md +61 -60
  14. package/skills/fui-skill/references/component-table.md +128 -117
  15. package/skills/fui-skill/references/components-dialog.md +55 -56
  16. package/skills/fui-skill/references/components-display.md +24 -30
  17. package/skills/fui-skill/references/components-echart.md +186 -261
  18. package/skills/fui-skill/references/components-input.md +72 -96
  19. package/skills/fui-skill/references/controls-patterns.md +196 -342
  20. package/skills/fui-skill/references/controls-styling-vocabulary.md +130 -97
  21. package/skills/fui-skill/references/db-table-design.md +24 -28
  22. package/skills/fui-skill/references/db-workflow.md +191 -390
  23. package/skills/fui-skill/references/default-function.md +169 -128
  24. package/skills/fui-skill/references/design-modes.md +35 -63
  25. package/skills/fui-skill/references/echart-templates.md +204 -196
  26. package/skills/fui-skill/references/fastproject.md +62 -60
  27. package/skills/fui-skill/references/fsheet.md +109 -124
  28. package/skills/fui-skill/references/fullstack-workflow.md +90 -128
  29. package/skills/fui-skill/references/module-data-patterns.md +31 -40
  30. package/skills/fui-skill/references/module-json-anatomy.md +47 -52
  31. package/skills/fui-skill/references/module-structure.md +80 -196
  32. package/skills/fui-skill/references/new-session.md +49 -51
  33. package/skills/fui-skill/references/pdfmake.md +17 -17
  34. package/skills/fui-skill/references/permission-system.md +89 -108
  35. package/skills/fui-skill/references/platform-architecture.md +128 -153
  36. package/skills/fui-skill/references/project-config.md +102 -134
  37. package/skills/fui-skill/references/project-provisioning.md +139 -244
  38. package/skills/fui-skill/references/script-map.md +208 -242
  39. package/skills/fui-skill/references/sql-clr-functions.md +98 -97
  40. package/skills/fui-skill/references/system-design.md +63 -88
  41. package/skills/fui-skill/references/tapi-file-api.md +46 -52
  42. package/skills/fui-skill/references/tapi-permission-patterns.md +51 -53
  43. package/skills/fui-skill/references/tapi-reference.md +132 -207
  44. package/skills/fui-skill/references/tools-registry.md +84 -460
  45. package/skills/fui-skill/references/ui-crosswindow-patterns.md +79 -75
  46. package/skills/fui-skill/references/ui-dialog-patterns.md +98 -72
  47. package/skills/fui-skill/references/ui-layout-patterns.md +26 -26
  48. package/skills/fui-skill/references/ui-patterns.md +71 -83
  49. package/skills/fui-skill/references/ui-screenshot-review.md +63 -62
  50. package/skills/fui-skill/references/ui-table-cell-patterns.md +61 -59
  51. package/skills/fui-skill/references/ui-templates.md +16 -23
  52. package/skills/fui-skill/references/verification.md +236 -246
  53. package/skills/fui-skill/references/watcher-patterns.md +30 -63
  54. package/skills/fui-skill/references/websocket-realtime.md +83 -66
  55. package/skills/fui-skill/scripts/component-3.0.js +298 -131
  56. package/skills/fui-skill/scripts/component.js +277 -271
  57. package/skills/fui-skill/scripts/componentTable-3.0.js +182 -53
  58. package/skills/fui-skill/scripts/componentTable.js +171 -49
  59. package/skills/fui-skill/scripts/defaultfunction-3.0.js +88 -3
  60. package/skills/fui-skill/scripts/defaultfunction.js +88 -3
  61. package/skills/fui-skill/scripts/fsheet.js +38 -0
  62. package/dist/fui-y8an39cn.js +0 -420
  63. package/skills/fui-skill/README.md +0 -112
  64. package/skills/fui-skill/metadata.json +0 -75
  65. package/skills/fui-skill-cli/SKILL.md +0 -139
  66. package/skills/fui-skill-cli/references/INDEX.md +0 -110
  67. package/skills/fui-skill-cli/references/advanced-techniques.md +0 -168
  68. package/skills/fui-skill-cli/references/coding-standards.md +0 -112
  69. package/skills/fui-skill-cli/references/component-design.md +0 -448
  70. package/skills/fui-skill-cli/references/component-quickref.md +0 -78
  71. package/skills/fui-skill-cli/references/component-table.md +0 -248
  72. package/skills/fui-skill-cli/references/components-dialog.md +0 -191
  73. package/skills/fui-skill-cli/references/components-display.md +0 -141
  74. package/skills/fui-skill-cli/references/components-echart.md +0 -316
  75. package/skills/fui-skill-cli/references/components-input.md +0 -335
  76. package/skills/fui-skill-cli/references/controls-patterns.md +0 -701
  77. package/skills/fui-skill-cli/references/controls-styling-vocabulary.md +0 -137
  78. package/skills/fui-skill-cli/references/db-table-design.md +0 -73
  79. package/skills/fui-skill-cli/references/db-workflow.md +0 -288
  80. package/skills/fui-skill-cli/references/default-function.md +0 -425
  81. package/skills/fui-skill-cli/references/design-modes.md +0 -57
  82. package/skills/fui-skill-cli/references/echart-templates.md +0 -489
  83. package/skills/fui-skill-cli/references/fastproject.md +0 -99
  84. package/skills/fui-skill-cli/references/fsheet.md +0 -203
  85. package/skills/fui-skill-cli/references/fullstack-workflow.md +0 -313
  86. package/skills/fui-skill-cli/references/module-data-patterns.md +0 -117
  87. package/skills/fui-skill-cli/references/module-json-anatomy.md +0 -132
  88. package/skills/fui-skill-cli/references/module-structure.md +0 -141
  89. package/skills/fui-skill-cli/references/new-session.md +0 -85
  90. package/skills/fui-skill-cli/references/pdfmake.md +0 -60
  91. package/skills/fui-skill-cli/references/permission-system.md +0 -150
  92. package/skills/fui-skill-cli/references/platform-architecture.md +0 -269
  93. package/skills/fui-skill-cli/references/project-config.md +0 -303
  94. package/skills/fui-skill-cli/references/project-provisioning.md +0 -278
  95. package/skills/fui-skill-cli/references/script-map.md +0 -262
  96. package/skills/fui-skill-cli/references/sql-clr-functions.md +0 -225
  97. package/skills/fui-skill-cli/references/system-design.md +0 -89
  98. package/skills/fui-skill-cli/references/tapi-file-api.md +0 -185
  99. package/skills/fui-skill-cli/references/tapi-permission-patterns.md +0 -156
  100. package/skills/fui-skill-cli/references/tapi-reference.md +0 -474
  101. package/skills/fui-skill-cli/references/tools-registry.md +0 -84
  102. package/skills/fui-skill-cli/references/ui-crosswindow-patterns.md +0 -321
  103. package/skills/fui-skill-cli/references/ui-dialog-patterns.md +0 -255
  104. package/skills/fui-skill-cli/references/ui-layout-patterns.md +0 -176
  105. package/skills/fui-skill-cli/references/ui-patterns.md +0 -303
  106. package/skills/fui-skill-cli/references/ui-screenshot-review.md +0 -95
  107. package/skills/fui-skill-cli/references/ui-table-cell-patterns.md +0 -318
  108. package/skills/fui-skill-cli/references/ui-templates.md +0 -22
  109. package/skills/fui-skill-cli/references/verification.md +0 -236
  110. package/skills/fui-skill-cli/references/watcher-patterns.md +0 -163
  111. package/skills/fui-skill-cli/references/websocket-realtime.md +0 -271
@@ -0,0 +1,555 @@
1
+ .space-x-1>*:not(:first-child) {
2
+ margin-left: 0.25rem !important;
3
+ }
4
+
5
+ .space-x-2>*:not(:first-child) {
6
+ margin-left: 0.5rem !important;
7
+ }
8
+
9
+ .space-x-3>*:not(:first-child) {
10
+ margin-left: 0.75rem !important;
11
+ }
12
+
13
+ .space-x-4>*:not(:first-child) {
14
+ margin-left: 1rem !important;
15
+ }
16
+
17
+ .space-x-5>*:not(:first-child) {
18
+ margin-left: 1.25rem !important;
19
+ }
20
+
21
+ .space-x-6>*:not(:first-child) {
22
+ margin-left: 1.5rem !important;
23
+ }
24
+
25
+ .space-x-7>*:not(:first-child) {
26
+ margin-left: 1.75rem !important;
27
+ }
28
+
29
+ .space-x-8>*:not(:first-child) {
30
+ margin-left: 2rem !important;
31
+ }
32
+
33
+ .space-y-1>*:not(:first-child) {
34
+ margin-top: 0.25rem !important;
35
+ }
36
+
37
+ .space-y-2>*:not(:first-child) {
38
+ margin-top: 0.5rem !important;
39
+ }
40
+
41
+ .space-y-3>*:not(:first-child) {
42
+ margin-top: 0.75rem !important;
43
+ }
44
+
45
+ .space-y-4>*:not(:first-child) {
46
+ margin-top: 1rem !important;
47
+ }
48
+
49
+ .space-y-5>*:not(:first-child) {
50
+ margin-top: 1.25rem !important;
51
+ }
52
+
53
+ .space-y-6>*:not(:first-child) {
54
+ margin-top: 1.5rem !important;
55
+ }
56
+
57
+ .space-y-7>*:not(:first-child) {
58
+ margin-top: 1.75rem !important;
59
+ }
60
+
61
+ .space-y-8>*:not(:first-child) {
62
+ margin-top: 2rem !important;
63
+ }
64
+
65
+ /* ------------------------------------------------------------------------ */
66
+ .mw-200 {
67
+ max-width: 200px;
68
+ }
69
+
70
+ .mw-300 {
71
+ max-width: 300px;
72
+ }
73
+
74
+ .mw-400 {
75
+ max-width: 400px;
76
+ }
77
+
78
+ .mw-500 {
79
+ max-width: 500px;
80
+ }
81
+
82
+ .mw-600 {
83
+ max-width: 600px;
84
+ }
85
+
86
+ .mw-700 {
87
+ max-width: 700px;
88
+ }
89
+
90
+ .mw-800 {
91
+ max-width: 800px;
92
+ }
93
+
94
+ .mw-900 {
95
+ max-width: 900px;
96
+ }
97
+
98
+ .mw-1000 {
99
+ max-width: 1000px;
100
+ }
101
+
102
+ .mw-1200 {
103
+ max-width: 1200px;
104
+ }
105
+
106
+ .mw-1400 {
107
+ max-width: 1400px;
108
+ }
109
+
110
+ .hidden-container{
111
+ display: none;
112
+ }
113
+ /* ========== for FUI home page ================================================= */
114
+ html {
115
+ overflow-y: auto;
116
+ font-family: Roboto, sans-serif;
117
+ }
118
+
119
+ b {
120
+ font-weight: 500;
121
+ }
122
+
123
+ .wrs_editor .wrs_tickContainer {
124
+ display: none;
125
+ }
126
+
127
+ input::-webkit-outer-spin-button,
128
+ input::-webkit-inner-spin-button {
129
+ -webkit-appearance: none;
130
+ margin: 0;
131
+ }
132
+
133
+ input[type=number] {
134
+ -moz-appearance: textfield;
135
+ }
136
+
137
+ /* ================================================================================================= */
138
+ .v-list-item__spacer{
139
+ width: 10px !important;
140
+ }
141
+
142
+ .v-btn {
143
+ font-weight: 400;
144
+ }
145
+
146
+ .v-input--density-compact{
147
+ --v-input-control-height:36px;
148
+ --v-input-padding-top: 6px;
149
+ }
150
+
151
+ .v-input--density-compact .v-field--no-label, .v-input--density-compact .v-field--single-line, .v-input--density-compact .v-field--variant-outlined {
152
+ --v-field-padding-bottom: 6px;
153
+ }
154
+
155
+ .v-alert--density-compact {
156
+ padding-bottom: 6px;
157
+ padding-top: 6px;
158
+ }
159
+
160
+ .v-textarea .v-field__input {
161
+ height: auto;
162
+ }
163
+
164
+ .v-container {
165
+ padding: 12px;
166
+ }
167
+
168
+ /* ========================= grid ======================================================================== */
169
+
170
+ .v-container.grid-list-none .v-row .v-col {
171
+ padding: 0px
172
+ }
173
+
174
+ .v-container.grid-list-none .v-row:only-child {
175
+ margin: 0px
176
+ }
177
+
178
+ .v-container.grid-list-none .v-row:not(:only-child) {
179
+ margin: auto 0px
180
+ }
181
+
182
+ .v-container.grid-list-none :not(:only-child) .v-row:first-child {
183
+ margin-top: 0px
184
+ }
185
+
186
+ .v-container.grid-list-none :not(:only-child) .v-row:last-child {
187
+ margin-bottom: 0px
188
+ }
189
+
190
+ .v-container.grid-list-xs .v-row .v-col {
191
+ padding: 1px
192
+ }
193
+
194
+ .v-container.grid-list-xs .v-row:only-child {
195
+ margin: -1px
196
+ }
197
+
198
+ .v-container.grid-list-xs .v-row:not(:only-child) {
199
+ margin: auto -1px
200
+ }
201
+
202
+ .v-container.grid-list-xs :not(:only-child) .v-row:first-child {
203
+ margin-top: -1px
204
+ }
205
+
206
+ .v-container.grid-list-xs :not(:only-child) .v-row:last-child {
207
+ margin-bottom: -1px
208
+ }
209
+
210
+ .v-container.grid-list-sm .v-row .v-col {
211
+ padding: 2px
212
+ }
213
+
214
+ .v-container.grid-list-sm .v-row:only-child {
215
+ margin: -2px
216
+ }
217
+
218
+ .v-container.grid-list-sm .v-row:not(:only-child) {
219
+ margin: auto -2px
220
+ }
221
+
222
+ .v-container.grid-list-sm :not(:only-child) .v-row:first-child {
223
+ margin-top: -2px
224
+ }
225
+
226
+ .v-container.grid-list-sm :not(:only-child) .v-row:last-child {
227
+ margin-bottom: -2px
228
+ }
229
+
230
+ .v-container.grid-list-md .v-row .v-col {
231
+ padding: 4px
232
+ }
233
+
234
+ .v-container.grid-list-md .v-row:only-child {
235
+ margin: -4px
236
+ }
237
+
238
+ .v-container.grid-list-md .v-row:not(:only-child) {
239
+ margin: auto -4px
240
+ }
241
+
242
+ .v-container.grid-list-md :not(:only-child) .v-row:first-child {
243
+ margin-top: -4px
244
+ }
245
+
246
+ .v-container.grid-list-md :not(:only-child) .v-row:last-child {
247
+ margin-bottom: -4px
248
+ }
249
+
250
+ .v-container.grid-list-lg .v-row .v-col {
251
+ padding: 8px
252
+ }
253
+
254
+ .v-container.grid-list-lg .v-row:only-child {
255
+ margin: -8px
256
+ }
257
+
258
+ .v-container.grid-list-lg .v-row:not(:only-child) {
259
+ margin: auto -8px
260
+ }
261
+
262
+ .v-container.grid-list-lg :not(:only-child) .v-row:first-child {
263
+ margin-top: -8px
264
+ }
265
+
266
+ .v-container.grid-list-lg :not(:only-child) .v-row:last-child {
267
+ margin-bottom: -8px
268
+ }
269
+
270
+ .v-container.grid-list-xl .v-row .v-col {
271
+ padding: 12px
272
+ }
273
+
274
+ .v-container.grid-list-xl .v-row:only-child {
275
+ margin: -12px
276
+ }
277
+
278
+ .v-container.grid-list-xl .v-row:not(:only-child) {
279
+ margin: auto -12px
280
+ }
281
+
282
+ .v-container.grid-list-xl :not(:only-child) .v-row:first-child {
283
+ margin-top: -12px
284
+ }
285
+
286
+ .v-container.grid-list-xl :not(:only-child) .v-row:last-child {
287
+ margin-bottom: -12px
288
+ }
289
+
290
+ /* ----------------------------------------------------------------- */
291
+ .grow {
292
+ flex-grow: 1;
293
+ flex-shrink: 0;
294
+ flex-basis: content;
295
+ }
296
+
297
+ .shrink {
298
+ flex-grow: 0;
299
+ flex-shrink: 1;
300
+ flex-basis: content;
301
+ }
302
+
303
+ /* ================================================================================================= */
304
+ /* json ace_editor */
305
+
306
+ .ace_editor.ace-jsoneditor {
307
+ font-size: 1em !important;
308
+ line-height: 1.5em !important
309
+ }
310
+
311
+ .jsoneditor-poweredBy {
312
+ display: none;
313
+ }
314
+
315
+
316
+ /* jconfirm */
317
+ @media only screen and (min-width: 600px) {
318
+ .jconfirm .jconfirm-box {
319
+ min-width: 460px;
320
+ max-width: 500px;
321
+ }
322
+ }
323
+
324
+ .jconfirm .jconfirm-box {
325
+ font-family: Roboto, sans-serif !important;
326
+ border-top: 0 !important;
327
+ }
328
+
329
+ .jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button,
330
+ .jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button {
331
+ font-weight: 400 !important;
332
+ font-size: .9rem !important;
333
+ }
334
+
335
+ .jconfirm .jconfirm-box-container {
336
+ margin: auto;
337
+ }
338
+
339
+ .jconfirm .jconfirm-box .jconfirm-buttons>button {
340
+ margin-left: 10px !important;
341
+ margin-right: 10px !important;
342
+
343
+ }
344
+
345
+ .jconfirm.jconfirm-white .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,
346
+ .jconfirm.jconfirm-light .jconfirm-box .jconfirm-title-c .jconfirm-icon-c {
347
+ font-size: 2.9em !important;
348
+ margin: 0 !important;
349
+ }
350
+
351
+ .jconfirm .jconfirm-box div.jconfirm-title-c {
352
+ display: grid;
353
+ line-height: inherit;
354
+ text-align: center;
355
+ font-size: 1.1rem !important;
356
+ }
357
+
358
+ .jconfirm .jconfirm-box .jconfirm-content-pane .jconfirm-content,
359
+ .jconfirm .jconfirm-box .jconfirm-buttons{
360
+ text-align: center;
361
+ float: inherit;
362
+ }
363
+
364
+
365
+ /* ============================================================== */
366
+
367
+ .ck.ck-editor {
368
+ overflow-x: hidden;
369
+ font-size: initial;
370
+ }
371
+
372
+ /* =================================================================================================== */
373
+ .tTable {
374
+ border-top: thin solid rgba(0, 0, 0, .12) !important;
375
+ border-radius: 0;
376
+ }
377
+
378
+ .tTable .divider {
379
+ border-right: 1px solid rgba(0, 0, 0, .12);
380
+ }
381
+
382
+
383
+ /* ===================================================================================================
384
+ =============== scrollbar Style ============================================================================
385
+ =================================================================================================== */
386
+ /* Thanh cuộn mảnh, ẩn khi không hover, hiện dần khi rê chuột vào (giống #content-left-box của ME).
387
+ Màu thumb đi qua biến --fp-scrollbar; phải đăng ký @property thì biến mới transition được
388
+ (biến chưa đăng ký chỉ nhảy giá trị, không có hiệu ứng mờ dần). */
389
+ @property --fp-scrollbar {
390
+ syntax: '<color>';
391
+ inherits: false;
392
+ initial-value: transparent;
393
+ }
394
+
395
+ .fpScrollbar, .v-navigation-drawer__content {
396
+ overflow-y: auto;
397
+ --fp-scrollbar: transparent;
398
+ /* Firefox */
399
+ scrollbar-width: thin;
400
+ scrollbar-color: var(--fp-scrollbar) transparent;
401
+ /* CHỈ transition biến. Thêm "scrollbar-color" vào đây thì mỗi khung hình biến đổi màu lại khởi động lại
402
+ transition của scrollbar-color từ đầu ⇒ màu đổi từng nấc, chậm gấp 2–3 lần (đo trên lhu-docs). */
403
+ transition: --fp-scrollbar 600ms ease;
404
+ }
405
+
406
+ .fpScrollbar:hover, .v-navigation-drawer__content:hover {
407
+ --fp-scrollbar: rgba(0, 0, 0, 0.25);
408
+ transition: --fp-scrollbar 300ms ease;
409
+ }
410
+
411
+ /* Chrome/Edge/Safari cũ. Từ Chrome 121, đã khai scrollbar-color thì Chrome BỎ QUA ::-webkit-scrollbar
412
+ ⇒ thanh thực tế rộng ~10px (mức "thin" của trình duyệt), không phải 5px. */
413
+ .fpScrollbar::-webkit-scrollbar, .v-navigation-drawer__content::-webkit-scrollbar {
414
+ width: 5px;
415
+ height: 5px;
416
+ }
417
+
418
+ .fpScrollbar::-webkit-scrollbar-track, .v-navigation-drawer__content::-webkit-scrollbar-track {
419
+ background: transparent;
420
+ }
421
+
422
+ .fpScrollbar::-webkit-scrollbar-thumb, .v-navigation-drawer__content::-webkit-scrollbar-thumb {
423
+ background-color: var(--fp-scrollbar);
424
+ border-radius: 4px;
425
+ }
426
+
427
+ /* ===================================================================================================
428
+ =============== Loader ============================================================================
429
+ =================================================================================================== */
430
+
431
+ .loader-wrapper {
432
+ position: fixed;
433
+ top: 0;
434
+ left: 0;
435
+ width: 100%;
436
+ height: 100%;
437
+ z-index: 100000;
438
+ }
439
+
440
+ .loader-wrapper .loader {
441
+ display: block;
442
+ position: relative;
443
+ left: 50%;
444
+ top: 50%;
445
+ width: 111px;
446
+ height: 111px;
447
+ margin: -59px 0 0 -59px;
448
+ border-radius: 50%;
449
+ border: 3px solid transparent;
450
+ border-top-color: #3498db;
451
+ -webkit-animation: fui-loader-spin 2s linear infinite;
452
+ /* Chrome, Opera 15+, Safari 5+ */
453
+ animation: fui-loader-spin 2s linear infinite;
454
+ /* Chrome, Firefox 16+, IE 10+, Opera */
455
+ z-index: 1001;
456
+ }
457
+
458
+ .loader-wrapper .loader:before {
459
+ content: "";
460
+ position: absolute;
461
+ top: 5px;
462
+ left: 5px;
463
+ right: 5px;
464
+ bottom: 5px;
465
+ border-radius: 50%;
466
+ border: 3px solid transparent;
467
+ border-top-color: #e74c3c;
468
+ -webkit-animation: fui-loader-spin 3s linear infinite;
469
+ /* Chrome, Opera 15+, Safari 5+ */
470
+ animation: fui-loader-spin 3s linear infinite;
471
+ /* Chrome, Firefox 16+, IE 10+, Opera */
472
+ }
473
+
474
+ .loader-wrapper .loader:after {
475
+ content: "";
476
+ position: absolute;
477
+ top: 15px;
478
+ left: 15px;
479
+ right: 15px;
480
+ bottom: 15px;
481
+ border-radius: 50%;
482
+ border: 3px solid transparent;
483
+ border-top-color: #f9c922;
484
+ -webkit-animation: fui-loader-spin 1.5s linear infinite;
485
+ /* Chrome, Opera 15+, Safari 5+ */
486
+ animation: fui-loader-spin 1.5s linear infinite;
487
+ /* Chrome, Firefox 16+, IE 10+, Opera */
488
+ }
489
+
490
+ @-webkit-keyframes fui-loader-spin {
491
+ 0% {
492
+ -webkit-transform: rotate(0deg);
493
+ /* Chrome, Opera 15+, Safari 3.1+ */
494
+ -ms-transform: rotate(0deg);
495
+ /* IE 9 */
496
+ transform: rotate(0deg);
497
+ /* Firefox 16+, IE 10+, Opera */
498
+ }
499
+
500
+ 100% {
501
+ -webkit-transform: rotate(360deg);
502
+ /* Chrome, Opera 15+, Safari 3.1+ */
503
+ -ms-transform: rotate(360deg);
504
+ /* IE 9 */
505
+ transform: rotate(360deg);
506
+ /* Firefox 16+, IE 10+, Opera */
507
+ }
508
+ }
509
+
510
+ @keyframes fui-loader-spin {
511
+ 0% {
512
+ -webkit-transform: rotate(0deg);
513
+ /* Chrome, Opera 15+, Safari 3.1+ */
514
+ -ms-transform: rotate(0deg);
515
+ /* IE 9 */
516
+ transform: rotate(0deg);
517
+ /* Firefox 16+, IE 10+, Opera */
518
+ }
519
+
520
+ 100% {
521
+ -webkit-transform: rotate(360deg);
522
+ /* Chrome, Opera 15+, Safari 3.1+ */
523
+ -ms-transform: rotate(360deg);
524
+ /* IE 9 */
525
+ transform: rotate(360deg);
526
+ /* Firefox 16+, IE 10+, Opera */
527
+ }
528
+ }
529
+ /* ==============================================================================*/
530
+ .fui-loading {
531
+ --color-1: #1867c0;
532
+ --size: 0.8px;
533
+
534
+ width: calc(48 * var(--size));
535
+ height: calc(48 * var(--size));
536
+ border: calc(5 * var(--size)) dotted var(--color-1);
537
+ border-radius: 50%;
538
+ display: inline-block;
539
+ position: relative;
540
+ box-sizing: border-box;
541
+ animation: rotation 4s linear infinite;
542
+ }
543
+
544
+ @keyframes rotation {
545
+ 0% {
546
+ transform: rotate(0deg);
547
+ }
548
+ 100% {
549
+ transform: rotate(360deg);
550
+ }
551
+ }
552
+
553
+ /* ===================================================================================================
554
+ =============== Loader ============================================================================
555
+ =================================================================================================== */