dystopia-linear-lib 1.0.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 (496) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -0
  3. package/dist/components/accordion/Accordion.svelte +39 -0
  4. package/dist/components/accordion/Accordion.svelte.d.ts +4 -0
  5. package/dist/components/accordion/Accordion.types.d.ts +14 -0
  6. package/dist/components/accordion/Accordion.types.js +1 -0
  7. package/dist/components/accordion/AccordionItem.svelte +70 -0
  8. package/dist/components/accordion/AccordionItem.svelte.d.ts +4 -0
  9. package/dist/components/accordion/AccordionItem.types.d.ts +13 -0
  10. package/dist/components/accordion/AccordionItem.types.js +1 -0
  11. package/dist/components/accordion/accordion-context.d.ts +8 -0
  12. package/dist/components/accordion/accordion-context.js +12 -0
  13. package/dist/components/accordion/index.d.ts +4 -0
  14. package/dist/components/accordion/index.js +2 -0
  15. package/dist/components/alert/Alert.svelte +45 -0
  16. package/dist/components/alert/Alert.svelte.d.ts +4 -0
  17. package/dist/components/alert/Alert.types.d.ts +15 -0
  18. package/dist/components/alert/Alert.types.js +1 -0
  19. package/dist/components/alert/Alert.variants.d.ts +5 -0
  20. package/dist/components/alert/Alert.variants.js +14 -0
  21. package/dist/components/alert/index.d.ts +3 -0
  22. package/dist/components/alert/index.js +2 -0
  23. package/dist/components/avatar/Avatar.svelte +38 -0
  24. package/dist/components/avatar/Avatar.svelte.d.ts +4 -0
  25. package/dist/components/avatar/Avatar.types.d.ts +13 -0
  26. package/dist/components/avatar/Avatar.types.js +1 -0
  27. package/dist/components/avatar/index.d.ts +2 -0
  28. package/dist/components/avatar/index.js +1 -0
  29. package/dist/components/badge/Badge.svelte +11 -0
  30. package/dist/components/badge/Badge.svelte.d.ts +4 -0
  31. package/dist/components/badge/Badge.types.d.ts +7 -0
  32. package/dist/components/badge/Badge.types.js +1 -0
  33. package/dist/components/badge/Badge.variants.d.ts +5 -0
  34. package/dist/components/badge/Badge.variants.js +14 -0
  35. package/dist/components/badge/index.d.ts +3 -0
  36. package/dist/components/badge/index.js +2 -0
  37. package/dist/components/breadcrumb/Breadcrumb.svelte +9 -0
  38. package/dist/components/breadcrumb/Breadcrumb.svelte.d.ts +4 -0
  39. package/dist/components/breadcrumb/Breadcrumb.types.d.ts +6 -0
  40. package/dist/components/breadcrumb/Breadcrumb.types.js +1 -0
  41. package/dist/components/breadcrumb/BreadcrumbEllipsis.svelte +37 -0
  42. package/dist/components/breadcrumb/BreadcrumbEllipsis.svelte.d.ts +4 -0
  43. package/dist/components/breadcrumb/BreadcrumbEllipsis.types.d.ts +16 -0
  44. package/dist/components/breadcrumb/BreadcrumbEllipsis.types.js +1 -0
  45. package/dist/components/breadcrumb/BreadcrumbItem.svelte +10 -0
  46. package/dist/components/breadcrumb/BreadcrumbItem.svelte.d.ts +4 -0
  47. package/dist/components/breadcrumb/BreadcrumbItem.types.d.ts +6 -0
  48. package/dist/components/breadcrumb/BreadcrumbItem.types.js +1 -0
  49. package/dist/components/breadcrumb/BreadcrumbLink.svelte +22 -0
  50. package/dist/components/breadcrumb/BreadcrumbLink.svelte.d.ts +4 -0
  51. package/dist/components/breadcrumb/BreadcrumbLink.types.d.ts +10 -0
  52. package/dist/components/breadcrumb/BreadcrumbLink.types.js +1 -0
  53. package/dist/components/breadcrumb/BreadcrumbList.svelte +13 -0
  54. package/dist/components/breadcrumb/BreadcrumbList.svelte.d.ts +4 -0
  55. package/dist/components/breadcrumb/BreadcrumbList.types.d.ts +6 -0
  56. package/dist/components/breadcrumb/BreadcrumbList.types.js +1 -0
  57. package/dist/components/breadcrumb/BreadcrumbPage.svelte +15 -0
  58. package/dist/components/breadcrumb/BreadcrumbPage.svelte.d.ts +4 -0
  59. package/dist/components/breadcrumb/BreadcrumbPage.types.d.ts +6 -0
  60. package/dist/components/breadcrumb/BreadcrumbPage.types.js +1 -0
  61. package/dist/components/breadcrumb/BreadcrumbSeparator.svelte +28 -0
  62. package/dist/components/breadcrumb/BreadcrumbSeparator.svelte.d.ts +4 -0
  63. package/dist/components/breadcrumb/BreadcrumbSeparator.types.d.ts +7 -0
  64. package/dist/components/breadcrumb/BreadcrumbSeparator.types.js +1 -0
  65. package/dist/components/breadcrumb/index.d.ts +14 -0
  66. package/dist/components/breadcrumb/index.js +7 -0
  67. package/dist/components/button/Button.svelte +47 -0
  68. package/dist/components/button/Button.svelte.d.ts +4 -0
  69. package/dist/components/button/Button.types.d.ts +14 -0
  70. package/dist/components/button/Button.types.js +1 -0
  71. package/dist/components/button/Button.variants.d.ts +6 -0
  72. package/dist/components/button/Button.variants.js +19 -0
  73. package/dist/components/button/index.d.ts +3 -0
  74. package/dist/components/button/index.js +2 -0
  75. package/dist/components/button-group/ButtonGroup.svelte +11 -0
  76. package/dist/components/button-group/ButtonGroup.svelte.d.ts +4 -0
  77. package/dist/components/button-group/ButtonGroup.types.d.ts +7 -0
  78. package/dist/components/button-group/ButtonGroup.types.js +1 -0
  79. package/dist/components/button-group/ButtonGroup.variants.d.ts +5 -0
  80. package/dist/components/button-group/ButtonGroup.variants.js +12 -0
  81. package/dist/components/button-group/index.d.ts +3 -0
  82. package/dist/components/button-group/index.js +2 -0
  83. package/dist/components/calendar/Calendar.svelte +276 -0
  84. package/dist/components/calendar/Calendar.svelte.d.ts +4 -0
  85. package/dist/components/calendar/Calendar.types.d.ts +52 -0
  86. package/dist/components/calendar/Calendar.types.js +1 -0
  87. package/dist/components/calendar/CalendarDay.svelte +30 -0
  88. package/dist/components/calendar/CalendarDay.svelte.d.ts +4 -0
  89. package/dist/components/calendar/CalendarDay.types.d.ts +16 -0
  90. package/dist/components/calendar/CalendarDay.types.js +1 -0
  91. package/dist/components/calendar/CalendarDay.variants.d.ts +8 -0
  92. package/dist/components/calendar/CalendarDay.variants.js +31 -0
  93. package/dist/components/calendar/index.d.ts +5 -0
  94. package/dist/components/calendar/index.js +3 -0
  95. package/dist/components/card/Card.svelte +10 -0
  96. package/dist/components/card/Card.svelte.d.ts +4 -0
  97. package/dist/components/card/Card.types.d.ts +6 -0
  98. package/dist/components/card/Card.types.js +1 -0
  99. package/dist/components/card/CardContent.svelte +10 -0
  100. package/dist/components/card/CardContent.svelte.d.ts +4 -0
  101. package/dist/components/card/CardContent.types.d.ts +6 -0
  102. package/dist/components/card/CardContent.types.js +1 -0
  103. package/dist/components/card/CardDescription.svelte +10 -0
  104. package/dist/components/card/CardDescription.svelte.d.ts +4 -0
  105. package/dist/components/card/CardDescription.types.d.ts +6 -0
  106. package/dist/components/card/CardDescription.types.js +1 -0
  107. package/dist/components/card/CardFooter.svelte +10 -0
  108. package/dist/components/card/CardFooter.svelte.d.ts +4 -0
  109. package/dist/components/card/CardFooter.types.d.ts +6 -0
  110. package/dist/components/card/CardFooter.types.js +1 -0
  111. package/dist/components/card/CardHeader.svelte +10 -0
  112. package/dist/components/card/CardHeader.svelte.d.ts +4 -0
  113. package/dist/components/card/CardHeader.types.d.ts +6 -0
  114. package/dist/components/card/CardHeader.types.js +1 -0
  115. package/dist/components/card/CardTitle.svelte +10 -0
  116. package/dist/components/card/CardTitle.svelte.d.ts +4 -0
  117. package/dist/components/card/CardTitle.types.d.ts +6 -0
  118. package/dist/components/card/CardTitle.types.js +1 -0
  119. package/dist/components/card/index.d.ts +12 -0
  120. package/dist/components/card/index.js +6 -0
  121. package/dist/components/checkbox/Checkbox.svelte +74 -0
  122. package/dist/components/checkbox/Checkbox.svelte.d.ts +4 -0
  123. package/dist/components/checkbox/Checkbox.types.d.ts +15 -0
  124. package/dist/components/checkbox/Checkbox.types.js +1 -0
  125. package/dist/components/checkbox/Checkbox.variants.d.ts +5 -0
  126. package/dist/components/checkbox/Checkbox.variants.js +13 -0
  127. package/dist/components/checkbox/index.d.ts +3 -0
  128. package/dist/components/checkbox/index.js +2 -0
  129. package/dist/components/collapsible/Collapsible.svelte +64 -0
  130. package/dist/components/collapsible/Collapsible.svelte.d.ts +4 -0
  131. package/dist/components/collapsible/Collapsible.types.d.ts +13 -0
  132. package/dist/components/collapsible/Collapsible.types.js +1 -0
  133. package/dist/components/collapsible/index.d.ts +2 -0
  134. package/dist/components/collapsible/index.js +1 -0
  135. package/dist/components/combobox/Combobox.svelte +528 -0
  136. package/dist/components/combobox/Combobox.svelte.d.ts +25 -0
  137. package/dist/components/combobox/Combobox.types.d.ts +83 -0
  138. package/dist/components/combobox/Combobox.types.js +1 -0
  139. package/dist/components/combobox/Combobox.variants.d.ts +11 -0
  140. package/dist/components/combobox/Combobox.variants.js +35 -0
  141. package/dist/components/combobox/combobox-state.svelte.d.ts +69 -0
  142. package/dist/components/combobox/combobox-state.svelte.js +223 -0
  143. package/dist/components/combobox/index.d.ts +3 -0
  144. package/dist/components/combobox/index.js +2 -0
  145. package/dist/components/data-table/DataTable.svelte +113 -0
  146. package/dist/components/data-table/DataTable.svelte.d.ts +26 -0
  147. package/dist/components/data-table/DataTable.types.d.ts +32 -0
  148. package/dist/components/data-table/DataTable.types.js +1 -0
  149. package/dist/components/data-table/DataTableColumnHeader.svelte +63 -0
  150. package/dist/components/data-table/DataTableColumnHeader.svelte.d.ts +4 -0
  151. package/dist/components/data-table/DataTableColumnHeader.types.d.ts +17 -0
  152. package/dist/components/data-table/DataTableColumnHeader.types.js +1 -0
  153. package/dist/components/data-table/DataTablePagination.svelte +50 -0
  154. package/dist/components/data-table/DataTablePagination.svelte.d.ts +26 -0
  155. package/dist/components/data-table/DataTablePagination.types.d.ts +32 -0
  156. package/dist/components/data-table/DataTablePagination.types.js +1 -0
  157. package/dist/components/data-table/index.d.ts +6 -0
  158. package/dist/components/data-table/index.js +3 -0
  159. package/dist/components/date-picker/DatePicker.svelte +216 -0
  160. package/dist/components/date-picker/DatePicker.svelte.d.ts +4 -0
  161. package/dist/components/date-picker/DatePicker.types.d.ts +40 -0
  162. package/dist/components/date-picker/DatePicker.types.js +1 -0
  163. package/dist/components/date-picker/index.d.ts +2 -0
  164. package/dist/components/date-picker/index.js +1 -0
  165. package/dist/components/dialog/Dialog.svelte +179 -0
  166. package/dist/components/dialog/Dialog.svelte.d.ts +4 -0
  167. package/dist/components/dialog/Dialog.types.d.ts +21 -0
  168. package/dist/components/dialog/Dialog.types.js +1 -0
  169. package/dist/components/dialog/index.d.ts +2 -0
  170. package/dist/components/dialog/index.js +1 -0
  171. package/dist/components/drawer/Drawer.svelte +157 -0
  172. package/dist/components/drawer/Drawer.svelte.d.ts +4 -0
  173. package/dist/components/drawer/Drawer.types.d.ts +22 -0
  174. package/dist/components/drawer/Drawer.types.js +1 -0
  175. package/dist/components/drawer/Drawer.variants.d.ts +5 -0
  176. package/dist/components/drawer/Drawer.variants.js +14 -0
  177. package/dist/components/drawer/index.d.ts +3 -0
  178. package/dist/components/drawer/index.js +2 -0
  179. package/dist/components/dropdown/Dropdown.svelte +152 -0
  180. package/dist/components/dropdown/Dropdown.svelte.d.ts +4 -0
  181. package/dist/components/dropdown/Dropdown.types.d.ts +15 -0
  182. package/dist/components/dropdown/Dropdown.types.js +1 -0
  183. package/dist/components/dropdown/DropdownItem.svelte +31 -0
  184. package/dist/components/dropdown/DropdownItem.svelte.d.ts +4 -0
  185. package/dist/components/dropdown/DropdownItem.types.d.ts +8 -0
  186. package/dist/components/dropdown/DropdownItem.types.js +1 -0
  187. package/dist/components/dropdown/index.d.ts +4 -0
  188. package/dist/components/dropdown/index.js +2 -0
  189. package/dist/components/empty-state/EmptyState.svelte +37 -0
  190. package/dist/components/empty-state/EmptyState.svelte.d.ts +4 -0
  191. package/dist/components/empty-state/EmptyState.types.d.ts +16 -0
  192. package/dist/components/empty-state/EmptyState.types.js +1 -0
  193. package/dist/components/empty-state/index.d.ts +2 -0
  194. package/dist/components/empty-state/index.js +1 -0
  195. package/dist/components/helper-text/HelperText.svelte +15 -0
  196. package/dist/components/helper-text/HelperText.svelte.d.ts +4 -0
  197. package/dist/components/helper-text/HelperText.types.d.ts +8 -0
  198. package/dist/components/helper-text/HelperText.types.js +1 -0
  199. package/dist/components/helper-text/index.d.ts +2 -0
  200. package/dist/components/helper-text/index.js +1 -0
  201. package/dist/components/hover-card/HoverCard.svelte +138 -0
  202. package/dist/components/hover-card/HoverCard.svelte.d.ts +4 -0
  203. package/dist/components/hover-card/HoverCard.types.d.ts +20 -0
  204. package/dist/components/hover-card/HoverCard.types.js +1 -0
  205. package/dist/components/hover-card/index.d.ts +2 -0
  206. package/dist/components/hover-card/index.js +1 -0
  207. package/dist/components/label/Label.svelte +26 -0
  208. package/dist/components/label/Label.svelte.d.ts +4 -0
  209. package/dist/components/label/Label.types.d.ts +9 -0
  210. package/dist/components/label/Label.types.js +1 -0
  211. package/dist/components/label/index.d.ts +2 -0
  212. package/dist/components/label/index.js +1 -0
  213. package/dist/components/pagination/Pagination.svelte +85 -0
  214. package/dist/components/pagination/Pagination.svelte.d.ts +4 -0
  215. package/dist/components/pagination/Pagination.types.d.ts +41 -0
  216. package/dist/components/pagination/Pagination.types.js +1 -0
  217. package/dist/components/pagination/PaginationEllipsis.svelte +15 -0
  218. package/dist/components/pagination/PaginationEllipsis.svelte.d.ts +4 -0
  219. package/dist/components/pagination/PaginationEllipsis.types.d.ts +9 -0
  220. package/dist/components/pagination/PaginationEllipsis.types.js +1 -0
  221. package/dist/components/pagination/PaginationEllipsis.variants.d.ts +5 -0
  222. package/dist/components/pagination/PaginationEllipsis.variants.js +13 -0
  223. package/dist/components/pagination/PaginationItem.svelte +10 -0
  224. package/dist/components/pagination/PaginationItem.svelte.d.ts +4 -0
  225. package/dist/components/pagination/PaginationItem.types.d.ts +6 -0
  226. package/dist/components/pagination/PaginationItem.types.js +1 -0
  227. package/dist/components/pagination/PaginationLink.svelte +30 -0
  228. package/dist/components/pagination/PaginationLink.svelte.d.ts +4 -0
  229. package/dist/components/pagination/PaginationLink.types.d.ts +15 -0
  230. package/dist/components/pagination/PaginationLink.types.js +1 -0
  231. package/dist/components/pagination/PaginationLink.variants.d.ts +6 -0
  232. package/dist/components/pagination/PaginationLink.variants.js +18 -0
  233. package/dist/components/pagination/PaginationList.svelte +10 -0
  234. package/dist/components/pagination/PaginationList.svelte.d.ts +4 -0
  235. package/dist/components/pagination/PaginationList.types.d.ts +6 -0
  236. package/dist/components/pagination/PaginationList.types.js +1 -0
  237. package/dist/components/pagination/PaginationNext.svelte +25 -0
  238. package/dist/components/pagination/PaginationNext.svelte.d.ts +4 -0
  239. package/dist/components/pagination/PaginationNext.types.d.ts +9 -0
  240. package/dist/components/pagination/PaginationNext.types.js +1 -0
  241. package/dist/components/pagination/PaginationNext.variants.d.ts +5 -0
  242. package/dist/components/pagination/PaginationNext.variants.js +13 -0
  243. package/dist/components/pagination/PaginationPrevious.svelte +25 -0
  244. package/dist/components/pagination/PaginationPrevious.svelte.d.ts +4 -0
  245. package/dist/components/pagination/PaginationPrevious.types.d.ts +9 -0
  246. package/dist/components/pagination/PaginationPrevious.types.js +1 -0
  247. package/dist/components/pagination/PaginationPrevious.variants.d.ts +5 -0
  248. package/dist/components/pagination/PaginationPrevious.variants.js +13 -0
  249. package/dist/components/pagination/index.d.ts +18 -0
  250. package/dist/components/pagination/index.js +11 -0
  251. package/dist/components/password-field/PasswordField.svelte +69 -0
  252. package/dist/components/password-field/PasswordField.svelte.d.ts +4 -0
  253. package/dist/components/password-field/PasswordField.types.d.ts +10 -0
  254. package/dist/components/password-field/PasswordField.types.js +1 -0
  255. package/dist/components/password-field/index.d.ts +2 -0
  256. package/dist/components/password-field/index.js +1 -0
  257. package/dist/components/popover/Popover.svelte +84 -0
  258. package/dist/components/popover/Popover.svelte.d.ts +4 -0
  259. package/dist/components/popover/Popover.types.d.ts +15 -0
  260. package/dist/components/popover/Popover.types.js +1 -0
  261. package/dist/components/popover/index.d.ts +2 -0
  262. package/dist/components/popover/index.js +1 -0
  263. package/dist/components/progress/Progress.svelte +35 -0
  264. package/dist/components/progress/Progress.svelte.d.ts +4 -0
  265. package/dist/components/progress/Progress.types.d.ts +12 -0
  266. package/dist/components/progress/Progress.types.js +1 -0
  267. package/dist/components/progress/Progress.variants.d.ts +5 -0
  268. package/dist/components/progress/Progress.variants.js +13 -0
  269. package/dist/components/progress/index.d.ts +3 -0
  270. package/dist/components/progress/index.js +2 -0
  271. package/dist/components/radio/Radio.svelte +46 -0
  272. package/dist/components/radio/Radio.svelte.d.ts +4 -0
  273. package/dist/components/radio/Radio.types.d.ts +16 -0
  274. package/dist/components/radio/Radio.types.js +1 -0
  275. package/dist/components/radio/Radio.variants.d.ts +5 -0
  276. package/dist/components/radio/Radio.variants.js +13 -0
  277. package/dist/components/radio/index.d.ts +3 -0
  278. package/dist/components/radio/index.js +2 -0
  279. package/dist/components/select/Select.svelte +55 -0
  280. package/dist/components/select/Select.svelte.d.ts +4 -0
  281. package/dist/components/select/Select.types.d.ts +16 -0
  282. package/dist/components/select/Select.types.js +1 -0
  283. package/dist/components/select/Select.variants.d.ts +6 -0
  284. package/dist/components/select/Select.variants.js +18 -0
  285. package/dist/components/select/index.d.ts +3 -0
  286. package/dist/components/select/index.js +2 -0
  287. package/dist/components/separator/Separator.svelte +19 -0
  288. package/dist/components/separator/Separator.svelte.d.ts +4 -0
  289. package/dist/components/separator/Separator.types.d.ts +7 -0
  290. package/dist/components/separator/Separator.types.js +1 -0
  291. package/dist/components/separator/Separator.variants.d.ts +5 -0
  292. package/dist/components/separator/Separator.variants.js +12 -0
  293. package/dist/components/separator/index.d.ts +3 -0
  294. package/dist/components/separator/index.js +2 -0
  295. package/dist/components/sidebar/Sidebar.svelte +28 -0
  296. package/dist/components/sidebar/Sidebar.svelte.d.ts +4 -0
  297. package/dist/components/sidebar/Sidebar.types.d.ts +7 -0
  298. package/dist/components/sidebar/Sidebar.types.js +1 -0
  299. package/dist/components/sidebar/Sidebar.variants.d.ts +5 -0
  300. package/dist/components/sidebar/Sidebar.variants.js +12 -0
  301. package/dist/components/sidebar/SidebarCollapsibleItem.svelte +77 -0
  302. package/dist/components/sidebar/SidebarCollapsibleItem.svelte.d.ts +4 -0
  303. package/dist/components/sidebar/SidebarCollapsibleItem.types.d.ts +9 -0
  304. package/dist/components/sidebar/SidebarCollapsibleItem.types.js +1 -0
  305. package/dist/components/sidebar/SidebarContent.svelte +14 -0
  306. package/dist/components/sidebar/SidebarContent.svelte.d.ts +4 -0
  307. package/dist/components/sidebar/SidebarContent.types.d.ts +6 -0
  308. package/dist/components/sidebar/SidebarContent.types.js +1 -0
  309. package/dist/components/sidebar/SidebarFooter.svelte +14 -0
  310. package/dist/components/sidebar/SidebarFooter.svelte.d.ts +4 -0
  311. package/dist/components/sidebar/SidebarFooter.types.d.ts +6 -0
  312. package/dist/components/sidebar/SidebarFooter.types.js +1 -0
  313. package/dist/components/sidebar/SidebarGroup.svelte +10 -0
  314. package/dist/components/sidebar/SidebarGroup.svelte.d.ts +4 -0
  315. package/dist/components/sidebar/SidebarGroup.types.d.ts +6 -0
  316. package/dist/components/sidebar/SidebarGroup.types.js +1 -0
  317. package/dist/components/sidebar/SidebarGroupLabel.svelte +21 -0
  318. package/dist/components/sidebar/SidebarGroupLabel.svelte.d.ts +4 -0
  319. package/dist/components/sidebar/SidebarGroupLabel.types.d.ts +6 -0
  320. package/dist/components/sidebar/SidebarGroupLabel.types.js +1 -0
  321. package/dist/components/sidebar/SidebarHeader.svelte +14 -0
  322. package/dist/components/sidebar/SidebarHeader.svelte.d.ts +4 -0
  323. package/dist/components/sidebar/SidebarHeader.types.d.ts +6 -0
  324. package/dist/components/sidebar/SidebarHeader.types.js +1 -0
  325. package/dist/components/sidebar/SidebarItem.svelte +51 -0
  326. package/dist/components/sidebar/SidebarItem.svelte.d.ts +4 -0
  327. package/dist/components/sidebar/SidebarItem.types.d.ts +11 -0
  328. package/dist/components/sidebar/SidebarItem.types.js +1 -0
  329. package/dist/components/sidebar/SidebarItem.variants.d.ts +6 -0
  330. package/dist/components/sidebar/SidebarItem.variants.js +17 -0
  331. package/dist/components/sidebar/SidebarTrigger.svelte +39 -0
  332. package/dist/components/sidebar/SidebarTrigger.svelte.d.ts +4 -0
  333. package/dist/components/sidebar/SidebarTrigger.types.d.ts +8 -0
  334. package/dist/components/sidebar/SidebarTrigger.types.js +1 -0
  335. package/dist/components/sidebar/index.d.ts +20 -0
  336. package/dist/components/sidebar/index.js +11 -0
  337. package/dist/components/sidebar/sidebar-context.d.ts +8 -0
  338. package/dist/components/sidebar/sidebar-context.js +12 -0
  339. package/dist/components/skeleton/Skeleton.svelte +12 -0
  340. package/dist/components/skeleton/Skeleton.svelte.d.ts +4 -0
  341. package/dist/components/skeleton/Skeleton.types.d.ts +4 -0
  342. package/dist/components/skeleton/Skeleton.types.js +1 -0
  343. package/dist/components/skeleton/index.d.ts +2 -0
  344. package/dist/components/skeleton/index.js +1 -0
  345. package/dist/components/slider/Slider.svelte +30 -0
  346. package/dist/components/slider/Slider.svelte.d.ts +4 -0
  347. package/dist/components/slider/Slider.types.d.ts +9 -0
  348. package/dist/components/slider/Slider.types.js +1 -0
  349. package/dist/components/slider/Slider.variants.d.ts +5 -0
  350. package/dist/components/slider/Slider.variants.js +26 -0
  351. package/dist/components/slider/index.d.ts +3 -0
  352. package/dist/components/slider/index.js +2 -0
  353. package/dist/components/spinner/Spinner.svelte +24 -0
  354. package/dist/components/spinner/Spinner.svelte.d.ts +4 -0
  355. package/dist/components/spinner/Spinner.types.d.ts +10 -0
  356. package/dist/components/spinner/Spinner.types.js +1 -0
  357. package/dist/components/spinner/Spinner.variants.d.ts +5 -0
  358. package/dist/components/spinner/Spinner.variants.js +13 -0
  359. package/dist/components/spinner/index.d.ts +3 -0
  360. package/dist/components/spinner/index.js +2 -0
  361. package/dist/components/switch/Switch.svelte +37 -0
  362. package/dist/components/switch/Switch.svelte.d.ts +4 -0
  363. package/dist/components/switch/Switch.types.d.ts +13 -0
  364. package/dist/components/switch/Switch.types.js +1 -0
  365. package/dist/components/switch/Switch.variants.d.ts +8 -0
  366. package/dist/components/switch/Switch.variants.js +25 -0
  367. package/dist/components/switch/index.d.ts +3 -0
  368. package/dist/components/switch/index.js +2 -0
  369. package/dist/components/table/Table.svelte +14 -0
  370. package/dist/components/table/Table.svelte.d.ts +4 -0
  371. package/dist/components/table/Table.types.d.ts +10 -0
  372. package/dist/components/table/Table.types.js +1 -0
  373. package/dist/components/table/TableBody.svelte +10 -0
  374. package/dist/components/table/TableBody.svelte.d.ts +4 -0
  375. package/dist/components/table/TableBody.types.d.ts +6 -0
  376. package/dist/components/table/TableBody.types.js +1 -0
  377. package/dist/components/table/TableCaption.svelte +10 -0
  378. package/dist/components/table/TableCaption.svelte.d.ts +4 -0
  379. package/dist/components/table/TableCaption.types.d.ts +6 -0
  380. package/dist/components/table/TableCaption.types.js +1 -0
  381. package/dist/components/table/TableCell.svelte +13 -0
  382. package/dist/components/table/TableCell.svelte.d.ts +4 -0
  383. package/dist/components/table/TableCell.types.d.ts +6 -0
  384. package/dist/components/table/TableCell.types.js +1 -0
  385. package/dist/components/table/TableFooter.svelte +13 -0
  386. package/dist/components/table/TableFooter.svelte.d.ts +4 -0
  387. package/dist/components/table/TableFooter.types.d.ts +6 -0
  388. package/dist/components/table/TableFooter.types.js +1 -0
  389. package/dist/components/table/TableHead.svelte +17 -0
  390. package/dist/components/table/TableHead.svelte.d.ts +4 -0
  391. package/dist/components/table/TableHead.types.d.ts +6 -0
  392. package/dist/components/table/TableHead.types.js +1 -0
  393. package/dist/components/table/TableHeader.svelte +10 -0
  394. package/dist/components/table/TableHeader.svelte.d.ts +4 -0
  395. package/dist/components/table/TableHeader.types.d.ts +6 -0
  396. package/dist/components/table/TableHeader.types.js +1 -0
  397. package/dist/components/table/TableRow.svelte +17 -0
  398. package/dist/components/table/TableRow.svelte.d.ts +4 -0
  399. package/dist/components/table/TableRow.types.d.ts +11 -0
  400. package/dist/components/table/TableRow.types.js +1 -0
  401. package/dist/components/table/index.d.ts +16 -0
  402. package/dist/components/table/index.js +8 -0
  403. package/dist/components/tabs/Tabs.svelte +19 -0
  404. package/dist/components/tabs/Tabs.svelte.d.ts +4 -0
  405. package/dist/components/tabs/Tabs.types.d.ts +7 -0
  406. package/dist/components/tabs/Tabs.types.js +1 -0
  407. package/dist/components/tabs/TabsContent.svelte +24 -0
  408. package/dist/components/tabs/TabsContent.svelte.d.ts +4 -0
  409. package/dist/components/tabs/TabsContent.types.d.ts +7 -0
  410. package/dist/components/tabs/TabsContent.types.js +1 -0
  411. package/dist/components/tabs/TabsList.svelte +61 -0
  412. package/dist/components/tabs/TabsList.svelte.d.ts +4 -0
  413. package/dist/components/tabs/TabsList.types.d.ts +6 -0
  414. package/dist/components/tabs/TabsList.types.js +1 -0
  415. package/dist/components/tabs/TabsTrigger.svelte +37 -0
  416. package/dist/components/tabs/TabsTrigger.svelte.d.ts +4 -0
  417. package/dist/components/tabs/TabsTrigger.types.d.ts +8 -0
  418. package/dist/components/tabs/TabsTrigger.types.js +1 -0
  419. package/dist/components/tabs/index.d.ts +8 -0
  420. package/dist/components/tabs/index.js +4 -0
  421. package/dist/components/tabs/tabs-context.d.ts +8 -0
  422. package/dist/components/tabs/tabs-context.js +12 -0
  423. package/dist/components/text-field/TextField.svelte +53 -0
  424. package/dist/components/text-field/TextField.svelte.d.ts +4 -0
  425. package/dist/components/text-field/TextField.types.d.ts +17 -0
  426. package/dist/components/text-field/TextField.types.js +1 -0
  427. package/dist/components/text-field/TextField.variants.d.ts +6 -0
  428. package/dist/components/text-field/TextField.variants.js +18 -0
  429. package/dist/components/text-field/index.d.ts +3 -0
  430. package/dist/components/text-field/index.js +2 -0
  431. package/dist/components/textarea/Textarea.svelte +53 -0
  432. package/dist/components/textarea/Textarea.svelte.d.ts +4 -0
  433. package/dist/components/textarea/Textarea.types.d.ts +15 -0
  434. package/dist/components/textarea/Textarea.types.js +1 -0
  435. package/dist/components/textarea/Textarea.variants.d.ts +6 -0
  436. package/dist/components/textarea/Textarea.variants.js +18 -0
  437. package/dist/components/textarea/index.d.ts +3 -0
  438. package/dist/components/textarea/index.js +2 -0
  439. package/dist/components/toast/ToastItem.svelte +109 -0
  440. package/dist/components/toast/ToastItem.svelte.d.ts +17 -0
  441. package/dist/components/toast/Toaster.svelte +51 -0
  442. package/dist/components/toast/Toaster.svelte.d.ts +4 -0
  443. package/dist/components/toast/Toaster.types.d.ts +20 -0
  444. package/dist/components/toast/Toaster.types.js +1 -0
  445. package/dist/components/toast/Toaster.variants.d.ts +5 -0
  446. package/dist/components/toast/Toaster.variants.js +14 -0
  447. package/dist/components/toast/index.d.ts +4 -0
  448. package/dist/components/toast/index.js +3 -0
  449. package/dist/components/toast/toast-store.svelte.d.ts +28 -0
  450. package/dist/components/toast/toast-store.svelte.js +34 -0
  451. package/dist/components/toggle/Toggle.svelte +29 -0
  452. package/dist/components/toggle/Toggle.svelte.d.ts +4 -0
  453. package/dist/components/toggle/Toggle.types.d.ts +9 -0
  454. package/dist/components/toggle/Toggle.types.js +1 -0
  455. package/dist/components/toggle/Toggle.variants.d.ts +6 -0
  456. package/dist/components/toggle/Toggle.variants.js +18 -0
  457. package/dist/components/toggle/index.d.ts +3 -0
  458. package/dist/components/toggle/index.js +2 -0
  459. package/dist/components/tooltip/Tooltip.svelte +113 -0
  460. package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
  461. package/dist/components/tooltip/Tooltip.types.d.ts +19 -0
  462. package/dist/components/tooltip/Tooltip.types.js +1 -0
  463. package/dist/components/tooltip/index.d.ts +2 -0
  464. package/dist/components/tooltip/index.js +1 -0
  465. package/dist/components/typography/Typography.svelte +33 -0
  466. package/dist/components/typography/Typography.svelte.d.ts +4 -0
  467. package/dist/components/typography/Typography.types.d.ts +10 -0
  468. package/dist/components/typography/Typography.types.js +1 -0
  469. package/dist/components/typography/Typography.variants.d.ts +5 -0
  470. package/dist/components/typography/Typography.variants.js +17 -0
  471. package/dist/components/typography/index.d.ts +3 -0
  472. package/dist/components/typography/index.js +2 -0
  473. package/dist/index.css +399 -0
  474. package/dist/utils/calendar-grid.d.ts +20 -0
  475. package/dist/utils/calendar-grid.js +26 -0
  476. package/dist/utils/cn.d.ts +2 -0
  477. package/dist/utils/cn.js +5 -0
  478. package/dist/utils/dismissable-layer.d.ts +12 -0
  479. package/dist/utils/dismissable-layer.js +44 -0
  480. package/dist/utils/floating.d.ts +18 -0
  481. package/dist/utils/floating.js +61 -0
  482. package/dist/utils/focus-trap.d.ts +12 -0
  483. package/dist/utils/focus-trap.js +55 -0
  484. package/dist/utils/id.d.ts +11 -0
  485. package/dist/utils/id.js +17 -0
  486. package/dist/utils/pagination-range.d.ts +18 -0
  487. package/dist/utils/pagination-range.js +34 -0
  488. package/dist/utils/portal.d.ts +5 -0
  489. package/dist/utils/portal.js +23 -0
  490. package/dist/utils/presence.svelte.d.ts +9 -0
  491. package/dist/utils/presence.svelte.js +38 -0
  492. package/dist/utils/roving-focus.d.ts +20 -0
  493. package/dist/utils/roving-focus.js +44 -0
  494. package/dist/utils/scroll-lock.d.ts +7 -0
  495. package/dist/utils/scroll-lock.js +33 -0
  496. package/package.json +108 -0
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+ import { idFor } from '../../utils/id.js';
4
+ import { getTabsContext } from './tabs-context.js';
5
+ import type { TabsContentProps } from './TabsContent.types.js';
6
+
7
+ let { value, class: className, children, ...restProps }: TabsContentProps = $props();
8
+
9
+ const context = getTabsContext();
10
+ const selected = $derived(context.getValue() === value);
11
+ </script>
12
+
13
+ {#if selected}
14
+ <div
15
+ id={idFor(context.baseId, 'panel', value)}
16
+ role="tabpanel"
17
+ aria-labelledby={idFor(context.baseId, 'tab', value)}
18
+ tabindex="0"
19
+ class={cn('text-sm text-foreground-muted focus-visible:outline-none', className)}
20
+ {...restProps}
21
+ >
22
+ {@render children()}
23
+ </div>
24
+ {/if}
@@ -0,0 +1,4 @@
1
+ import type { TabsContentProps } from './TabsContent.types.js';
2
+ declare const TabsContent: import("svelte").Component<TabsContentProps, {}, "">;
3
+ type TabsContent = ReturnType<typeof TabsContent>;
4
+ export default TabsContent;
@@ -0,0 +1,7 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ export interface TabsContentProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
4
+ class?: string;
5
+ value: string;
6
+ children: Snippet;
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,61 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+ import { createRovingFocus } from '../../utils/roving-focus.js';
4
+ import { getTabsContext } from './tabs-context.js';
5
+ import type { TabsListProps } from './TabsList.types.js';
6
+
7
+ let { class: className, children, ...restProps }: TabsListProps = $props();
8
+
9
+ const context = getTabsContext();
10
+
11
+ let listEl = $state<HTMLDivElement | null>(null);
12
+
13
+ // Tabs use "automatic activation": moving focus with arrow keys also
14
+ // selects the tab, unlike a menu's roving focus where focus and selection
15
+ // are separate steps.
16
+ const roving = createRovingFocus({
17
+ getContainer: () => listEl,
18
+ selector: '[role="tab"]:not(:disabled)'
19
+ });
20
+
21
+ function activateFocused() {
22
+ const value = (document.activeElement as HTMLElement | null)?.dataset.value;
23
+ if (value) context.setValue(value);
24
+ }
25
+
26
+ function handleKeydown(event: KeyboardEvent) {
27
+ switch (event.key) {
28
+ case 'ArrowRight':
29
+ event.preventDefault();
30
+ roving.focusAdjacent(1);
31
+ activateFocused();
32
+ break;
33
+ case 'ArrowLeft':
34
+ event.preventDefault();
35
+ roving.focusAdjacent(-1);
36
+ activateFocused();
37
+ break;
38
+ case 'Home':
39
+ event.preventDefault();
40
+ roving.focusFirst();
41
+ activateFocused();
42
+ break;
43
+ case 'End':
44
+ event.preventDefault();
45
+ roving.focusLast();
46
+ activateFocused();
47
+ break;
48
+ }
49
+ }
50
+ </script>
51
+
52
+ <div
53
+ bind:this={listEl}
54
+ role="tablist"
55
+ aria-orientation="horizontal"
56
+ onkeydown={handleKeydown}
57
+ class={cn('inline-flex items-center gap-1 rounded-md bg-surface-subtle p-1', className)}
58
+ {...restProps}
59
+ >
60
+ {@render children()}
61
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { TabsListProps } from './TabsList.types.js';
2
+ declare const TabsList: import("svelte").Component<TabsListProps, {}, "">;
3
+ type TabsList = ReturnType<typeof TabsList>;
4
+ export default TabsList;
@@ -0,0 +1,6 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ export interface TabsListProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
4
+ class?: string;
5
+ children: Snippet;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,37 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+ import { idFor } from '../../utils/id.js';
4
+ import { getTabsContext } from './tabs-context.js';
5
+ import type { TabsTriggerProps } from './TabsTrigger.types.js';
6
+
7
+ let {
8
+ value,
9
+ class: className,
10
+ disabled = false,
11
+ children,
12
+ ...restProps
13
+ }: TabsTriggerProps = $props();
14
+
15
+ const context = getTabsContext();
16
+ const selected = $derived(context.getValue() === value);
17
+ </script>
18
+
19
+ <button
20
+ type="button"
21
+ role="tab"
22
+ id={idFor(context.baseId, 'tab', value)}
23
+ aria-selected={selected}
24
+ aria-controls={idFor(context.baseId, 'panel', value)}
25
+ data-state={selected ? 'active' : 'inactive'}
26
+ data-value={value}
27
+ tabindex={selected ? 0 : -1}
28
+ {disabled}
29
+ onclick={() => context.setValue(value)}
30
+ class={cn(
31
+ 'cursor-pointer rounded-md px-compact py-control-y text-sm leading-snug font-medium text-foreground-subtle transition-colors duration-150 hover:bg-surface-hover hover:text-foreground-soft focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[state=active]:bg-surface data-[state=active]:text-foreground',
32
+ className
33
+ )}
34
+ {...restProps}
35
+ >
36
+ {@render children()}
37
+ </button>
@@ -0,0 +1,4 @@
1
+ import type { TabsTriggerProps } from './TabsTrigger.types.js';
2
+ declare const TabsTrigger: import("svelte").Component<TabsTriggerProps, {}, "">;
3
+ type TabsTrigger = ReturnType<typeof TabsTrigger>;
4
+ export default TabsTrigger;
@@ -0,0 +1,8 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLButtonAttributes } from 'svelte/elements';
3
+ export interface TabsTriggerProps extends Omit<HTMLButtonAttributes, 'children' | 'class'> {
4
+ class?: string;
5
+ value: string;
6
+ disabled?: boolean;
7
+ children: Snippet;
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ export { default as Tabs } from './Tabs.svelte';
2
+ export type { TabsProps } from './Tabs.types.js';
3
+ export { default as TabsList } from './TabsList.svelte';
4
+ export type { TabsListProps } from './TabsList.types.js';
5
+ export { default as TabsTrigger } from './TabsTrigger.svelte';
6
+ export type { TabsTriggerProps } from './TabsTrigger.types.js';
7
+ export { default as TabsContent } from './TabsContent.svelte';
8
+ export type { TabsContentProps } from './TabsContent.types.js';
@@ -0,0 +1,4 @@
1
+ export { default as Tabs } from './Tabs.svelte';
2
+ export { default as TabsList } from './TabsList.svelte';
3
+ export { default as TabsTrigger } from './TabsTrigger.svelte';
4
+ export { default as TabsContent } from './TabsContent.svelte';
@@ -0,0 +1,8 @@
1
+ interface TabsContext {
2
+ baseId: string;
3
+ getValue: () => string;
4
+ setValue: (value: string) => void;
5
+ }
6
+ export declare function setTabsContext(context: TabsContext): void;
7
+ export declare function getTabsContext(): TabsContext;
8
+ export {};
@@ -0,0 +1,12 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ const TABS_CONTEXT_KEY = Symbol('tabs');
3
+ export function setTabsContext(context) {
4
+ setContext(TABS_CONTEXT_KEY, context);
5
+ }
6
+ export function getTabsContext() {
7
+ const context = getContext(TABS_CONTEXT_KEY);
8
+ if (!context) {
9
+ throw new Error('Tabs.List/Tabs.Trigger/Tabs.Content must be rendered inside <Tabs>.');
10
+ }
11
+ return context;
12
+ }
@@ -0,0 +1,53 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+ import { textFieldVariants } from './TextField.variants.js';
4
+ import type { TextFieldProps } from './TextField.types.js';
5
+
6
+ let {
7
+ variant,
8
+ size,
9
+ class: className,
10
+ classes,
11
+ ref = $bindable(null),
12
+ value = $bindable(''),
13
+ disabled = false,
14
+ invalid = false,
15
+ prefix,
16
+ suffix,
17
+ ...restProps
18
+ }: TextFieldProps = $props();
19
+ </script>
20
+
21
+ <div
22
+ class={cn(textFieldVariants({ variant, size }), className)}
23
+ data-disabled={disabled ? '' : undefined}
24
+ data-invalid={invalid ? '' : undefined}
25
+ >
26
+ {#if prefix}
27
+ <span
28
+ class={cn('flex shrink-0 items-center text-foreground-faint [&_svg]:size-4', classes?.prefix)}
29
+ >
30
+ {@render prefix()}
31
+ </span>
32
+ {/if}
33
+
34
+ <input
35
+ bind:this={ref}
36
+ bind:value
37
+ {disabled}
38
+ aria-invalid={invalid || undefined}
39
+ class={cn(
40
+ 'h-full min-w-0 flex-1 bg-transparent text-inherit outline-none placeholder:text-foreground-faint disabled:cursor-not-allowed',
41
+ classes?.input
42
+ )}
43
+ {...restProps}
44
+ />
45
+
46
+ {#if suffix}
47
+ <span
48
+ class={cn('flex shrink-0 items-center text-foreground-faint [&_svg]:size-4', classes?.suffix)}
49
+ >
50
+ {@render suffix()}
51
+ </span>
52
+ {/if}
53
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { TextFieldProps } from './TextField.types.js';
2
+ declare const TextField: import("svelte").Component<TextFieldProps, {}, "value" | "ref">;
3
+ type TextField = ReturnType<typeof TextField>;
4
+ export default TextField;
@@ -0,0 +1,17 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLInputAttributes } from 'svelte/elements';
3
+ import type { TextFieldVariantProps } from './TextField.variants.js';
4
+ export interface TextFieldProps extends Omit<HTMLInputAttributes, 'size' | 'prefix'>, TextFieldVariantProps {
5
+ /** Applied to the container element; `classes` targets the inner parts. */
6
+ class?: string;
7
+ classes?: {
8
+ input?: string;
9
+ prefix?: string;
10
+ suffix?: string;
11
+ };
12
+ ref?: HTMLInputElement | null;
13
+ value?: string;
14
+ invalid?: boolean;
15
+ prefix?: Snippet;
16
+ suffix?: Snippet;
17
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ export declare const textFieldVariants: (props?: ({
3
+ variant?: "default" | "ghost" | null | undefined;
4
+ size?: "sm" | "md" | "lg" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export type TextFieldVariantProps = VariantProps<typeof textFieldVariants>;
@@ -0,0 +1,18 @@
1
+ import { cva } from 'class-variance-authority';
2
+ export const textFieldVariants = cva('flex w-full items-center gap-tight rounded-md text-foreground-soft transition-colors duration-150 focus-within:ring-2 focus-within:ring-ring data-[invalid]:border-danger-border data-[invalid]:focus-within:ring-danger data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50', {
3
+ variants: {
4
+ variant: {
5
+ default: 'border border-border bg-surface hover:border-border-hover',
6
+ ghost: 'border border-transparent bg-surface-subtle hover:bg-surface-hover'
7
+ },
8
+ size: {
9
+ sm: 'h-8 px-3 text-sm',
10
+ md: 'h-10 px-3 text-sm',
11
+ lg: 'h-12 px-control-x text-base'
12
+ }
13
+ },
14
+ defaultVariants: {
15
+ variant: 'default',
16
+ size: 'md'
17
+ }
18
+ });
@@ -0,0 +1,3 @@
1
+ export { default as TextField } from './TextField.svelte';
2
+ export type { TextFieldProps } from './TextField.types.js';
3
+ export { textFieldVariants, type TextFieldVariantProps } from './TextField.variants.js';
@@ -0,0 +1,2 @@
1
+ export { default as TextField } from './TextField.svelte';
2
+ export { textFieldVariants } from './TextField.variants.js';
@@ -0,0 +1,53 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+ import { textareaVariants } from './Textarea.variants.js';
4
+ import type { TextareaProps } from './Textarea.types.js';
5
+
6
+ let {
7
+ variant,
8
+ size,
9
+ class: className,
10
+ classes,
11
+ ref = $bindable(null),
12
+ value = $bindable(''),
13
+ disabled = false,
14
+ invalid = false,
15
+ maxlength,
16
+ autoResize = false,
17
+ ...restProps
18
+ }: TextareaProps = $props();
19
+
20
+ const length = $derived(value.length);
21
+ const atLimit = $derived(typeof maxlength === 'number' && length >= maxlength);
22
+ </script>
23
+
24
+ <div class={cn('flex flex-col gap-1', className)}>
25
+ <textarea
26
+ bind:this={ref}
27
+ bind:value
28
+ {disabled}
29
+ {maxlength}
30
+ aria-invalid={invalid || undefined}
31
+ data-invalid={invalid ? '' : undefined}
32
+ class={cn(
33
+ textareaVariants({ variant, size }),
34
+ // field-sizing: content grows the box with input, no scrollbar; drag-resize
35
+ // would fight that, so it's off. Chromium-only today — unsupported browsers
36
+ // silently keep the fixed min-height + scroll behavior instead.
37
+ autoResize && 'field-sizing-content resize-none',
38
+ classes?.textarea
39
+ )}
40
+ {...restProps}></textarea>
41
+
42
+ {#if typeof maxlength === 'number'}
43
+ <span
44
+ class={cn(
45
+ 'self-end text-xs tabular-nums',
46
+ atLimit ? 'text-danger' : 'text-foreground-subtle',
47
+ classes?.counter
48
+ )}
49
+ >
50
+ {length}/{maxlength}
51
+ </span>
52
+ {/if}
53
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { TextareaProps } from './Textarea.types.js';
2
+ declare const Textarea: import("svelte").Component<TextareaProps, {}, "value" | "ref">;
3
+ type Textarea = ReturnType<typeof Textarea>;
4
+ export default Textarea;
@@ -0,0 +1,15 @@
1
+ import type { HTMLTextareaAttributes } from 'svelte/elements';
2
+ import type { TextareaVariantProps } from './Textarea.variants.js';
3
+ export interface TextareaProps extends Omit<HTMLTextareaAttributes, 'size'>, TextareaVariantProps {
4
+ /** Applied to the outermost wrapper, including the character counter. */
5
+ class?: string;
6
+ classes?: {
7
+ textarea?: string;
8
+ counter?: string;
9
+ };
10
+ ref?: HTMLTextAreaElement | null;
11
+ value?: string;
12
+ invalid?: boolean;
13
+ /** Grows the box to fit its content instead of scrolling; disables manual drag-resize. */
14
+ autoResize?: boolean;
15
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ export declare const textareaVariants: (props?: ({
3
+ variant?: "default" | "ghost" | null | undefined;
4
+ size?: "sm" | "md" | "lg" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export type TextareaVariantProps = VariantProps<typeof textareaVariants>;
@@ -0,0 +1,18 @@
1
+ import { cva } from 'class-variance-authority';
2
+ export const textareaVariants = cva('w-full resize-y rounded-md text-foreground-soft outline-none transition-colors duration-150 placeholder:text-foreground-faint focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:resize-none disabled:opacity-50 data-[invalid]:border-danger-border data-[invalid]:focus-visible:ring-danger', {
3
+ variants: {
4
+ variant: {
5
+ default: 'border border-border bg-surface hover:border-border-hover',
6
+ ghost: 'border border-transparent bg-surface-subtle hover:bg-surface-hover'
7
+ },
8
+ size: {
9
+ sm: 'min-h-16 p-2 text-sm',
10
+ md: 'min-h-24 p-3 text-sm',
11
+ lg: 'min-h-32 p-4 text-base'
12
+ }
13
+ },
14
+ defaultVariants: {
15
+ variant: 'default',
16
+ size: 'md'
17
+ }
18
+ });
@@ -0,0 +1,3 @@
1
+ export { default as Textarea } from './Textarea.svelte';
2
+ export type { TextareaProps } from './Textarea.types.js';
3
+ export { textareaVariants, type TextareaVariantProps } from './Textarea.variants.js';
@@ -0,0 +1,2 @@
1
+ export { default as Textarea } from './Textarea.svelte';
2
+ export { textareaVariants } from './Textarea.variants.js';
@@ -0,0 +1,109 @@
1
+ <script lang="ts">
2
+ import { onDestroy, untrack } from 'svelte';
3
+ import { cn } from '../../utils/cn.js';
4
+ import { createPresence } from '../../utils/presence.svelte.js';
5
+ import { toastVariants } from './Toaster.variants.js';
6
+ import type { ToastRecord } from './toast-store.svelte.js';
7
+
8
+ let {
9
+ toast: item,
10
+ onDismiss,
11
+ classes,
12
+ labels
13
+ }: {
14
+ toast: ToastRecord;
15
+ onDismiss: (id: string) => void;
16
+ classes?: { item?: string; title?: string; description?: string; close?: string };
17
+ labels?: { close?: string };
18
+ } = $props();
19
+
20
+ let closing = $state(false);
21
+ let rootEl = $state<HTMLDivElement | null>(null);
22
+ const presence = createPresence(
23
+ () => !closing,
24
+ () => rootEl
25
+ );
26
+
27
+ function close() {
28
+ closing = true;
29
+ }
30
+
31
+ // Tracks the timer as elapsed/remaining rather than a single deadline so a
32
+ // pointer-hover pause can suspend it and resume with the time actually left,
33
+ // instead of restarting the full duration or firing early.
34
+ let remainingMs = untrack(() => item.duration);
35
+ let startedAt = 0;
36
+ let timeoutId: ReturnType<typeof setTimeout> | undefined;
37
+
38
+ function schedule() {
39
+ if (!Number.isFinite(remainingMs) || remainingMs <= 0) return;
40
+ startedAt = Date.now();
41
+ timeoutId = setTimeout(close, remainingMs);
42
+ }
43
+
44
+ function pause() {
45
+ if (timeoutId === undefined) return;
46
+ clearTimeout(timeoutId);
47
+ timeoutId = undefined;
48
+ remainingMs -= Date.now() - startedAt;
49
+ }
50
+
51
+ // Scheduling the initial timer here, rather than in a mount `$effect`,
52
+ // matches HoverCard's timer handling: it runs synchronously as part of
53
+ // component init instead of being deferred to the next effect flush, so
54
+ // there's no window where the component could be torn down before the
55
+ // timer is ever set.
56
+ schedule();
57
+ onDestroy(() => {
58
+ if (timeoutId !== undefined) clearTimeout(timeoutId);
59
+ });
60
+
61
+ $effect(() => {
62
+ if (!presence.current) onDismiss(item.id);
63
+ });
64
+ </script>
65
+
66
+ {#if presence.current}
67
+ <div
68
+ bind:this={rootEl}
69
+ role={item.variant === 'danger' ? 'alert' : 'status'}
70
+ aria-atomic="true"
71
+ data-slot="toast"
72
+ data-state={closing ? 'closed' : 'open'}
73
+ onpointerenter={pause}
74
+ onpointerleave={schedule}
75
+ class={cn(toastVariants({ variant: item.variant }), classes?.item)}
76
+ >
77
+ <div class="min-w-0 flex-1 space-y-1">
78
+ <p class={cn('leading-snug font-medium text-foreground', classes?.title)}>{item.title}</p>
79
+ {#if item.description}
80
+ <p class={cn('leading-snug text-foreground-subtle', classes?.description)}>
81
+ {item.description}
82
+ </p>
83
+ {/if}
84
+ </div>
85
+ <button
86
+ type="button"
87
+ onclick={close}
88
+ aria-label={labels?.close ?? 'Close'}
89
+ class={cn(
90
+ 'inline-flex size-6 shrink-0 cursor-pointer items-center justify-center rounded-md text-foreground-faint transition-colors duration-150 hover:bg-surface-subtle hover:text-foreground-soft focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none',
91
+ classes?.close
92
+ )}
93
+ >
94
+ <svg
95
+ viewBox="0 0 24 24"
96
+ fill="none"
97
+ stroke="currentColor"
98
+ stroke-width="2"
99
+ stroke-linecap="round"
100
+ stroke-linejoin="round"
101
+ aria-hidden="true"
102
+ class="size-4"
103
+ >
104
+ <path d="M18 6 6 18" />
105
+ <path d="m6 6 12 12" />
106
+ </svg>
107
+ </button>
108
+ </div>
109
+ {/if}
@@ -0,0 +1,17 @@
1
+ import type { ToastRecord } from './toast-store.svelte.js';
2
+ type $$ComponentProps = {
3
+ toast: ToastRecord;
4
+ onDismiss: (id: string) => void;
5
+ classes?: {
6
+ item?: string;
7
+ title?: string;
8
+ description?: string;
9
+ close?: string;
10
+ };
11
+ labels?: {
12
+ close?: string;
13
+ };
14
+ };
15
+ declare const ToastItem: import("svelte").Component<$$ComponentProps, {}, "">;
16
+ type ToastItem = ReturnType<typeof ToastItem>;
17
+ export default ToastItem;
@@ -0,0 +1,51 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+ import { portal } from '../../utils/portal.js';
4
+ import { toastStore } from './toast-store.svelte.js';
5
+ import ToastItem from './ToastItem.svelte';
6
+ import type { ToasterProps, ToastPosition } from './Toaster.types.js';
7
+
8
+ let {
9
+ position = 'bottom-right',
10
+ max = 3,
11
+ portalTarget,
12
+ class: className,
13
+ classes,
14
+ labels
15
+ }: ToasterProps = $props();
16
+
17
+ const positionClasses: Record<ToastPosition, string> = {
18
+ 'top-left': 'top-0 left-0 items-start',
19
+ 'top-center': 'top-0 left-1/2 -translate-x-1/2 items-center',
20
+ 'top-right': 'top-0 right-0 items-end',
21
+ 'bottom-left': 'bottom-0 left-0 items-start',
22
+ 'bottom-center': 'bottom-0 left-1/2 -translate-x-1/2 items-center',
23
+ 'bottom-right': 'bottom-0 right-0 items-end'
24
+ };
25
+
26
+ // DOM order controls stacking direction: the last child sits nearest the
27
+ // viewport's anchored edge. Newest-last (array order) already reads
28
+ // correctly for the bottom corners; the top corners need it reversed so
29
+ // the newest toast still lands next to the edge it's anchored to.
30
+ const visible = $derived(
31
+ position.startsWith('top')
32
+ ? toastStore.toasts.slice(-max).reverse()
33
+ : toastStore.toasts.slice(-max)
34
+ );
35
+ </script>
36
+
37
+ <div
38
+ use:portal={{ target: portalTarget }}
39
+ role="region"
40
+ aria-label={labels?.region ?? 'Notifications'}
41
+ class={cn(
42
+ 'pointer-events-none fixed z-50 flex w-full max-w-sm flex-col gap-cozy p-4',
43
+ positionClasses[position],
44
+ className,
45
+ classes?.viewport
46
+ )}
47
+ >
48
+ {#each visible as item (item.id)}
49
+ <ToastItem toast={item} onDismiss={toastStore.dismiss} {classes} {labels} />
50
+ {/each}
51
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { ToasterProps } from './Toaster.types.js';
2
+ declare const Toaster: import("svelte").Component<ToasterProps, {}, "">;
3
+ type Toaster = ReturnType<typeof Toaster>;
4
+ export default Toaster;