ui-svelte 0.2.12 → 0.2.14

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 (98) hide show
  1. package/README.md +2 -2
  2. package/dist/charts/ArcChart.svelte +0 -1
  3. package/dist/control/Fab.svelte +103 -0
  4. package/dist/control/Fab.svelte.d.ts +25 -0
  5. package/dist/control/Record.svelte +0 -3
  6. package/dist/control/ToggleTheme.svelte +1 -1
  7. package/dist/control/Video.svelte +2 -0
  8. package/dist/control/css/btn.css +17 -17
  9. package/dist/control/css/fab.css +84 -0
  10. package/dist/control/css/media.css +7 -7
  11. package/dist/control/css/toggle-group.css +1 -17
  12. package/dist/css/decorations.css +348 -189
  13. package/dist/css/utilities.css +0 -4
  14. package/dist/display/Accordion.svelte +3 -3
  15. package/dist/display/Accordion.svelte.d.ts +1 -1
  16. package/dist/display/Card.svelte +3 -3
  17. package/dist/display/Card.svelte.d.ts +1 -1
  18. package/dist/display/Code.svelte +1 -1
  19. package/dist/display/Collapsible.svelte +3 -3
  20. package/dist/display/Collapsible.svelte.d.ts +1 -1
  21. package/dist/display/Countdown.svelte +169 -0
  22. package/dist/display/Countdown.svelte.d.ts +21 -0
  23. package/dist/display/Item.svelte +12 -0
  24. package/dist/display/Item.svelte.d.ts +2 -0
  25. package/dist/display/Marquee.svelte +0 -2
  26. package/dist/display/Section.svelte +3 -3
  27. package/dist/display/Section.svelte.d.ts +1 -1
  28. package/dist/display/css/accordion.css +14 -14
  29. package/dist/display/css/alert.css +42 -15
  30. package/dist/display/css/avatar.css +36 -36
  31. package/dist/display/css/card.css +108 -36
  32. package/dist/display/css/chip.css +16 -16
  33. package/dist/display/css/collapsible.css +32 -32
  34. package/dist/display/css/countdown.css +206 -0
  35. package/dist/display/css/item.css +24 -0
  36. package/dist/display/css/marquee.css +0 -3
  37. package/dist/display/css/section.css +88 -109
  38. package/dist/display/css/table.css +1 -16
  39. package/dist/form/ColorField.svelte +60 -2
  40. package/dist/form/DragDrop.svelte +317 -87
  41. package/dist/form/DragDrop.svelte.d.ts +1 -0
  42. package/dist/form/Dropzone.svelte +3 -3
  43. package/dist/form/Dropzone.svelte.d.ts +1 -1
  44. package/dist/form/ImageCropper.svelte +135 -4
  45. package/dist/form/RadioGroup.svelte +6 -2
  46. package/dist/form/RadioGroup.svelte.d.ts +1 -1
  47. package/dist/form/Slider.svelte +6 -2
  48. package/dist/form/Slider.svelte.d.ts +1 -1
  49. package/dist/form/TextField.svelte +13 -4
  50. package/dist/form/TextField.svelte.d.ts +3 -2
  51. package/dist/form/Toggle.svelte +6 -2
  52. package/dist/form/Toggle.svelte.d.ts +1 -1
  53. package/dist/form/css/control.css +14 -14
  54. package/dist/form/css/csv-field.css +8 -13
  55. package/dist/form/css/drag-drop.css +90 -127
  56. package/dist/form/css/dropzone.css +8 -8
  57. package/dist/form/css/editor.css +14 -14
  58. package/dist/form/css/image-cropper.css +28 -7
  59. package/dist/form/css/radio-group.css +25 -0
  60. package/dist/form/css/slider.css +36 -0
  61. package/dist/form/css/textarea.css +14 -14
  62. package/dist/form/css/toggle.css +12 -0
  63. package/dist/hooks/use-chat.svelte.js +1 -1
  64. package/dist/hooks/use-form.svelte.js +3 -3
  65. package/dist/hooks/use-search.svelte.js +0 -3
  66. package/dist/icons/index.d.ts +4 -0
  67. package/dist/icons/index.js +4 -0
  68. package/dist/index.css +28 -48
  69. package/dist/index.d.ts +4 -2
  70. package/dist/index.js +3 -1
  71. package/dist/layout/Provider.svelte +5 -5
  72. package/dist/layout/Sidebar.svelte +17 -8
  73. package/dist/layout/Sidebar.svelte.d.ts +2 -1
  74. package/dist/layout/css/app-bar.css +8 -7
  75. package/dist/layout/css/footer.css +7 -7
  76. package/dist/layout/css/sidebar.css +120 -59
  77. package/dist/navigation/BottomNav.svelte +23 -14
  78. package/dist/navigation/css/bottom-nav.css +74 -34
  79. package/dist/navigation/css/nav-menu.css +14 -15
  80. package/dist/navigation/css/side-nav.css +14 -15
  81. package/dist/overlay/AlertDialog.svelte +58 -0
  82. package/dist/overlay/AlertDialog.svelte.d.ts +14 -25
  83. package/dist/overlay/Command.svelte +177 -170
  84. package/dist/overlay/Command.svelte.d.ts +12 -3
  85. package/dist/overlay/Drawer.svelte +4 -4
  86. package/dist/overlay/Drawer.svelte.d.ts +1 -1
  87. package/dist/overlay/Modal.svelte +4 -4
  88. package/dist/overlay/Modal.svelte.d.ts +1 -1
  89. package/dist/overlay/Tooltip.svelte +0 -5
  90. package/dist/overlay/css/command.css +30 -42
  91. package/dist/overlay/css/drawer.css +10 -10
  92. package/dist/overlay/css/modal.css +70 -18
  93. package/dist/overlay/css/toast.css +42 -14
  94. package/dist/overlay/css/tooltip.css +49 -23
  95. package/dist/stores/theme.svelte.js +19 -12
  96. package/package.json +3 -2
  97. package/dist/utils/charts.d.ts +0 -27
  98. package/dist/utils/charts.js +0 -140
