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,258 +1,320 @@
1
1
  @layer components {
2
- .bottomnav {
3
- @apply flex items-center justify-around;
4
- @apply bg-background text-on-background;
5
- @apply border-t border-muted;
6
- @apply shadow-lg;
7
-
8
- &.is-fixed {
9
- @apply fixed bottom-0 left-0 right-0 z-50;
10
- padding-bottom: env(safe-area-inset-bottom);
11
- }
12
-
13
- .bottomnav-item {
14
- @apply flex flex-col items-center justify-center gap-1;
15
- @apply flex-1 py-3 px-2;
16
- @apply cursor-pointer select-none outline-none;
17
- @apply transition-all duration-200;
18
- @apply relative;
19
-
20
- .bottomnav-icon-wrapper {
21
- @apply relative inline-flex;
22
- }
23
-
24
- .bottomnav-icon {
25
- @apply h-6 w-6 shrink-0;
26
- @apply transition-all duration-200;
27
- }
28
-
29
- .bottomnav-label {
30
- @apply text-xs font-medium whitespace-nowrap;
31
- @apply transition-all duration-200;
32
- }
33
-
34
- .bottomnav-badge {
35
- @apply absolute -top-1.5 -right-2;
36
- @apply min-w-4 h-4 px-1;
37
- @apply flex items-center justify-center;
38
- @apply text-[10px] font-bold;
39
- @apply bg-danger text-on-danger;
40
- @apply rounded-full;
41
- }
42
-
43
- &:hover {
44
- @apply bg-muted/50;
45
- }
46
-
47
- /* FAB Style */
48
- &.is-fab {
49
- @apply flex-none;
50
-
51
- &:hover {
52
- @apply bg-transparent;
53
- }
54
-
55
- .bottomnav-icon-wrapper {
56
- @apply w-12 h-12 -mt-6;
57
- @apply flex items-center justify-center;
58
- @apply bg-primary text-on-primary;
59
- @apply rounded-full shadow-lg;
60
- @apply transition-all duration-200;
61
- }
62
-
63
- .bottomnav-icon {
64
- @apply h-6 w-6 text-on-primary;
65
- }
66
-
67
- &:hover .bottomnav-icon-wrapper {
68
- @apply shadow-xl shadow-primary/30;
69
- transform: translateY(-2px);
70
- }
71
-
72
- &:active .bottomnav-icon-wrapper {
73
- transform: translateY(0);
74
- @apply shadow-md;
75
- }
76
- }
77
- }
78
-
79
- /* Size Variants */
80
- &.is-sm {
81
- .bottomnav-item {
82
- @apply gap-0.5 py-2 px-1;
83
-
84
- .bottomnav-icon {
85
- @apply h-5 w-5;
86
- }
87
-
88
- .bottomnav-label {
89
- @apply text-[10px];
90
- }
91
-
92
- &.is-fab .bottomnav-icon-wrapper {
93
- @apply w-10 h-10 -mt-5;
94
- }
95
- }
96
- }
97
-
98
- &.is-md {
99
- .bottomnav-item {
100
- @apply gap-1 py-3 px-2;
101
-
102
- .bottomnav-icon {
103
- @apply h-6 w-6;
104
- }
105
-
106
- .bottomnav-label {
107
- @apply text-xs;
108
- }
109
- }
110
- }
111
-
112
- &.is-lg {
113
- .bottomnav-item {
114
- @apply gap-1.5 py-4 px-3;
115
-
116
- .bottomnav-icon {
117
- @apply h-7 w-7;
118
- }
119
-
120
- .bottomnav-label {
121
- @apply text-sm;
122
- }
123
-
124
- &.is-fab .bottomnav-icon-wrapper {
125
- @apply w-14 h-14 -mt-7;
126
-
127
- .bottomnav-icon {
128
- @apply h-7 w-7;
129
- }
130
- }
131
- }
132
- }
133
-
134
- &.is-icon-only {
135
- .bottomnav-item {
136
- @apply gap-0;
137
-
138
- .bottomnav-icon {
139
- @apply h-7 w-7;
140
- }
141
- }
142
- }
143
-
144
- /* Variant: Primary */
145
- &.is-primary {
146
- .bottomnav-item.is-active {
147
- @apply text-primary;
148
-
149
- .bottomnav-icon {
150
- @apply text-primary;
151
- }
152
-
153
- .bottomnav-label {
154
- @apply text-primary;
155
- }
156
- }
157
-
158
- .bottomnav-item.is-fab .bottomnav-icon-wrapper {
159
- @apply bg-primary;
160
- }
161
- }
162
-
163
- /* Variant: Secondary */
164
- &.is-secondary {
165
- .bottomnav-item.is-active {
166
- @apply text-secondary;
167
-
168
- .bottomnav-icon {
169
- @apply text-secondary;
170
- }
171
-
172
- .bottomnav-label {
173
- @apply text-secondary;
174
- }
175
- }
176
-
177
- .bottomnav-item.is-fab .bottomnav-icon-wrapper {
178
- @apply bg-secondary;
179
- }
180
- }
181
-
182
- /* Variant: Ghost - just color change, no indicator */
183
- &.is-ghost {
184
- .bottomnav-item.is-active {
185
- @apply text-on-surface;
186
-
187
- .bottomnav-icon {
188
- @apply text-on-surface;
189
- }
190
-
191
- .bottomnav-label {
192
- @apply text-on-surface font-semibold;
193
- }
194
- }
195
- }
196
-
197
- /* Variant: Line - underline indicator */
198
- &.is-line {
199
- .bottomnav-item {
200
- &::after {
201
- content: '';
202
- @apply absolute bottom-0 left-1/2 -translate-x-1/2;
203
- @apply w-0 h-0.5 rounded-full;
204
- @apply bg-primary;
205
- @apply transition-all duration-200;
206
- }
207
-
208
- &.is-active {
209
- @apply text-primary;
210
-
211
- .bottomnav-icon {
212
- @apply text-primary;
213
- }
214
-
215
- .bottomnav-label {
216
- @apply text-primary;
217
- }
218
-
219
- &::after {
220
- @apply w-8;
221
- }
222
- }
223
- }
224
- }
225
-
226
- /* Solid modifier - adds background pill on active */
227
- &.is-solid {
228
- .bottomnav-item {
229
- @apply relative isolate;
230
-
231
- &::before {
232
- content: '';
233
- @apply absolute inset-x-2 top-1 bottom-1;
234
- @apply rounded-xl;
235
- @apply bg-transparent;
236
- @apply transition-all duration-200;
237
- z-index: -1;
238
- }
239
- }
240
-
241
- &.is-primary .bottomnav-item.is-active:not(.is-fab)::before {
242
- @apply bg-primary/10;
243
- }
244
-
245
- &.is-secondary .bottomnav-item.is-active:not(.is-fab)::before {
246
- @apply bg-secondary/10;
247
- }
248
-
249
- &.is-ghost .bottomnav-item.is-active:not(.is-fab)::before {
250
- @apply bg-muted;
251
- }
252
-
253
- &.is-line .bottomnav-item.is-active:not(.is-fab)::before {
254
- @apply bg-primary/10;
255
- }
256
- }
257
- }
258
- }
2
+ .bottomnav {
3
+ --bn-pill-radius: 9999px;
4
+ --bn-pill-padding-x: 1rem;
5
+ --bn-pill-padding-y: 0.25rem;
6
+ --bn-pill-opacity: 0.15;
7
+ --bn-fab-size: 3rem;
8
+ --bn-fab-offset: -1.5rem;
9
+
10
+ @apply flex items-center justify-around;
11
+ @apply shadow-lg;
12
+
13
+ &.is-fixed {
14
+ @apply fixed bottom-0 left-0 right-0 z-50;
15
+ padding-bottom: env(safe-area-inset-bottom);
16
+ }
17
+
18
+ &.is-bordered {
19
+ @apply border-t border-muted;
20
+ }
21
+
22
+ &.is-soft {
23
+ &.is-primary {
24
+ @apply bg-soft-primary text-primary;
25
+ }
26
+ &.is-secondary {
27
+ @apply bg-soft-secondary text-secondary;
28
+ }
29
+ &.is-muted {
30
+ @apply bg-soft-muted text-on-muted;
31
+ }
32
+ &.is-success {
33
+ @apply bg-soft-success text-success;
34
+ }
35
+ &.is-info {
36
+ @apply bg-soft-info text-info;
37
+ }
38
+ &.is-warning {
39
+ @apply bg-soft-warning text-warning;
40
+ }
41
+ &.is-danger {
42
+ @apply bg-soft-danger text-danger;
43
+ }
44
+ &.is-background {
45
+ @apply bg-background text-on-background;
46
+ }
47
+ &.is-surface {
48
+ @apply bg-surface text-on-surface;
49
+ }
50
+ }
51
+
52
+ &.is-solid {
53
+ &.is-primary {
54
+ @apply bg-primary text-on-primary;
55
+ }
56
+ &.is-secondary {
57
+ @apply bg-secondary text-on-secondary;
58
+ }
59
+ &.is-muted {
60
+ @apply bg-on-muted text-muted;
61
+ }
62
+ &.is-success {
63
+ @apply bg-success text-on-success;
64
+ }
65
+ &.is-info {
66
+ @apply bg-info text-on-info;
67
+ }
68
+ &.is-warning {
69
+ @apply bg-warning text-on-warning;
70
+ }
71
+ &.is-danger {
72
+ @apply bg-danger text-on-danger;
73
+ }
74
+ &.is-default {
75
+ @apply bg-background text-on-background;
76
+ }
77
+ &.is-surface {
78
+ @apply bg-surface text-on-surface;
79
+ }
80
+ }
81
+
82
+ &.is-blur {
83
+ @apply backdrop-blur-lg;
84
+
85
+ &.is-primary {
86
+ @apply bg-on-primary/80 text-primary;
87
+ }
88
+ &.is-secondary {
89
+ @apply bg-on-secondary/80 text-secondary;
90
+ }
91
+ &.is-muted {
92
+ @apply bg-muted/80 text-on-muted;
93
+ }
94
+ &.is-success {
95
+ @apply bg-on-success/80 text-success;
96
+ }
97
+ &.is-info {
98
+ @apply bg-on-info/80 text-info;
99
+ }
100
+ &.is-warning {
101
+ @apply bg-on-warning/80 text-warning;
102
+ }
103
+ &.is-danger {
104
+ @apply bg-on-danger/80 text-danger;
105
+ }
106
+ &.is-default {
107
+ @apply bg-background/80 text-on-background;
108
+ }
109
+ &.is-surface {
110
+ @apply bg-surface/80 text-on-surface;
111
+ }
112
+ }
113
+
114
+ .bottomnav-item {
115
+ @apply flex flex-col items-center justify-center gap-1;
116
+ @apply flex-1 py-3 px-2;
117
+ @apply cursor-pointer select-none outline-none;
118
+ @apply transition-all duration-300;
119
+ @apply relative;
120
+ @apply text-current opacity-60;
121
+
122
+ &.is-active {
123
+ @apply opacity-100;
124
+ }
125
+
126
+ .bottomnav-icon-wrapper {
127
+ @apply relative inline-flex items-center justify-center;
128
+ @apply transition-all duration-300;
129
+ border-radius: var(--bn-pill-radius);
130
+ }
131
+
132
+ .bottomnav-icon {
133
+ @apply h-6 w-6 shrink-0;
134
+ @apply transition-all duration-300;
135
+ }
136
+
137
+ .bottomnav-label {
138
+ @apply text-xs font-medium whitespace-nowrap;
139
+ @apply transition-all duration-300;
140
+ }
141
+
142
+ .bottomnav-badge {
143
+ @apply absolute -top-1.5 -right-2;
144
+ @apply min-w-4 h-4 px-1;
145
+ @apply flex items-center justify-center;
146
+ @apply text-[10px] font-bold;
147
+ @apply bg-danger text-on-danger;
148
+ @apply rounded-full;
149
+ }
150
+
151
+ &:hover {
152
+ @apply opacity-80;
153
+ }
154
+
155
+ &.is-fab {
156
+ @apply flex-none opacity-100;
157
+
158
+ &:hover {
159
+ @apply bg-transparent;
160
+ }
161
+
162
+ .bottomnav-icon-wrapper {
163
+ width: var(--bn-fab-size);
164
+ height: var(--bn-fab-size);
165
+ margin-top: var(--bn-fab-offset);
166
+ @apply flex items-center justify-center;
167
+ @apply rounded-full shadow-lg;
168
+ @apply transition-all duration-300;
169
+ }
170
+
171
+ .bottomnav-icon {
172
+ @apply h-6 w-6;
173
+ }
174
+
175
+ &:hover .bottomnav-icon-wrapper {
176
+ @apply shadow-xl;
177
+ transform: translateY(-2px);
178
+ }
179
+
180
+ &:active .bottomnav-icon-wrapper {
181
+ transform: translateY(0);
182
+ @apply shadow-md;
183
+ }
184
+
185
+ &.is-primary .bottomnav-icon-wrapper {
186
+ @apply bg-primary text-on-primary shadow-primary/30;
187
+ }
188
+ &.is-secondary .bottomnav-icon-wrapper {
189
+ @apply bg-secondary text-on-secondary shadow-secondary/30;
190
+ }
191
+ &.is-muted .bottomnav-icon-wrapper {
192
+ @apply bg-muted text-on-muted shadow-muted/30;
193
+ }
194
+ &.is-success .bottomnav-icon-wrapper {
195
+ @apply bg-success text-on-success shadow-success/30;
196
+ }
197
+ &.is-info .bottomnav-icon-wrapper {
198
+ @apply bg-info text-on-info shadow-info/30;
199
+ }
200
+ &.is-warning .bottomnav-icon-wrapper {
201
+ @apply bg-warning text-on-warning shadow-warning/30;
202
+ }
203
+ &.is-danger .bottomnav-icon-wrapper {
204
+ @apply bg-danger text-on-danger shadow-danger/30;
205
+ }
206
+ &.is-surface .bottomnav-icon-wrapper {
207
+ @apply bg-surface text-on-surface shadow-black/10;
208
+ }
209
+ &.is-background .bottomnav-icon-wrapper {
210
+ @apply bg-background text-on-background shadow-black/10;
211
+ }
212
+ }
213
+ }
214
+
215
+ &.active-line {
216
+ .bottomnav-item {
217
+ &::after {
218
+ content: '';
219
+ @apply absolute bottom-0 left-1/2 -translate-x-1/2;
220
+ @apply w-0 h-0.5 rounded-full;
221
+ @apply bg-current;
222
+ @apply transition-all duration-300;
223
+ }
224
+
225
+ &.is-active::after {
226
+ @apply w-8;
227
+ }
228
+ }
229
+ }
230
+
231
+ &.active-pill {
232
+ .bottomnav-item {
233
+ .bottomnav-icon-wrapper {
234
+ padding: var(--bn-pill-padding-y) var(--bn-pill-padding-x);
235
+ }
236
+
237
+ .bottomnav-badge {
238
+ @apply -top-1 -right-1;
239
+ }
240
+
241
+ &.is-active:not(.is-fab) .bottomnav-icon-wrapper {
242
+ @apply bg-current/15;
243
+ }
244
+ }
245
+
246
+ &.is-solid .bottomnav-item.is-active:not(.is-fab) .bottomnav-icon-wrapper {
247
+ @apply bg-white/20;
248
+ }
249
+ }
250
+
251
+ &.is-sm {
252
+ --bn-fab-size: 2.5rem;
253
+ --bn-fab-offset: -1.25rem;
254
+ --bn-pill-padding-x: 0.75rem;
255
+ --bn-pill-padding-y: 0.125rem;
256
+
257
+ .bottomnav-item {
258
+ @apply gap-0.5 py-2 px-1;
259
+
260
+ .bottomnav-icon {
261
+ @apply h-5 w-5;
262
+ }
263
+
264
+ .bottomnav-label {
265
+ @apply text-[10px];
266
+ }
267
+ }
268
+ }
269
+
270
+ &.is-md {
271
+ --bn-fab-size: 3rem;
272
+ --bn-fab-offset: -1.5rem;
273
+
274
+ .bottomnav-item {
275
+ @apply gap-1 py-3 px-2;
276
+
277
+ .bottomnav-icon {
278
+ @apply h-6 w-6;
279
+ }
280
+
281
+ .bottomnav-label {
282
+ @apply text-xs;
283
+ }
284
+ }
285
+ }
286
+
287
+ &.is-lg {
288
+ --bn-fab-size: 3.5rem;
289
+ --bn-fab-offset: -1.75rem;
290
+ --bn-pill-padding-x: 1.25rem;
291
+ --bn-pill-padding-y: 0.375rem;
292
+
293
+ .bottomnav-item {
294
+ @apply gap-1.5 py-4 px-3;
295
+
296
+ .bottomnav-icon {
297
+ @apply h-7 w-7;
298
+ }
299
+
300
+ .bottomnav-label {
301
+ @apply text-sm;
302
+ }
303
+
304
+ &.is-fab .bottomnav-icon {
305
+ @apply h-7 w-7;
306
+ }
307
+ }
308
+ }
309
+
310
+ &.is-icon-only {
311
+ .bottomnav-item {
312
+ @apply gap-0;
313
+
314
+ .bottomnav-icon {
315
+ @apply h-7 w-7;
316
+ }
317
+ }
318
+ }
319
+ }
320
+ }
@@ -13,7 +13,7 @@
13
13
 
14
14
  .footer-group-link {
15
15
  @apply text-sm;
16
- @apply transition-colors duration-200;
16
+ @apply transition-colors duration-300;
17
17
  @apply hover:underline;
18
18
  @apply inline-flex items-center gap-1;
19
19
  }
@@ -4,7 +4,7 @@
4
4
 
5
5
  .footer-nav-link {
6
6
  @apply text-sm opacity-70;
7
- @apply transition-all duration-200;
7
+ @apply transition-all duration-300;
8
8
  @apply hover:underline;
9
9
  @apply focus:outline-none;
10
10
  @apply cursor-pointer select-none;