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,91 @@
1
+ /**
2
+ * Focus management utilities for accessibility
3
+ */
4
+ /**
5
+ * Traps focus within a container (for modals, dialogs, dropdowns)
6
+ * Returns a cleanup function that removes the event listener
7
+ *
8
+ * @example
9
+ * ```svelte
10
+ * <script>
11
+ * import { focus } from 'alus-ui';
12
+ * let modalElement;
13
+ *
14
+ * function openModal() {
15
+ * modalElement.showModal();
16
+ * const cleanup = focus.trap(modalElement);
17
+ * // Store cleanup to call when modal closes
18
+ * }
19
+ * </script>
20
+ *
21
+ * <dialog bind:this={modalElement}>
22
+ * <!-- Content -->
23
+ * </dialog>
24
+ * ```
25
+ */
26
+ export function trap(container) {
27
+ const focusableElements = container.querySelectorAll('a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])');
28
+ const firstElement = focusableElements[0];
29
+ const lastElement = focusableElements[focusableElements.length - 1];
30
+ const handleTabKey = (e) => {
31
+ if (e.key !== 'Tab')
32
+ return;
33
+ if (e.shiftKey) {
34
+ if (document.activeElement === firstElement) {
35
+ e.preventDefault();
36
+ lastElement?.focus();
37
+ }
38
+ }
39
+ else {
40
+ if (document.activeElement === lastElement) {
41
+ e.preventDefault();
42
+ firstElement?.focus();
43
+ }
44
+ }
45
+ };
46
+ container.addEventListener('keydown', handleTabKey);
47
+ return () => container.removeEventListener('keydown', handleTabKey);
48
+ }
49
+ /**
50
+ * Moves focus to first focusable element in container
51
+ *
52
+ * @example
53
+ * ```svelte
54
+ * <script>
55
+ * import { focus } from 'alus-ui';
56
+ * let dialogElement;
57
+ *
58
+ * function open() {
59
+ * dialogElement.showModal();
60
+ * focus.focusFirst(dialogElement);
61
+ * }
62
+ * </script>
63
+ * ```
64
+ */
65
+ export function focusFirst(container) {
66
+ const focusable = container.querySelector('a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])');
67
+ focusable?.focus();
68
+ }
69
+ /**
70
+ * Moves focus to last focusable element in container
71
+ */
72
+ export function focusLast(container) {
73
+ const focusable = container.querySelectorAll('a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])');
74
+ const last = focusable[focusable.length - 1];
75
+ last?.focus();
76
+ }
77
+ /**
78
+ * Checks if an element can receive focus
79
+ */
80
+ export function isFocusable(element) {
81
+ if (element instanceof HTMLButtonElement ||
82
+ element instanceof HTMLInputElement ||
83
+ element instanceof HTMLSelectElement ||
84
+ element instanceof HTMLTextAreaElement) {
85
+ return !element.disabled && element.tabIndex >= 0;
86
+ }
87
+ if (element instanceof HTMLAnchorElement) {
88
+ return element.href !== '';
89
+ }
90
+ return element.tabIndex >= 0;
91
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * ID generation utilities for accessibility associations
3
+ */
4
+ /**
5
+ * Creates a unique ID for accessibility associations
6
+ * Useful for generating IDs for aria-describedby, aria-labelledby, etc.
7
+ *
8
+ * @param prefix - Descriptive prefix for the ID (e.g., 'label', 'desc', 'error')
9
+ * @returns A unique ID string
10
+ *
11
+ * @example
12
+ * ```svelte
13
+ * <script>
14
+ * import { generateId } from 'alus-ui';
15
+ *
16
+ * const labelId = generateId('label');
17
+ * const errorId = generateId('error');
18
+ * </script>
19
+ *
20
+ * <Input id="email" {...labelAttrs({ labelledby: labelId, describedby: errorId })} />
21
+ * <label {for}>Email</label>
22
+ * <p id={errorId} role="alert">{error}</p>
23
+ * ```
24
+ */
25
+ export declare function generateId(prefix: string): string;
26
+ /**
27
+ * Creates a sequential ID (useful for lists, radios, checkboxes)
28
+ *
29
+ * @param prefix - Descriptive prefix for the ID
30
+ * @returns A sequential ID string
31
+ *
32
+ * @example
33
+ * ```svelte
34
+ * {#each items as item, i}
35
+ * <Radio id={generateSequentialId('option', i)} />
36
+ * {/each}
37
+ * ```
38
+ */
39
+ export declare function generateSequentialId(prefix: string, index: number): string;
40
+ /**
41
+ * Creates a counter-based ID (guaranteed unique per session)
42
+ *
43
+ * @param prefix - Descriptive prefix for the ID
44
+ * @returns A unique counter-based ID
45
+ */
46
+ export declare function generateCounterId(prefix: string): string;
47
+ /**
48
+ * ID generation utilities object
49
+ */
50
+ export declare const id: {
51
+ generate: typeof generateId;
52
+ sequential: typeof generateSequentialId;
53
+ counter: typeof generateCounterId;
54
+ };
@@ -0,0 +1,61 @@
1
+ /**
2
+ * ID generation utilities for accessibility associations
3
+ */
4
+ let counter = 0;
5
+ /**
6
+ * Creates a unique ID for accessibility associations
7
+ * Useful for generating IDs for aria-describedby, aria-labelledby, etc.
8
+ *
9
+ * @param prefix - Descriptive prefix for the ID (e.g., 'label', 'desc', 'error')
10
+ * @returns A unique ID string
11
+ *
12
+ * @example
13
+ * ```svelte
14
+ * <script>
15
+ * import { generateId } from 'alus-ui';
16
+ *
17
+ * const labelId = generateId('label');
18
+ * const errorId = generateId('error');
19
+ * </script>
20
+ *
21
+ * <Input id="email" {...labelAttrs({ labelledby: labelId, describedby: errorId })} />
22
+ * <label {for}>Email</label>
23
+ * <p id={errorId} role="alert">{error}</p>
24
+ * ```
25
+ */
26
+ export function generateId(prefix) {
27
+ return `alus-${prefix}-${Math.random().toString(36).substring(2, 9)}`;
28
+ }
29
+ /**
30
+ * Creates a sequential ID (useful for lists, radios, checkboxes)
31
+ *
32
+ * @param prefix - Descriptive prefix for the ID
33
+ * @returns A sequential ID string
34
+ *
35
+ * @example
36
+ * ```svelte
37
+ * {#each items as item, i}
38
+ * <Radio id={generateSequentialId('option', i)} />
39
+ * {/each}
40
+ * ```
41
+ */
42
+ export function generateSequentialId(prefix, index) {
43
+ return `alus-${prefix}-${index}`;
44
+ }
45
+ /**
46
+ * Creates a counter-based ID (guaranteed unique per session)
47
+ *
48
+ * @param prefix - Descriptive prefix for the ID
49
+ * @returns A unique counter-based ID
50
+ */
51
+ export function generateCounterId(prefix) {
52
+ return `alus-${prefix}-${counter++}`;
53
+ }
54
+ /**
55
+ * ID generation utilities object
56
+ */
57
+ export const id = {
58
+ generate: generateId,
59
+ sequential: generateSequentialId,
60
+ counter: generateCounterId
61
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Accessibility utilities for WCAG compliance and ARIA attributes
3
+ * @module a11y
4
+ */
5
+ export * from './aria.js';
6
+ export * from './focus.js';
7
+ export * from './keyboard.js';
8
+ export * from './id.js';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Accessibility utilities for WCAG compliance and ARIA attributes
3
+ * @module a11y
4
+ */
5
+ // Export all ARIA utilities
6
+ export * from './aria.js';
7
+ // Export focus management
8
+ export * from './focus.js';
9
+ // Export keyboard utilities
10
+ export * from './keyboard.js';
11
+ // Export ID generation
12
+ export * from './id.js';
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Keyboard event utilities for accessibility
3
+ */
4
+ /**
5
+ * Checks if Enter or Space was pressed (for button-like behavior)
6
+ *
7
+ * @example
8
+ * ```svelte
9
+ * <script>
10
+ * import { keyboard } from 'alus-ui';
11
+ *
12
+ * function handleKeydown(e: KeyboardEvent) {
13
+ * if (keyboard.isActivationKey(e)) {
14
+ * // Activate button
15
+ * }
16
+ * }
17
+ * </script>
18
+ * ```
19
+ */
20
+ export declare function isActivationKey(event: KeyboardEvent): boolean;
21
+ /**
22
+ * Checks if Escape was pressed
23
+ */
24
+ export declare function isEscape(event: KeyboardEvent): boolean;
25
+ /**
26
+ * Checks if Arrow key was pressed
27
+ */
28
+ export declare function isArrow(event: KeyboardEvent): boolean;
29
+ /**
30
+ * Checks if Home or End was pressed
31
+ */
32
+ export declare function isHomeEnd(event: KeyboardEvent): boolean;
33
+ /**
34
+ * Checks if Page Up or Page Down was pressed
35
+ */
36
+ export declare function isPageUpDown(event: KeyboardEvent): boolean;
37
+ /**
38
+ * Prevents default behavior for activation keys (Space key scrolling)
39
+ *
40
+ * @example
41
+ * ```svelte
42
+ * <div
43
+ * role="button"
44
+ * onkeydown={(e) => {
45
+ * keyboard.preventActivation(e);
46
+ * if (keyboard.isActivationKey(e)) {
47
+ * // Handle activation
48
+ * }
49
+ * }}
50
+ * >
51
+ * Custom Button
52
+ * </div>
53
+ * ```
54
+ */
55
+ export declare function preventActivation(event: KeyboardEvent): void;
56
+ /**
57
+ * Gets the direction from an arrow key event
58
+ */
59
+ export declare function getArrowDirection(event: KeyboardEvent): 'up' | 'down' | 'left' | 'right' | null;
60
+ /**
61
+ * Keyboard event handler utility object
62
+ */
63
+ export declare const keyboard: {
64
+ isActivationKey: typeof isActivationKey;
65
+ isEscape: typeof isEscape;
66
+ isArrow: typeof isArrow;
67
+ isHomeEnd: typeof isHomeEnd;
68
+ isPageUpDown: typeof isPageUpDown;
69
+ preventActivation: typeof preventActivation;
70
+ getArrowDirection: typeof getArrowDirection;
71
+ };
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Keyboard event utilities for accessibility
3
+ */
4
+ /**
5
+ * Checks if Enter or Space was pressed (for button-like behavior)
6
+ *
7
+ * @example
8
+ * ```svelte
9
+ * <script>
10
+ * import { keyboard } from 'alus-ui';
11
+ *
12
+ * function handleKeydown(e: KeyboardEvent) {
13
+ * if (keyboard.isActivationKey(e)) {
14
+ * // Activate button
15
+ * }
16
+ * }
17
+ * </script>
18
+ * ```
19
+ */
20
+ export function isActivationKey(event) {
21
+ return event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar';
22
+ }
23
+ /**
24
+ * Checks if Escape was pressed
25
+ */
26
+ export function isEscape(event) {
27
+ return event.key === 'Escape';
28
+ }
29
+ /**
30
+ * Checks if Arrow key was pressed
31
+ */
32
+ export function isArrow(event) {
33
+ return (event.key === 'ArrowUp' ||
34
+ event.key === 'ArrowDown' ||
35
+ event.key === 'ArrowLeft' ||
36
+ event.key === 'ArrowRight');
37
+ }
38
+ /**
39
+ * Checks if Home or End was pressed
40
+ */
41
+ export function isHomeEnd(event) {
42
+ return event.key === 'Home' || event.key === 'End';
43
+ }
44
+ /**
45
+ * Checks if Page Up or Page Down was pressed
46
+ */
47
+ export function isPageUpDown(event) {
48
+ return event.key === 'PageUp' || event.key === 'PageDown';
49
+ }
50
+ /**
51
+ * Prevents default behavior for activation keys (Space key scrolling)
52
+ *
53
+ * @example
54
+ * ```svelte
55
+ * <div
56
+ * role="button"
57
+ * onkeydown={(e) => {
58
+ * keyboard.preventActivation(e);
59
+ * if (keyboard.isActivationKey(e)) {
60
+ * // Handle activation
61
+ * }
62
+ * }}
63
+ * >
64
+ * Custom Button
65
+ * </div>
66
+ * ```
67
+ */
68
+ export function preventActivation(event) {
69
+ if (event.key === ' ' || event.key === 'Spacebar') {
70
+ event.preventDefault();
71
+ }
72
+ }
73
+ /**
74
+ * Gets the direction from an arrow key event
75
+ */
76
+ export function getArrowDirection(event) {
77
+ switch (event.key) {
78
+ case 'ArrowUp':
79
+ return 'up';
80
+ case 'ArrowDown':
81
+ return 'down';
82
+ case 'ArrowLeft':
83
+ return 'left';
84
+ case 'ArrowRight':
85
+ return 'right';
86
+ default:
87
+ return null;
88
+ }
89
+ }
90
+ /**
91
+ * Keyboard event handler utility object
92
+ */
93
+ export const keyboard = {
94
+ isActivationKey,
95
+ isEscape,
96
+ isArrow,
97
+ isHomeEnd,
98
+ isPageUpDown,
99
+ preventActivation,
100
+ getArrowDirection
101
+ };
@@ -0,0 +1,164 @@
1
+ # Form Utilities
2
+
3
+ Reusable utilities for form field management and accessibility.
4
+
5
+ ## Modules
6
+
7
+ ### `ids.ts` - ID Generation
8
+
9
+ Generate consistent, accessible IDs for form fields.
10
+
11
+ ```typescript
12
+ import { createFieldIds, createFieldGroupIds } from 'alus-ui/utils/form';
13
+
14
+ const ids = createFieldIds('email');
15
+ // { label: 'alus-ui-email-abc123-label', input: 'alus-ui-email-abc123-input', ... }
16
+
17
+ const groupIds = createFieldGroupIds('password');
18
+ // { group: 'alus-ui-password-abc123-group', label: 'alus-ui-password-abc123-label', ... }
19
+ ```
20
+
21
+ ### `aria.ts` - ARIA Attributes
22
+
23
+ Build proper ARIA attributes for form fields.
24
+
25
+ ```typescript
26
+ import { getFieldAriaAttrs, hasError, getErrorMessage } from 'alus-ui/utils/form';
27
+
28
+ const aria = getFieldAriaAttrs({
29
+ descriptionId: 'help-text',
30
+ errorId: 'error-message',
31
+ invalid: true
32
+ });
33
+ // { 'aria-describedby': 'help-text error-message', 'aria-invalid': true }
34
+
35
+ hasError('Some error'); // true
36
+ getErrorMessage('Some error'); // 'Some error'
37
+ ```
38
+
39
+ ### `state.ts` - Form State Management
40
+
41
+ Create reactive form field and form state.
42
+
43
+ ```typescript
44
+ import { createFormField, createFormState, hasFormErrors, isFormValid } from 'alus-ui/utils/form';
45
+
46
+ // Single field
47
+ let email = createFormField('');
48
+ // { value: '', error: undefined, touched: false, dirty: false }
49
+
50
+ // Multiple fields (form)
51
+ let form = createFormState({
52
+ email: '',
53
+ password: '',
54
+ terms: false
55
+ });
56
+ // { values: {...}, errors: {...}, touched: {...}, dirty: {...} }
57
+
58
+ hasFormErrors(form); // true if any errors
59
+ isFormValid(form); // true if valid and all touched
60
+ ```
61
+
62
+ ## Usage Examples
63
+
64
+ ### Form Field with Accessibility
65
+
66
+ ```svelte
67
+ <script lang="ts">
68
+ import { Input } from 'alus-ui';
69
+ import { createFieldIds } from 'alus-ui/utils/form';
70
+
71
+ const ids = createFieldIds('email');
72
+
73
+ let email = $state('');
74
+ let emailError = $state(undefined);
75
+ let emailTouched = $state(false);
76
+ </script>
77
+
78
+ <label for={ids.label}>Email Address</label>
79
+ <Input
80
+ id={ids.input}
81
+ bind:value={email}
82
+ aria-describedby={ids.description}
83
+ aria-invalid={emailError !== undefined}
84
+ onblur={() => (emailTouched = true)}
85
+ />
86
+ <p id={ids.description}>We'll never share your email</p>
87
+
88
+ {#if emailError && emailTouched}
89
+ <p id={ids.error} class="error" role="alert">
90
+ {emailError}
91
+ </p>
92
+ {/if}
93
+ ```
94
+
95
+ ### Form State Manager
96
+
97
+ ```svelte
98
+ <script lang="ts">
99
+ import { Input, Checkbox } from 'alus-ui';
100
+ import { createFormState, isFormValid, hasFormErrors } from 'alus-ui/utils/form';
101
+
102
+ let form = createFormState({
103
+ email: '',
104
+ password: '',
105
+ terms: false
106
+ });
107
+
108
+ function handleSubmit() {
109
+ if (isFormValid(form)) {
110
+ // Submit form
111
+ }
112
+ }
113
+ </script>
114
+
115
+ <Input bind:value={form.values.email} />
116
+ <Input bind:value={form.values.password} />
117
+ <Checkbox bind:checked={form.values.terms as boolean} />
118
+
119
+ <button disabled={!isFormValid(form)}>Submit</button>
120
+ ```
121
+
122
+ ## API Reference
123
+
124
+ ### Functions
125
+
126
+ #### `createFieldIds(fieldName: string): FieldIds`
127
+
128
+ Generate IDs for a single form field.
129
+
130
+ #### `createFieldGroupIds(groupName: string): FieldIds & { group: string }`
131
+
132
+ Generate IDs for a field group (with group ID).
133
+
134
+ #### `getFieldAriaAttrs(props: FieldProps): Record<string, string | boolean>`
135
+
136
+ Generate ARIA attributes for a form field.
137
+
138
+ #### `hasError(error?: string | boolean): boolean`
139
+
140
+ Check if a field has an error.
141
+
142
+ #### `getErrorMessage(error?: string | boolean): string | undefined`
143
+
144
+ Extract error message from error value.
145
+
146
+ #### `createFormField<T>(initialValue: T): FormFieldState<T>`
147
+
148
+ Create state for a single form field.
149
+
150
+ #### `createFormState<T>(initialValues: T): FormState<T>`
151
+
152
+ Create state for an entire form.
153
+
154
+ #### `hasFormErrors(form: FormState): boolean`
155
+
156
+ Check if form has any errors.
157
+
158
+ #### `isFormValid(form: FormState): boolean`
159
+
160
+ Check if form is valid (no errors, all touched).
161
+
162
+ #### `resetForm(form: FormState, initialValues: T): void`
163
+
164
+ Reset form to initial state.
@@ -0,0 +1,63 @@
1
+ /**
2
+ * ARIA attribute utilities for form fields
3
+ * @module form/aria
4
+ */
5
+ /**
6
+ * Props for a form field with label and error states
7
+ */
8
+ export interface FieldProps {
9
+ id?: string;
10
+ label?: string;
11
+ description?: string;
12
+ descriptionId?: string;
13
+ error?: string;
14
+ errorId?: string;
15
+ required?: boolean;
16
+ invalid?: boolean;
17
+ }
18
+ /**
19
+ * Generate ARIA attributes for a form field based on its state
20
+ * @param props - Field properties
21
+ * @returns ARIA attributes object
22
+ *
23
+ * @example
24
+ * ```svelte
25
+ * <script>
26
+ * import { getFieldAriaAttrs } from 'alus-ui/utils/form';
27
+ *
28
+ * const aria = getFieldAriaAttrs({
29
+ * descriptionId: 'help-id',
30
+ * errorId: 'error-id',
31
+ * invalid: true
32
+ * });
33
+ * </script>
34
+ *
35
+ * <Input {...aria} />
36
+ * ```
37
+ */
38
+ export declare function getFieldAriaAttrs(props: FieldProps): Record<string, string>;
39
+ /**
40
+ * Check if a field has an error state
41
+ * @param error - Error message or boolean
42
+ * @returns Whether the field is invalid
43
+ */
44
+ export declare function hasError(error?: string | boolean): boolean;
45
+ /**
46
+ * Get the error message to display
47
+ * @param error - Error message or boolean
48
+ * @returns Error string or undefined
49
+ */
50
+ export declare function getErrorMessage(error?: string | boolean): string | undefined;
51
+ /**
52
+ * Common ARIA roles for form feedback
53
+ */
54
+ export declare const fieldRoles: {
55
+ /** Role for an alert message */
56
+ readonly alert: "alert";
57
+ /** Role for status information */
58
+ readonly status: "status";
59
+ };
60
+ /**
61
+ * Type for ARIA field roles
62
+ */
63
+ export type FieldRole = (typeof fieldRoles)[keyof typeof fieldRoles];
@@ -0,0 +1,75 @@
1
+ /**
2
+ * ARIA attribute utilities for form fields
3
+ * @module form/aria
4
+ */
5
+ import { buildAriaAttrs } from '../a11y/aria.js';
6
+ /**
7
+ * Build aria-describedby value from description and error IDs
8
+ * @param descriptionId - Description element ID
9
+ * @param errorId - Error element ID
10
+ * @returns Space-separated IDs for aria-describedby
11
+ */
12
+ function buildDescribedBy(descriptionId, errorId) {
13
+ const ids = [];
14
+ if (descriptionId)
15
+ ids.push(descriptionId);
16
+ if (errorId)
17
+ ids.push(errorId);
18
+ return ids.length > 0 ? ids.join(' ') : undefined;
19
+ }
20
+ /**
21
+ * Generate ARIA attributes for a form field based on its state
22
+ * @param props - Field properties
23
+ * @returns ARIA attributes object
24
+ *
25
+ * @example
26
+ * ```svelte
27
+ * <script>
28
+ * import { getFieldAriaAttrs } from 'alus-ui/utils/form';
29
+ *
30
+ * const aria = getFieldAriaAttrs({
31
+ * descriptionId: 'help-id',
32
+ * errorId: 'error-id',
33
+ * invalid: true
34
+ * });
35
+ * </script>
36
+ *
37
+ * <Input {...aria} />
38
+ * ```
39
+ */
40
+ export function getFieldAriaAttrs(props) {
41
+ return buildAriaAttrs({
42
+ 'aria-label': props.label,
43
+ 'aria-describedby': buildDescribedBy(props.descriptionId || props.description, props.errorId || props.error),
44
+ 'aria-invalid': props.invalid || hasError(props.error),
45
+ 'aria-required': props.required
46
+ });
47
+ }
48
+ /**
49
+ * Check if a field has an error state
50
+ * @param error - Error message or boolean
51
+ * @returns Whether the field is invalid
52
+ */
53
+ export function hasError(error) {
54
+ return error === true || (typeof error === 'string' && error.length > 0);
55
+ }
56
+ /**
57
+ * Get the error message to display
58
+ * @param error - Error message or boolean
59
+ * @returns Error string or undefined
60
+ */
61
+ export function getErrorMessage(error) {
62
+ if (typeof error === 'string') {
63
+ return error || undefined;
64
+ }
65
+ return undefined;
66
+ }
67
+ /**
68
+ * Common ARIA roles for form feedback
69
+ */
70
+ export const fieldRoles = {
71
+ /** Role for an alert message */
72
+ alert: 'alert',
73
+ /** Role for status information */
74
+ status: 'status'
75
+ };