@@ -95,6 +95,8 @@
95
95
  let imageHeight = $state(0);
96
96
  let scale = $state(1);
97
97
 
98
+ let isTouchDevice = $state(false);
99
+
98
100
  const sizeClasses = {
99
101
  xs: 'is-xs',
100
102
  sm: 'is-sm',
@@ -250,6 +252,114 @@
250
252
  document.removeEventListener('mouseup', handleMouseUp);
251
253
  }
252
254
 
255
+ function handleTouchStart(e: TouchEvent, handle?: string) {
256
+ e.preventDefault();
257
+ e.stopPropagation();
258
+
259
+ const touch = e.touches[0];
260
+
261
+ if (handle) {
262
+ isResizing = true;
263
+ resizeHandle = handle;
264
+ } else {
265
+ isCropDragging = true;
266
+ }
267
+
268
+ startX = touch.clientX;
269
+ startY = touch.clientY;
270
+ startCropX = cropX;
271
+ startCropY = cropY;
272
+ startCropWidth = cropWidth;
273
+ startCropHeight = cropHeight;
274
+ }
275
+
276
+ function handleTouchMove(e: TouchEvent) {
277
+ if (!isCropDragging && !isResizing) return;
278
+
279
+ e.preventDefault();
280
+ const touch = e.touches[0];
281
+ const deltaX = touch.clientX - startX;
282
+ const deltaY = touch.clientY - startY;
283
+
284
+ if (isCropDragging) {
285
+ cropX = Math.max(0, Math.min(imageWidth - cropWidth, startCropX + deltaX));
286
+ cropY = Math.max(0, Math.min(imageHeight - cropHeight, startCropY + deltaY));
287
+ } else if (isResizing) {
288
+ let newWidth = startCropWidth;
289
+ let newHeight = startCropHeight;
290
+ let newX = startCropX;
291
+ let newY = startCropY;
292
+
293
+ if (resizeHandle.includes('e')) {
294
+ newWidth = Math.max(minWidth, Math.min(imageWidth - startCropX, startCropWidth + deltaX));
295
+ }
296
+ if (resizeHandle.includes('w')) {
297
+ newWidth = Math.max(minWidth, startCropWidth - deltaX);
298
+ newX = startCropX + (startCropWidth - newWidth);
299
+ }
300
+ if (resizeHandle.includes('s')) {
301
+ newHeight = Math.max(
302
+ minHeight,
303
+ Math.min(imageHeight - startCropY, startCropHeight + deltaY)
304
+ );
305
+ }
306
+ if (resizeHandle.includes('n')) {
307
+ newHeight = Math.max(minHeight, startCropHeight - deltaY);
308
+ newY = startCropY + (startCropHeight - newHeight);
309
+ }
310
+
311
+ if (aspectRatio) {
312
+ if (resizeHandle.includes('e') || resizeHandle.includes('w')) {
313
+ newHeight = newWidth / aspectRatio;
314
+ } else {
315
+ newWidth = newHeight * aspectRatio;
316
+ }
317
+ }
318
+
319
+ if (maxWidth) newWidth = Math.min(newWidth, maxWidth);
320
+ if (maxHeight) newHeight = Math.min(newHeight, maxHeight);
321
+
322
+ cropWidth = newWidth;
323
+ cropHeight = newHeight;
324
+ cropX = Math.max(0, Math.min(imageWidth - cropWidth, newX));
325
+ cropY = Math.max(0, Math.min(imageHeight - cropHeight, newY));
326
+ }
327
+ }
328
+
329
+ function handleTouchEnd() {
330
+ isCropDragging = false;
331
+ isResizing = false;
332
+ resizeHandle = '';
333
+ }
334
+
335
+ import { onMount } from 'svelte';
336
+
337
+ onMount(() => {
338
+ isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;
339
+
340
+ const onGlobalTouchMove = (e: TouchEvent) => {
341
+ if (isCropDragging || isResizing) {
342
+ handleTouchMove(e);
343
+ }
344
+ };
345
+
346
+ const onGlobalTouchEnd = () => {
347
+ if (isCropDragging || isResizing) {
348
+ handleTouchEnd();
349
+ }
350
+ };
351
+
352
+ document.addEventListener('touchmove', onGlobalTouchMove, { passive: false });
353
+ document.addEventListener('touchend', onGlobalTouchEnd);
354
+ document.addEventListener('touchcancel', onGlobalTouchEnd);
355
+
356
+ return () => {
357
+ document.removeEventListener('touchmove', onGlobalTouchMove);
358
+ document.removeEventListener('touchend', onGlobalTouchEnd);
359
+ document.removeEventListener('touchcancel', onGlobalTouchEnd);
360
+ };
361
+ });
362
+
253
363
  function handleCrop() {
254
364
  if (!canvas || !image) return;
255
365
 
@@ -422,6 +532,7 @@
422
532
  class:is-circle={shape === 'circle'}
423
533
  style="left: {cropX}px; top: {cropY}px; width: {cropWidth}px; height: {cropHeight}px;"
424
534
  onmousedown={(e) => handleMouseDown(e)}
535
+ ontouchstart={(e) => handleTouchStart(e)}
425
536
  >
426
537
  <div class="crop-grid">
427
538
  <div class="grid-line grid-line-v" style="left: 33.33%;"></div>
@@ -433,23 +544,43 @@
433
544
  <div
434
545
  class="resize-handle handle-nw"
435
546
  onmousedown={(e) => handleMouseDown(e, 'nw')}
547
+ ontouchstart={(e) => handleTouchStart(e, 'nw')}
548
+ ></div>
549
+ <div
550
+ class="resize-handle handle-n"
551
+ onmousedown={(e) => handleMouseDown(e, 'n')}
552
+ ontouchstart={(e) => handleTouchStart(e, 'n')}
436
553
  ></div>
437
- <div class="resize-handle handle-n" onmousedown={(e) => handleMouseDown(e, 'n')}></div>
438
554
  <div
439
555
  class="resize-handle handle-ne"
440
556
  onmousedown={(e) => handleMouseDown(e, 'ne')}
557
+ ontouchstart={(e) => handleTouchStart(e, 'ne')}
558
+ ></div>
559
+ <div
560
+ class="resize-handle handle-e"
561
+ onmousedown={(e) => handleMouseDown(e, 'e')}
562
+ ontouchstart={(e) => handleTouchStart(e, 'e')}
441
563
  ></div>
442
- <div class="resize-handle handle-e" onmousedown={(e) => handleMouseDown(e, 'e')}></div>
443
564
  <div
444
565
  class="resize-handle handle-se"
445
566
  onmousedown={(e) => handleMouseDown(e, 'se')}
567
+ ontouchstart={(e) => handleTouchStart(e, 'se')}
568
+ ></div>
569
+ <div
570
+ class="resize-handle handle-s"
571
+ onmousedown={(e) => handleMouseDown(e, 's')}
572
+ ontouchstart={(e) => handleTouchStart(e, 's')}
446
573
  ></div>
447
- <div class="resize-handle handle-s" onmousedown={(e) => handleMouseDown(e, 's')}></div>
448
574
  <div
449
575
  class="resize-handle handle-sw"
450
576
  onmousedown={(e) => handleMouseDown(e, 'sw')}
577
+ ontouchstart={(e) => handleTouchStart(e, 'sw')}
578
+ ></div>
579
+ <div
580
+ class="resize-handle handle-w"
581
+ onmousedown={(e) => handleMouseDown(e, 'w')}
582
+ ontouchstart={(e) => handleTouchStart(e, 'w')}
451
583
  ></div>
452
- <div class="resize-handle handle-w" onmousedown={(e) => handleMouseDown(e, 'w')}></div>
453
584
  </div>
454
585
  </div>
455
586
  {/if}
@@ -15,7 +15,7 @@
15
15
  name?: string;
16
16
  info?: string;
17
17
  error?: string;
18
- color?: 'primary' | 'secondary' | 'muted';
18
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
19
19
  size?: 'sm' | 'md' | 'lg';
20
20
  };
