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,133 @@
1
+ @layer components {
2
+ .dropzone {
3
+ @apply relative w-full flex flex-col;
4
+ }
5
+
6
+ .dropzone-input {
7
+ @apply flex justify-center items-center border-2 border-dashed h-48 w-full;
8
+ @apply border-muted p-6 transition-all rounded-ui cursor-pointer;
9
+ }
10
+
11
+ .dropzone-input.is-active {
12
+ @apply border-primary bg-primary/5;
13
+ }
14
+
15
+ .dropzone-input.is-disabled {
16
+ @apply opacity-50 cursor-not-allowed;
17
+ }
18
+
19
+ .dropzone-input.is-error {
20
+ @apply border-danger;
21
+ }
22
+
23
+ .dropzone-input.is-primary {
24
+ @apply bg-on-primary border-primary;
25
+ }
26
+
27
+ .dropzone-input.is-solid.is-primary {
28
+ @apply bg-primary border-primary;
29
+ }
30
+
31
+ .dropzone-input.is-secondary {
32
+ @apply bg-on-secondary border-secondary;
33
+ }
34
+
35
+ .dropzone-input.is-solid.is-secondary {
36
+ @apply bg-secondary border-secondary;
37
+ }
38
+
39
+ .dropzone-input.is-muted {
40
+ @apply bg-muted border-muted;
41
+ }
42
+
43
+ .dropzone-input.is-solid.is-muted {
44
+ @apply bg-on-muted border-on-muted;
45
+ }
46
+
47
+ .dropzone-input.is-outlined {
48
+ @apply border-muted;
49
+ }
50
+
51
+ .dropzone-input.is-outlined.is-active {
52
+ @apply border-primary;
53
+ }
54
+
55
+ .dropzone-input.is-line {
56
+ @apply border-0 border-b-2 border-muted rounded-none;
57
+ }
58
+
59
+ .dropzone-input.is-line.is-active {
60
+ @apply border-primary;
61
+ }
62
+
63
+ .dropzone-input.is-sm {
64
+ @apply h-32 text-sm;
65
+ }
66
+
67
+ .dropzone-input.is-md {
68
+ @apply h-48 text-base;
69
+ }
70
+
71
+ .dropzone-input.is-lg {
72
+ @apply h-64 text-lg;
73
+ }
74
+
75
+ .dropzone-content {
76
+ @apply flex flex-col items-center gap-2;
77
+ }
78
+
79
+ .dropzone-icon {
80
+ @apply h-8 w-8 opacity-50;
81
+ }
82
+
83
+ .dropzone-placeholder {
84
+ @apply text-sm text-center opacity-70;
85
+ }
86
+
87
+ .dropzone-files {
88
+ @apply mt-4 flex flex-col gap-2;
89
+ }
90
+
91
+ .dropzone-file {
92
+ @apply flex items-center justify-between gap-3 p-3 rounded-ui;
93
+ @apply border border-muted bg-muted/30;
94
+ }
95
+
96
+ .dropzone-file-preview {
97
+ @apply relative size-10 overflow-hidden rounded shrink-0;
98
+ }
99
+
100
+ .dropzone-file-image {
101
+ @apply absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2;
102
+ @apply w-full h-full object-cover;
103
+ }
104
+
105
+ .dropzone-file-icon {
106
+ @apply size-full flex items-center justify-center bg-muted;
107
+ }
108
+
109
+ .dropzone-file-icon svg {
110
+ @apply h-5 w-5 opacity-50;
111
+ }
112
+
113
+ .dropzone-file-info {
114
+ @apply flex flex-col min-w-0 flex-1;
115
+ }
116
+
117
+ .dropzone-file-name {
118
+ @apply text-sm font-medium truncate;
119
+ }
120
+
121
+ .dropzone-file-size {
122
+ @apply text-xs opacity-70;
123
+ }
124
+
125
+ .dropzone-file-remove {
126
+ @apply shrink-0 p-1.5 rounded transition-colors;
127
+ @apply hover:bg-muted/50;
128
+ }
129
+
130
+ .dropzone-file-remove svg {
131
+ @apply h-4 w-4;
132
+ }
133
+ }
@@ -0,0 +1,17 @@
1
+ @layer components {
2
+ .field {
3
+ @apply flex flex-col gap-2 w-full;
4
+ }
5
+
6
+ .field-label {
7
+ @apply text-sm font-semibold;
8
+ }
9
+
10
+ .field-help {
11
+ @apply text-xs leading-none -mt-1;
12
+ }
13
+
14
+ .field-help.is-danger {
15
+ @apply text-danger;
16
+ }
17
+ }
@@ -0,0 +1,155 @@
1
+ @layer components {
2
+ .image-cropper {
3
+ @apply flex flex-col gap-4 w-full;
4
+ }
5
+
6
+ .image-cropper-container {
7
+ @apply relative w-full overflow-hidden;
8
+ @apply bg-muted rounded-ui;
9
+ @apply flex items-center justify-center;
10
+ min-height: 400px;
11
+ max-height: 600px;
12
+ }
13
+
14
+ .image-cropper-image {
15
+ @apply block max-w-full max-h-full;
16
+ @apply select-none pointer-events-none;
17
+ -webkit-user-drag: none;
18
+ }
19
+
20
+ .image-cropper-overlay {
21
+ @apply absolute inset-0 pointer-events-none;
22
+ }
23
+
24
+ .overlay-top,
25
+ .overlay-bottom,
26
+ .overlay-left,
27
+ .overlay-right {
28
+ @apply absolute bg-black/50 pointer-events-none;
29
+ }
30
+
31
+ .overlay-top {
32
+ @apply left-0 right-0 top-0;
33
+ }
34
+
35
+ .overlay-bottom {
36
+ @apply left-0 right-0 bottom-0;
37
+ }
38
+
39
+ .overlay-middle {
40
+ @apply absolute left-0 right-0;
41
+ @apply flex;
42
+ }
43
+
44
+ .overlay-left {
45
+ @apply h-full;
46
+ }
47
+
48
+ .overlay-right {
49
+ @apply absolute h-full;
50
+ }
51
+
52
+ .crop-area {
53
+ @apply absolute pointer-events-auto;
54
+ @apply border-2 border-primary;
55
+ @apply cursor-move;
56
+ @apply transition-shadow duration-200;
57
+ box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.5);
58
+ }
59
+
60
+ .crop-area:hover {
61
+ @apply border-primary/80;
62
+ }
63
+
64
+ .crop-grid {
65
+ @apply absolute inset-0 pointer-events-none;
66
+ @apply opacity-0 transition-opacity duration-200;
67
+ }
68
+
69
+ .crop-area:hover .crop-grid,
70
+ .crop-area:active .crop-grid {
71
+ @apply opacity-100;
72
+ }
73
+
74
+ .grid-line {
75
+ @apply absolute bg-primary/30;
76
+ }
77
+
78
+ .grid-line-v {
79
+ @apply top-0 bottom-0 w-px;
80
+ }
81
+
82
+ .grid-line-h {
83
+ @apply left-0 right-0 h-px;
84
+ }
85
+
86
+ .resize-handle {
87
+ @apply absolute bg-primary border-2 border-background;
88
+ @apply transition-all duration-200;
89
+ @apply opacity-0;
90
+ @apply z-10;
91
+ }
92
+
93
+ .crop-area:hover .resize-handle {
94
+ @apply opacity-100;
95
+ }
96
+
97
+ .resize-handle.handle-nw {
98
+ @apply -top-1 -left-1 w-3 h-3 cursor-nw-resize rounded-tl-sm;
99
+ }
100
+
101
+ .resize-handle.handle-n {
102
+ @apply -top-1 left-1/2 -translate-x-1/2 w-8 h-2 cursor-n-resize rounded-t-sm;
103
+ }
104
+
105
+ .resize-handle.handle-ne {
106
+ @apply -top-1 -right-1 w-3 h-3 cursor-ne-resize rounded-tr-sm;
107
+ }
108
+
109
+ .resize-handle.handle-e {
110
+ @apply top-1/2 -translate-y-1/2 -right-1 w-2 h-8 cursor-e-resize rounded-r-sm;
111
+ }
112
+
113
+ .resize-handle.handle-se {
114
+ @apply -bottom-1 -right-1 w-3 h-3 cursor-se-resize rounded-br-sm;
115
+ }
116
+
117
+ .resize-handle.handle-s {
118
+ @apply -bottom-1 left-1/2 -translate-x-1/2 w-8 h-2 cursor-s-resize rounded-b-sm;
119
+ }
120
+
121
+ .resize-handle.handle-sw {
122
+ @apply -bottom-1 -left-1 w-3 h-3 cursor-sw-resize rounded-bl-sm;
123
+ }
124
+
125
+ .resize-handle.handle-w {
126
+ @apply top-1/2 -translate-y-1/2 -left-1 w-2 h-8 cursor-w-resize rounded-l-sm;
127
+ }
128
+
129
+ .resize-handle:hover {
130
+ @apply scale-125 bg-primary/90;
131
+ }
132
+
133
+ .image-cropper-controls {
134
+ @apply flex items-center justify-end gap-2;
135
+ }
136
+
137
+ .image-cropper-canvas {
138
+ @apply hidden;
139
+ }
140
+
141
+ /* Responsive */
142
+ @media (max-width: 640px) {
143
+ .image-cropper-container {
144
+ min-height: 300px;
145
+ }
146
+
147
+ .image-cropper-controls {
148
+ @apply flex-col w-full;
149
+ }
150
+
151
+ .image-cropper-controls .btn {
152
+ @apply w-full;
153
+ }
154
+ }
155
+ }
@@ -0,0 +1,35 @@
1
+ @layer components {
2
+ .field-strength {
3
+ @apply flex items-center gap-2 mt-1;
4
+ }
5
+ .field-strength-bar {
6
+ @apply flex-1 h-1.5 bg-muted rounded-full overflow-hidden;
7
+ }
8
+ .field-strength-fill {
9
+ @apply h-full transition-all duration-300 ease-in-out;
10
+ }
11
+ .field-strength-label {
12
+ @apply text-xs font-medium min-w-fit;
13
+ }
14
+ .field-strength-bars {
15
+ display: flex;
16
+ gap: 6px;
17
+ width: 100%;
18
+ }
19
+ .field-strength-bar-item {
20
+ @apply bg-muted;
21
+ flex: 1;
22
+ height: 6px;
23
+ border-radius: 2px;
24
+ transition: background-color 0.2s ease;
25
+ }
26
+ .field-strength-bar-item.active.weak {
27
+ background-color: var(--color-error);
28
+ }
29
+ .field-strength-bar-item.active.medium {
30
+ background-color: var(--color-warning);
31
+ }
32
+ .field-strength-bar-item.active.strong {
33
+ background-color: var(--color-success);
34
+ }
35
+ }
@@ -0,0 +1,57 @@
1
+ @layer components {
2
+ .radio-group {
3
+ @apply flex flex-wrap gap-4 justify-start;
4
+
5
+ .radio-item {
6
+ @apply flex justify-start items-center gap-3;
7
+
8
+ .radio {
9
+ @apply relative appearance-none border-2 border-muted rounded-full cursor-pointer;
10
+ @apply focus:outline-none;
11
+ @apply transition-colors duration-200;
12
+
13
+ &.is-primary {
14
+ @apply checked:border-primary;
15
+ &:checked {
16
+ @apply after:bg-primary;
17
+ }
18
+ }
19
+ &.is-secondary {
20
+ @apply checked:border-secondary;
21
+ &:checked {
22
+ @apply after:bg-secondary;
23
+ }
24
+ }
25
+ &.is-muted {
26
+ @apply checked:border-on-muted;
27
+ &:checked {
28
+ @apply after:bg-on-muted;
29
+ }
30
+ }
31
+
32
+ &.is-sm {
33
+ @apply w-4 h-4;
34
+ &:checked {
35
+ @apply after:w-2 after:h-2;
36
+ }
37
+ }
38
+ &.is-md {
39
+ @apply w-5 h-5;
40
+ &:checked {
41
+ @apply after:w-3 after:h-3;
42
+ }
43
+ }
44
+ &.is-lg {
45
+ @apply w-6 h-6;
46
+ &:checked {
47
+ @apply after:w-3.5 after:h-3.5;
48
+ }
49
+ }
50
+ }
51
+ .radio:checked {
52
+ @apply after:content-[''] after:absolute after:rounded-full;
53
+ @apply after:top-1/2 after:left-1/2 after:-translate-x-1/2 after:-translate-y-1/2;
54
+ }
55
+ }
56
+ }
57
+ }
@@ -0,0 +1,18 @@
1
+ @layer components {
2
+ .select-popover {
3
+ @apply max-h-56 flex flex-col gap-2 p-2 my-1 overflow-hidden;
4
+ @apply bg-background text-on-background rounded-ui;
5
+ @apply invisible opacity-0 transition-opacity duration-300 ease-in-out;
6
+ @apply shadow shadow-muted;
7
+ position: fixed;
8
+ z-index: 9999;
9
+
10
+ &.is-active {
11
+ @apply visible opacity-100;
12
+ }
13
+ }
14
+
15
+ .select-options {
16
+ @apply flex flex-1 w-full min-w-0 flex-col gap-1 overflow-y-auto scrollbar-hide;
17
+ }
18
+ }
@@ -0,0 +1,80 @@
1
+ @layer components {
2
+ .slider-wrapper {
3
+ @apply flex flex-col gap-0.5 w-full;
4
+ }
5
+ .slider-info {
6
+ @apply flex justify-between items-center text-sm font-medium leading-none;
7
+ }
8
+ .slider {
9
+ @apply appearance-none w-full bg-muted rounded-full outline-none;
10
+ background: linear-gradient(
11
+ to right,
12
+ var(--slider-color) 0%,
13
+ var(--slider-color) var(--slider-progress),
14
+ theme('colors.muted') var(--slider-progress),
15
+ theme('colors.muted') 100%
16
+ );
17
+
18
+ &::-webkit-slider-thumb {
19
+ @apply appearance-none rounded-full cursor-pointer border border-white;
20
+ }
21
+ &::-moz-range-thumb {
22
+ @apply appearance-none rounded-full cursor-pointer border border-white;
23
+ }
24
+ &.is-primary {
25
+ --slider-color: var(--color-primary);
26
+ &::-webkit-slider-thumb {
27
+ @apply bg-primary;
28
+ }
29
+ &::-moz-range-thumb {
30
+ @apply bg-primary;
31
+ }
32
+ }
33
+
34
+ &.is-secondary {
35
+ --slider-color: var(--color-secondary);
36
+ &::-webkit-slider-thumb {
37
+ @apply bg-secondary;
38
+ }
39
+ &::-moz-range-thumb {
40
+ @apply bg-secondary;
41
+ }
42
+ }
43
+ &.is-muted {
44
+ --slider-color: var(--color-on-muted);
45
+ &::-webkit-slider-thumb {
46
+ @apply bg-on-muted;
47
+ }
48
+ &::-moz-range-thumb {
49
+ @apply bg-on-muted;
50
+ }
51
+ }
52
+ &.is-sm {
53
+ @apply h-1 my-1;
54
+ &::-webkit-slider-thumb {
55
+ @apply w-4 h-4;
56
+ }
57
+ &::-moz-range-thumb {
58
+ @apply w-4 h-4;
59
+ }
60
+ }
61
+ &.is-md {
62
+ @apply h-2 my-2;
63
+ &::-webkit-slider-thumb {
64
+ @apply w-6 h-6;
65
+ }
66
+ &::-moz-range-thumb {
67
+ @apply w-6 h-6;
68
+ }
69
+ }
70
+ &.is-lg {
71
+ @apply h-4 my-2;
72
+ &::-webkit-slider-thumb {
73
+ @apply w-8 h-8;
74
+ }
75
+ &::-moz-range-thumb {
76
+ @apply w-8 h-8;
77
+ }
78
+ }
79
+ }
80
+ }
@@ -0,0 +1,130 @@
1
+ @layer components {
2
+ .textarea-control {
3
+ @apply relative flex w-full gap-2 px-3 outline-0 ring-0;
4
+ @apply transition-all duration-300 ease-in-out;
5
+ }
6
+
7
+ .textarea-control-label {
8
+ @apply absolute left-3 top-3;
9
+ @apply transition-all duration-300;
10
+ }
11
+
12
+ .textarea-control-label.is-active {
13
+ @apply text-xs left-3 top-1 translate-y-px!;
14
+ }
15
+
16
+ .textarea-control.is-sm {
17
+ @apply text-sm py-2;
18
+ }
19
+
20
+ .textarea-control.is-md {
21
+ @apply text-base py-2.5;
22
+ }
23
+
24
+ .textarea-control.is-lg {
25
+ @apply text-xl py-3;
26
+
27
+ .textarea-control-label.is-active {
28
+ @apply text-sm;
29
+ }
30
+ }
31
+
32
+ .textarea-control.is-float.is-sm {
33
+ @apply pt-5 pb-2;
34
+ }
35
+
36
+ .textarea-control.is-float.is-md {
37
+ @apply pt-6 pb-2.5;
38
+ }
39
+
40
+ .textarea-control.is-float.is-lg {
41
+ @apply pt-7 pb-3;
42
+ }
43
+
44
+ .textarea-control.is-primary {
45
+ @apply bg-on-primary text-primary rounded-ui;
46
+ }
47
+
48
+ .textarea-control.is-solid.is-primary {
49
+ @apply bg-primary text-on-primary;
50
+ }
51
+
52
+ .textarea-control.is-primary.is-active {
53
+ @apply bg-on-primary/90;
54
+ }
55
+
56
+ .textarea-control.is-solid.is-primary.is-active {
57
+ @apply bg-primary/90;
58
+ }
59
+
60
+ .textarea-control.is-secondary {
61
+ @apply bg-on-secondary text-secondary rounded-ui;
62
+ }
63
+
64
+ .textarea-control.is-solid.is-secondary {
65
+ @apply bg-secondary text-on-secondary;
66
+ }
67
+
68
+ .textarea-control.is-secondary.is-active {
69
+ @apply bg-on-secondary/90;
70
+ }
71
+
72
+ .textarea-control.is-solid.is-secondary.is-active {
73
+ @apply bg-secondary/90;
74
+ }
75
+
76
+ .textarea-control.is-muted {
77
+ @apply bg-muted text-on-muted rounded-ui;
78
+ }
79
+
80
+ .textarea-control.is-solid.is-muted {
81
+ @apply bg-on-muted text-muted;
82
+ }
83
+
84
+ .textarea-control.is-muted.is-active {
85
+ @apply bg-muted/90;
86
+ }
87
+
88
+ .textarea-control.is-solid.is-muted.is-active {
89
+ @apply bg-on-muted/90;
90
+ }
91
+
92
+ .textarea-control.is-outlined {
93
+ @apply inset-ring-2 inset-ring-muted rounded-ui;
94
+ }
95
+
96
+ .textarea-control.is-outlined.is-active {
97
+ @apply inset-ring-2 inset-ring-primary;
98
+ }
99
+
100
+ .textarea-control.is-line {
101
+ @apply box-border border-b-2 border-muted text-on-muted px-0;
102
+
103
+ .textarea-control-label {
104
+ @apply left-0!;
105
+ }
106
+ }
107
+
108
+ .textarea-control.is-line.is-active {
109
+ @apply border-primary;
110
+ }
111
+
112
+ .textarea-control-input {
113
+ @apply appearance-none flex-1 w-full border-none outline-none;
114
+ @apply placeholder:transition-opacity placeholder:duration-200;
115
+ @apply bg-transparent;
116
+ @apply min-h-12;
117
+ }
118
+
119
+ .textarea-control-input.invisible {
120
+ @apply opacity-0;
121
+ }
122
+
123
+ .textarea-control-input {
124
+ resize: none;
125
+ }
126
+
127
+ .textarea-control-input.is-resizable {
128
+ resize: both;
129
+ }
130
+ }
@@ -0,0 +1,27 @@
1
+ @layer components {
2
+ .toggle {
3
+ @apply flex justify-start items-center w-fit gap-2 cursor-pointer;
4
+
5
+ .toggle-input {
6
+ @apply relative appearance-none w-10 h-6 rounded-full;
7
+ @apply bg-muted transition-colors duration-200 ease-in-out;
8
+ @apply focus:outline-none;
9
+ @apply before:content-[''] before:absolute before:h-4 before:w-4 before:left-1 before:top-1;
10
+ @apply before:bg-white before:rounded-full before:shadow;
11
+ @apply before:transition-transform before:duration-200 before:ease-in-out;
12
+ @apply checked:before:translate-x-4;
13
+ }
14
+
15
+ .toggle-input:checked {
16
+ &.is-primary {
17
+ @apply bg-primary;
18
+ }
19
+ &.is-secondary {
20
+ @apply bg-secondary;
21
+ }
22
+ &.is-muted {
23
+ @apply bg-on-muted;
24
+ }
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,13 @@
1
+ export interface Country {
2
+ id: string;
3
+ label: string;
4
+ name: string;
5
+ iso2: CountryCode;
6
+ dialCode: string;
7
+ priority: string | number | string[];
8
+ areaCodes: string | number | string[] | null;
9
+ }
10
+ type CountryCode = 'AC' | 'AD' | 'AE' | 'AF' | 'AG' | 'AI' | 'AL' | 'AM' | 'AO' | 'AR' | 'AS' | 'AT' | 'AU' | 'AW' | 'AX' | 'AZ' | 'BA' | 'BB' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BL' | 'BM' | 'BN' | 'BO' | 'BQ' | 'BR' | 'BS' | 'BT' | 'BW' | 'BY' | 'BZ' | 'CA' | 'CC' | 'CD' | 'CF' | 'CG' | 'CH' | 'CI' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CR' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DK' | 'DM' | 'DO' | 'DZ' | 'EC' | 'EE' | 'EG' | 'EH' | 'ER' | 'ES' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FM' | 'FO' | 'FR' | 'GA' | 'GB' | 'GD' | 'GE' | 'GF' | 'GG' | 'GH' | 'GI' | 'GL' | 'GM' | 'GN' | 'GP' | 'GQ' | 'GR' | 'GT' | 'GU' | 'GW' | 'GY' | 'HK' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IE' | 'IL' | 'IM' | 'IN' | 'IO' | 'IQ' | 'IR' | 'IS' | 'IT' | 'JE' | 'JM' | 'JO' | 'JP' | 'KE' | 'KG' | 'KH' | 'KI' | 'KM' | 'KN' | 'KP' | 'KR' | 'KW' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LI' | 'LK' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LY' | 'MA' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NL' | 'NO' | 'NP' | 'NR' | 'NU' | 'NZ' | 'OM' | 'PA' | 'PE' | 'PF' | 'PG' | 'PH' | 'PK' | 'PL' | 'PM' | 'PR' | 'PS' | 'PT' | 'PW' | 'PY' | 'QA' | 'RE' | 'RO' | 'RS' | 'RU' | 'RW' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SR' | 'SS' | 'ST' | 'SV' | 'SX' | 'SY' | 'SZ' | 'TA' | 'TC' | 'TD' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TR' | 'TT' | 'TV' | 'TW' | 'TZ' | 'UA' | 'UG' | 'US' | 'UY' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'XK' | 'YE' | 'YT' | 'ZA' | 'ZM' | 'ZW';
11
+ export declare const allCountries: (string | number | string[])[][];
12
+ export declare const normalizedCountries: Country[];
13
+ export {};