ui-svelte 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +118 -0
  3. package/dist/charts/ArcChart.svelte +320 -0
  4. package/dist/charts/ArcChart.svelte.d.ts +26 -0
  5. package/dist/charts/AreaChart.svelte +495 -0
  6. package/dist/charts/AreaChart.svelte.d.ts +32 -0
  7. package/dist/charts/BarChart.svelte +504 -0
  8. package/dist/charts/BarChart.svelte.d.ts +38 -0
  9. package/dist/charts/Candlestick.svelte +527 -0
  10. package/dist/charts/Candlestick.svelte.d.ts +38 -0
  11. package/dist/charts/LineChart.svelte +365 -0
  12. package/dist/charts/LineChart.svelte.d.ts +36 -0
  13. package/dist/charts/PieChart.svelte +311 -0
  14. package/dist/charts/PieChart.svelte.d.ts +28 -0
  15. package/dist/charts/css/arc-chart.css +237 -0
  16. package/dist/charts/css/area-chart.css +289 -0
  17. package/dist/charts/css/bar-chart.css +167 -0
  18. package/dist/charts/css/candlestick.css +197 -0
  19. package/dist/charts/css/line-chart.css +202 -0
  20. package/dist/charts/css/pie-chart.css +199 -0
  21. package/dist/control/Audio.svelte +212 -0
  22. package/dist/control/Audio.svelte.d.ts +8 -0
  23. package/dist/control/Button.svelte +116 -0
  24. package/dist/control/Button.svelte.d.ts +22 -0
  25. package/dist/control/IconButton.svelte +104 -0
  26. package/dist/control/IconButton.svelte.d.ts +17 -0
  27. package/dist/control/Record.svelte +430 -0
  28. package/dist/control/Record.svelte.d.ts +11 -0
  29. package/dist/control/ToggleTheme.svelte +21 -0
  30. package/dist/control/ToggleTheme.svelte.d.ts +8 -0
  31. package/dist/control/Video.svelte +222 -0
  32. package/dist/control/Video.svelte.d.ts +10 -0
  33. package/dist/control/css/btn.css +206 -0
  34. package/dist/control/css/media.css +78 -0
  35. package/dist/control/css/video.css +58 -0
  36. package/dist/css/animations.css +27 -0
  37. package/dist/css/base.css +192 -0
  38. package/dist/css/utilities.css +136 -0
  39. package/dist/display/Accordion.svelte +98 -0
  40. package/dist/display/Accordion.svelte.d.ts +20 -0
  41. package/dist/display/Alert.svelte +65 -0
  42. package/dist/display/Alert.svelte.d.ts +15 -0
  43. package/dist/display/Avatar.svelte +80 -0
  44. package/dist/display/Avatar.svelte.d.ts +13 -0
  45. package/dist/display/Badge.svelte +46 -0
  46. package/dist/display/Badge.svelte.d.ts +11 -0
  47. package/dist/display/Card.svelte +94 -0
  48. package/dist/display/Card.svelte.d.ts +21 -0
  49. package/dist/display/Carousel.svelte +359 -0
  50. package/dist/display/Carousel.svelte.d.ts +25 -0
  51. package/dist/display/ChatBox.svelte +249 -0
  52. package/dist/display/ChatBox.svelte.d.ts +18 -0
  53. package/dist/display/Chip.svelte +67 -0
  54. package/dist/display/Chip.svelte.d.ts +17 -0
  55. package/dist/display/Code.svelte +56 -0
  56. package/dist/display/Code.svelte.d.ts +9 -0
  57. package/dist/display/Collapsible.svelte +71 -0
  58. package/dist/display/Collapsible.svelte.d.ts +15 -0
  59. package/dist/display/Divider.svelte +32 -0
  60. package/dist/display/Divider.svelte.d.ts +10 -0
  61. package/dist/display/Empty.svelte +462 -0
  62. package/dist/display/Empty.svelte.d.ts +11 -0
  63. package/dist/display/Icon.svelte +20 -0
  64. package/dist/display/Icon.svelte.d.ts +11 -0
  65. package/dist/display/Item.svelte +119 -0
  66. package/dist/display/Item.svelte.d.ts +24 -0
  67. package/dist/display/Loading.svelte +8 -0
  68. package/dist/display/Loading.svelte.d.ts +26 -0
  69. package/dist/display/Marquee.svelte +164 -0
  70. package/dist/display/Marquee.svelte.d.ts +21 -0
  71. package/dist/display/Section.svelte +63 -0
  72. package/dist/display/Section.svelte.d.ts +16 -0
  73. package/dist/display/Table.svelte +407 -0
  74. package/dist/display/Table.svelte.d.ts +32 -0
  75. package/dist/display/TypeWriter.svelte +23 -0
  76. package/dist/display/TypeWriter.svelte.d.ts +11 -0
  77. package/dist/display/User.svelte +0 -0
  78. package/dist/display/User.svelte.d.ts +26 -0
  79. package/dist/display/css/accordion.css +98 -0
  80. package/dist/display/css/alert.css +51 -0
  81. package/dist/display/css/avatar.css +158 -0
  82. package/dist/display/css/badge.css +47 -0
  83. package/dist/display/css/card.css +231 -0
  84. package/dist/display/css/carousel.css +156 -0
  85. package/dist/display/css/chat-box.css +188 -0
  86. package/dist/display/css/chip.css +91 -0
  87. package/dist/display/css/code.css +19 -0
  88. package/dist/display/css/collapsible.css +86 -0
  89. package/dist/display/css/divider.css +54 -0
  90. package/dist/display/css/empty.css +8 -0
  91. package/dist/display/css/item.css +149 -0
  92. package/dist/display/css/listbox.css +24 -0
  93. package/dist/display/css/marquee.css +138 -0
  94. package/dist/display/css/section.css +85 -0
  95. package/dist/display/css/table.css +361 -0
  96. package/dist/form/Checkbox.svelte +45 -0
  97. package/dist/form/Checkbox.svelte.d.ts +13 -0
  98. package/dist/form/ComboBox.svelte +448 -0
  99. package/dist/form/ComboBox.svelte.d.ts +29 -0
  100. package/dist/form/CsvField.svelte +389 -0
  101. package/dist/form/CsvField.svelte.d.ts +21 -0
  102. package/dist/form/DateField.svelte +292 -0
  103. package/dist/form/DateField.svelte.d.ts +18 -0
  104. package/dist/form/Dropzone.svelte +196 -0
  105. package/dist/form/Dropzone.svelte.d.ts +30 -0
  106. package/dist/form/ImageCropper.svelte +254 -0
  107. package/dist/form/ImageCropper.svelte.d.ts +14 -0
  108. package/dist/form/PasswordField.svelte +170 -0
  109. package/dist/form/PasswordField.svelte.d.ts +28 -0
  110. package/dist/form/PhoneField.svelte +485 -0
  111. package/dist/form/PhoneField.svelte.d.ts +25 -0
  112. package/dist/form/PinField.svelte +139 -0
  113. package/dist/form/PinField.svelte.d.ts +17 -0
  114. package/dist/form/RadioGroup.svelte +70 -0
  115. package/dist/form/RadioGroup.svelte.d.ts +19 -0
  116. package/dist/form/Select.svelte +350 -0
  117. package/dist/form/Select.svelte.d.ts +26 -0
  118. package/dist/form/Slider.svelte +60 -0
  119. package/dist/form/Slider.svelte.d.ts +15 -0
  120. package/dist/form/TextField.svelte +154 -0
  121. package/dist/form/TextField.svelte.d.ts +31 -0
  122. package/dist/form/Textarea.svelte +137 -0
  123. package/dist/form/Textarea.svelte.d.ts +27 -0
  124. package/dist/form/Toggle.svelte +45 -0
  125. package/dist/form/Toggle.svelte.d.ts +13 -0
  126. package/dist/form/css/checkbox.css +46 -0
  127. package/dist/form/css/combo-box.css +69 -0
  128. package/dist/form/css/control.css +177 -0
  129. package/dist/form/css/csv-field.css +0 -0
  130. package/dist/form/css/date.css +56 -0
  131. package/dist/form/css/dropzone.css +133 -0
  132. package/dist/form/css/field.css +17 -0
  133. package/dist/form/css/image-cropper.css +155 -0
  134. package/dist/form/css/password.css +35 -0
  135. package/dist/form/css/radio-group.css +57 -0
  136. package/dist/form/css/select.css +18 -0
  137. package/dist/form/css/slider.css +80 -0
  138. package/dist/form/css/textarea.css +130 -0
  139. package/dist/form/css/toggle.css +27 -0
  140. package/dist/form/js/countries.d.ts +13 -0
  141. package/dist/form/js/countries.js +307 -0
  142. package/dist/form/js/phone-examples.d.ts +248 -0
  143. package/dist/form/js/phone-examples.js +247 -0
  144. package/dist/hooks/use-auth.svelte.d.ts +11 -0
  145. package/dist/hooks/use-auth.svelte.js +59 -0
  146. package/dist/hooks/use-chat.svelte.d.ts +40 -0
  147. package/dist/hooks/use-chat.svelte.js +265 -0
  148. package/dist/hooks/use-clipboard.svelte.d.ts +9 -0
  149. package/dist/hooks/use-clipboard.svelte.js +52 -0
  150. package/dist/hooks/use-fetch.svelte.d.ts +11 -0
  151. package/dist/hooks/use-fetch.svelte.js +38 -0
  152. package/dist/hooks/use-form.svelte.d.ts +31 -0
  153. package/dist/hooks/use-form.svelte.js +110 -0
  154. package/dist/hooks/use-localstorage.svelte.d.ts +3 -0
  155. package/dist/hooks/use-localstorage.svelte.js +26 -0
  156. package/dist/hooks/use-scroll.svelte.d.ts +6 -0
  157. package/dist/hooks/use-scroll.svelte.js +34 -0
  158. package/dist/hooks/use-search.svelte.d.ts +49 -0
  159. package/dist/hooks/use-search.svelte.js +229 -0
  160. package/dist/hooks/use-table.svelte.d.ts +85 -0
  161. package/dist/hooks/use-table.svelte.js +362 -0
  162. package/dist/hooks/use-websocket.svelte.d.ts +18 -0
  163. package/dist/hooks/use-websocket.svelte.js +79 -0
  164. package/dist/icons/index.d.ts +132 -0
  165. package/dist/icons/index.js +132 -0
  166. package/dist/index.css +115 -0
  167. package/dist/index.d.ts +76 -0
  168. package/dist/index.js +76 -0
  169. package/dist/layout/AppBar.svelte +94 -0
  170. package/dist/layout/AppBar.svelte.d.ts +17 -0
  171. package/dist/layout/Footer.svelte +94 -0
  172. package/dist/layout/Footer.svelte.d.ts +17 -0
  173. package/dist/layout/FooterLinks.svelte +28 -0
  174. package/dist/layout/FooterLinks.svelte.d.ts +11 -0
  175. package/dist/layout/Provider.svelte +52 -0
  176. package/dist/layout/Provider.svelte.d.ts +10 -0
  177. package/dist/layout/Scaffold.svelte +46 -0
  178. package/dist/layout/Scaffold.svelte.d.ts +15 -0
  179. package/dist/layout/Sidebar.svelte +40 -0
  180. package/dist/layout/Sidebar.svelte.d.ts +13 -0
  181. package/dist/layout/css/app-bar.css +35 -0
  182. package/dist/layout/css/bottom-bar.css +12 -0
  183. package/dist/layout/css/footer-links.css +17 -0
  184. package/dist/layout/css/footer.css +35 -0
  185. package/dist/layout/css/scaffold.css +15 -0
  186. package/dist/layout/css/sidebar.css +17 -0
  187. package/dist/navigation/BottomNav.svelte +0 -0
  188. package/dist/navigation/BottomNav.svelte.d.ts +26 -0
  189. package/dist/navigation/NavMenu.svelte +254 -0
  190. package/dist/navigation/SideNav.svelte +249 -0
  191. package/dist/navigation/Tabs.svelte +79 -0
  192. package/dist/navigation/Tabs.svelte.d.ts +19 -0
  193. package/dist/navigation/css/bottom-nav.css +0 -0
  194. package/dist/navigation/css/nav-menu.css +168 -0
  195. package/dist/navigation/css/side-nav.css +244 -0
  196. package/dist/navigation/css/tabs.css +118 -0
  197. package/dist/overlay/AlertDialog.svelte +0 -0
  198. package/dist/overlay/AlertDialog.svelte.d.ts +26 -0
  199. package/dist/overlay/Command.svelte +0 -0
  200. package/dist/overlay/Command.svelte.d.ts +26 -0
  201. package/dist/overlay/Drawer.svelte +129 -0
  202. package/dist/overlay/Drawer.svelte.d.ts +20 -0
  203. package/dist/overlay/Dropdown.svelte +140 -0
  204. package/dist/overlay/Modal.svelte +102 -0
  205. package/dist/overlay/Modal.svelte.d.ts +19 -0
  206. package/dist/overlay/PopoverStack.svelte +0 -0
  207. package/dist/overlay/PopoverStack.svelte.d.ts +26 -0
  208. package/dist/overlay/Toast.svelte +83 -0
  209. package/dist/overlay/Toast.svelte.d.ts +9 -0
  210. package/dist/overlay/Tooltip.svelte +140 -0
  211. package/dist/overlay/Tooltip.svelte.d.ts +12 -0
  212. package/dist/overlay/css/drawer.css +75 -0
  213. package/dist/overlay/css/dropdown.css +24 -0
  214. package/dist/overlay/css/hovercard.css +11 -0
  215. package/dist/overlay/css/modal.css +51 -0
  216. package/dist/overlay/css/toast.css +80 -0
  217. package/dist/overlay/css/tooltip.css +89 -0
  218. package/dist/stores/i18n.svelte.d.ts +16 -0
  219. package/dist/stores/i18n.svelte.js +137 -0
  220. package/dist/stores/theme.svelte.d.ts +5 -0
  221. package/dist/stores/theme.svelte.js +55 -0
  222. package/dist/stores/toast.svelte.d.ts +19 -0
  223. package/dist/stores/toast.svelte.js +38 -0
  224. package/dist/types.d.ts +75 -0
  225. package/dist/types.js +1 -0
  226. package/dist/utils/charts.d.ts +27 -0
  227. package/dist/utils/charts.js +140 -0
  228. package/dist/utils/class-names.d.ts +1 -0
  229. package/dist/utils/class-names.js +3 -0
  230. package/dist/utils/click-outside.d.ts +3 -0
  231. package/dist/utils/click-outside.js +9 -0
  232. package/dist/utils/popover.d.ts +3 -0
  233. package/dist/utils/popover.js +17 -0
  234. package/dist/utils/ulid.d.ts +1 -0
  235. package/dist/utils/ulid.js +22 -0
  236. package/dist/utils/validate-schema.d.ts +2 -0
  237. package/dist/utils/validate-schema.js +97 -0
  238. package/package.json +69 -0
