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
@@ -0,0 +1,367 @@
1
+ @layer components {
2
+ .editor {
3
+ @apply relative flex flex-col w-full outline-0 ring-0;
4
+ @apply transition-all duration-300 ease-in-out;
5
+ }
6
+
7
+ .editor-label {
8
+ @apply absolute left-3 top-3 pr-6 text-left truncate z-10;
9
+ @apply transition-all duration-300;
10
+ }
11
+
12
+ .editor-label.is-active {
13
+ @apply text-xs left-3 top-1 translate-y-px;
14
+ }
15
+
16
+ .editor.is-sm {
17
+ @apply text-sm;
18
+
19
+ .editor-toolbar {
20
+ @apply p-1 gap-1;
21
+ }
22
+
23
+ .editor-toolbar-btn {
24
+ @apply size-6;
25
+ }
26
+
27
+ .editor-content {
28
+ @apply p-2 text-sm;
29
+ }
30
+ }
31
+
32
+ .editor.is-md {
33
+ @apply text-base;
34
+
35
+ .editor-toolbar {
36
+ @apply p-1.5 gap-1.5;
37
+ }
38
+
39
+ .editor-toolbar-btn {
40
+ @apply size-7;
41
+ }
42
+
43
+ .editor-content {
44
+ @apply p-3 text-base;
45
+ }
46
+ }
47
+
48
+ .editor.is-lg {
49
+ @apply text-lg;
50
+
51
+ .editor-toolbar {
52
+ @apply p-2 gap-2;
53
+ }
54
+
55
+ .editor-toolbar-btn {
56
+ @apply size-8;
57
+ }
58
+
59
+ .editor-content {
60
+ @apply p-4 text-lg;
61
+ }
62
+
63
+ .editor-label.is-active {
64
+ @apply text-sm;
65
+ }
66
+ }
67
+
68
+ .editor.is-float {
69
+ .editor-content {
70
+ @apply pt-8;
71
+ }
72
+ }
73
+
74
+ .editor.is-soft {
75
+ @apply rounded-ui;
76
+
77
+ &.is-primary {
78
+ @apply bg-soft-primary text-primary;
79
+ &.is-active {
80
+ @apply bg-soft-primary/90;
81
+ }
82
+ }
83
+
84
+ &.is-secondary {
85
+ @apply bg-soft-secondary text-secondary;
86
+ &.is-active {
87
+ @apply bg-soft-secondary/90;
88
+ }
89
+ }
90
+
91
+ &.is-muted {
92
+ @apply bg-soft-muted text-muted;
93
+ &.is-active {
94
+ @apply bg-soft-muted/90;
95
+ }
96
+ }
97
+
98
+ &.is-success {
99
+ @apply bg-soft-success text-success;
100
+ &.is-active {
101
+ @apply bg-soft-success/90;
102
+ }
103
+ }
104
+
105
+ &.is-info {
106
+ @apply bg-soft-info text-info;
107
+ &.is-active {
108
+ @apply bg-soft-info/90;
109
+ }
110
+ }
111
+
112
+ &.is-danger {
113
+ @apply bg-soft-danger text-danger;
114
+ &.is-active {
115
+ @apply bg-soft-danger/90;
116
+ }
117
+ }
118
+
119
+ &.is-warning {
120
+ @apply bg-soft-warning text-warning;
121
+ &.is-active {
122
+ @apply bg-soft-warning/90;
123
+ }
124
+ }
125
+ }
126
+
127
+ .editor.is-solid {
128
+ @apply rounded-ui;
129
+
130
+ &.is-primary {
131
+ @apply bg-primary text-on-primary;
132
+ &.is-active {
133
+ @apply bg-primary/90;
134
+ }
135
+ }
136
+
137
+ &.is-secondary {
138
+ @apply bg-secondary text-on-secondary;
139
+ &.is-active {
140
+ @apply bg-secondary/90;
141
+ }
142
+ }
143
+
144
+ &.is-muted {
145
+ @apply bg-on-muted text-muted;
146
+ &.is-active {
147
+ @apply bg-on-muted/90;
148
+ }
149
+ }
150
+
151
+ &.is-success {
152
+ @apply bg-success text-on-success;
153
+ &.is-active {
154
+ @apply bg-success/90;
155
+ }
156
+ }
157
+
158
+ &.is-info {
159
+ @apply bg-info text-on-info;
160
+ &.is-active {
161
+ @apply bg-info/90;
162
+ }
163
+ }
164
+
165
+ &.is-danger {
166
+ @apply bg-danger text-on-danger;
167
+ &.is-active {
168
+ @apply bg-danger/90;
169
+ }
170
+ }
171
+
172
+ &.is-warning {
173
+ @apply bg-warning text-on-warning;
174
+ &.is-active {
175
+ @apply bg-warning/90;
176
+ }
177
+ }
178
+ }
179
+
180
+ .editor.is-outlined {
181
+ @apply rounded-ui inset-ring;
182
+
183
+ &.is-active {
184
+ @apply inset-ring-2;
185
+ }
186
+
187
+ &.is-primary {
188
+ @apply inset-ring-primary;
189
+ }
190
+ &.is-secondary {
191
+ @apply inset-ring-secondary;
192
+ }
193
+ &.is-muted {
194
+ @apply inset-ring-muted;
195
+ }
196
+ &.is-success {
197
+ @apply inset-ring-success;
198
+ }
199
+ &.is-info {
200
+ @apply inset-ring-info;
201
+ }
202
+ &.is-danger {
203
+ @apply inset-ring-danger;
204
+ }
205
+ &.is-warning {
206
+ @apply inset-ring-warning;
207
+ }
208
+ }
209
+
210
+ .editor.is-line {
211
+ @apply box-border border-b;
212
+
213
+ .editor-label {
214
+ @apply left-0;
215
+ }
216
+
217
+ &.is-active {
218
+ @apply border-b-2;
219
+ }
220
+
221
+ &.is-primary {
222
+ @apply border-primary text-primary;
223
+ }
224
+ &.is-secondary {
225
+ @apply border-secondary text-secondary;
226
+ }
227
+ &.is-muted {
228
+ @apply border-on-muted text-on-muted;
229
+ }
230
+ &.is-success {
231
+ @apply border-success text-success;
232
+ }
233
+ &.is-info {
234
+ @apply border-info text-info;
235
+ }
236
+ &.is-danger {
237
+ @apply border-danger text-danger;
238
+ }
239
+ &.is-warning {
240
+ @apply border-warning text-warning;
241
+ }
242
+
243
+ .editor-toolbar {
244
+ @apply px-0;
245
+ }
246
+
247
+ .editor-content {
248
+ @apply px-0;
249
+ }
250
+ }
251
+
252
+ .editor.is-disabled {
253
+ @apply opacity-50 cursor-not-allowed;
254
+
255
+ .editor-content {
256
+ @apply pointer-events-none;
257
+ }
258
+ }
259
+
260
+ .editor.is-readonly {
261
+ .editor-content {
262
+ @apply cursor-default;
263
+ }
264
+ }
265
+
266
+ .editor.is-error {
267
+ @apply inset-ring-danger;
268
+ }
269
+
270
+ .editor-toolbar {
271
+ @apply flex flex-wrap items-center border-b border-current/10;
272
+ }
273
+
274
+ .editor-toolbar-group {
275
+ @apply flex items-center gap-0.5;
276
+ }
277
+
278
+ .editor-toolbar-divider {
279
+ @apply w-px h-5 bg-current/20 mx-1;
280
+ }
281
+
282
+ .editor-toolbar-btn {
283
+ @apply flex items-center justify-center;
284
+ @apply rounded transition-all duration-200;
285
+ @apply hover:bg-current/10 active:scale-95;
286
+ @apply disabled:opacity-40 disabled:pointer-events-none;
287
+ @apply cursor-pointer;
288
+ }
289
+
290
+ .editor-toolbar-btn.is-active {
291
+ @apply bg-current/20;
292
+ }
293
+
294
+ .editor-toolbar-btn svg {
295
+ @apply size-4;
296
+ }
297
+
298
+ .editor-content-wrapper {
299
+ @apply relative flex-1;
300
+ }
301
+
302
+ .editor-placeholder {
303
+ @apply absolute top-0 left-0 right-0 p-3 pointer-events-none opacity-50;
304
+ }
305
+
306
+ .editor-content {
307
+ @apply w-full outline-none;
308
+ @apply overflow-y-auto;
309
+ }
310
+
311
+ .editor-content h1 {
312
+ @apply text-3xl font-bold mb-4;
313
+ }
314
+
315
+ .editor-content h2 {
316
+ @apply text-2xl font-bold mb-3;
317
+ }
318
+
319
+ .editor-content h3 {
320
+ @apply text-xl font-bold mb-2;
321
+ }
322
+
323
+ .editor-content p {
324
+ @apply mb-2;
325
+ }
326
+
327
+ .editor-content ul,
328
+ .editor-content ol {
329
+ @apply pl-6 mb-2;
330
+ }
331
+
332
+ .editor-content ul {
333
+ @apply list-disc;
334
+ }
335
+
336
+ .editor-content ol {
337
+ @apply list-decimal;
338
+ }
339
+
340
+ .editor-content li {
341
+ @apply mb-1;
342
+ }
343
+
344
+ .editor-content blockquote {
345
+ @apply border-l-4 border-current/30 pl-4 italic my-4 opacity-80;
346
+ }
347
+
348
+ .editor-content pre {
349
+ @apply bg-current/5 p-3 rounded font-mono text-sm overflow-x-auto my-4;
350
+ }
351
+
352
+ .editor-content code {
353
+ @apply bg-current/10 px-1.5 py-0.5 rounded font-mono text-sm;
354
+ }
355
+
356
+ .editor-content a {
357
+ @apply underline text-primary;
358
+ }
359
+
360
+ .editor-content img {
361
+ @apply max-w-full h-auto rounded my-4;
362
+ }
363
+
364
+ .editor-content hr {
365
+ @apply border-current/20 my-4;
366
+ }
367
+ }
@@ -14,4 +14,8 @@
14
14
  .field-help.is-danger {
15
15
  @apply text-danger;
16
16
  }
