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
@@ -0,0 +1,50 @@
1
+ <script lang="ts">
2
+ import type { AriaLive, AriaRelevant } from '../../../types/index.js';
3
+
4
+ interface Props {
5
+ children?: import('svelte').Snippet;
6
+ as?: 'span' | 'div';
7
+ role?: string;
8
+ 'aria-live'?: AriaLive;
9
+ 'aria-atomic'?: boolean | 'true' | 'false';
10
+ 'aria-relevant'?: AriaRelevant;
11
+ 'aria-label'?: string;
12
+ }
13
+
14
+ let {
15
+ children,
16
+ as = 'span',
17
+ role,
18
+ 'aria-live': ariaLive,
19
+ 'aria-atomic': ariaAtomic,
20
+ 'aria-relevant': ariaRelevant,
21
+ 'aria-label': ariaLabel
22
+ }: Props = $props();
23
+
24
+ const hiddenStyle =
25
+ 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';
26
+ </script>
27
+
28
+ {#if as === 'div'}
29
+ <div
30
+ style={hiddenStyle}
31
+ {role}
32
+ aria-live={ariaLive}
33
+ aria-atomic={ariaAtomic}
34
+ aria-relevant={ariaRelevant}
35
+ aria-label={ariaLabel}
36
+ >
37
+ {#if children}{@render children()}{/if}
38
+ </div>
39
+ {:else}
40
+ <span
41
+ style={hiddenStyle}
42
+ {role}
43
+ aria-live={ariaLive}
44
+ aria-atomic={ariaAtomic}
45
+ aria-relevant={ariaRelevant}
46
+ aria-label={ariaLabel}
47
+ >
48
+ {#if children}{@render children()}{/if}
49
+ </span>
50
+ {/if}
@@ -0,0 +1,13 @@
1
+ import type { AriaLive, AriaRelevant } from '../../../types/index.js';
2
+ interface Props {
3
+ children?: import('svelte').Snippet;
4
+ as?: 'span' | 'div';
5
+ role?: string;
6
+ 'aria-live'?: AriaLive;
7
+ 'aria-atomic'?: boolean | 'true' | 'false';
8
+ 'aria-relevant'?: AriaRelevant;
9
+ 'aria-label'?: string;
10
+ }
11
+ declare const VisuallyHidden: import("svelte").Component<Props, {}, "">;
12
+ type VisuallyHidden = ReturnType<typeof VisuallyHidden>;
13
+ export default VisuallyHidden;
@@ -0,0 +1 @@
1
+ export { default as VisuallyHidden } from './VisuallyHidden.svelte';
@@ -0,0 +1 @@
1
+ export { default as VisuallyHidden } from './VisuallyHidden.svelte';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Alus - Unstyled, accessible Svelte 5 components
3
+ * @module alus
4
+ */
5
+ export * from './components/index.js';
6
+ export * from './utils/index.js';
7
+ export * from './types/index.js';
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Alus - Unstyled, accessible Svelte 5 components
3
+ * @module alus
4
+ */
5
+ // Export UI components
6
+ export * from './components/index.js';
7
+ // Export utilities (includes accessibility utilities)
8
+ export * from './utils/index.js';
9
+ // Export types
10
+ export * from './types/index.js';
@@ -0,0 +1,299 @@
1
+ # Type-safe Usage Examples
2
+
3
+ ## Using Constants Instead of Magic Strings
4
+
5
+ ### (x_x) Before (Magic Strings)
6
+
7
+ ```svelte
8
+ <Button type="button" formenctype="application/x-www-form-urlencoded" formmethod="post" />
9
+
10
+ <Input type="email" autocomplete="email" inputmode="email" aria-expanded="true" />
11
+ ```
12
+
13
+ ### (^\_^) After (Type-safe Constants)
14
+
15
+ ```svelte
16
+ <script>
17
+ import { Button, Input, CONSTANTS } from 'alus-ui';
18
+ </script>
19
+
20
+ <Button
21
+ type={CONSTANTS.BUTTON_TYPE.BUTTON}
22
+ formenctype={CONSTANTS.FORM_ENCTYPE.URLENCODED}
23
+ formmethod={CONSTANTS.FORM_METHOD.POST}
24
+ />
25
+
26
+ <Input
27
+ type={CONSTANTS.INPUT_TYPE.EMAIL}
28
+ autocomplete={CONSTANTS.AUTOCOMPLETE.EMAIL}
29
+ inputmode={CONSTANTS.INPUT_MODE.EMAIL}
30
+ aria-expanded={CONSTANTS.ARIA_BOOLEAN.TRUE}
31
+ />
32
+ ```
33
+
34
+ ## Common Form Field Patterns
35
+
36
+ ### Email Field
37
+
38
+ ```svelte
39
+ <script>
40
+ import { Input, CONSTANTS } from 'alus-ui';
41
+ import { generateId, labelAttrs } from 'alus-ui/a11y';
42
+
43
+ const labelId = generateId('label');
44
+ let email = $state('');
45
+ </script>
46
+
47
+ <Input
48
+ id="email"
49
+ bind:value={email}
50
+ type={CONSTANTS.INPUT_TYPE.EMAIL}
51
+ autocomplete={CONSTANTS.AUTOCOMPLETE.EMAIL}
52
+ inputmode={CONSTANTS.INPUT_MODE.EMAIL}
53
+ placeholder="you@example.com"
54
+ {...labelAttrs({ labelledby: labelId })}
55
+ required
56
+ />
57
+ <label id={labelId} for="email">Email Address</label>
58
+ ```
59
+
60
+ ### Password Field
61
+
62
+ ```svelte
63
+ <script>
64
+ import { Input, CONSTANTS } from 'alus-ui';
65
+ import { generateId, labelAttrs } from 'alus-ui/a11y';
66
+
67
+ const labelId = generateId('label');
68
+ let password = $state('');
69
+ </script>
70
+
71
+ <Input
72
+ id="password"
73
+ bind:value={password}
74
+ type={CONSTANTS.INPUT_TYPE.PASSWORD}
75
+ autocomplete={CONSTANTS.AUTOCOMPLETE.NEW_PASSWORD}
76
+ placeholder="Enter password"
77
+ {...labelAttrs({ labelledby: labelId })}
78
+ required
79
+ />
80
+ <label id={labelId} for="password">Password</label>
81
+ ```
82
+
83
+ ### Phone Field
84
+
85
+ ```svelte
86
+ <script>
87
+ import { Input, CONSTANTS } from 'alus-ui';
88
+ import { generateId, labelAttrs } from 'alus-ui/a11y';
89
+
90
+ const labelId = generateId('label');
91
+ let phone = $state('');
92
+ </script>
93
+
94
+ <Input
95
+ id="phone"
96
+ bind:value={phone}
97
+ type={CONSTANTS.INPUT_TYPE.TEL}
98
+ autocomplete={CONSTANTS.AUTOCOMPLETE.PHONE}
99
+ inputmode={CONSTANTS.INPUT_MODE.TEL}
100
+ placeholder="+1 (555) 123-4567"
101
+ {...labelAttrs({ labelledby: labelId })}
102
+ />
103
+ <label id={labelId} for="phone">Phone Number</label>
104
+ ```
105
+
106
+ ### Name Fields
107
+
108
+ ```svelte
109
+ <script>
110
+ import { Input, CONSTANTS } from 'alus-ui';
111
+ import { generateId, labelAttrs } from 'alus-ui/a11y';
112
+
113
+ const firstNameId = generateId('label');
114
+ const lastNameId = generateId('label');
115
+
116
+ let firstName = $state('');
117
+ let lastName = $state('');
118
+ </script>
119
+
120
+ <div class="name-fields">
121
+ <div>
122
+ <Input
123
+ id="first-name"
124
+ bind:value={firstName}
125
+ type={CONSTANTS.INPUT_TYPE.TEXT}
126
+ autocomplete={CONSTANTS.AUTOCOMPLETE.FIRST_NAME}
127
+ placeholder="John"
128
+ {...labelAttrs({ labelledby: firstNameId })}
129
+ />
130
+ <label id={firstNameId} for="first-name">First Name</label>
131
+ </div>
132
+
133
+ <div>
134
+ <Input
135
+ id="last-name"
136
+ bind:value={lastName}
137
+ type={CONSTANTS.INPUT_TYPE.TEXT}
138
+ autocomplete={CONSTANTS.AUTOCOMPLETE.LAST_NAME}
139
+ placeholder="Doe"
140
+ {...labelAttrs({ labelledby: lastNameId })}
141
+ />
142
+ <label id={lastNameId} for="last-name">Last Name</label>
143
+ </div>
144
+ </div>
145
+ ```
146
+
147
+ ### Submit Button with Form Encoding
148
+
149
+ ```svelte
150
+ <script>
151
+ import { Button, CONSTANTS } from 'alus-ui';
152
+ </script>
153
+
154
+ <Button
155
+ type={CONSTANTS.BUTTON_TYPE.SUBMIT}
156
+ formenctype={CONSTANTS.FORM_ENCTYPE.MULTIPART}
157
+ formmethod={CONSTANTS.FORM_METHOD.POST}
158
+ >
159
+ Upload File
160
+ </Button>
161
+ ```
162
+
163
+ ### Toggle Button with ARIA States
164
+
165
+ ```svelte
166
+ <script>
167
+ import { Button, CONSTANTS } from 'alus-ui';
168
+ import { interactiveStateAttrs } from 'alus-ui/a11y';
169
+
170
+ let isPressed = $state(false);
171
+ </script>
172
+
173
+ <Button
174
+ onclick={() => (isPressed = !isPressed)}
175
+ aria-label="Toggle mute"
176
+ {...interactiveStateAttrs({ pressed: isPressed })}
177
+ >
178
+ {#if isPressed}
179
+ Muted
180
+ {:else}
181
+ Unmuted
182
+ {/if}
183
+ </Button>
184
+ ```
185
+
186
+ ### Dropdown Menu Button
187
+
188
+ ```svelte
189
+ <script>
190
+ import { Button, CONSTANTS, type AriaHaspopup } from 'alus-ui';
191
+ import { interactiveStateAttrs, widgetAttrs, mergeAttrs } from 'alus-ui/a11y';
192
+
193
+ let isOpen = $state(false);
194
+ const menuId = 'options-menu';
195
+ </script>
196
+
197
+ <Button
198
+ aria-label="Options menu"
199
+ {...mergeAttrs(
200
+ interactiveStateAttrs({ expanded: isOpen }),
201
+ widgetAttrs({
202
+ haspopup: CONSTANTS.ARIA_BOOLEAN.TRUE as AriaHaspopup,
203
+ controls: menuId
204
+ })
205
+ )}
206
+ onclick={() => isOpen = !isOpen}
207
+ >
208
+ Options
209
+ </Button>
210
+
211
+ {#if isOpen}
212
+ <ul id={menuId} role="menu">
213
+ <li role="menuitem">Option 1</li>
214
+ <li role="menuitem">Option 2</li>
215
+ <li role="menuitem">Option 3</li>
216
+ </ul>
217
+ {/if}
218
+ ```
219
+
220
+ ### Search Field with Live Results
221
+
222
+ ```svelte
223
+ <script>
224
+ import { Input, CONSTANTS } from 'alus-ui';
225
+ import { labelAttrs, widgetAttrs } from 'alus-ui/a11y';
226
+
227
+ let searchQuery = $state('');
228
+ let results = $state([]);
229
+ </script>
230
+
231
+ <Input
232
+ id="search"
233
+ bind:value={searchQuery}
234
+ type={CONSTANTS.INPUT_TYPE.SEARCH}
235
+ inputmode={CONSTANTS.INPUT_MODE.SEARCH}
236
+ placeholder="Search..."
237
+ {...labelAttrs({ label: 'Search products' })}
238
+ {...widgetAttrs({
239
+ live: CONSTANTS.ARIA_LIVE.POLITE,
240
+ controls: 'search-results'
241
+ })}
242
+ />
243
+
244
+ {#if results.length > 0}
245
+ <ul id="search-results" role="listbox" aria-label="Search results">
246
+ {#each results as result}
247
+ <li role="option">{result.name}</li>
248
+ {/each}
249
+ </ul>
250
+ {/if}
251
+ ```
252
+
253
+ ## Benefits of Using Constants
254
+
255
+ (^_^) **Type Safety**: Autocomplete helps you find the right value
256
+ (^_^) **No Typos**: Can't misspell a constant value
257
+ (^_^) **Refactoring**: Change values in one place
258
+ (^_^) **Discoverability**: IDE shows all available options
259
+ (^_^) **Documentation**: Constants serve as inline documentation
260
+ (^_^) **Consistency**: Same values throughout your app
261
+
262
+ ## Exported Types
263
+
264
+ You can also import and use the types directly:
265
+
266
+ ```ts
267
+ import type {
268
+ InputType,
269
+ InputMode,
270
+ AutocompleteValue,
271
+ ButtonType,
272
+ FormEncType,
273
+ FormMethod,
274
+ FormTarget,
275
+ AriaBoolean,
276
+ AriaTristate,
277
+ AriaHaspopup,
278
+ AriaLive,
279
+ AriaOrientation
280
+ } from 'alus-ui';
281
+
282
+ // Use in your own components
283
+ function createInput(type: InputType) {
284
+ return { type };
285
+ }
286
+ ```
287
+
288
+ ## Type Exports for Extension
289
+
290
+ ```ts
291
+ import type { FormFieldConfig, LabelConfig, ValidationConfig } from 'alus-ui';
292
+
293
+ // Extend for your custom components
294
+ interface MyCustomFieldConfig extends FormFieldConfig {
295
+ customProp: string;
296
+ labelConfig: LabelConfig;
297
+ validationConfig: ValidationConfig;
298
+ }
299
+ ```
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Centralized TypeScript types for accessibility and form attributes
3
+ * No more magic strings or numbers!
4
+ */
5
+ /**
6
+ * HTML5 autocomplete attribute values
7
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete
8
+ */
9
+ export type AutocompleteValue = 'off' | 'on' | 'name' | 'honorific-prefix' | 'given-name' | 'additional-name' | 'family-name' | 'honorific-suffix' | 'nickname' | 'email' | 'username' | 'new-password' | 'current-password' | 'one-time-code' | 'organization-title' | 'organization' | 'street-address' | 'address-line1' | 'address-line2' | 'address-line3' | 'address-level4' | 'address-level3' | 'address-level2' | 'address-level1' | 'country' | 'country-name' | 'postal-code' | 'cc-name' | 'cc-given-name' | 'cc-additional-name' | 'cc-family-name' | 'cc-number' | 'cc-exp' | 'cc-exp-month' | 'cc-exp-year' | 'cc-csc' | 'cc-type' | 'transaction-currency' | 'transaction-amount' | 'language' | 'bday' | 'bday-day' | 'bday-month' | 'bday-year' | 'sex' | 'url' | 'photo';
10
+ /**
11
+ * HTML input types
12
+ */
13
+ export type InputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
14
+ /**
15
+ * HTML inputmode attribute values
16
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode
17
+ */
18
+ export type InputMode = 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
19
+ /**
20
+ * HTML button types
21
+ */
22
+ export type ButtonType = 'button' | 'submit' | 'reset';
23
+ /**
24
+ * Form encoding types
25
+ */
26
+ export type FormEncType = 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
27
+ /**
28
+ * Form method types
29
+ */
30
+ export type FormMethod = 'post' | 'get' | 'dialog';
31
+ /**
32
+ * Form target types
33
+ */
34
+ export type FormTarget = '_blank' | '_self' | '_parent' | '_top' | string;
35
+ /** Source of truth for ARIA attribute value types */
36
+ type AriaAttrs = import('svelte/elements').AriaAttributes;
37
+ type AriaAttrValue<K extends keyof AriaAttrs> = NonNullable<AriaAttrs[K]>;
38
+ /** ARIA boolean values (can be string or boolean per ARIA spec) */
39
+ export type AriaBoolean = AriaAttrValue<'aria-expanded'>;
40
+ /** ARIA tristate values (for checkboxes, etc.) */
41
+ export type AriaTristate = AriaAttrValue<'aria-pressed'>;
42
+ /** ARIA haspopup values */
43
+ export type AriaHaspopup = AriaAttrValue<'aria-haspopup'>;
44
+ /** ARIA live region values */
45
+ export type AriaLive = AriaAttrValue<'aria-live'>;
46
+ /** ARIA current values */
47
+ export type AriaCurrent = AriaAttrValue<'aria-current'>;
48
+ /** ARIA relevant tokens */
49
+ export type AriaRelevant = AriaAttrValue<'aria-relevant'>;
50
+ /** ARIA orientation values */
51
+ export type AriaOrientation = AriaAttrValue<'aria-orientation'>;
52
+ /**
53
+ * Common ID reference type
54
+ */
55
+ export type IdReference = string;
56
+ /**
57
+ * Direction type for arrow keys
58
+ */
59
+ export type Direction = 'up' | 'down' | 'left' | 'right';
60
+ /**
61
+ * Helper type to normalize ARIA boolean values
62
+ * Converts string literals to actual booleans
63
+ */
64
+ export type NormalizedAriaBoolean<T> = T extends 'true' | 'false' ? boolean : T;
65
+ /**
66
+ * Helper to normalize ARIA tristate values
67
+ */
68
+ export type NormalizedAriaTristate<T> = T extends 'true' | 'false' | 'mixed' ? boolean | 'mixed' : T;
69
+ /**
70
+ * Utility constants for common values
71
+ */
72
+ export declare const CONSTANTS: {
73
+ /** Default autocomplete values for common form fields */
74
+ readonly AUTOCOMPLETE: {
75
+ readonly EMAIL: "email";
76
+ readonly USERNAME: "username";
77
+ readonly PASSWORD: "current-password";
78
+ readonly NEW_PASSWORD: "new-password";
79
+ readonly NAME: "name";
80
+ readonly FIRST_NAME: "given-name";
81
+ readonly LAST_NAME: "family-name";
82
+ readonly PHONE: "tel";
83
+ readonly POSTAL_CODE: "postal-code";
84
+ };
85
+ /** Common button types */
86
+ readonly BUTTON_TYPE: {
87
+ readonly BUTTON: "button";
88
+ readonly SUBMIT: "submit";
89
+ readonly RESET: "reset";
90
+ };
91
+ /** Common input types */
92
+ readonly INPUT_TYPE: {
93
+ readonly TEXT: "text";
94
+ readonly EMAIL: "email";
95
+ readonly PASSWORD: "password";
96
+ readonly NUMBER: "number";
97
+ readonly TEL: "tel";
98
+ readonly URL: "url";
99
+ readonly SEARCH: "search";
100
+ };
101
+ /** Common input modes */
102
+ readonly INPUT_MODE: {
103
+ readonly NONE: "none";
104
+ readonly TEXT: "text";
105
+ readonly TEL: "tel";
106
+ readonly URL: "url";
107
+ readonly EMAIL: "email";
108
+ readonly NUMERIC: "numeric";
109
+ readonly DECIMAL: "decimal";
110
+ readonly SEARCH: "search";
111
+ };
112
+ /** Form encoding types */
113
+ readonly FORM_ENCTYPE: {
114
+ readonly URLENCODED: "application/x-www-form-urlencoded";
115
+ readonly MULTIPART: "multipart/form-data";
116
+ readonly TEXT: "text/plain";
117
+ };
118
+ /** Form method types */
119
+ readonly FORM_METHOD: {
120
+ readonly POST: "post";
121
+ readonly GET: "get";
122
+ readonly DIALOG: "dialog";
123
+ };
124
+ /** Form target types */
125
+ readonly FORM_TARGET: {
126
+ readonly BLANK: "_blank";
127
+ readonly SELF: "_self";
128
+ readonly PARENT: "_parent";
129
+ readonly TOP: "_top";
130
+ };
131
+ /** ARIA live values */
132
+ readonly ARIA_LIVE: {
133
+ readonly POLITE: "polite";
134
+ readonly ASSERTIVE: "assertive";
135
+ readonly OFF: "off";
136
+ };
137
+ /** ARIA orientation values */
138
+ readonly ARIA_ORIENTATION: {
139
+ readonly HORIZONTAL: "horizontal";
140
+ readonly VERTICAL: "vertical";
141
+ };
142
+ /** ARIA boolean values */
143
+ readonly ARIA_BOOLEAN: {
144
+ readonly TRUE: "true";
145
+ readonly FALSE: "false";
146
+ };
147
+ /** ARIA tristate values */
148
+ readonly ARIA_TRISTATE: {
149
+ readonly TRUE: "true";
150
+ readonly FALSE: "false";
151
+ readonly MIXED: "mixed";
152
+ };
153
+ };
154
+ /**
155
+ * Type helper to extract values from constants object
156
+ */
157
+ export type ConstValue<T> = T extends {
158
+ [K: string]: infer V;
159
+ } ? V : never;
160
+ /**
161
+ * Common form field configuration types
162
+ */
163
+ export interface FormFieldConfig {
164
+ /** Field identifier */
165
+ id?: string;
166
+ /** Field name for form submission */
167
+ name?: string;
168
+ /** Whether the field is required */
169
+ required?: boolean;
170
+ /** Whether the field is disabled */
171
+ disabled?: boolean;
172
+ /** Whether the field is read-only */
173
+ readonly?: boolean;
174
+ /** Field label */
175
+ label?: string;
176
+ /** Field description/help text */
177
+ description?: string;
178
+ /** Error message */
179
+ error?: string;
180
+ }
181
+ /**
182
+ * Accessible label configuration
183
+ */
184
+ export interface LabelConfig {
185
+ /** Direct label for screen readers */
186
+ label?: string;
187
+ /** ID of element that labels this component */
188
+ labelledby?: string;
189
+ /** ID of element that describes this component */
190
+ describedby?: string;
191
+ }
192
+ /**
193
+ * Validation state configuration
194
+ */
195
+ export interface ValidationConfig {
196
+ /** Whether the value is invalid */
197
+ invalid?: boolean;
198
+ /** Whether the field is required */
199
+ required?: boolean;
200
+ /** ID of element containing error message */
201
+ errormessage?: string;
202
+ }
203
+ /**
204
+ * Interactive state configuration
205
+ */
206
+ export interface InteractiveStateConfig {
207
+ /** Toggle button pressed state */
208
+ pressed?: boolean | 'mixed';
209
+ /** Expanded/collapsed state */
210
+ expanded?: boolean;
211
+ /** Checkbox/switch checked state */
212
+ checked?: boolean | 'mixed';
213
+ /** Listbox/tab/option selected state */
214
+ selected?: AriaBoolean;
215
+ /** Disabled state */
216
+ disabled?: boolean;
217
+ /** Busy/loading state */
218
+ busy?: boolean;
219
+ /** Current item within container (nav/breadcrumb/stepper) */
220
+ current?: AriaCurrent;
221
+ }
222
+ /**
223
+ * Widget-specific configuration
224
+ */
225
+ export interface WidgetConfig {
226
+ /** Element that this controls */
227
+ controls?: string;
228
+ /** Popup behavior */
229
+ haspopup?: AriaHaspopup;
230
+ /** Current value within a range */
231
+ valuenow?: number;
232
+ /** Text representation of value */
233
+ valuetext?: string;
234
+ /** Minimum value */
235
+ valuemin?: number;
236
+ /** Maximum value */
237
+ valuemax?: number;
238
+ /** Live region behavior */
239
+ live?: AriaLive;
240
+ /** Element ID that receives focus */
241
+ activedescendant?: string;
242
+ /** Current position in a list */
243
+ posinset?: number;
244
+ /** Total items in a list */
245
+ setsize?: number;
246
+ /** Heading level */
247
+ level?: number;
248
+ /** Orientation */
249
+ orientation?: AriaOrientation;
250
+ }
251
+ export {};