@@ -0,0 +1,156 @@
1
+ @layer components {
2
+ .carousel {
3
+ @apply flex flex-col gap-4 relative w-full overflow-hidden;
4
+
5
+ &.is-vertical {
6
+ @apply flex-row;
7
+ }
8
+ }
9
+
10
+ .carousel-viewport {
11
+ @apply relative w-full overflow-hidden touch-pan-y;
12
+ cursor: grab;
13
+ min-height: 200px;
14
+
15
+ &:active {
16
+ cursor: grabbing;
17
+ }
18
+
19
+ &.is-dragging {
20
+ cursor: grabbing;
21
+ }
22
+ }
23
+
24
+ .carousel-container {
25
+ @apply flex transition-transform duration-300 ease-out;
26
+ will-change: transform;
27
+ height: 100%;
28
+
29
+ &.is-dragging {
30
+ @apply transition-none;
31
+ }
32
+
33
+ &.is-vertical {
34
+ @apply flex-col;
35
+ }
36
+ }
37
+
38
+ .carousel-slide {
39
+ @apply shrink-0 w-full select-none;
40
+ height: 100%;
41
+ user-select: none;
42
+ -webkit-user-select: none;
43
+ -moz-user-select: none;
44
+ -ms-user-select: none;
45
+
46
+ img {
47
+ @apply pointer-events-none;
48
+ -webkit-user-drag: none;
49
+ }
50
+ }
51
+
52
+ .carousel-controls {
53
+ @apply flex items-center justify-center gap-2;
54
+
55
+ &.is-vertical {
56
+ @apply flex-col;
57
+ }
58
+ }
59
+
60
+ .carousel-indicators {
61
+ @apply flex items-center justify-center gap-2;
62
+
63
+ &.is-vertical {
64
+ @apply flex-col;
65
+ }
66
+ }
67
+
68
+ .carousel-indicator {
69
+ @apply h-2 rounded-full transition-all cursor-pointer;
70
+ @apply bg-muted hover:bg-muted/70;
71
+
72
+ &.is-active {
73
+ @apply bg-primary;
74
+ }
75
+
76
+ &.is-sm {
77
+ @apply w-6;
78
+ &.is-active {
79
+ @apply w-8;
80
+ }
81
+ }
82
+
83
+ &.is-md {
84
+ @apply w-8;
85
+ &.is-active {
86
+ @apply w-12;
87
+ }
88
+ }
89
+
90
+ &.is-lg {
91
+ @apply w-10;
92
+ &.is-active {
93
+ @apply w-16;
94
+ }
95
+ }
96
+
97
+ &.is-dot {
98
+ @apply rounded-full;
99
+ &.is-sm {
100
+ @apply w-2 h-2;
101
+ &.is-active {
102
+ @apply w-2 h-2 scale-125;
103
+ }
104
+ }
105
+ &.is-md {
106
+ @apply w-2.5 h-2.5;
107
+ &.is-active {
108
+ @apply w-2.5 h-2.5 scale-125;
109
+ }
110
+ }
111
+ &.is-lg {
112
+ @apply w-3 h-3;
113
+ &.is-active {
114
+ @apply w-3 h-3 scale-125;
115
+ }
116
+ }
117
+ }
118
+ }
119
+
120
+ .carousel-nav {
121
+ @apply absolute top-1/2 -translate-y-1/2 z-10;
122
+ @apply flex items-center justify-center rounded-full;
123
+ @apply bg-surface/90 text-on-surface hover:bg-primary hover:text-on-primary;
124
+ @apply border border-muted shadow-sm backdrop-blur-sm;
125
+ @apply transition-all opacity-0 pointer-events-none;
126
+ @apply disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-surface/90 disabled:hover:text-on-surface;
127
+
128
+ .carousel:hover & {
129
+ @apply opacity-100 pointer-events-auto;
130
+ }
131
+
132
+ &.is-prev {
133
+ @apply left-4;
134
+ }
135
+
136
+ &.is-next {
137
+ @apply right-4;
138
+ }
139
+
140
+ &.is-sm {
141
+ @apply h-8 w-8 text-sm;
142
+ }
143
+
144
+ &.is-md {
145
+ @apply h-10 w-10 text-base;
146
+ }
147
+
148
+ &.is-lg {
149
+ @apply h-12 w-12 text-lg;
150
+ }
151
+ }
152
+
153
+ .carousel-counter {
154
+ @apply text-sm text-on-surface/70 text-center font-medium;
155
+ }
156
+ }
@@ -0,0 +1,188 @@
1
+ @layer components {
2
+ .chatbox {
3
+ @apply relative flex h-full w-full flex-col overflow-hidden rounded-ui;
4
+ @apply bg-surface;
5
+ }
6
+
7
+ .chatbox-header {
8
+ @apply flex items-center justify-between gap-3 border-b border-muted px-4 py-3;
9
+ @apply bg-background text-on-background;
10
+ }
11
+
12
+ .chatbox-header-start {
13
+ @apply flex items-center gap-3;
14
+ }
15
+
16
+ .chatbox-header-center {
17
+ @apply flex flex-1 flex-col items-start gap-0.5;
18
+ }
19
+
20
+ .chatbox-header-name {
21
+ @apply text-sm font-semibold leading-none text-on-surface;
22
+ }
23
+
24
+ .chatbox-header-status {
25
+ @apply text-xs leading-none text-on-muted;
26
+ }
27
+
28
+ .chatbox-header-end {
29
+ @apply flex items-center gap-2;
30
+ }
31
+
32
+ .chatbox-messages {
33
+ @apply flex flex-1 flex-col gap-2 overflow-y-auto px-4 py-4;
34
+ @apply bg-surface;
35
+ }
36
+
37
+ .chatbox-messages::-webkit-scrollbar {
38
+ @apply w-1.5;
39
+ }
40
+
41
+ .chatbox-messages::-webkit-scrollbar-track {
42
+ @apply bg-transparent;
43
+ }
44
+
45
+ .chatbox-messages::-webkit-scrollbar-thumb {
46
+ @apply rounded-full bg-muted/30;
47
+ }
48
+
49
+ .chatbox-messages::-webkit-scrollbar-thumb:hover {
50
+ @apply bg-muted/50;
51
+ }
52
+
53
+ .message-wrapper {
54
+ @apply flex w-full;
55
+ animation: messageSlideIn 0.2s ease-out;
56
+ }
57
+
58
+ .message-wrapper.own {
59
+ @apply justify-end;
60
+ }
61
+
62
+ .message-wrapper:not(.own) {
63
+ @apply justify-start;
64
+ }
65
+
66
+ @keyframes messageSlideIn {
67
+ from {
68
+ opacity: 0;
69
+ transform: translateY(0.5rem);
70
+ }
71
+ to {
72
+ opacity: 1;
73
+ transform: translateY(0);
74
+ }
75
+ }
76
+
77
+ .message {
78
+ @apply relative max-w-[70%] rounded-2xl px-3 py-2;
79
+ @apply text-sm leading-relaxed;
80
+ }
81
+
82
+ .message:not(.own) {
83
+ @apply rounded-bl-md bg-surface text-on-surface;
84
+ }
85
+
86
+ .message.own {
87
+ @apply rounded-br-md;
88
+ }
89
+
90
+ .message-content {
91
+ @apply mb-1 whitespace-pre-wrap wrap-break-word leading-relaxed;
92
+ }
93
+
94
+ .message-meta {
95
+ @apply flex items-center justify-end gap-1;
96
+ }
97
+
98
+ .message-time {
99
+ @apply text-[10px] opacity-70;
100
+ }
101
+
102
+ .message-status {
103
+ @apply text-xs opacity-80;
104
+ }
105
+
106
+ .message-status-read {
107
+ @apply text-info;
108
+ }
109
+
110
+ .message-image {
111
+ @apply mb-1 block max-w-full rounded-lg;
112
+ }
113
+
114
+ .message-file {
115
+ @apply flex items-center gap-2 py-1;
116
+ }
117
+
118
+ .message-file-icon {
119
+ @apply text-xl;
120
+ }
121
+
122
+ .message-file-name {
123
+ @apply text-sm;
124
+ }
125
+
126
+ /* Variantes de color para mensajes propios */
127
+ .chatbox-primary .message.own {
128
+ @apply bg-primary text-on-primary;
129
+ }
130
+
131
+ .chatbox-secondary .message.own {
132
+ @apply bg-secondary text-on-secondary;
133
+ }
134
+
135
+ .chatbox-success .message.own {
136
+ @apply bg-success text-on-success;
137
+ }
138
+
139
+ .chatbox-info .message.own {
140
+ @apply bg-info text-on-info;
141
+ }
142
+
143
+ .chatbox-warning .message.own {
144
+ @apply bg-warning text-on-warning;
145
+ }
146
+
147
+ .chatbox-danger .message.own {
148
+ @apply bg-danger text-on-danger;
149
+ }
150
+
151
+ .chatbox-soft .message.own {
152
+ @apply bg-primary/10 text-primary;
153
+ }
154
+
155
+ .chatbox-outlined .message.own {
156
+ @apply border border-primary bg-transparent text-primary;
157
+ }
158
+
159
+ .chatbox-footer {
160
+ @apply border-t border-surface text-on-background p-2;
161
+ }
162
+
163
+ .chatbox-input {
164
+ @apply appearance-none w-full h-full outline-none;
165
+ }
166
+
167
+ .chatbox-input-wrapper {
168
+ @apply flex items-center gap-2 bg-background rounded-ui p-2;
169
+ box-shadow: 0 0 3px 0 var(--color-muted);
170
+ }
171
+
172
+ .chatbox-input-actions {
173
+ @apply flex items-center gap-1;
174
+ }
175
+
176
+ .chatbox-record-overlay {
177
+ @apply absolute inset-x-0 bottom-0 z-10;
178
+ @apply border-t border-muted bg-surface/95 backdrop-blur-sm;
179
+ @apply px-4 py-3;
180
+ }
181
+
182
+ .load-more-btn {
183
+ @apply mx-auto mb-2 block rounded-full px-4 py-2 text-xs font-medium;
184
+ @apply bg-surface text-on-surface shadow-sm transition-all;
185
+ @apply hover:shadow-md;
186
+ @apply disabled:cursor-not-allowed disabled:opacity-50;
187
+ }
188
+ }
@@ -0,0 +1,91 @@
1
+ @layer components {
2
+ .chip {
3
+ @apply relative flex items-center justify-center w-fit;
4
+ @appls font-medium whitespace-nowrap;
5
+ @apply rounded-ui outline-none;
6
+ }
7
+
8
+ .chip.is-sm {
9
+ @apply min-h-6 gap-2 px-2 text-xs;
10
+
11
+ .icon {
12
+ @apply h-4 w-auto;
13
+ }
14
+ }
15
+
16
+ .chip.is-md {
17
+ @apply min-h-8 gap-3 px-3 text-sm;
18
+
19
+ .icon {
20
+ @apply h-4 w-auto;
21
+ }
22
+ }
23
+
24
+ .chip.is-lg {
25
+ @apply min-h-10 gap-3 px-4 text-lg;
26
+
27
+ .icon {
28
+ @apply h-6 w-auto;
29
+ }
30
+ }
31
+
32
+ .chip.has-shadow {
33
+ @apply shadow-sm;
34
+ }
35
+
36
+ .chip.is-solid.is-primary {
37
+ @apply bg-primary text-on-primary;
38
+ }
39
+
40
+ .chip.is-solid.is-secondary {
41
+ @apply bg-secondary text-on-secondary;
42
+ }
43
+
44
+ .chip.is-solid.is-muted {
45
+ @apply bg-on-muted text-muted;
46
+ }
47
+
48
+ .chip.is-solid.is-success {
49
+ @apply bg-success text-on-success;
50
+ }
51
+
52
+ .chip.is-solid.is-warning {
53
+ @apply bg-warning text-on-warning;
54
+ }
55
+
56
+ .chip.is-solid.is-danger {
57
+ @apply bg-danger text-on-danger;
58
+ }
59
+
60
+ .chip.is-solid.is-info {
61
+ @apply bg-info text-on-info;
62
+ }
63
+
64
+ .chip.is-primary {
65
+ @apply bg-on-primary text-primary;
66
+ }
67
+
68
+ .chip.is-secondary {
69
+ @apply bg-on-secondary text-secondary;
70
+ }
71
+
72
+ .chip.is-muted {
73
+ @apply bg-muted text-on-muted;
74
+ }
75
+
76
+ .chip.is-success {
77
+ @apply bg-on-success text-success;
78
+ }
79
+
80
+ .chip.is-warning {
81
+ @apply bg-on-warning text-warning;
82
+ }
83
+
84
+ .chip.is-danger {
85
+ @apply bg-on-danger text-danger;
86
+ }
87
+
88
+ .chip.is-info {
89
+ @apply bg-on-info text-info;
90
+ }
91
+ }
@@ -0,0 +1,19 @@
1
+ @layer components {
2
+ .code {
3
+ @apply relative inline-block w-full;
4
+ tab-size: 4;
5
+ -moz-tab-size: 4;
6
+ }
7
+ .code-content {
8
+ @apply size-full overflow-auto rounded-md;
9
+ background-color: inherit;
10
+ }
11
+
12
+ .code-info {
13
+ @apply absolute top-2 right-2 flex justify-end items-center gap-2;
14
+ }
15
+ .shiki {
16
+ @apply p-3 rounded-ui;
17
+ min-width: fit-content;
18
+ }
19
+ }
@@ -0,0 +1,86 @@
1
+ @layer components {
2
+ .collapsible {
3
+ @apply w-full transition-all duration-200;
4
+
5
+ &.is-primary {
6
+ @apply border border-primary/20 rounded-lg overflow-hidden;
7
+ .collapsible-header {
8
+ @apply bg-primary/5 hover:bg-primary/10;
9
+ &.is-open {
10
+ @apply bg-primary/10 text-primary;
11
+ }
12
+ }
13
+ }
14
+
15
+ &.is-secondary {
16
+ @apply border border-secondary/20 rounded-lg overflow-hidden;
17
+ .collapsible-header {
18
+ @apply bg-secondary/5 hover:bg-secondary/10;
19
+ &.is-open {
20
+ @apply bg-secondary/10 text-secondary;
21
+ }
22
+ }
23
+ }
24
+
25
+ &.is-muted {
26
+ @apply border border-muted rounded-lg overflow-hidden;
27
+ .collapsible-header {
28
+ @apply bg-muted/30 hover:bg-muted/50;
29
+ &.is-open {
30
+ @apply bg-muted text-on-muted;
31
+ }
32
+ }
33
+ }
34
+
35
+ &.is-outline {
36
+ @apply border border-muted rounded-lg overflow-hidden;
37
+ .collapsible-header {
38
+ @apply hover:bg-muted/30;
39
+ &.is-open {
40
+ @apply bg-muted/20;
41
+ }
42
+ }
43
+ }
44
+
45
+ &.is-disabled {
46
+ @apply opacity-50 pointer-events-none;
47
+ }
48
+
49
+ .collapsible-header {
50
+ @apply flex justify-between items-center gap-3 px-4 py-3 cursor-pointer select-none transition-all duration-200;
51
+
52
+ .collapsible-start {
53
+ @apply flex items-center gap-3 flex-1;
54
+
55
+ .collapsible-icon {
56
+ @apply h-5 w-auto shrink-0;
57
+ }
58
+
59
+ .collapsible-label {
60
+ @apply font-medium text-sm;
61
+ }
62
+ }
63
+
64
+ .collapsible-end {
65
+ @apply flex items-center;
66
+
67
+ .collapsible-arrow {
68
+ @apply size-5 transition-transform duration-200 text-on-muted;
69
+ &.is-active {
70
+ @apply rotate-180;
71
+ }
72
+ }
73
+ }
74
+
75
+ &:hover:not(.is-disabled) {
76
+ .collapsible-arrow {
77
+ @apply text-on-surface;
78
+ }
79
+ }
80
+ }
81
+
82
+ .collapsible-content {
83
+ @apply px-4 py-3 text-sm text-on-surface/80;
84
+ }
85
+ }
86
+ }
@@ -0,0 +1,54 @@
1
+ @layer components {
2
+ .divider-horizontal {
3
+ @apply flex items-center w-full;
4
+ &:before,
5
+ &:after {
6
+ @apply content-[''] h-px flex-1 bg-muted;
7
+ }
8
+ & > * {
9
+ @apply px-4;
10
+ }
11
+ }
12
+ .divider-vertical {
13
+ @apply flex flex-col items-center h-full;
14
+
15
+ &:before,
16
+ &:after {
17
+ @apply content-[''] w-px flex-1 bg-muted;
18
+ }
19
+
20
+ & > * {
21
+ @apply py-4;
22
+ }
23
+ }
24
+
25
+ .divider-horizontal,
26
+ .divider-vertical {
27
+ &.divider-default,
28
+ &.divider-surface {
29
+ &:before,
30
+ &:after {
31
+ @apply bg-muted;
32
+ }
33
+ }
34
+
35
+ &.divider-primary {
36
+ &:before,
37
+ &:after {
38
+ @apply bg-primary;
39
+ }
40
+ }
41
+ &.divider-secondary {
42
+ &:before,
43
+ &:after {
44
+ @apply bg-secondary;
45
+ }
46
+ }
47
+ &.divider-muted {
48
+ &:before,
49
+ &:after {
50
+ @apply bg-on-muted;
51
+ }
52
+ }
53
+ }
54
+ }
@@ -0,0 +1,8 @@
1
+ @layer components {
2
+ .empty {
3
+ @apply flex flex-col items-center justify-center w-full gap-4 p-4 text-center;
4
+ .empty-icon {
5
+ @apply max-h-64 w-full;
6
+ }
7
+ }
8
+ }