alus-ui 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 (531) hide show
  1. package/README.md +289 -0
  2. package/dist/components/display/aspect-ratio/AspectRatio.svelte +18 -0
  3. package/dist/components/display/aspect-ratio/AspectRatio.svelte.d.ts +9 -0
  4. package/dist/components/display/aspect-ratio/index.d.ts +1 -0
  5. package/dist/components/display/aspect-ratio/index.js +1 -0
  6. package/dist/components/display/avatar/Avatar.svelte +62 -0
  7. package/dist/components/display/avatar/Avatar.svelte.d.ts +11 -0
  8. package/dist/components/display/avatar/index.d.ts +1 -0
  9. package/dist/components/display/avatar/index.js +1 -0
  10. package/dist/components/display/card/Card.svelte +60 -0
  11. package/dist/components/display/card/Card.svelte.d.ts +18 -0
  12. package/dist/components/display/card/CardContent.svelte +12 -0
  13. package/dist/components/display/card/CardContent.svelte.d.ts +7 -0
  14. package/dist/components/display/card/CardDescription.svelte +21 -0
  15. package/dist/components/display/card/CardDescription.svelte.d.ts +7 -0
  16. package/dist/components/display/card/CardFooter.svelte +12 -0
  17. package/dist/components/display/card/CardFooter.svelte.d.ts +7 -0
  18. package/dist/components/display/card/CardHeader.svelte +12 -0
  19. package/dist/components/display/card/CardHeader.svelte.d.ts +7 -0
  20. package/dist/components/display/card/CardTitle.svelte +22 -0
  21. package/dist/components/display/card/CardTitle.svelte.d.ts +8 -0
  22. package/dist/components/display/card/index.d.ts +7 -0
  23. package/dist/components/display/card/index.js +6 -0
  24. package/dist/components/display/carousel/Carousel.svelte +130 -0
  25. package/dist/components/display/carousel/Carousel.svelte.d.ts +30 -0
  26. package/dist/components/display/carousel/CarouselIndicators.svelte +74 -0
  27. package/dist/components/display/carousel/CarouselIndicators.svelte.d.ts +11 -0
  28. package/dist/components/display/carousel/CarouselNext.svelte +24 -0
  29. package/dist/components/display/carousel/CarouselNext.svelte.d.ts +8 -0
  30. package/dist/components/display/carousel/CarouselPrev.svelte +28 -0
  31. package/dist/components/display/carousel/CarouselPrev.svelte.d.ts +8 -0
  32. package/dist/components/display/carousel/CarouselSlide.svelte +32 -0
  33. package/dist/components/display/carousel/CarouselSlide.svelte.d.ts +11 -0
  34. package/dist/components/display/carousel/CarouselSlides.svelte +16 -0
  35. package/dist/components/display/carousel/CarouselSlides.svelte.d.ts +8 -0
  36. package/dist/components/display/carousel/index.d.ts +7 -0
  37. package/dist/components/display/carousel/index.js +6 -0
  38. package/dist/components/display/code-block/CodeBlock.svelte +60 -0
  39. package/dist/components/display/code-block/CodeBlock.svelte.d.ts +21 -0
  40. package/dist/components/display/code-block/index.d.ts +1 -0
  41. package/dist/components/display/code-block/index.js +1 -0
  42. package/dist/components/display/compare/Compare.svelte +222 -0
  43. package/dist/components/display/compare/Compare.svelte.d.ts +26 -0
  44. package/dist/components/display/compare/index.d.ts +1 -0
  45. package/dist/components/display/compare/index.js +1 -0
  46. package/dist/components/display/data-list/DataList.svelte +19 -0
  47. package/dist/components/display/data-list/DataList.svelte.d.ts +9 -0
  48. package/dist/components/display/data-list/DataListDescription.svelte +12 -0
  49. package/dist/components/display/data-list/DataListDescription.svelte.d.ts +7 -0
  50. package/dist/components/display/data-list/DataListTerm.svelte +12 -0
  51. package/dist/components/display/data-list/DataListTerm.svelte.d.ts +7 -0
  52. package/dist/components/display/data-list/index.d.ts +3 -0
  53. package/dist/components/display/data-list/index.js +3 -0
  54. package/dist/components/display/divider/Divider.svelte +27 -0
  55. package/dist/components/display/divider/Divider.svelte.d.ts +8 -0
  56. package/dist/components/display/divider/index.d.ts +1 -0
  57. package/dist/components/display/divider/index.js +1 -0
  58. package/dist/components/display/frame/Frame.svelte +63 -0
  59. package/dist/components/display/frame/Frame.svelte.d.ts +18 -0
  60. package/dist/components/display/frame/index.d.ts +1 -0
  61. package/dist/components/display/frame/index.js +1 -0
  62. package/dist/components/display/image/Image.svelte +65 -0
  63. package/dist/components/display/image/Image.svelte.d.ts +17 -0
  64. package/dist/components/display/image/index.d.ts +1 -0
  65. package/dist/components/display/image/index.js +1 -0
  66. package/dist/components/display/kbd/Kbd.svelte +29 -0
  67. package/dist/components/display/kbd/Kbd.svelte.d.ts +10 -0
  68. package/dist/components/display/kbd/index.d.ts +1 -0
  69. package/dist/components/display/kbd/index.js +1 -0
  70. package/dist/components/display/list/List.svelte +27 -0
  71. package/dist/components/display/list/List.svelte.d.ts +10 -0
  72. package/dist/components/display/list/ListItem.svelte +12 -0
  73. package/dist/components/display/list/ListItem.svelte.d.ts +7 -0
  74. package/dist/components/display/list/index.d.ts +2 -0
  75. package/dist/components/display/list/index.js +2 -0
  76. package/dist/components/display/stat-card/StatCard.svelte +76 -0
  77. package/dist/components/display/stat-card/StatCard.svelte.d.ts +24 -0
  78. package/dist/components/display/stat-card/index.d.ts +1 -0
  79. package/dist/components/display/stat-card/index.js +1 -0
  80. package/dist/components/display/table/Table.svelte +29 -0
  81. package/dist/components/display/table/Table.svelte.d.ts +10 -0
  82. package/dist/components/display/table/TableBody.svelte +11 -0
  83. package/dist/components/display/table/TableBody.svelte.d.ts +7 -0
  84. package/dist/components/display/table/TableCaption.svelte +13 -0
  85. package/dist/components/display/table/TableCaption.svelte.d.ts +8 -0
  86. package/dist/components/display/table/TableCell.svelte +14 -0
  87. package/dist/components/display/table/TableCell.svelte.d.ts +10 -0
  88. package/dist/components/display/table/TableFoot.svelte +11 -0
  89. package/dist/components/display/table/TableFoot.svelte.d.ts +7 -0
  90. package/dist/components/display/table/TableHead.svelte +11 -0
  91. package/dist/components/display/table/TableHead.svelte.d.ts +7 -0
  92. package/dist/components/display/table/TableHeader.svelte +15 -0
  93. package/dist/components/display/table/TableHeader.svelte.d.ts +11 -0
  94. package/dist/components/display/table/TableRow.svelte +12 -0
  95. package/dist/components/display/table/TableRow.svelte.d.ts +8 -0
  96. package/dist/components/display/table/index.d.ts +8 -0
  97. package/dist/components/display/table/index.js +8 -0
  98. package/dist/components/display/timeline/Timeline.svelte +27 -0
  99. package/dist/components/display/timeline/Timeline.svelte.d.ts +10 -0
  100. package/dist/components/display/timeline/TimelineItem.svelte +27 -0
  101. package/dist/components/display/timeline/TimelineItem.svelte.d.ts +11 -0
  102. package/dist/components/display/timeline/index.d.ts +2 -0
  103. package/dist/components/display/timeline/index.js +2 -0
  104. package/dist/components/display/timestamp/Timestamp.svelte +75 -0
  105. package/dist/components/display/timestamp/Timestamp.svelte.d.ts +16 -0
  106. package/dist/components/display/timestamp/index.d.ts +1 -0
  107. package/dist/components/display/timestamp/index.js +1 -0
  108. package/dist/components/display/tree-view/TreeItem.svelte +76 -0
  109. package/dist/components/display/tree-view/TreeItem.svelte.d.ts +13 -0
  110. package/dist/components/display/tree-view/TreeView.svelte +182 -0
  111. package/dist/components/display/tree-view/TreeView.svelte.d.ts +31 -0
  112. package/dist/components/display/tree-view/index.d.ts +3 -0
  113. package/dist/components/display/tree-view/index.js +2 -0
  114. package/dist/components/feedback/alert/Alert.svelte +72 -0
  115. package/dist/components/feedback/alert/Alert.svelte.d.ts +20 -0
  116. package/dist/components/feedback/alert/index.d.ts +1 -0
  117. package/dist/components/feedback/alert/index.js +1 -0
  118. package/dist/components/feedback/badge/Badge.svelte +52 -0
  119. package/dist/components/feedback/badge/Badge.svelte.d.ts +15 -0
  120. package/dist/components/feedback/badge/index.d.ts +1 -0
  121. package/dist/components/feedback/badge/index.js +1 -0
  122. package/dist/components/feedback/banner/Banner.svelte +75 -0
  123. package/dist/components/feedback/banner/Banner.svelte.d.ts +22 -0
  124. package/dist/components/feedback/banner/index.d.ts +1 -0
  125. package/dist/components/feedback/banner/index.js +1 -0
  126. package/dist/components/feedback/callout/Callout.svelte +52 -0
  127. package/dist/components/feedback/callout/Callout.svelte.d.ts +18 -0
  128. package/dist/components/feedback/callout/index.d.ts +1 -0
  129. package/dist/components/feedback/callout/index.js +1 -0
  130. package/dist/components/feedback/inline-message/InlineMessage.svelte +42 -0
  131. package/dist/components/feedback/inline-message/InlineMessage.svelte.d.ts +14 -0
  132. package/dist/components/feedback/inline-message/index.d.ts +1 -0
  133. package/dist/components/feedback/inline-message/index.js +1 -0
  134. package/dist/components/feedback/live-region/LiveRegion.svelte +48 -0
  135. package/dist/components/feedback/live-region/LiveRegion.svelte.d.ts +15 -0
  136. package/dist/components/feedback/live-region/index.d.ts +1 -0
  137. package/dist/components/feedback/live-region/index.js +1 -0
  138. package/dist/components/feedback/notification-bell/NotificationBell.svelte +57 -0
  139. package/dist/components/feedback/notification-bell/NotificationBell.svelte.d.ts +19 -0
  140. package/dist/components/feedback/notification-bell/index.d.ts +1 -0
  141. package/dist/components/feedback/notification-bell/index.js +1 -0
  142. package/dist/components/feedback/progress/Progress.svelte +64 -0
  143. package/dist/components/feedback/progress/Progress.svelte.d.ts +19 -0
  144. package/dist/components/feedback/progress/index.d.ts +1 -0
  145. package/dist/components/feedback/progress/index.js +1 -0
  146. package/dist/components/feedback/skeleton/Skeleton.svelte +28 -0
  147. package/dist/components/feedback/skeleton/Skeleton.svelte.d.ts +9 -0
  148. package/dist/components/feedback/skeleton/index.d.ts +1 -0
  149. package/dist/components/feedback/skeleton/index.js +1 -0
  150. package/dist/components/feedback/spinner/Spinner.svelte +14 -0
  151. package/dist/components/feedback/spinner/Spinner.svelte.d.ts +7 -0
  152. package/dist/components/feedback/spinner/index.d.ts +1 -0
  153. package/dist/components/feedback/spinner/index.js +1 -0
  154. package/dist/components/feedback/tag/Tag.svelte +60 -0
  155. package/dist/components/feedback/tag/Tag.svelte.d.ts +13 -0
  156. package/dist/components/feedback/tag/index.d.ts +1 -0
  157. package/dist/components/feedback/tag/index.js +1 -0
  158. package/dist/components/feedback/toast/Toaster.svelte +74 -0
  159. package/dist/components/feedback/toast/Toaster.svelte.d.ts +38 -0
  160. package/dist/components/feedback/toast/index.d.ts +4 -0
  161. package/dist/components/feedback/toast/index.js +2 -0
  162. package/dist/components/feedback/toast/toast.svelte.d.ts +90 -0
  163. package/dist/components/feedback/toast/toast.svelte.js +228 -0
  164. package/dist/components/form/auto-complete/AutoComplete.svelte +273 -0
  165. package/dist/components/form/auto-complete/AutoComplete.svelte.d.ts +57 -0
  166. package/dist/components/form/auto-complete/index.d.ts +2 -0
  167. package/dist/components/form/auto-complete/index.js +1 -0
  168. package/dist/components/form/button/Button.svelte +99 -0
  169. package/dist/components/form/button/Button.svelte.d.ts +28 -0
  170. package/dist/components/form/button/index.d.ts +1 -0
  171. package/dist/components/form/button/index.js +1 -0
  172. package/dist/components/form/calendar/Calendar.svelte +443 -0
  173. package/dist/components/form/calendar/Calendar.svelte.d.ts +41 -0
  174. package/dist/components/form/calendar/index.d.ts +2 -0
  175. package/dist/components/form/calendar/index.js +1 -0
  176. package/dist/components/form/checkbox/Checkbox.svelte +94 -0
  177. package/dist/components/form/checkbox/Checkbox.svelte.d.ts +23 -0
  178. package/dist/components/form/checkbox/index.d.ts +1 -0
  179. package/dist/components/form/checkbox/index.js +1 -0
  180. package/dist/components/form/color-picker/ColorPicker.svelte +178 -0
  181. package/dist/components/form/color-picker/ColorPicker.svelte.d.ts +18 -0
  182. package/dist/components/form/color-picker/index.d.ts +1 -0
  183. package/dist/components/form/color-picker/index.js +1 -0
  184. package/dist/components/form/date-picker/DatePicker.svelte +211 -0
  185. package/dist/components/form/date-picker/DatePicker.svelte.d.ts +31 -0
  186. package/dist/components/form/date-picker/index.d.ts +1 -0
  187. package/dist/components/form/date-picker/index.js +1 -0
  188. package/dist/components/form/date-range/DateRange.svelte +162 -0
  189. package/dist/components/form/date-range/DateRange.svelte.d.ts +34 -0
  190. package/dist/components/form/date-range/index.d.ts +2 -0
  191. package/dist/components/form/date-range/index.js +1 -0
  192. package/dist/components/form/date-range-picker/DateRangePicker.svelte +220 -0
  193. package/dist/components/form/date-range-picker/DateRangePicker.svelte.d.ts +37 -0
  194. package/dist/components/form/date-range-picker/index.d.ts +1 -0
  195. package/dist/components/form/date-range-picker/index.js +1 -0
  196. package/dist/components/form/field-error/FieldError.svelte +29 -0
  197. package/dist/components/form/field-error/FieldError.svelte.d.ts +12 -0
  198. package/dist/components/form/field-error/index.d.ts +1 -0
  199. package/dist/components/form/field-error/index.js +1 -0
  200. package/dist/components/form/fieldset/Fieldset.svelte +42 -0
  201. package/dist/components/form/fieldset/Fieldset.svelte.d.ts +15 -0
  202. package/dist/components/form/fieldset/index.d.ts +1 -0
  203. package/dist/components/form/fieldset/index.js +1 -0
  204. package/dist/components/form/file-input/FileInput.svelte +89 -0
  205. package/dist/components/form/file-input/FileInput.svelte.d.ts +23 -0
  206. package/dist/components/form/file-input/index.d.ts +1 -0
  207. package/dist/components/form/file-input/index.js +1 -0
  208. package/dist/components/form/form/Form.svelte +62 -0
  209. package/dist/components/form/form/Form.svelte.d.ts +20 -0
  210. package/dist/components/form/form/index.d.ts +1 -0
  211. package/dist/components/form/form/index.js +1 -0
  212. package/dist/components/form/icon-button/IconButton.svelte +58 -0
  213. package/dist/components/form/icon-button/IconButton.svelte.d.ts +19 -0
  214. package/dist/components/form/icon-button/index.d.ts +1 -0
  215. package/dist/components/form/icon-button/index.js +1 -0
  216. package/dist/components/form/input/Input.svelte +113 -0
  217. package/dist/components/form/input/Input.svelte.d.ts +36 -0
  218. package/dist/components/form/input/index.d.ts +1 -0
  219. package/dist/components/form/input/index.js +1 -0
  220. package/dist/components/form/input-group/InputAddon.svelte +13 -0
  221. package/dist/components/form/input-group/InputAddon.svelte.d.ts +8 -0
  222. package/dist/components/form/input-group/InputGroup.svelte +29 -0
  223. package/dist/components/form/input-group/InputGroup.svelte.d.ts +11 -0
  224. package/dist/components/form/input-group/index.d.ts +2 -0
  225. package/dist/components/form/input-group/index.js +2 -0
  226. package/dist/components/form/label/Label.svelte +31 -0
  227. package/dist/components/form/label/Label.svelte.d.ts +11 -0
  228. package/dist/components/form/label/index.d.ts +1 -0
  229. package/dist/components/form/label/index.js +1 -0
  230. package/dist/components/form/number-input/NumberInput.svelte +128 -0
  231. package/dist/components/form/number-input/NumberInput.svelte.d.ts +33 -0
  232. package/dist/components/form/number-input/index.d.ts +1 -0
  233. package/dist/components/form/number-input/index.js +1 -0
  234. package/dist/components/form/radio/Radio.svelte +85 -0
  235. package/dist/components/form/radio/Radio.svelte.d.ts +22 -0
  236. package/dist/components/form/radio/index.d.ts +1 -0
  237. package/dist/components/form/radio/index.js +1 -0
  238. package/dist/components/form/radio-group/RadioGroup.svelte +70 -0
  239. package/dist/components/form/radio-group/RadioGroup.svelte.d.ts +24 -0
  240. package/dist/components/form/radio-group/index.d.ts +2 -0
  241. package/dist/components/form/radio-group/index.js +1 -0
  242. package/dist/components/form/rating/Rating.svelte +124 -0
  243. package/dist/components/form/rating/Rating.svelte.d.ts +24 -0
  244. package/dist/components/form/rating/index.d.ts +1 -0
  245. package/dist/components/form/rating/index.js +1 -0
  246. package/dist/components/form/search-input/SearchInput.svelte +84 -0
  247. package/dist/components/form/search-input/SearchInput.svelte.d.ts +24 -0
  248. package/dist/components/form/search-input/index.d.ts +1 -0
  249. package/dist/components/form/search-input/index.js +1 -0
  250. package/dist/components/form/select/Select.svelte +156 -0
  251. package/dist/components/form/select/Select.svelte.d.ts +46 -0
  252. package/dist/components/form/select/SelectContent.svelte +157 -0
  253. package/dist/components/form/select/SelectContent.svelte.d.ts +10 -0
  254. package/dist/components/form/select/SelectOption.svelte +61 -0
  255. package/dist/components/form/select/SelectOption.svelte.d.ts +12 -0
  256. package/dist/components/form/select/SelectTrigger.svelte +67 -0
  257. package/dist/components/form/select/SelectTrigger.svelte.d.ts +9 -0
  258. package/dist/components/form/select/index.d.ts +5 -0
  259. package/dist/components/form/select/index.js +4 -0
  260. package/dist/components/form/slider/Slider.svelte +78 -0
  261. package/dist/components/form/slider/Slider.svelte.d.ts +21 -0
  262. package/dist/components/form/slider/index.d.ts +1 -0
  263. package/dist/components/form/slider/index.js +1 -0
  264. package/dist/components/form/switch/Switch.svelte +82 -0
  265. package/dist/components/form/switch/Switch.svelte.d.ts +21 -0
  266. package/dist/components/form/switch/index.d.ts +1 -0
  267. package/dist/components/form/switch/index.js +1 -0
  268. package/dist/components/form/textarea/Textarea.svelte +104 -0
  269. package/dist/components/form/textarea/Textarea.svelte.d.ts +33 -0
  270. package/dist/components/form/textarea/index.d.ts +1 -0
  271. package/dist/components/form/textarea/index.js +1 -0
  272. package/dist/components/form/time-picker/TimePicker.svelte +209 -0
  273. package/dist/components/form/time-picker/TimePicker.svelte.d.ts +26 -0
  274. package/dist/components/form/time-picker/index.d.ts +2 -0
  275. package/dist/components/form/time-picker/index.js +1 -0
  276. package/dist/components/form/toggle-button/ToggleButton.svelte +60 -0
  277. package/dist/components/form/toggle-button/ToggleButton.svelte.d.ts +19 -0
  278. package/dist/components/form/toggle-button/index.d.ts +1 -0
  279. package/dist/components/form/toggle-button/index.js +1 -0
  280. package/dist/components/index.d.ts +128 -0
  281. package/dist/components/index.js +108 -0
  282. package/dist/components/interactive/draggable/Draggable.svelte +162 -0
  283. package/dist/components/interactive/draggable/Draggable.svelte.d.ts +48 -0
  284. package/dist/components/interactive/draggable/index.d.ts +2 -0
  285. package/dist/components/interactive/draggable/index.js +1 -0
  286. package/dist/components/interactive/droppable/Droppable.svelte +153 -0
  287. package/dist/components/interactive/droppable/Droppable.svelte.d.ts +43 -0
  288. package/dist/components/interactive/droppable/index.d.ts +2 -0
  289. package/dist/components/interactive/droppable/index.js +1 -0
  290. package/dist/components/interactive/infinite-scroll/InfiniteScroll.svelte +62 -0
  291. package/dist/components/interactive/infinite-scroll/InfiniteScroll.svelte.d.ts +18 -0
  292. package/dist/components/interactive/infinite-scroll/index.d.ts +1 -0
  293. package/dist/components/interactive/infinite-scroll/index.js +1 -0
  294. package/dist/components/interactive/resizable/Resizable.svelte +145 -0
  295. package/dist/components/interactive/resizable/Resizable.svelte.d.ts +19 -0
  296. package/dist/components/interactive/resizable/index.d.ts +1 -0
  297. package/dist/components/interactive/resizable/index.js +1 -0
  298. package/dist/components/interactive/sortable/Sortable.svelte +204 -0
  299. package/dist/components/interactive/sortable/Sortable.svelte.d.ts +44 -0
  300. package/dist/components/interactive/sortable/index.d.ts +1 -0
  301. package/dist/components/interactive/sortable/index.js +1 -0
  302. package/dist/components/interactive/split-view/SplitView.svelte +98 -0
  303. package/dist/components/interactive/split-view/SplitView.svelte.d.ts +29 -0
  304. package/dist/components/interactive/split-view/SplitViewHandle.svelte +123 -0
  305. package/dist/components/interactive/split-view/SplitViewHandle.svelte.d.ts +10 -0
  306. package/dist/components/interactive/split-view/SplitViewPane.svelte +43 -0
  307. package/dist/components/interactive/split-view/SplitViewPane.svelte.d.ts +10 -0
  308. package/dist/components/interactive/split-view/index.d.ts +5 -0
  309. package/dist/components/interactive/split-view/index.js +4 -0
  310. package/dist/components/interactive/swipeable/Swipeable.svelte +147 -0
  311. package/dist/components/interactive/swipeable/Swipeable.svelte.d.ts +29 -0
  312. package/dist/components/interactive/swipeable/index.d.ts +2 -0
  313. package/dist/components/interactive/swipeable/index.js +1 -0
  314. package/dist/components/interactive/virtual-list/VirtualList.svelte +84 -0
  315. package/dist/components/interactive/virtual-list/VirtualList.svelte.d.ts +38 -0
  316. package/dist/components/interactive/virtual-list/index.d.ts +1 -0
  317. package/dist/components/interactive/virtual-list/index.js +1 -0
  318. package/dist/components/layout/columns/Columns.svelte +40 -0
  319. package/dist/components/layout/columns/Columns.svelte.d.ts +12 -0
  320. package/dist/components/layout/columns/index.d.ts +1 -0
  321. package/dist/components/layout/columns/index.js +1 -0
  322. package/dist/components/layout/container/Container.svelte +45 -0
  323. package/dist/components/layout/container/Container.svelte.d.ts +12 -0
  324. package/dist/components/layout/container/index.d.ts +1 -0
  325. package/dist/components/layout/container/index.js +1 -0
  326. package/dist/components/layout/flex/Flex.svelte +66 -0
  327. package/dist/components/layout/flex/Flex.svelte.d.ts +18 -0
  328. package/dist/components/layout/flex/index.d.ts +1 -0
  329. package/dist/components/layout/flex/index.js +1 -0
  330. package/dist/components/layout/grid/Grid.svelte +71 -0
  331. package/dist/components/layout/grid/Grid.svelte.d.ts +19 -0
  332. package/dist/components/layout/grid/index.d.ts +1 -0
  333. package/dist/components/layout/grid/index.js +1 -0
  334. package/dist/components/layout/spacer/Spacer.svelte +35 -0
  335. package/dist/components/layout/spacer/Spacer.svelte.d.ts +10 -0
  336. package/dist/components/layout/spacer/index.d.ts +1 -0
  337. package/dist/components/layout/spacer/index.js +1 -0
  338. package/dist/components/layout/stack/Stack.svelte +62 -0
  339. package/dist/components/layout/stack/Stack.svelte.d.ts +15 -0
  340. package/dist/components/layout/stack/index.d.ts +1 -0
  341. package/dist/components/layout/stack/index.js +1 -0
  342. package/dist/components/navigation/accordion/Accordion.svelte +62 -0
  343. package/dist/components/navigation/accordion/Accordion.svelte.d.ts +14 -0
  344. package/dist/components/navigation/accordion/AccordionContent.svelte +27 -0
  345. package/dist/components/navigation/accordion/AccordionContent.svelte.d.ts +8 -0
  346. package/dist/components/navigation/accordion/AccordionItem.svelte +41 -0
  347. package/dist/components/navigation/accordion/AccordionItem.svelte.d.ts +11 -0
  348. package/dist/components/navigation/accordion/AccordionTrigger.svelte +78 -0
  349. package/dist/components/navigation/accordion/AccordionTrigger.svelte.d.ts +9 -0
  350. package/dist/components/navigation/accordion/context.d.ts +21 -0
  351. package/dist/components/navigation/accordion/context.js +21 -0
  352. package/dist/components/navigation/accordion/index.d.ts +6 -0
  353. package/dist/components/navigation/accordion/index.js +5 -0
  354. package/dist/components/navigation/breadcrumb/Breadcrumb.svelte +21 -0
  355. package/dist/components/navigation/breadcrumb/Breadcrumb.svelte.d.ts +9 -0
  356. package/dist/components/navigation/breadcrumb/BreadcrumbItem.svelte +23 -0
  357. package/dist/components/navigation/breadcrumb/BreadcrumbItem.svelte.d.ts +10 -0
  358. package/dist/components/navigation/breadcrumb/BreadcrumbSeparator.svelte +12 -0
  359. package/dist/components/navigation/breadcrumb/BreadcrumbSeparator.svelte.d.ts +7 -0
  360. package/dist/components/navigation/breadcrumb/index.d.ts +3 -0
  361. package/dist/components/navigation/breadcrumb/index.js +3 -0
  362. package/dist/components/navigation/command-menu/CommandMenu.svelte +146 -0
  363. package/dist/components/navigation/command-menu/CommandMenu.svelte.d.ts +37 -0
  364. package/dist/components/navigation/command-menu/CommandMenuContent.svelte +78 -0
  365. package/dist/components/navigation/command-menu/CommandMenuContent.svelte.d.ts +11 -0
  366. package/dist/components/navigation/command-menu/CommandMenuEmpty.svelte +18 -0
  367. package/dist/components/navigation/command-menu/CommandMenuEmpty.svelte.d.ts +7 -0
  368. package/dist/components/navigation/command-menu/CommandMenuGroup.svelte +55 -0
  369. package/dist/components/navigation/command-menu/CommandMenuGroup.svelte.d.ts +13 -0
  370. package/dist/components/navigation/command-menu/CommandMenuInput.svelte +88 -0
  371. package/dist/components/navigation/command-menu/CommandMenuInput.svelte.d.ts +9 -0
  372. package/dist/components/navigation/command-menu/CommandMenuItem.svelte +67 -0
  373. package/dist/components/navigation/command-menu/CommandMenuItem.svelte.d.ts +13 -0
  374. package/dist/components/navigation/command-menu/CommandMenuList.svelte +22 -0
  375. package/dist/components/navigation/command-menu/CommandMenuList.svelte.d.ts +8 -0
  376. package/dist/components/navigation/command-menu/CommandMenuTrigger.svelte +42 -0
  377. package/dist/components/navigation/command-menu/CommandMenuTrigger.svelte.d.ts +8 -0
  378. package/dist/components/navigation/command-menu/index.d.ts +9 -0
  379. package/dist/components/navigation/command-menu/index.js +8 -0
  380. package/dist/components/navigation/external-link/ExternalLink.svelte +45 -0
  381. package/dist/components/navigation/external-link/ExternalLink.svelte.d.ts +14 -0
  382. package/dist/components/navigation/external-link/index.d.ts +1 -0
  383. package/dist/components/navigation/external-link/index.js +1 -0
  384. package/dist/components/navigation/link/Link.svelte +63 -0
  385. package/dist/components/navigation/link/Link.svelte.d.ts +19 -0
  386. package/dist/components/navigation/link/index.d.ts +1 -0
  387. package/dist/components/navigation/link/index.js +1 -0
  388. package/dist/components/navigation/menu/Menu.svelte +112 -0
  389. package/dist/components/navigation/menu/Menu.svelte.d.ts +38 -0
  390. package/dist/components/navigation/menu/MenuContent.svelte +147 -0
  391. package/dist/components/navigation/menu/MenuContent.svelte.d.ts +10 -0
  392. package/dist/components/navigation/menu/MenuItem.svelte +65 -0
  393. package/dist/components/navigation/menu/MenuItem.svelte.d.ts +11 -0
  394. package/dist/components/navigation/menu/MenuTrigger.svelte +57 -0
  395. package/dist/components/navigation/menu/MenuTrigger.svelte.d.ts +10 -0
  396. package/dist/components/navigation/menu/index.d.ts +5 -0
  397. package/dist/components/navigation/menu/index.js +4 -0
  398. package/dist/components/navigation/navigation/Navigation.svelte +33 -0
  399. package/dist/components/navigation/navigation/Navigation.svelte.d.ts +12 -0
  400. package/dist/components/navigation/navigation/index.d.ts +1 -0
  401. package/dist/components/navigation/navigation/index.js +1 -0
  402. package/dist/components/navigation/pagination/Pagination.svelte +85 -0
  403. package/dist/components/navigation/pagination/Pagination.svelte.d.ts +24 -0
  404. package/dist/components/navigation/pagination/index.d.ts +1 -0
  405. package/dist/components/navigation/pagination/index.js +1 -0
  406. package/dist/components/navigation/stepper/Stepper.svelte +73 -0
  407. package/dist/components/navigation/stepper/Stepper.svelte.d.ts +23 -0
  408. package/dist/components/navigation/stepper/StepperStep.svelte +58 -0
  409. package/dist/components/navigation/stepper/StepperStep.svelte.d.ts +11 -0
  410. package/dist/components/navigation/stepper/index.d.ts +3 -0
  411. package/dist/components/navigation/stepper/index.js +2 -0
  412. package/dist/components/navigation/sub-menu/SubMenu.svelte +243 -0
  413. package/dist/components/navigation/sub-menu/SubMenu.svelte.d.ts +26 -0
  414. package/dist/components/navigation/sub-menu/index.d.ts +2 -0
  415. package/dist/components/navigation/sub-menu/index.js +1 -0
  416. package/dist/components/navigation/tabs/Tab.svelte +87 -0
  417. package/dist/components/navigation/tabs/Tab.svelte.d.ts +11 -0
  418. package/dist/components/navigation/tabs/TabList.svelte +33 -0
  419. package/dist/components/navigation/tabs/TabList.svelte.d.ts +9 -0
  420. package/dist/components/navigation/tabs/TabPanel.svelte +31 -0
  421. package/dist/components/navigation/tabs/TabPanel.svelte.d.ts +9 -0
  422. package/dist/components/navigation/tabs/Tabs.svelte +42 -0
  423. package/dist/components/navigation/tabs/Tabs.svelte.d.ts +12 -0
  424. package/dist/components/navigation/tabs/context.d.ts +11 -0
  425. package/dist/components/navigation/tabs/context.js +13 -0
  426. package/dist/components/navigation/tabs/index.d.ts +6 -0
  427. package/dist/components/navigation/tabs/index.js +5 -0
  428. package/dist/components/overlay/context-menu/ContextMenu.svelte +239 -0
  429. package/dist/components/overlay/context-menu/ContextMenu.svelte.d.ts +26 -0
  430. package/dist/components/overlay/context-menu/index.d.ts +2 -0
  431. package/dist/components/overlay/context-menu/index.js +1 -0
  432. package/dist/components/overlay/dialog/Dialog.svelte +23 -0
  433. package/dist/components/overlay/dialog/Dialog.svelte.d.ts +10 -0
  434. package/dist/components/overlay/dialog/index.d.ts +2 -0
  435. package/dist/components/overlay/dialog/index.js +2 -0
  436. package/dist/components/overlay/drawer/Drawer.svelte +26 -0
  437. package/dist/components/overlay/drawer/Drawer.svelte.d.ts +11 -0
  438. package/dist/components/overlay/drawer/DrawerContent.svelte +100 -0
  439. package/dist/components/overlay/drawer/DrawerContent.svelte.d.ts +15 -0
  440. package/dist/components/overlay/drawer/context.d.ts +3 -0
  441. package/dist/components/overlay/drawer/context.js +8 -0
  442. package/dist/components/overlay/drawer/index.d.ts +4 -0
  443. package/dist/components/overlay/drawer/index.js +3 -0
  444. package/dist/components/overlay/dropdown/index.d.ts +2 -0
  445. package/dist/components/overlay/dropdown/index.js +1 -0
  446. package/dist/components/overlay/lightbox/Lightbox.svelte +164 -0
  447. package/dist/components/overlay/lightbox/Lightbox.svelte.d.ts +38 -0
  448. package/dist/components/overlay/lightbox/index.d.ts +2 -0
  449. package/dist/components/overlay/lightbox/index.js +1 -0
  450. package/dist/components/overlay/modal/Modal.svelte +86 -0
  451. package/dist/components/overlay/modal/Modal.svelte.d.ts +29 -0
  452. package/dist/components/overlay/modal/ModalClose.svelte +17 -0
  453. package/dist/components/overlay/modal/ModalClose.svelte.d.ts +8 -0
  454. package/dist/components/overlay/modal/ModalContent.svelte +96 -0
  455. package/dist/components/overlay/modal/ModalContent.svelte.d.ts +13 -0
  456. package/dist/components/overlay/modal/ModalDescription.svelte +21 -0
  457. package/dist/components/overlay/modal/ModalDescription.svelte.d.ts +7 -0
  458. package/dist/components/overlay/modal/ModalTitle.svelte +22 -0
  459. package/dist/components/overlay/modal/ModalTitle.svelte.d.ts +8 -0
  460. package/dist/components/overlay/modal/ModalTrigger.svelte +44 -0
  461. package/dist/components/overlay/modal/ModalTrigger.svelte.d.ts +10 -0
  462. package/dist/components/overlay/modal/index.d.ts +7 -0
  463. package/dist/components/overlay/modal/index.js +6 -0
  464. package/dist/components/overlay/overlay/Overlay.svelte +63 -0
  465. package/dist/components/overlay/overlay/Overlay.svelte.d.ts +13 -0
  466. package/dist/components/overlay/overlay/index.d.ts +1 -0
  467. package/dist/components/overlay/overlay/index.js +1 -0
  468. package/dist/components/overlay/popover/Popover.svelte +73 -0
  469. package/dist/components/overlay/popover/Popover.svelte.d.ts +26 -0
  470. package/dist/components/overlay/popover/PopoverContent.svelte +130 -0
  471. package/dist/components/overlay/popover/PopoverContent.svelte.d.ts +15 -0
  472. package/dist/components/overlay/popover/PopoverTrigger.svelte +45 -0
  473. package/dist/components/overlay/popover/PopoverTrigger.svelte.d.ts +10 -0
  474. package/dist/components/overlay/popover/index.d.ts +4 -0
  475. package/dist/components/overlay/popover/index.js +3 -0
  476. package/dist/components/overlay/sheet/index.d.ts +2 -0
  477. package/dist/components/overlay/sheet/index.js +1 -0
  478. package/dist/components/overlay/tooltip/Tooltip.svelte +99 -0
  479. package/dist/components/overlay/tooltip/Tooltip.svelte.d.ts +28 -0
  480. package/dist/components/overlay/tooltip/TooltipContent.svelte +68 -0
  481. package/dist/components/overlay/tooltip/TooltipContent.svelte.d.ts +10 -0
  482. package/dist/components/overlay/tooltip/TooltipTrigger.svelte +38 -0
  483. package/dist/components/overlay/tooltip/TooltipTrigger.svelte.d.ts +10 -0
  484. package/dist/components/overlay/tooltip/index.d.ts +4 -0
  485. package/dist/components/overlay/tooltip/index.js +3 -0
  486. package/dist/components/utility/conditional/Conditional.svelte +15 -0
  487. package/dist/components/utility/conditional/Conditional.svelte.d.ts +8 -0
  488. package/dist/components/utility/conditional/index.d.ts +1 -0
  489. package/dist/components/utility/conditional/index.js +1 -0
  490. package/dist/components/utility/focus-trap/FocusTrap.svelte +39 -0
  491. package/dist/components/utility/focus-trap/FocusTrap.svelte.d.ts +10 -0
  492. package/dist/components/utility/focus-trap/index.d.ts +1 -0
  493. package/dist/components/utility/focus-trap/index.js +1 -0
  494. package/dist/components/utility/portal/Portal.svelte +36 -0
  495. package/dist/components/utility/portal/Portal.svelte.d.ts +8 -0
  496. package/dist/components/utility/portal/index.d.ts +1 -0
  497. package/dist/components/utility/portal/index.js +1 -0
  498. package/dist/components/utility/screen-reader-only/index.d.ts +1 -0
  499. package/dist/components/utility/screen-reader-only/index.js +1 -0
  500. package/dist/components/utility/visually-hidden/VisuallyHidden.svelte +50 -0
  501. package/dist/components/utility/visually-hidden/VisuallyHidden.svelte.d.ts +13 -0
  502. package/dist/components/utility/visually-hidden/index.d.ts +1 -0
  503. package/dist/components/utility/visually-hidden/index.js +1 -0
  504. package/dist/index.d.ts +7 -0
  505. package/dist/index.js +10 -0
  506. package/dist/types/README.md +299 -0
  507. package/dist/types/index.d.ts +251 -0
  508. package/dist/types/index.js +89 -0
  509. package/dist/utils/a11y/README.md +312 -0
  510. package/dist/utils/a11y/aria.d.ts +88 -0
  511. package/dist/utils/a11y/aria.js +131 -0
  512. package/dist/utils/a11y/focus.d.ts +51 -0
  513. package/dist/utils/a11y/focus.js +91 -0
  514. package/dist/utils/a11y/id.d.ts +54 -0
  515. package/dist/utils/a11y/id.js +61 -0
  516. package/dist/utils/a11y/index.d.ts +8 -0
  517. package/dist/utils/a11y/index.js +12 -0
  518. package/dist/utils/a11y/keyboard.d.ts +71 -0
  519. package/dist/utils/a11y/keyboard.js +101 -0
  520. package/dist/utils/form/README.md +164 -0
  521. package/dist/utils/form/aria.d.ts +63 -0
  522. package/dist/utils/form/aria.js +75 -0
  523. package/dist/utils/form/ids.d.ts +46 -0
  524. package/dist/utils/form/ids.js +53 -0
  525. package/dist/utils/form/index.d.ts +7 -0
  526. package/dist/utils/form/index.js +8 -0
  527. package/dist/utils/form/state.d.ts +87 -0
  528. package/dist/utils/form/state.js +103 -0
  529. package/dist/utils/index.d.ts +6 -0
  530. package/dist/utils/index.js +8 -0
  531. package/package.json +98 -0