17
+
18
+ .field-pin-wrapper {
19
+ @apply flex gap-2 w-fit;
20
+ }
17
21
  }
@@ -1,14 +1,217 @@
1
1
  @layer components {
2
- .image-cropper {
3
- @apply flex flex-col gap-4 w-full;
2
+ .image-cropper-wrapper {
3
+ @apply relative inline-flex flex-col items-center gap-2;
4
+ }
5
+
6
+ .image-cropper-avatar {
7
+ @apply relative flex flex-col items-center justify-center;
8
+ @apply border-2 border-dashed cursor-pointer;
9
+ @apply transition-all duration-300;
10
+ @apply overflow-hidden;
11
+ }
12
+
13
+ .image-cropper-avatar.is-circle {
14
+ @apply rounded-full;
15
+ }
16
+
17
+ .image-cropper-avatar:not(.is-circle) {
18
+ @apply rounded-ui;
19
+ }
20
+
21
+ .image-cropper-avatar.is-xs {
22
+ @apply size-12;
23
+ }
24
+
25
+ .image-cropper-avatar.is-sm {
26
+ @apply size-16;
27
+ }
28
+
29
+ .image-cropper-avatar.is-md {
30
+ @apply size-24;
31
+ }
32
+
33
+ .image-cropper-avatar.is-lg {
34
+ @apply size-32;
35
+ }
36
+
37
+ .image-cropper-avatar.is-xl {
38
+ @apply size-40;
39
+ }
40
+
41
+ .image-cropper-avatar.is-soft {
42
+ &.is-primary {
43
+ @apply bg-soft-primary/10 text-primary border-primary/30;
44
+ }
45
+ &.is-secondary {
46
+ @apply bg-soft-secondary/10 text-secondary border-secondary/30;
47
+ }
48
+ &.is-muted {
49
+ @apply bg-soft-muted/50 text-on-muted border-muted;
50
+ }
51
+ &.is-success {
52
+ @apply bg-soft-success/10 text-success border-success/30;
53
+ }
54
+ &.is-info {
55
+ @apply bg-soft-info/10 text-info border-info/30;
56
+ }
57
+ &.is-warning {
58
+ @apply bg-soft-warning/10 text-warning border-warning/30;
59
+ }
60
+ &.is-danger {
61
+ @apply bg-soft-danger/10 text-danger border-danger/30;
62
+ }
63
+ }
64
+
65
+ .image-cropper-avatar.is-outlined {
66
+ @apply bg-transparent;
67
+
68
+ &.is-primary {
69
+ @apply border-primary text-primary;
70
+ }
71
+ &.is-secondary {
72
+ @apply border-secondary text-secondary;
73
+ }
74
+ &.is-muted {
75
+ @apply border-muted text-on-muted;
76
+ }
77
+ &.is-success {
78
+ @apply border-success text-success;
79
+ }
80
+ &.is-info {
81
+ @apply border-info text-info;
82
+ }
83
+ &.is-warning {
84
+ @apply border-warning text-warning;
85
+ }
86
+ &.is-danger {
87
+ @apply border-danger text-danger;
88
+ }
89
+ }
90
+
91
+ .image-cropper-avatar.is-solid {
92
+ &.is-primary {
93
+ @apply bg-primary text-on-primary border-primary;
94
+ }
95
+ &.is-secondary {
96
+ @apply bg-secondary text-on-secondary border-secondary;
97
+ }
98
+ &.is-muted {
99
+ @apply bg-muted text-on-muted border-muted;
100
+ }
101
+ &.is-success {
102
+ @apply bg-success text-on-success border-success;
103
+ }
104
+ &.is-info {
105
+ @apply bg-info text-on-info border-info;
106
+ }
107
+ &.is-warning {
108
+ @apply bg-warning text-on-warning border-warning;
109
+ }
110
+ &.is-danger {
111
+ @apply bg-danger text-on-danger border-danger;
112
+ }
113
+ }
114
+
115
+ .image-cropper-avatar.is-ghost {
116
+ @apply bg-transparent border-transparent;
117
+
118
+ &.is-primary {
119
+ @apply text-primary;
120
+ }
121
+ &.is-secondary {
122
+ @apply text-secondary;
123
+ }
124
+ &.is-muted {
125
+ @apply text-on-muted;
126
+ }
127
+ &.is-success {
128
+ @apply text-success;
129
+ }
130
+ &.is-info {
131
+ @apply text-info;
132
+ }
133
+ &.is-warning {
134
+ @apply text-warning;
135
+ }
136
+ &.is-danger {
137
+ @apply text-danger;
138
+ }
139
+ }
140
+
141
+ .image-cropper-avatar:hover:not(.is-disabled) {
142
+ @apply border-solid;
143
+ @apply scale-105;
144
+ }
145
+
146
+ .image-cropper-avatar.is-disabled {
147
+ @apply opacity-50 cursor-not-allowed;
148
+ }
149
+
150
+ .image-cropper-avatar.is-error {
151
+ @apply border-danger;
152
+ }
153
+
154
+ .image-cropper-icon {
155
+ @apply size-6 opacity-70;
156
+ }
157
+
158
+ .image-cropper-avatar.is-xs .image-cropper-icon,
159
+ .image-cropper-avatar.is-sm .image-cropper-icon {
160
+ @apply size-4;
161
+ }
162
+
163
+ .image-cropper-avatar.is-lg .image-cropper-icon,
164
+ .image-cropper-avatar.is-xl .image-cropper-icon {
165
+ @apply size-8;
166
+ }
167
+
168
+ .image-cropper-placeholder {
169
+ @apply text-xs opacity-70 text-center mt-1;
170
+ }
171
+
172
+ .image-cropper-avatar.is-xs .image-cropper-placeholder,
173
+ .image-cropper-avatar.is-sm .image-cropper-placeholder {
174
+ @apply hidden;
175
+ }
176
+
177
+ .image-cropper-preview {
178
+ @apply absolute inset-0 w-full h-full object-cover;
179
+ }
180
+ .image-cropper-overlay-edit {
181
+ @apply absolute inset-0 flex items-center justify-center;
182
+ @apply bg-black/50 opacity-0 transition-opacity duration-300;
183
+ @apply text-white;
184
+ }
185
+
186
+ .image-cropper-avatar:hover .image-cropper-overlay-edit {
187
+ @apply opacity-100;
188
+ }
189
+
190
+ .image-cropper-actions {
191
+ @apply flex gap-1;
192
+ }
193
+ .image-cropper-modal {
194
+ @apply max-w-2xl w-full;
195
+ }
196
+
197
+ .image-cropper-modal-title {
198
+ @apply text-lg font-semibold;
199
+ }
200
+
201
+ .image-cropper-modal-body {
202
+ @apply flex flex-col gap-4;
203
+ }
204
+
205
+ .image-cropper-modal-footer {
206
+ @apply flex items-center justify-end gap-2;
4
207
  }
5
208
 
6
209
  .image-cropper-container {
7
210
  @apply relative w-full overflow-hidden;
8
211
  @apply bg-muted rounded-ui;
9
212
  @apply flex items-center justify-center;
10
- min-height: 400px;
11
- max-height: 600px;
213
+ min-height: 300px;
214
+ max-height: 500px;
12
215
  }
13
216
 
14
217
  .image-cropper-image {
@@ -17,8 +220,11 @@
17
220
  -webkit-user-drag: none;
18
221
  }
19
222
 
20
- .image-cropper-overlay {
21
- @apply absolute inset-0 pointer-events-none;
223
+ .image-cropper-crop-overlay {
224
+ @apply absolute pointer-events-none;
225
+ top: 50%;
226
+ left: 50%;
227
+ transform: translate(-50%, -50%);
22
228
  }
23
229
 
24
230
  .overlay-top,
@@ -33,7 +239,7 @@
33
239
  }
34
240
 
35
241
  .overlay-bottom {
36
- @apply left-0 right-0 bottom-0;
242
+ @apply left-0 right-0;
37
243
  }
38
244
 
39
245
  .overlay-middle {
@@ -53,8 +259,16 @@
53
259
  @apply absolute pointer-events-auto;
54
260
  @apply border-2 border-primary;
55
261
  @apply cursor-move;
56
- @apply transition-shadow duration-200;
262
+ @apply transition-shadow duration-300;
57
263
  box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.5);
264
+ -webkit-touch-callout: none;
265
+ -webkit-user-select: none;
266
+ -webkit-tap-highlight-color: transparent;
267
+ touch-action: none;
268
+ }
269
+
270
+ .crop-area.is-circle {
271
+ @apply rounded-full;
58
272
  }
59
273
 
60
274
  .crop-area:hover {
@@ -63,7 +277,7 @@
63
277
 
64
278
  .crop-grid {
65
279
  @apply absolute inset-0 pointer-events-none;
66
- @apply opacity-0 transition-opacity duration-200;
280
+ @apply opacity-0 transition-opacity duration-300;
67
281
  }
68
282
 
69
283
  .crop-area:hover .crop-grid,
@@ -85,7 +299,7 @@
85
299
 
86
300
  .resize-handle {
87
301
  @apply absolute bg-primary border-2 border-background;
88
- @apply transition-all duration-200;
302
+ @apply transition-all duration-300;
89
303
  @apply opacity-0;
90
304
  @apply z-10;
91
305
  }
@@ -130,26 +344,34 @@
130
344
  @apply scale-125 bg-primary/90;
131
345
  }
132
346
 
133
- .image-cropper-controls {
134
- @apply flex items-center justify-end gap-2;
347
+ @media (pointer: coarse) {
348
+ .resize-handle {
349
+ @apply opacity-100 w-5 h-5;
350
+ touch-action: none;
351
+ }
352
+
353
+ .resize-handle.handle-n,
354
+ .resize-handle.handle-s {
355
+ @apply w-10 h-3;
356
+ }
357
+
358
+ .resize-handle.handle-e,
359
+ .resize-handle.handle-w {
360
+ @apply w-3 h-10;
361
+ }
135
362
  }
136
363
 
137
364
  .image-cropper-canvas {
138
365
  @apply hidden;
139
366
  }
140
367
 
141
- /* Responsive */
142
368
  @media (max-width: 640px) {
143
369
  .image-cropper-container {
144
- min-height: 300px;
145
- }
146
-
147
- .image-cropper-controls {
148
- @apply flex-col w-full;
370
+ min-height: 250px;
149
371
  }
150
372
 
151
- .image-cropper-controls .btn {
152
- @apply w-full;
373
+ .image-cropper-modal-footer {
374
+ @apply flex-wrap justify-center;
153
375
  }
154
376
  }
155
377
  }
@@ -8,7 +8,7 @@
8
8
  .radio {
9
9
  @apply relative appearance-none border-2 border-muted rounded-full cursor-pointer;
10
10
  @apply focus:outline-none;
11
- @apply transition-colors duration-200;
11
+ @apply transition-colors duration-300;
12
12
 
13
13
  &.is-primary {
14
14
  @apply checked:border-primary;
@@ -29,6 +29,31 @@
29
29
  }
30
30
  }
31
31
 
32
+ &.is-success {
33
+ @apply checked:border-success;
34
+ &:checked {
35
+ @apply after:bg-success;
36
+ }
37
+ }
38
+ &.is-info {
39
+ @apply checked:border-info;
40
+ &:checked {
41
+ @apply after:bg-info;
42
+ }
43
+ }
44
+ &.is-danger {
45
+ @apply checked:border-danger;
46
+ &:checked {
47
+ @apply after:bg-danger;
48
+ }
49
+ }
50
+ &.is-warning {
51
+ @apply checked:border-warning;
52
+ &:checked {
53
+ @apply after:bg-warning;
54
+ }
55
+ }
56
+
32
57
  &.is-sm {
33
58
  @apply w-4 h-4;
34
59
  &:checked {