ui-svelte 0.2.11 → 0.2.13

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 (225) hide show
  1. package/README.md +2 -2
  2. package/dist/charts/ArcChart.svelte +9 -14
  3. package/dist/charts/ArcChart.svelte.d.ts +3 -3
  4. package/dist/charts/AreaChart.svelte +347 -118
  5. package/dist/charts/AreaChart.svelte.d.ts +33 -4
  6. package/dist/charts/BarChart.svelte +288 -66
  7. package/dist/charts/BarChart.svelte.d.ts +26 -1
  8. package/dist/charts/Candlestick.svelte +53 -50
  9. package/dist/charts/Candlestick.svelte.d.ts +8 -8
  10. package/dist/charts/LineChart.svelte +391 -91
  11. package/dist/charts/LineChart.svelte.d.ts +26 -3
  12. package/dist/charts/PieChart.svelte +333 -92
  13. package/dist/charts/PieChart.svelte.d.ts +33 -5
  14. package/dist/charts/css/arc-chart.css +3 -3
  15. package/dist/charts/css/area-chart.css +127 -29
  16. package/dist/charts/css/bar-chart.css +114 -8
  17. package/dist/charts/css/candlestick.css +2 -0
  18. package/dist/charts/css/line-chart.css +111 -13
  19. package/dist/charts/css/pie-chart.css +92 -20
  20. package/dist/control/Audio.svelte +86 -44
  21. package/dist/control/Audio.svelte.d.ts +4 -1
  22. package/dist/control/Button.svelte +18 -27
  23. package/dist/control/Button.svelte.d.ts +3 -2
  24. package/dist/control/Fab.svelte +103 -0
  25. package/dist/control/Fab.svelte.d.ts +25 -0
  26. package/dist/control/IconButton.svelte +17 -27
  27. package/dist/control/IconButton.svelte.d.ts +3 -3
  28. package/dist/control/Image.svelte +123 -0
  29. package/dist/control/Image.svelte.d.ts +13 -0
  30. package/dist/control/Record.svelte +141 -98
  31. package/dist/control/Record.svelte.d.ts +2 -1
  32. package/dist/control/ToggleGroup.svelte +22 -8
  33. package/dist/control/ToggleGroup.svelte.d.ts +2 -1
  34. package/dist/control/ToggleTheme.svelte +13 -11
  35. package/dist/control/ToggleTheme.svelte.d.ts +3 -2
  36. package/dist/control/Video.svelte +57 -29
  37. package/dist/control/Video.svelte.d.ts +1 -0
  38. package/dist/control/css/btn.css +200 -152
  39. package/dist/control/css/fab.css +84 -0
  40. package/dist/control/css/image.css +56 -0
  41. package/dist/control/css/media.css +95 -30
  42. package/dist/control/css/toggle-group.css +253 -84
  43. package/dist/control/css/video.css +1 -14
  44. package/dist/css/animations.css +5 -9
  45. package/dist/css/base.css +13 -347
  46. package/dist/css/decorations.css +561 -0
  47. package/dist/css/rich-text.css +485 -0
  48. package/dist/css/transitions.css +158 -0
  49. package/dist/css/typography.css +291 -0
  50. package/dist/css/utilities.css +0 -4
  51. package/dist/display/Accordion.svelte +28 -4
  52. package/dist/display/Accordion.svelte.d.ts +2 -1
  53. package/dist/display/Alert.svelte +32 -12
  54. package/dist/display/Alert.svelte.d.ts +2 -3
  55. package/dist/display/Avatar.svelte +23 -18
  56. package/dist/display/Avatar.svelte.d.ts +4 -1
  57. package/dist/display/AvatarGroup.svelte +20 -18
  58. package/dist/display/AvatarGroup.svelte.d.ts +6 -3
  59. package/dist/display/Badge.svelte +11 -4
  60. package/dist/display/Badge.svelte.d.ts +2 -1
  61. package/dist/display/Card.svelte +15 -14
  62. package/dist/display/Card.svelte.d.ts +2 -3
  63. package/dist/display/Carousel.svelte +130 -99
  64. package/dist/display/Carousel.svelte.d.ts +6 -4
  65. package/dist/display/ChatBox.svelte +245 -106
  66. package/dist/display/ChatBox.svelte.d.ts +32 -5
  67. package/dist/display/Chip.svelte +31 -17
  68. package/dist/display/Chip.svelte.d.ts +3 -2
  69. package/dist/display/Code.svelte +7 -4
  70. package/dist/display/Code.svelte.d.ts +1 -0
  71. package/dist/display/Collapsible.svelte +30 -4
  72. package/dist/display/Collapsible.svelte.d.ts +2 -1
  73. package/dist/display/Countdown.svelte +169 -0
  74. package/dist/display/Countdown.svelte.d.ts +21 -0
  75. package/dist/display/Empty.svelte +37 -3
  76. package/dist/display/Empty.svelte.d.ts +3 -0
  77. package/dist/display/Item.svelte +42 -11
  78. package/dist/display/Item.svelte.d.ts +4 -2
  79. package/dist/display/Map.svelte +488 -0
  80. package/dist/display/Map.svelte.d.ts +44 -0
  81. package/dist/display/Marquee.svelte +0 -2
  82. package/dist/display/Section.svelte +14 -12
  83. package/dist/display/Section.svelte.d.ts +2 -3
  84. package/dist/display/Skeleton.svelte +32 -0
  85. package/dist/display/Skeleton.svelte.d.ts +10 -0
  86. package/dist/display/Table.svelte +94 -132
  87. package/dist/display/Table.svelte.d.ts +10 -1
  88. package/dist/display/css/accordion.css +349 -52
  89. package/dist/display/css/alert.css +38 -18
  90. package/dist/display/css/avatar-group.css +38 -75
  91. package/dist/display/css/avatar.css +139 -121
  92. package/dist/display/css/badge.css +50 -27
  93. package/dist/display/css/card.css +123 -71
  94. package/dist/display/css/carousel.css +25 -5
  95. package/dist/display/css/chat-box.css +158 -26
  96. package/dist/display/css/chip.css +142 -68
  97. package/dist/display/css/code.css +2 -6
  98. package/dist/display/css/collapsible.css +349 -45
  99. package/dist/display/css/countdown.css +206 -0
  100. package/dist/display/css/divider.css +8 -6
  101. package/dist/display/css/empty.css +7 -0
  102. package/dist/display/css/item.css +330 -84
  103. package/dist/display/css/map.css +164 -0
  104. package/dist/display/css/marquee.css +0 -3
  105. package/dist/display/css/section.css +89 -65
  106. package/dist/display/css/skeleton.css +58 -0
  107. package/dist/display/css/table.css +309 -193
  108. package/dist/form/Checkbox.svelte +11 -5
  109. package/dist/form/Checkbox.svelte.d.ts +2 -1
  110. package/dist/form/ColorField.svelte +601 -0
  111. package/dist/form/ColorField.svelte.d.ts +29 -0
  112. package/dist/form/ComboBox.svelte +24 -9
  113. package/dist/form/ComboBox.svelte.d.ts +2 -2
  114. package/dist/form/CsvField.svelte +62 -136
  115. package/dist/form/CsvField.svelte.d.ts +2 -2
  116. package/dist/form/DateField.svelte +33 -15
  117. package/dist/form/DateField.svelte.d.ts +2 -1
  118. package/dist/form/DateRange.svelte +436 -0
  119. package/dist/form/DateRange.svelte.d.ts +24 -0
  120. package/dist/form/DragDrop.svelte +578 -0
  121. package/dist/form/DragDrop.svelte.d.ts +33 -0
  122. package/dist/form/Dropzone.svelte +28 -8
  123. package/dist/form/Dropzone.svelte.d.ts +2 -2
  124. package/dist/form/Editor.svelte +626 -0
  125. package/dist/form/Editor.svelte.d.ts +50 -0
  126. package/dist/form/ImageCropper.svelte +422 -61
  127. package/dist/form/ImageCropper.svelte.d.ts +15 -1
  128. package/dist/form/{PasswordStrength.svelte → PasswordField.svelte} +58 -24
  129. package/dist/form/{PasswordStrength.svelte.d.ts → PasswordField.svelte.d.ts} +6 -5
  130. package/dist/form/PhoneField.svelte +26 -14
  131. package/dist/form/PhoneField.svelte.d.ts +4 -3
  132. package/dist/form/PinField.svelte +39 -31
  133. package/dist/form/PinField.svelte.d.ts +3 -3
  134. package/dist/form/RadioGroup.svelte +9 -5
  135. package/dist/form/RadioGroup.svelte.d.ts +1 -1
  136. package/dist/form/Select.svelte +20 -19
  137. package/dist/form/Select.svelte.d.ts +2 -2
  138. package/dist/form/Slider.svelte +10 -4
  139. package/dist/form/Slider.svelte.d.ts +2 -1
  140. package/dist/form/TextField.svelte +29 -11
  141. package/dist/form/TextField.svelte.d.ts +5 -4
  142. package/dist/form/Textarea.svelte +15 -6
  143. package/dist/form/Textarea.svelte.d.ts +2 -2
  144. package/dist/form/Toggle.svelte +7 -3
  145. package/dist/form/Toggle.svelte.d.ts +1 -1
  146. package/dist/form/css/checkbox.css +18 -2
  147. package/dist/form/css/color-field.css +141 -0
  148. package/dist/form/css/control.css +193 -82
  149. package/dist/form/css/csv-field.css +221 -0
  150. package/dist/form/css/date-range.css +122 -0
  151. package/dist/form/css/date.css +24 -2
  152. package/dist/form/css/drag-drop.css +234 -0
  153. package/dist/form/css/dropzone.css +153 -34
  154. package/dist/form/css/editor.css +367 -0
  155. package/dist/form/css/field.css +4 -0
  156. package/dist/form/css/image-cropper.css +242 -20
  157. package/dist/form/css/radio-group.css +26 -1
  158. package/dist/form/css/select.css +2 -2
  159. package/dist/form/css/slider.css +37 -0
  160. package/dist/form/css/textarea.css +178 -75
  161. package/dist/form/css/toggle.css +15 -3
  162. package/dist/hooks/use-chat.svelte.js +1 -1
  163. package/dist/hooks/use-form.svelte.js +3 -3
  164. package/dist/hooks/use-search.svelte.js +0 -3
  165. package/dist/hooks/use-table.svelte.d.ts +1 -0
  166. package/dist/hooks/use-table.svelte.js +6 -0
  167. package/dist/icons/index.d.ts +34 -2
  168. package/dist/icons/index.js +36 -4
  169. package/dist/index.css +44 -49
  170. package/dist/index.d.ts +14 -4
  171. package/dist/index.js +13 -3
  172. package/dist/layout/AppBar.svelte +22 -14
  173. package/dist/layout/AppBar.svelte.d.ts +2 -1
  174. package/dist/layout/Footer.svelte +19 -11
  175. package/dist/layout/Footer.svelte.d.ts +2 -1
  176. package/dist/layout/Provider.svelte +32 -9
  177. package/dist/layout/Provider.svelte.d.ts +3 -1
  178. package/dist/layout/Sidebar.svelte +17 -8
  179. package/dist/layout/Sidebar.svelte.d.ts +2 -1
  180. package/dist/layout/css/app-bar.css +63 -66
  181. package/dist/layout/css/footer.css +62 -65
  182. package/dist/layout/css/sidebar.css +120 -59
  183. package/dist/navigation/BottomNav.svelte +51 -14
  184. package/dist/navigation/FooterGroup.svelte +1 -1
  185. package/dist/navigation/NavMenu.svelte +47 -23
  186. package/dist/navigation/NavMenu.svelte.d.ts +29 -0
  187. package/dist/navigation/Pagination.svelte +158 -0
  188. package/dist/navigation/Pagination.svelte.d.ts +18 -0
  189. package/dist/navigation/SideNav.svelte +30 -25
  190. package/dist/navigation/SideNav.svelte.d.ts +2 -3
  191. package/dist/navigation/Tabs.svelte +17 -7
  192. package/dist/navigation/Tabs.svelte.d.ts +2 -2
  193. package/dist/navigation/css/bottom-nav.css +319 -257
  194. package/dist/navigation/css/footer-group.css +1 -1
  195. package/dist/navigation/css/footer-nav.css +1 -1
  196. package/dist/navigation/css/nav-menu.css +331 -106
  197. package/dist/navigation/css/pagination.css +74 -0
  198. package/dist/navigation/css/side-nav.css +514 -75
  199. package/dist/navigation/css/tabs.css +246 -52
  200. package/dist/overlay/AlertDialog.svelte +58 -0
  201. package/dist/overlay/AlertDialog.svelte.d.ts +14 -25
  202. package/dist/overlay/Command.svelte +347 -0
  203. package/dist/overlay/Command.svelte.d.ts +33 -25
  204. package/dist/overlay/Drawer.svelte +49 -21
  205. package/dist/overlay/Drawer.svelte.d.ts +2 -2
  206. package/dist/overlay/Dropdown.svelte +3 -3
  207. package/dist/overlay/Modal.svelte +51 -16
  208. package/dist/overlay/Modal.svelte.d.ts +3 -3
  209. package/dist/overlay/Toast.svelte +41 -17
  210. package/dist/overlay/Toast.svelte.d.ts +1 -1
  211. package/dist/overlay/Tooltip.svelte +36 -27
  212. package/dist/overlay/Tooltip.svelte.d.ts +2 -2
  213. package/dist/overlay/css/command.css +68 -0
  214. package/dist/overlay/css/drawer.css +63 -24
  215. package/dist/overlay/css/dropdown.css +1 -1
  216. package/dist/overlay/css/hovercard.css +1 -1
  217. package/dist/overlay/css/modal.css +79 -27
  218. package/dist/overlay/css/toast.css +40 -24
  219. package/dist/overlay/css/tooltip.css +110 -67
  220. package/dist/stores/theme.svelte.js +44 -12
  221. package/dist/stores/toast.svelte.d.ts +4 -4
  222. package/dist/stores/toast.svelte.js +2 -2
  223. package/package.json +1 -1
  224. package/dist/utils/charts.d.ts +0 -27
  225. package/dist/utils/charts.js +0 -140
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { slide } from 'svelte/transition';
3
3
 