21
21
  let {
@@ -34,7 +34,11 @@
34
34
  const colors = {
35
35
  primary: 'is-primary',
36
36
  secondary: 'is-secondary',
37
- muted: 'is-muted'
37
+ muted: 'is-muted',
38
+ success: 'is-success',
39
+ info: 'is-info',
40
+ danger: 'is-danger',
41
+ warning: 'is-warning'
38
42
  };
39
43
 
40
44
  const sizes = {
@@ -11,7 +11,7 @@ type Props = {
11
11
  name?: string;
12
12
  info?: string;
13
13
  error?: string;
14
- color?: 'primary' | 'secondary' | 'muted';
14
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
15
15
  size?: 'sm' | 'md' | 'lg';
16
16
  };
17
17
  declare const RadioGroup: import("svelte").Component<Props, {}, "value">;
@@ -9,7 +9,7 @@
9
9
  onchange?: (value: number) => void;
10
10
  size?: 'sm' | 'md' | 'lg';
11
11
  label?: string;
12
- color?: 'primary' | 'secondary' | 'muted';
12
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'warning' | 'danger';
13
13
  name?: string;
14
14
  hideLabel?: boolean;
15
15
  class?: string;
@@ -33,7 +33,11 @@
33
33
  const colors = {
34
34
  primary: 'is-primary',
35
35
  secondary: 'is-secondary',
36
- muted: 'is-muted'
36
+ muted: 'is-muted',
37
+ success: 'is-success',
38
+ info: 'is-info',
39
+ warning: 'is-warning',
40
+ danger: 'is-danger'
37
41
  };
38
42
 
39
43
  const sizes = {
@@ -6,7 +6,7 @@ type Props = {
6
6
  onchange?: (value: number) => void;
7
7
  size?: 'sm' | 'md' | 'lg';
8
8
  label?: string;
9
- color?: 'primary' | 'secondary' | 'muted';
9
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'warning' | 'danger';
10
10
  name?: string;
11
11
  hideLabel?: boolean;
12
12
  class?: string;
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { Icon, type IconData } from '../index.js';
3
3
  import { cn } from '../utils/class-names.js';
4
+ import type { Snippet } from 'svelte';
4
5
  import type { HTMLInputAttributes } from 'svelte/elements';
5
6
 
6
7
  type Props = {
@@ -13,8 +14,8 @@
13
14
  controlClass?: string;
14
15
  startIcon?: IconData;
15
16
  endIcon?: IconData;
16
- startText?: string;
17
- endText?: string;
17
+ startText?: string | Snippet;
18
+ endText?: string | Snippet;
18
19
  onchange?: (value: unknown) => void;
19
20
  oninput?: (value: unknown) => void;
20
21
  color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
@@ -137,7 +138,11 @@
137
138
  {/if}
138
139
 
139
140
  {#if startText}
140
- <span class={textClasses}>{startText}</span>
141
+ {#if typeof startText === 'string'}
142
+ <span class={textClasses}>{startText}</span>
143
+ {:else}
144
+ {@render startText()}
145
+ {/if}
141
146
  {/if}
142
147
 
143
148
  <input
@@ -163,7 +168,11 @@
163
168
  />
164
169
 
165
170
  {#if endText}
166
- <span class={textClasses}>{endText}</span>
171
+ {#if typeof endText === 'string'}
172
+ <span class={textClasses}>{endText}</span>
173
+ {:else}
174
+ {@render endText()}
175
+ {/if}
167
176
  {/if}
168
177
 
169
178
  {#if endIcon}
@@ -1,4 +1,5 @@
1
1
  import { type IconData } from '../index.js';
2
+ import type { Snippet } from 'svelte';
2
3
  import type { HTMLInputAttributes } from 'svelte/elements';
3
4
  type Props = {
4
5
  el?: HTMLInputElement;
@@ -10,8 +11,8 @@ type Props = {
10
11
  controlClass?: string;
11
12
  startIcon?: IconData;
12
13
  endIcon?: IconData;
13
- startText?: string;
14
- endText?: string;
14
+ startText?: string | Snippet;
15
+ endText?: string | Snippet;
15
16
  onchange?: (value: unknown) => void;
16
17
  oninput?: (value: unknown) => void;
17
18
  color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
@@ -11,7 +11,7 @@
11
11
  labelLeft?: string;
12
12
  labelRight?: string;
13
13
  name?: string;
14
- color?: 'primary' | 'secondary' | 'muted';
14
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
15
15
  };
16
16
  let {
17
17
  checked = $bindable(),
@@ -29,7 +29,11 @@
29
29
  const colors = {
30
30
  primary: 'is-primary',
31
31
  secondary: 'is-secondary',
32
- muted: 'is-muted'
32
+ muted: 'is-muted',
33
+ success: 'is-success',
34
+ info: 'is-info',
35
+ danger: 'is-danger',
36
+ warning: 'is-warning'
33
37
  };
34
38
  </script>
35
39
 
@@ -8,7 +8,7 @@ type Props = {
8
8
  labelLeft?: string;
9
9
  labelRight?: string;
10
10
  name?: string;
11
- color?: 'primary' | 'secondary' | 'muted';
11
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
12
12
  };
13
13
  declare const Toggle: import("svelte").Component<Props, {}, "checked">;
14
14
  type Toggle = ReturnType<typeof Toggle>;
@@ -59,51 +59,51 @@
59
59
  @apply rounded-ui;
60
60
 
61
61
  &.is-primary {
62
- @apply bg-on-primary text-primary;
62
+ @apply bg-soft-primary text-primary;
63
63
  &.is-active {
64
- @apply bg-on-primary/90;
64
+ @apply bg-soft-primary/90;
65
65
  }
66
66
  }
67
67
 
68
68
  &.is-secondary {
69
- @apply bg-on-secondary text-secondary;
69
+ @apply bg-soft-secondary text-secondary;
70
70
  &.is-active {
71
- @apply bg-on-secondary/90;
71
+ @apply bg-soft-secondary/90;
72
72
  }
73
73
  }
74
74
 
75
75
  &.is-muted {
76
- @apply bg-muted text-on-muted;
76
+ @apply bg-soft-muted text-on-muted;
77
77
  &.is-active {
78
- @apply bg-muted/90;
78
+ @apply bg-soft-muted/90;
79
79
  }
80
80
  }
81
81
 
82
82
  &.is-success {
83
- @apply bg-on-success text-success;
83
+ @apply bg-soft-success text-success;
84
84
  &.is-active {
85
- @apply bg-on-success/90;
85
+ @apply bg-soft-success/90;
86
86
  }
87
87
  }
88
88
 
89
89
  &.is-info {
90
- @apply bg-on-info text-info;
90
+ @apply bg-soft-info text-info;
91
91
  &.is-active {
92
- @apply bg-on-info/90;
92
+ @apply bg-soft-info/90;
93
93
  }
94
94
  }
95
95
 
96
96
  &.is-danger {
97
- @apply bg-on-danger text-danger;
97
+ @apply bg-soft-danger text-danger;
98
98
  &.is-active {
99
- @apply bg-on-danger/90;
99
+ @apply bg-soft-danger/90;
100
100
  }
101
101
  }
102
102
 
103
103
  &.is-warning {
104
- @apply bg-on-warning text-warning;
104
+ @apply bg-soft-warning text-warning;
105
105
  &.is-active {
106
- @apply bg-on-warning/90;
106
+ @apply bg-soft-warning/90;
107
107
  }
108
108
  }
109
109
  }
@@ -7,14 +7,13 @@
7
7
  @apply hidden;
8
8
  }
9
9
 
10
- /* Error Message */
11
10
  .csv-field-error {
12
11
  @apply mt-2.5 p-2.5 rounded-ui text-sm;
13
12
  }
14
13
 
15
14
  .csv-field.is-soft .csv-field-error,
16
15
  .csv-field.is-ghost .csv-field-error {
17
- @apply bg-on-danger/20 text-danger;
16
+ @apply bg-soft-danger/20 text-danger;
18
17
  }
19
18
 
20
19
  .csv-field.is-solid .csv-field-error {
@@ -25,7 +24,6 @@
25
24
  @apply border border-danger text-danger;
26
25
  }
27
26
 
28
- /* Modal Styles */
29
27
  .csv-modal-title {
30
28
  @apply m-0 text-xl font-semibold text-on-surface;
31
29
  }
@@ -50,7 +48,6 @@
50
48
  @apply flex justify-end gap-3;
51
49
  }
52
50
 
53
- /* Preview Container */
54
51
  .csv-preview-container {
55
52
  @apply mt-6 p-5 rounded-ui;
56
53
  }
@@ -80,25 +77,25 @@
80
77
  }
81
78
 
82
79
  .csv-field.is-soft.is-primary .csv-preview-container {
83
- @apply bg-on-primary/20;
80
+ @apply bg-soft-primary/20;
84
81
  }
85
82
  .csv-field.is-soft.is-secondary .csv-preview-container {
86
- @apply bg-on-secondary/20;
83
+ @apply bg-soft-secondary/20;
87
84
  }
88
85
  .csv-field.is-soft.is-muted .csv-preview-container {
89
- @apply bg-muted/50;
86
+ @apply bg-soft-muted/50;
90
87
  }
91
88
  .csv-field.is-soft.is-success .csv-preview-container {
92
- @apply bg-on-success/20;
89
+ @apply bg-soft-success/20;
93
90
  }
94
91
  .csv-field.is-soft.is-info .csv-preview-container {
95
- @apply bg-on-info/20;
92
+ @apply bg-soft-info/20;
96
93
  }
97
94
  .csv-field.is-soft.is-danger .csv-preview-container {
98
- @apply bg-on-danger/20;
95
+ @apply bg-soft-danger/20;
99
96
  }
100
97
  .csv-field.is-soft.is-warning .csv-preview-container {
101
- @apply bg-on-warning/20;
98
+ @apply bg-soft-warning/20;
102
99
  }
103
100
 
104
101
  .csv-field.is-solid.is-primary .csv-preview-container {
@@ -149,7 +146,6 @@
149
146
  @apply bg-surface/50;
150
147
  }
151
148
 
152
- /* Preview Header */
153
149
  .csv-preview-header {
154
150
  @apply flex justify-between items-start mb-4 gap-4;
155
151
  }
@@ -175,7 +171,6 @@
175
171
  @apply text-lg leading-none;
176
172
  }
177
173
 
178
- /* Size Variants */
179
174
  .csv-field.is-xs {
180
175
  .csv-field-error {
181
176
  @apply text-xs p-2;