package/README.md ADDED
@@ -0,0 +1,289 @@
1
+ # alus-ui
2
+
3
+ > **Unstyled, accessible Svelte 5 components** with full keyboard navigation and WCAG 2.1 AA compliance
4
+
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+ [![Svelte 5](https://img.shields.io/badge/Svelte-5.55-orange)](https://svelte.dev/)
7
+ [![TypeScript](https://img.shields.io/badge/TypeScript-6.0-blue)](https://www.typescriptlang.org/)
8
+ [![npm package](https://img.shields.io/badge/npm-alus--ui-critical)](https://www.npmjs.com/package/alus-ui)
9
+
10
+ alus-ui provides a set of primitive UI components that are:
11
+
12
+ - **Unstyled** - Complete styling freedom with Tailwind CSS or any CSS framework
13
+ - **Accessible** - WCAG 2.1 AA compliant with proper ARIA attributes
14
+ - **Keyboard-friendly** - Full keyboard navigation support
15
+ - **Type-safe** - Built with TypeScript
16
+ - **Svelte 5 Native** - Uses runes mode (`$props`, `$derived`, `$state`)
17
+
18
+ ## Installation
19
+
20
+ ```bash
21
+ npm install alus-ui
22
+ # or
23
+ pnpm add alus-ui
24
+ # or
25
+ yarn add alus-ui
26
+ ```
27
+
28
+ ## Quick Start
29
+
30
+ ```svelte
31
+ <script lang="ts">
32
+ import { Button, Input } from 'alus-ui';
33
+
34
+ let name = $state('');
35
+ </script>
36
+
37
+ <Input bind:value={name} placeholder="Enter your name" aria-label="Name input" />
38
+
39
+ <Button onclick={() => alert(`Hello ${name}!`)}>Submit</Button>
40
+ ```
41
+
42
+ ## Available Components
43
+
44
+ ### Form Components (^\_^)b
45
+
46
+ - **Button** - Accessible button with ARIA support and toggle states
47
+ - **Input** - Text input with validation, error states, and accessibility
48
+
49
+ ## Features
50
+
51
+ ### (°_°) Accessibility First
52
+
53
+ - WCAG 2.1 AA compliant out of the box
54
+ - Proper ARIA attributes (aria-label, aria-describedby, aria-invalid, etc.)
55
+ - Screen reader support with semantic HTML
56
+ - Keyboard navigation with visible focus indicators
57
+ - Live regions for dynamic content announcements
58
+
59
+ ### (☆^\_☆) Complete Styling Control
60
+
61
+ - No default styles or colors
62
+ - Works seamlessly with Tailwind CSS
63
+ - Easy to theme with CSS variables
64
+ - Responsive and mobile-friendly
65
+
66
+ ### (☆^O^☆) Svelte 5 Runes Mode
67
+
68
+ - Modern reactive syntax with `$props`, `$derived`, `$state`
69
+ - Better TypeScript support
70
+ - Improved performance
71
+ - Future-proof Svelte architecture
72
+
73
+ ### (^\_^) Type Safety
74
+
75
+ - Full TypeScript support
76
+ - Type-safe props and events
77
+ - IntelliSense in IDEs
78
+
79
+ ## Styling with Tailwind CSS
80
+
81
+ ```svelte
82
+ <script lang="ts">
83
+ import { Button } from 'alus-ui';
84
+ </script>
85
+
86
+ <Button class="rounded bg-blue-600 px-4 py-2 text-white hover:bg-blue-700" aria-label="Submit form">
87
+ Submit
88
+ </Button>
89
+ ```
90
+
91
+ ## Form Validation Example
92
+
93
+ ```svelte
94
+ <script lang="ts">
95
+ import { Input } from 'alus-ui';
96
+
97
+ let email = $state('');
98
+ let emailError = $derived.by(() => {
99
+ if (email && !email.includes('@')) {
100
+ return 'Please enter a valid email';
101
+ }
102
+ return '';
103
+ });
104
+ </script>
105
+
106
+ <label for="email">Email</label>
107
+ <Input
108
+ id="email"
109
+ name="email"
110
+ type="email"
111
+ bind:value={email}
112
+ aria-invalid={!!emailError}
113
+ aria-describedby={emailError ? 'email-error' : undefined}
114
+ class={emailError ? 'border-red-500' : 'border-gray-300'}
115
+ />
116
+ {#if emailError}
117
+ <p id="email-error" class="text-red-500" role="alert">
118
+ {emailError}
119
+ </p>
120
+ {/if}
121
+ ```
122
+
123
+ ## Component API
124
+
125
+ ### Button
126
+
127
+ ```svelte
128
+ <Button type="button" disabled={false} aria-pressed={undefined} class="" onclick={() => {}}>
129
+ Button content
130
+ </Button>
131
+ ```
132
+
133
+ **Props:**
134
+
135
+ - `type?: 'button' | 'submit' | 'reset'` - Button type (default: 'button')
136
+ - `disabled?: boolean` - Disabled state
137
+ - `aria-pressed?: boolean` - Toggle button state
138
+ - `class?: string` - CSS classes for styling
139
+ - All standard HTML button attributes
140
+
141
+ ### Input
142
+
143
+ ```svelte
144
+ <Input
145
+ type="text"
146
+ value={''}
147
+ autocomplete="off"
148
+ inputmode="text"
149
+ aria-invalid={false}
150
+ aria-label={undefined}
151
+ aria-describedby={undefined}
152
+ class=""
153
+ oninput={(e) => {}}
154
+ />
155
+ ```
156
+
157
+ **Props:**
158
+
159
+ - `type?: HTMLInputTypeAttribute` - Input type (default: 'text')
160
+ - `value?: string` - Input value (use `bind:value` for two-way binding)
161
+ - `autocomplete?: string` - Autocomplete attribute
162
+ - `inputmode?: string` - Input mode for mobile keyboards
163
+ - `aria-invalid?: boolean` - Invalid state for validation
164
+ - `aria-label?: string` - Accessibility label
165
+ - `aria-describedby?: string` - ID of describing element
166
+ - `class?: string` - CSS classes for styling
167
+ - All standard HTML input attributes
168
+
169
+ ## Accessibility Features
170
+
171
+ Each component includes:
172
+
173
+ - (^\_^) Semantic HTML elements
174
+ - (^\_^) ARIA attributes and roles
175
+ - (^\_^) Keyboard navigation support
176
+ - (^\_^) Focus management
177
+ - (^\_^) Screen reader announcements
178
+ - (^\_^) Error and validation states
179
+ - (^\_^) Visible focus indicators
180
+
181
+ ## Browser Support
182
+
183
+ - Chrome/Edge (latest)
184
+ - Firefox (latest)
185
+ - Safari (latest)
186
+ - Mobile browsers (iOS Safari, Chrome Mobile)
187
+
188
+ ## Contributing
189
+
190
+ Contributions are welcome! Please see our [contributing guidelines](../../CONTRIBUTING.md) for details.
191
+
192
+ ## Development
193
+
194
+ ```bash
195
+ # Install dependencies
196
+ pnpm install
197
+
198
+ # Start development server
199
+ pnpm dev
200
+
201
+ # Run type checking
202
+ pnpm check
203
+
204
+ # Build library
205
+ pnpm build
206
+
207
+ # Run tests (Vitest)
208
+ pnpm test
209
+ ```
210
+
211
+ ## Releasing
212
+
213
+ Releases are driven by [release-it](https://github.com/release-it/release-it) + `@release-it/conventional-changelog`. Versions auto-bump from [Conventional Commits](https://www.conventionalcommits.org/) (`feat:` → minor, `fix:` → patch, `feat!:` / `BREAKING CHANGE:` → major).
214
+
215
+ ### Prerequisites
216
+
217
+ - Logged in to npm: `npm whoami` should print your username
218
+ - `GITHUB_TOKEN` env var set (else release-it falls back to the web UI for the GitHub release)
219
+ - Clean working tree on `main`
220
+
221
+ ### Commands
222
+
223
+ ```bash
224
+ cd packages/alus
225
+
226
+ pnpm release:dry # preview — no git/npm/github writes
227
+ pnpm release # interactive — prompts for the bump
228
+ pnpm release:patch # 0.1.0 → 0.1.1
229
+ pnpm release:minor # 0.1.0 → 0.2.0
230
+ pnpm release:major # 0.1.0 → 1.0.0
231
+ ```
232
+
233
+ ### What `pnpm release` does
234
+
235
+ 1. `before:init` hook → `pnpm check` (svelte-check must pass)
236
+ 2. Bumps `package.json` version
237
+ 3. `after:bump` hook → `pnpm build` (regenerates `dist/`)
238
+ 4. Writes `CHANGELOG.md` from conventional commits since the last tag
239
+ 5. Commits `chore(release): alus-ui v<version>` and tags `alus-ui-v<version>`
240
+ 6. Pushes commit + tag to `origin/main`
241
+ 7. Creates GitHub release with the changelog body
242
+ 8. Publishes to npm (`npm publish` runs `prepublishOnly` → build + test again)
243
+
244
+ ### Commit message conventions
245
+
246
+ | Prefix | Section in CHANGELOG | Bump |
247
+ | ------------ | -------------------- | ----- |
248
+ | `feat:` | Features | minor |
249
+ | `fix:` | Bug Fixes | patch |
250
+ | `perf:` | Performance | patch |
251
+ | `refactor:` | Refactors | patch |
252
+ | `docs:` | Documentation | patch |
253
+ | `test:` | Tests | patch |
254
+ | `build:` | Build | patch |
255
+ | `ci:` / `chore:` / `style:` | _(hidden)_ | none |
256
+
257
+ Append `!` after the type (or include `BREAKING CHANGE:` in the body) for a major bump.
258
+
259
+ ### Config
260
+
261
+ Settings live in `packages/alus/.release-it.json`. Tag scheme is `alus-ui-v<version>` so future workspace packages can release independently.
262
+
263
+ ## License
264
+
265
+ MIT
266
+
267
+ ## Repository
268
+
269
+ - **GitHub**: https://github.com/Hanivan/alus
270
+ - **Issues**: https://github.com/Hanivan/alus/issues
271
+ - **Documentation**: https://github.com/Hanivan/alus#readme
272
+
273
+ ## Acknowledgments
274
+
275
+ Built with:
276
+
277
+ - [Svelte 5](https://svelte.dev/) - Cybernetically enhanced web apps
278
+ - [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS framework
279
+ - [Floating UI](https://floating-ui.com/) - Positioning engine for overlays
280
+ - [Runed](https://runed.dev/) - Svelte 5 utilities library
281
+
282
+ ## Related Projects
283
+
284
+ - [Showcase App](https://github.com/Hanivan/alus) - Live demo of all alus-ui components
285
+ - [Contributing](https://github.com/Hanivan/alus/blob/main/CONTRIBUTING.md) - How to contribute
286
+
287
+ ---
288
+
289
+ **Note**: This library is in active development. APIs may change before v1.0 release.
@@ -0,0 +1,18 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ children?: import('svelte').Snippet;
4
+ ratio?: number;
5
+ class?: string;
6
+ innerClass?: string;
7
+ }
8
+
9
+ let { children, ratio = 1, class: className = '', innerClass = '' }: Props = $props();
10
+
11
+ const containerStyle = $derived(`aspect-ratio:${ratio};`);
12
+ </script>
13
+
14
+ <div class={className} style={containerStyle} data-aspect-ratio={ratio}>
15
+ <div class={innerClass} style="width:100%;height:100%;">
16
+ {#if children}{@render children()}{/if}
17
+ </div>
18
+ </div>
@@ -0,0 +1,9 @@
1
+ interface Props {
2
+ children?: import('svelte').Snippet;
3
+ ratio?: number;
4
+ class?: string;
5
+ innerClass?: string;
6
+ }
7
+ declare const AspectRatio: import("svelte").Component<Props, {}, "">;
8
+ type AspectRatio = ReturnType<typeof AspectRatio>;
9
+ export default AspectRatio;
@@ -0,0 +1 @@
1
+ export { default as AspectRatio } from './AspectRatio.svelte';
@@ -0,0 +1 @@
1
+ export { default as AspectRatio } from './AspectRatio.svelte';
@@ -0,0 +1,62 @@
1
+ <script lang="ts">
2
+ import { labelAttrs, mergeAttrs } from '../../../utils/a11y/index.js';
3
+
4
+ interface Props {
5
+ class?: string;
6
+ src?: string;
7
+ alt?: string;
8
+ fallback?: string;
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+ // Accessibility attributes
11
+ 'aria-label'?: string;
12
+ }
13
+
14
+ let {
15
+ class: className = '',
16
+ src,
17
+ alt = '',
18
+ fallback,
19
+ size = 'md',
20
+ 'aria-label': ariaLabel
21
+ }: Props = $props();
22
+
23
+ let imgError = $state(false);
24
+
25
+ // Build ARIA attributes using reusable utilities
26
+ let ariaAttrs: Record<string, string> = $derived(
27
+ mergeAttrs(labelAttrs({ label: ariaLabel || alt }))
28
+ );
29
+
30
+ function getInitials(text: string): string {
31
+ return text
32
+ .split(' ')
33
+ .map((word) => word[0])
34
+ .join('')
35
+ .toUpperCase()
36
+ .slice(0, 2);
37
+ }
38
+ </script>
39
+
40
+ <div class={className} data-size={size} {...ariaAttrs}>
41
+ {#if src && !imgError}
42
+ <img {src} {alt} aria-hidden="true" onerror={() => (imgError = true)} class="avatar-image" />
43
+ {:else if fallback}
44
+ <span class="avatar-fallback" aria-hidden="true">
45
+ {getInitials(fallback)}
46
+ </span>
47
+ {:else}
48
+ <span class="avatar-placeholder" aria-hidden="true">
49
+ <svg
50
+ xmlns="http://www.w3.org/2000/svg"
51
+ width="24"
52
+ height="24"
53
+ viewBox="0 0 24 24"
54
+ fill="currentColor"
55
+ >
56
+ <path
57
+ d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"
58
+ />
59
+ </svg>
60
+ </span>
61
+ {/if}
62
+ </div>
@@ -0,0 +1,11 @@
1
+ interface Props {
2
+ class?: string;
3
+ src?: string;
4
+ alt?: string;
5
+ fallback?: string;
6
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
7
+ 'aria-label'?: string;
8
+ }
9
+ declare const Avatar: import("svelte").Component<Props, {}, "">;
10
+ type Avatar = ReturnType<typeof Avatar>;
11
+ export default Avatar;
@@ -0,0 +1 @@
1
+ export { default as Avatar } from './Avatar.svelte';
@@ -0,0 +1 @@
1
+ export { default as Avatar } from './Avatar.svelte';
@@ -0,0 +1,60 @@
1
+ <script lang="ts" module>
2
+ import { getContext, setContext } from 'svelte';
3
+
4
+ const KEY = Symbol('alus-ui:card');
5
+
6
+ export interface CardContext {
7
+ titleId: string;
8
+ descriptionId: string;
9
+ hasTitle: () => boolean;
10
+ setHasTitle: (v: boolean) => void;
11
+ hasDescription: () => boolean;
12
+ setHasDescription: (v: boolean) => void;
13
+ }
14
+
15
+ export function getCardContext(): CardContext {
16
+ const ctx = getContext<CardContext | undefined>(KEY);
17
+ if (!ctx) throw new Error('Card subcomponent must be inside <Card>');
18
+ return ctx;
19
+ }
20
+
21
+ export function setCardContext(ctx: CardContext) {
22
+ setContext(KEY, ctx);
23
+ }
24
+ </script>
25
+
26
+ <script lang="ts">
27
+ import { generateCounterId } from '../../../utils/a11y/id.js';
28
+
29
+ interface Props {
30
+ children?: import('svelte').Snippet;
31
+ class?: string;
32
+ as?: 'article' | 'section' | 'div';
33
+ }
34
+
35
+ let { children, class: className = '', as = 'article' }: Props = $props();
36
+
37
+ let hasTitle = $state(false);
38
+ let hasDescription = $state(false);
39
+
40
+ const titleId = generateCounterId('card-title');
41
+ const descriptionId = generateCounterId('card-description');
42
+
43
+ setCardContext({
44
+ titleId,
45
+ descriptionId,
46
+ hasTitle: () => hasTitle,
47
+ setHasTitle: (v) => (hasTitle = v),
48
+ hasDescription: () => hasDescription,
49
+ setHasDescription: (v) => (hasDescription = v)
50
+ });
51
+ </script>
52
+
53
+ <svelte:element
54
+ this={as}
55
+ class={className}
56
+ aria-labelledby={hasTitle ? titleId : undefined}
57
+ aria-describedby={hasDescription ? descriptionId : undefined}
58
+ >
59
+ {#if children}{@render children()}{/if}
60
+ </svelte:element>
@@ -0,0 +1,18 @@
1
+ export interface CardContext {
2
+ titleId: string;
3
+ descriptionId: string;
4
+ hasTitle: () => boolean;
5
+ setHasTitle: (v: boolean) => void;
6
+ hasDescription: () => boolean;
7
+ setHasDescription: (v: boolean) => void;
8
+ }
9
+ export declare function getCardContext(): CardContext;
10
+ export declare function setCardContext(ctx: CardContext): void;
11
+ interface Props {
12
+ children?: import('svelte').Snippet;
13
+ class?: string;
14
+ as?: 'article' | 'section' | 'div';
15
+ }
16
+ declare const Card: import("svelte").Component<Props, {}, "">;
17
+ type Card = ReturnType<typeof Card>;
18
+ export default Card;
@@ -0,0 +1,12 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ children?: import('svelte').Snippet;
4
+ class?: string;
5
+ }
6
+
7
+ let { children, class: className = '' }: Props = $props();
8
+ </script>
9
+
10
+ <div class={className}>
11
+ {#if children}{@render children()}{/if}
12
+ </div>
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ children?: import('svelte').Snippet;
3
+ class?: string;
4
+ }
5
+ declare const CardContent: import("svelte").Component<Props, {}, "">;
6
+ type CardContent = ReturnType<typeof CardContent>;
7
+ export default CardContent;
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import { getCardContext } from './Card.svelte';
3
+
4
+ interface Props {
5
+ children?: import('svelte').Snippet;
6
+ class?: string;
7
+ }
8
+
9
+ let { children, class: className = '' }: Props = $props();
10
+
11
+ const ctx = getCardContext();
12
+
13
+ $effect(() => {
14
+ ctx.setHasDescription(true);
15
+ return () => ctx.setHasDescription(false);
16
+ });
17
+ </script>
18
+
19
+ <p id={ctx.descriptionId} class={className}>
20
+ {#if children}{@render children()}{/if}
21
+ </p>
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ children?: import('svelte').Snippet;
3
+ class?: string;
4
+ }
5
+ declare const CardDescription: import("svelte").Component<Props, {}, "">;
6
+ type CardDescription = ReturnType<typeof CardDescription>;
7
+ export default CardDescription;
@@ -0,0 +1,12 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ children?: import('svelte').Snippet;
4
+ class?: string;
5
+ }
6
+
7
+ let { children, class: className = '' }: Props = $props();
8
+ </script>
9
+
10
+ <footer class={className}>
11
+ {#if children}{@render children()}{/if}
12
+ </footer>
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ children?: import('svelte').Snippet;
3
+ class?: string;
4
+ }
5
+ declare const CardFooter: import("svelte").Component<Props, {}, "">;
6
+ type CardFooter = ReturnType<typeof CardFooter>;
7
+ export default CardFooter;
@@ -0,0 +1,12 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ children?: import('svelte').Snippet;
4
+ class?: string;
5
+ }
6
+
7
+ let { children, class: className = '' }: Props = $props();
8
+ </script>
9
+
10
+ <header class={className}>
11
+ {#if children}{@render children()}{/if}
12
+ </header>
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ children?: import('svelte').Snippet;
3
+ class?: string;
4
+ }
5
+ declare const CardHeader: import("svelte").Component<Props, {}, "">;
6
+ type CardHeader = ReturnType<typeof CardHeader>;
7
+ export default CardHeader;
@@ -0,0 +1,22 @@
1
+ <script lang="ts">
2
+ import { getCardContext } from './Card.svelte';
3
+
4
+ interface Props {
5
+ children?: import('svelte').Snippet;
6
+ class?: string;
7
+ as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
8
+ }
9
+
10
+ let { children, class: className = '', as = 'h3' }: Props = $props();
11
+
12
+ const ctx = getCardContext();
13
+
14
+ $effect(() => {
15
+ ctx.setHasTitle(true);
16
+ return () => ctx.setHasTitle(false);
17
+ });
18
+ </script>
19
+
20
+ <svelte:element this={as} id={ctx.titleId} class={className}>
21
+ {#if children}{@render children()}{/if}
22
+ </svelte:element>
@@ -0,0 +1,8 @@
1
+ interface Props {
2
+ children?: import('svelte').Snippet;
3
+ class?: string;
4
+ as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
5
+ }
6
+ declare const CardTitle: import("svelte").Component<Props, {}, "">;
7
+ type CardTitle = ReturnType<typeof CardTitle>;
8
+ export default CardTitle;
@@ -0,0 +1,7 @@
1
+ export { default as Card, getCardContext, setCardContext } from './Card.svelte';
2
+ export { default as CardHeader } from './CardHeader.svelte';
3
+ export { default as CardTitle } from './CardTitle.svelte';
4
+ export { default as CardDescription } from './CardDescription.svelte';
5
+ export { default as CardContent } from './CardContent.svelte';
6
+ export { default as CardFooter } from './CardFooter.svelte';
7
+ export type { CardContext } from './Card.svelte';
@@ -0,0 +1,6 @@
1
+ export { default as Card, getCardContext, setCardContext } from './Card.svelte';
2
+ export { default as CardHeader } from './CardHeader.svelte';
3
+ export { default as CardTitle } from './CardTitle.svelte';
4
+ export { default as CardDescription } from './CardDescription.svelte';
5
+ export { default as CardContent } from './CardContent.svelte';
6
+ export { default as CardFooter } from './CardFooter.svelte';