4
- import { Icon, toast } from '../index.js';
4
+ import { Icon, IconButton, toast } from '../index.js';
5
5
  import { cn } from '../utils/class-names.js';
6
6
  import { popover } from '../utils/popover.js';
7
7
  import {
@@ -16,10 +16,15 @@
16
16
  class?: string;
17
17
  position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
18
18
  showIcon?: boolean;
19
- isSolid?: boolean;
19
+ variant?: 'solid' | 'soft';
20
20
  };
21
21
 
22
- const { class: className, position = 'bottom-left', isSolid, showIcon }: Props = $props();
22
+ const {
23
+ class: className,
24
+ position = 'bottom-left',
25
+ variant = 'soft',
26
+ showIcon
27
+ }: Props = $props();
23
28
 
24
29
  const positionClasses = {
25
30
  'top-left': 'is-top-left',
@@ -28,18 +33,29 @@
28
33
  'bottom-right': 'is-bottom-right'
29
34
  };
30
35
 
31
- const status = {
36
+ const colors = {
37
+ primary: 'is-primary',
38
+ secondary: 'is-secondary',
39
+ muted: 'is-muted',
32
40
  info: 'is-info',
33
41
  success: 'is-success',
34
42
  warning: 'is-warning',
35
43
  danger: 'is-danger'
36
44
  };
37
45
 
38
- const icons = {
39
- info: 'fluent:error-circle-24-regular',
40
- success: 'fluent:checkmark-circle-24-regular',
41
- warning: 'fluent:warning-24-regular',
42
- danger: 'fluent:block-24-regular'
46
+ const variants = {
47
+ solid: 'is-solid',
48
+ soft: 'is-soft'
49
+ };
50
+
51
+ const closeColors = {
52
+ primary: 'primary',
53
+ secondary: 'secondary',
54
+ muted: 'muted',
55
+ success: 'success',
56
+ info: 'info',
57
+ warning: 'warning',
58
+ danger: 'danger'
43
59
  };
44
60
  </script>
45
61
 
@@ -52,17 +68,21 @@
52
68
  {#each toast.messages as message, index (message.id)}
53
69
  <div
54
70
  transition:slide
55
- class={cn('toast', status[message.status], (message.isSolid || isSolid) && 'is-solid')}
71
+ class={cn(
72
+ 'toast',
73
+ colors[message.color],
74
+ message.variant ? variants[message.variant] : variants[variant]
75
+ )}
56
76
  style="--toast-index: {index}; --toast-total: {toast.messages.length}"
57
77
  >
58
78
  {#if showIcon}
59
- {#if message.status === 'info'}
79
+ {#if message.color === 'info'}
60
80
  <Icon icon={Info24RegularIcon} class="toast-icon" />
61
- {:else if message.status === 'success'}
81
+ {:else if message.color === 'success'}
62
82
  <Icon icon={CheckmarkCircle24RegularIcon} class="toast-icon" />
63
- {:else if message.status === 'warning'}
83
+ {:else if message.color === 'warning'}
64
84
  <Icon icon={Warning24RegularIcon} class="toast-icon" />
65
- {:else if message.status === 'danger'}
85
+ {:else if message.color === 'danger'}
66
86
  <Icon icon={DismissCircle24RegularIcon} class="toast-icon" />
67
87
  {/if}
68
88
  {/if}
@@ -73,9 +93,13 @@
73
93
  <div class="toast-description">{message.description}</div>
74
94
  </div>
75
95
  <div class="btn-close">
76
- <button onclick={() => toast.close(message.id)}>
77
- <Icon icon={Dismiss24RegularIcon} class="btn-close-icon" />
78
- </button>
96
+ <IconButton
97
+ icon={Dismiss24RegularIcon}
98
+ variant={variant === 'solid' ? 'soft' : 'solid'}
99
+ color={closeColors[message.color] as any}
100
+ size="xs"
101
+ onclick={() => toast.close(message.id)}
102
+ />
79
103
  </div>
80
104
  </div>
81
105
  {/each}
@@ -2,7 +2,7 @@ type Props = {
2
2
  class?: string;
3
3
  position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
4
4
  showIcon?: boolean;
5
- isSolid?: boolean;
5
+ variant?: 'solid' | 'soft';
6
6
  };
7
7
  declare const Toast: import("svelte").Component<Props, {}, "">;
8
8
  type Toast = ReturnType<typeof Toast>;
@@ -6,18 +6,18 @@
6
6
  type Props = {
7
7
  label: string;
8
8
  children: Snippet;
9
- variant?: 'primary' | 'secondary' | 'muted';
9
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
10
+ variant?: 'solid' | 'soft';
10
11
  position?: 'top' | 'bottom' | 'start' | 'end';
11
- isSolid?: boolean;
12
12
  class?: string;
13
13
  };
14
14
 
15
15
  let {
16
16
  label,
17
17
  children,
18
- variant = 'primary',
18
+ color = 'primary',
19
+ variant = 'soft',
19
20
  position = 'top',
20
- isSolid = false,
21
21
  class: className
22
22
  }: Props = $props();
23
23
 
@@ -31,10 +31,19 @@
31
31
 
32
32
  const style = $derived(`top: ${tooltipPosition.top}px; left: ${tooltipPosition.left}px;`);
33
33
 
34
- const variantClasses = {
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'
42
+ };
43
+
44
+ const variants = {
45
+ solid: 'is-solid',
46
+ soft: 'is-soft'
38
47
  };
39
48
 
40
49
  const positionClasses = {
@@ -73,28 +82,29 @@
73
82
  break;
74
83
  }
75
84
 
76
- top += window.scrollY;
77
- left += window.scrollX;
78
-
79
85
  const padding = 8;
80
86
  if (left < padding) left = padding;
81
87
  if (left + tooltipRect.width > window.innerWidth - padding) {
82
88
  left = window.innerWidth - tooltipRect.width - padding;
83
89
  }
84
90
  if (top < padding) top = padding;
85
- if (top + tooltipRect.height > window.innerHeight + window.scrollY - padding) {
86
- top = window.innerHeight + window.scrollY - tooltipRect.height - padding;
91
+ if (top + tooltipRect.height > window.innerHeight - padding) {
92
+ top = window.innerHeight - tooltipRect.height - padding;
87
93
  }
88
94
 
89
95
  tooltipPosition = { top, left };
90
96
  };
91
97
 
92
98
  const handleMouseEnter = () => {
99
+ startEventListeners();
93
100
  isOpen = true;
94
- setTimeout(updatePosition, 0);
101
+ requestAnimationFrame(() => {
102
+ updatePosition();
103
+ });
95
104
  };
96
105
 
97
106
  const handleMouseLeave = () => {
107
+ stopEventListeners();
98
108
  isOpen = false;
99
109
  };
100
110
 
@@ -109,7 +119,6 @@
109
119
  };
110
120
 
111
121
  onMount(() => {
112
- startEventListeners();
113
122
  return () => stopEventListeners();
114
123
  });
115
124
  </script>
@@ -122,19 +131,19 @@
122
131
  onmouseleave={handleMouseLeave}
123
132
  >
124
133
  {@render children()}
134
+ </div>
125
135
 
126
- <div
127
- bind:this={tooltipElement}
128
- class={cn(
129
- 'tooltip-popover',
130
- variantClasses[variant],
131
- positionClasses[position],
132
- isSolid && 'is-solid',
133
- isOpen && 'is-active'
134
- )}
135
- {style}
136
- >
137
- <div class={cn('tooltip-arrow', variantClasses[variant], isSolid && 'is-solid')}></div>
138
- {label}
139
- </div>
136
+ <div
137
+ bind:this={tooltipElement}
138
+ class={cn(
139
+ 'tooltip-popover',
140
+ colors[color],
141
+ variants[variant],
142
+ positionClasses[position],
143
+ isOpen && 'is-active'
144
+ )}
145
+ {style}
146
+ >
147
+ <div class="tooltip-arrow"></div>
148
+ {label}
140
149
  </div>
@@ -2,9 +2,9 @@ import type { Snippet } from 'svelte';
2
2
  type Props = {
3
3
  label: string;
4
4
  children: Snippet;
5
- variant?: 'primary' | 'secondary' | 'muted';
5
+ color?: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
6
+ variant?: 'solid' | 'soft';
6
7
  position?: 'top' | 'bottom' | 'start' | 'end';
7
- isSolid?: boolean;
8
8
  class?: string;
9
9
  };
10
10
  declare const Tooltip: import("svelte").Component<Props, {}, "">;
@@ -0,0 +1,68 @@
1
+ @layer components {
2
+ .command-kbd {
3
+ @apply hidden md:flex items-center gap-1.5 text-xs text-on-muted/70 shrink-0;
4
+ }
5
+
6
+ .command-kbd kbd {
7
+ @apply px-1.5 py-0.5 bg-muted/50 rounded text-[10px] font-mono uppercase;
8
+ @apply border border-muted/30;
9
+ }
10
+
11
+ .command-results {
12
+ @apply w-full flex flex-col min-w-md;
13
+ @apply max-h-80;
14
+ }
15
+ .command-group {
16
+ @apply flex flex-col;
17
+
18
+ &:not(:first-child) {
19
+ @apply mt-3 pt-3 border-t border-muted/15;
20
+ }
21
+ }
22
+
23
+ .command-group-label {
24
+ @apply flex items-center gap-2;
25
+ @apply px-2.5 py-1.5 mb-1;
26
+ @apply text-sm font-medium uppercase tracking-wide;
27
+ }
28
+
29
+ .command-group-icon {
30
+ @apply size-3.5 opacity-70;
31
+ }
32
+
33
+ .command-group-items {
34
+ @apply flex flex-col gap-0.5;
35
+ }
36
+
37
+ .command-empty {
38
+ @apply flex items-center justify-center;
39
+ @apply py-10 text-sm text-on-muted/50;
40
+ }
41
+
42
+ .command-loading {
43
+ @apply flex items-center justify-center gap-2;
44
+ @apply py-10 text-sm text-on-muted/50;
45
+ }
46
+
47
+ .command-loading-spinner {
48
+ @apply size-4 animate-spin;
49
+ }
50
+
51
+ .command-shortcuts {
52
+ @apply flex items-center justify-between w-full px-3 py-2;
53
+ @apply border-t border-muted/20 text-xs text-on-muted/60;
54
+ }
55
+
56
+ .command-shortcut {
57
+ @apply flex items-center gap-3;
58
+ }
59
+
60
+ .command-shortcut-item {
61
+ @apply flex items-center gap-1;
62
+ }
63
+
64
+ .command-shortcut-item kbd {
65
+ @apply px-1 py-0.5 bg-muted/30 rounded text-[10px] font-mono;
66
+ @apply border border-muted/20;
67
+ }
68
+ }
@@ -7,7 +7,7 @@
7
7
  @apply absolute inset-0 bg-overlay;
8
8
  }
9
9
  .drawer {
10
- @apply absolute bg-surface flex flex-col;
10
+ @apply absolute flex flex-col max-w-screen;
11
11
  @apply transition-all duration-300 ease-in-out;
12
12
 
13
13
  &.is-start {
@@ -34,33 +34,68 @@
34
34
  @apply transform translate-x-0! translate-y-0!;
35
35
  }
36
36
 
37
- &.is-ghost {
38
- @apply bg-background text-on-background;
37
+ &.is-soft {
38
+ &.is-primary {
39
+ @apply bg-soft-primary text-primary;
40
+ }
41
+ &.is-secondary {
42
+ @apply bg-soft-secondary text-secondary;
43
+ }
44
+ &.is-muted {
45
+ @apply bg-soft-muted text-on-muted;
46
+ }
47
+ &.is-success {
48
+ @apply bg-soft-success text-success;
49
+ }
50
+ &.is-info {
51
+ @apply bg-soft-info text-info;
52
+ }
53
+ &.is-warning {
54
+ @apply bg-soft-warning text-warning;
55
+ }
56
+ &.is-danger {
57
+ @apply bg-soft-danger text-danger;
58
+ }
59
+ &.is-background {
60
+ @apply bg-background text-on-background;
61
+ }
62
+ &.is-surface {
63
+ @apply bg-surface text-on-surface;
64
+ }
39
65
  }
40
- &.is-surface {
41
- @apply bg-surface text-on-surface;
42
- }
43
- &.is-primary {
44
- @apply bg-on-primary text-primary;
45
- }
46
- &.is-secondary {
47
- @apply bg-on-secondary text-secondary;
48
- }
49
- &.is-muted {
50
- @apply bg-muted text-on-muted;
51
- }
52
- &.is-primary.is-solid {
53
- @apply bg-primary text-on-primary;
54
- }
55
- &.is-secondary.is-solid {
56
- @apply bg-secondary text-on-secondary;
57
- }
58
- &.is-muted.is-solid {
59
- @apply bg-on-muted text-muted;
66
+
67
+ &.is-solid {
68
+ &.is-primary {
69
+ @apply bg-primary text-on-primary;
70
+ }
71
+ &.is-secondary {
72
+ @apply bg-secondary text-on-secondary;
73
+ }
74
+ &.is-muted {
75
+ @apply bg-on-muted text-muted;
76
+ }
77
+ &.is-success {
78
+ @apply bg-success text-on-success;
79
+ }
80
+ &.is-info {
81
+ @apply bg-info text-on-info;
82
+ }
83
+ &.is-warning {
84
+ @apply bg-warning text-on-warning;
85
+ }
86
+ &.is-danger {
87
+ @apply bg-danger text-on-danger;
88
+ }
89
+ &.is-background {
90
+ @apply bg-background text-on-background;
91
+ }
92
+ &.is-surface {
93
+ @apply bg-surface text-on-surface;
94
+ }
60
95
  }
61
96
 
62
97
  .drawer-header {
63
- @apply row gap-3 p-3;
98
+ @apply row gap-3 p-3 pr-12;
64
99
  }
65
100
 
66
101
  .drawer-footer {
@@ -70,6 +105,10 @@
70
105
  .drawer-body {
71
106
  @apply flex min-h-0 flex-1 flex-col gap-3 p-3 overflow-auto;
72
107
  }
108
+
109
+ .drawer-btn-close {
110
+ @apply absolute right-2 top-2;
111
+ }
73
112
  }
74
113
  }
75
114
  }
@@ -4,7 +4,7 @@
4
4
  }
5
5
  .dropdown-popover {
6
6
  @apply overflow-y-auto flex flex-col gap-2 p-2 my-1;
7
- @apply bg-background text-on-background rounded-ui;
7
+ @apply bg-background text-on-background rounded-box;
8
8
  @apply invisible opacity-0 transition-opacity duration-300 ease-in-out;
9
9
  @apply shadow shadow-muted;
10
10
  position: fixed;
@@ -4,7 +4,7 @@
4
4
  }
5
5
  .hovercard-content {
6
6
  @apply overflow-y-auto drop-shadow-sm flex flex-col gap-2 my-1;
7
- @apply bg-background text-on-background border border-muted rounded-ui;
7
+ @apply bg-background text-on-background border border-muted rounded-box;
8
8
  position: fixed;
9
9
  z-index: 9999;
10
10
  }
@@ -6,46 +6,98 @@
6
6
  @apply absolute inset-0 bg-overlay;
7
7
  }
8
8
  .modal {
9
- @apply relative flex flex-col gap-4 md:gap-6 rounded-ui py-4 md:py-6 max-w-[95vw] max-h-[95vh];
9
+ @apply relative flex flex-col rounded-box max-w-[95vw] max-h-[95vh];
10
10
 
11
- &.is-ghost {
12
- @apply bg-background text-on-background;
11
+ &.is-soft {
12
+ &.is-primary {
13
+ @apply bg-soft-primary text-primary;
14
+ }
15
+ &.is-secondary {
16
+ @apply bg-soft-secondary text-secondary;
17
+ }
18
+ &.is-muted {
19
+ @apply bg-soft-muted text-on-muted;
20
+ }
21
+ &.is-success {
22
+ @apply bg-soft-success text-success;
23
+ }
24
+ &.is-info {
25
+ @apply bg-soft-info text-info;
26
+ }
27
+ &.is-warning {
28
+ @apply bg-soft-warning text-warning;
29
+ }
30
+ &.is-danger {
31
+ @apply bg-soft-danger text-danger;
32
+ }
33
+ &.is-background {
34
+ @apply bg-background text-on-background;
35
+ }
36
+ &.is-surface {
37
+ @apply bg-surface text-on-surface;
38
+ }
13
39
  }
14
- &.is-surface {
15
- @apply bg-surface text-on-surface;
16
- }
17
- &.is-primary {
18
- @apply bg-on-primary text-primary;
19
- }
20
- &.is-secondary {
21
- @apply bg-on-secondary text-secondary;
22
- }
23
- &.is-muted {
24
- @apply bg-muted text-on-muted;
25
- }
26
- &.is-primary.is-solid {
27
- @apply bg-primary text-on-primary;
28
- }
29
- &.is-secondary.is-solid {
30
- @apply bg-secondary text-on-secondary;
31
- }
32
- &.is-muted.is-solid {
33
- @apply bg-on-muted text-muted;
40
+
41
+ &.is-solid {
42
+ &.is-primary {
43
+ @apply bg-primary text-on-primary;
44
+ }
45
+ &.is-secondary {
46
+ @apply bg-secondary text-on-secondary;
47
+ }
48
+ &.is-muted {
49
+ @apply bg-on-muted text-muted;
50
+ }
51
+ &.is-success {
52
+ @apply bg-success text-on-success;
53
+ }
54
+ &.is-info {
55
+ @apply bg-info text-on-info;
56
+ }
57
+ &.is-warning {
58
+ @apply bg-warning text-on-warning;
59
+ }
60
+ &.is-danger {
61
+ @apply bg-danger text-on-danger;
62
+ }
63
+ &.is-background {
64
+ @apply bg-background text-on-background;
65
+ }
66
+ &.is-surface {
67
+ @apply bg-surface text-on-surface;
68
+ }
34
69
  }
35
- .modal-content {
36
- @apply px-4 md:px-6 overflow-hidden overflow-y-auto;
70
+
71
+ .modal-body {
72
+ @apply column gap-4 md:gap-6 p-4 md:p-6 overflow-hidden overflow-y-auto;
37
73
  }
38
74
 
39
75
  .modal-header {
40
- @apply grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-4 md:px-6;
76
+ @apply w-full flex justify-between items-center px-4 pt-4 gap-4 md:px-6 md:pt-6 md:gap-6;
41
77
  }
42
78
 
43
79
  .modal-footer {
44
- @apply [.border-t]:pt-4 md:[.border-t]:pt-6 flex items-center px-4 md:px-6;
80
+ @apply w-full flex justify-between items-center px-4 pb-4 gap-4 md:px-6 md:pb-6 md:gap-6;
45
81
  }
46
82
  }
47
83
  .modal-btn-close {
48
84
  @apply absolute top-1 right-1 float-right z-50 size-6 p-1 hover:bg-muted rounded-full flex items-center justify-center text-on-muted hover:text-danger cursor-pointer;
49
85
  }
50
86
  }
87
+ .alert-dialog-title {
88
+ font-size: 1.125rem;
89
+ font-weight: 600;
90
+ margin: 0;
91
+ }
92
+
93
+ .alert-dialog-description {
94
+ color: var(--on-muted);
95
+ margin: 0;
96
+ }
97
+
98
+ .alert-dialog-actions {
99
+ display: flex;
100
+ gap: 0.75rem;
101
+ justify-content: flex-end;
102
+ }
51
103
  }
@@ -23,7 +23,7 @@
23
23
  }
24
24
 
25
25
  .toast {
26
- @apply absolute inset-x-0 flex items-center gap-3 p-4 pointer-events-auto rounded-ui;
26
+ @apply absolute inset-x-0 flex items-center gap-3 p-4 pointer-events-auto rounded-box;
27
27
  @apply transition-all duration-300 ease-out shadow-sm;
28
28
 
29
29
  transform: translateY(calc((var(--toast-total) - var(--toast-index) - 1) * -8px))
@@ -31,36 +31,52 @@
31
31
  opacity: calc(1 - (var(--toast-total) - var(--toast-index) - 1) * 0.2);
32
32
  z-index: calc(50 + var(--toast-index));
33
33
 
34
- &.is-success {
35
- @apply bg-on-success text-success;
36
-
37
- &.is-solid {
38
- @apply bg-success text-on-success;
34
+ &.is-soft {
35
+ &.is-primary {
36
+ @apply bg-soft-primary text-primary;
39
37
  }
40
- }
41
-
42
- &.is-danger {
43
- @apply bg-on-danger text-danger;
44
-
45
- &.is-solid {
46
- @apply bg-danger text-on-danger;
38
+ &.is-secondary {
39
+ @apply bg-soft-secondary text-secondary;
47
40
  }
48
- }
49
-
50
- &.is-warning {
51
- @apply bg-on-warning text-warning;
52
-
53
- &.is-solid {
54
- @apply bg-warning text-on-warning;
41
+ &.is-muted {
42
+ @apply bg-soft-muted text-on-muted;
43
+ }
44
+ &.is-success {
45
+ @apply bg-soft-success text-success;
46
+ }
47
+ &.is-info {
48
+ @apply bg-soft-info text-info;
49
+ }
50
+ &.is-warning {
51
+ @apply bg-soft-warning text-warning;
52
+ }
53
+ &.is-danger {
54
+ @apply bg-soft-danger text-danger;
55
55
  }
56
56
  }
57
57
 
58
- &.is-info {
59
- @apply bg-on-info text-info;
60
-
61
- &.is-solid {
58
+ &.is-solid {
59
+ &.is-primary {
60
+ @apply bg-primary text-on-primary;
61
+ }
62
+ &.is-secondary {
63
+ @apply bg-secondary text-on-secondary;
64
+ }
65
+ &.is-muted {
66
+ @apply bg-on-muted text-muted;
67
+ }
68
+ &.is-success {
69
+ @apply bg-success text-on-success;
70
+ }
71
+ &.is-info {
62
72
  @apply bg-info text-on-info;
63
73
  }
74
+ &.is-warning {
75
+ @apply bg-warning text-on-warning;
76
+ }
77
+ &.is-danger {
78
+ @apply bg-danger text-on-danger;
79
+ }
64
80
  }
65
81
 
66
82
  .toast-icon {