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,69 @@
1
+ import { SvelteMap } from 'svelte/reactivity';
2
+ import type { ComboboxFilter, ComboboxOption, ComboboxRenderGroup, ComboboxValue } from './Combobox.types.js';
3
+ export declare function defaultFilter<T extends ComboboxValue>(option: ComboboxOption<T>, query: string): boolean;
4
+ export type HighlightPart = {
5
+ text: string;
6
+ match: boolean;
7
+ };
8
+ /** Splits a label around the first case-insensitive occurrence of the query. */
9
+ export declare function splitMatch(label: string, query: string): HighlightPart[];
10
+ /**
11
+ * Everything the state machine needs from the host component. Passed as an
12
+ * object of getters so props stay the single source of truth (no prop/state
13
+ * mirroring, no sync loops).
14
+ */
15
+ export type ComboboxStateDeps<T extends ComboboxValue> = {
16
+ readonly options: ComboboxOption<T>[];
17
+ readonly value: T | T[] | undefined;
18
+ readonly multiple: boolean;
19
+ readonly manualFilter: boolean;
20
+ readonly searchDebounce: number;
21
+ readonly filter: ComboboxFilter<T> | undefined;
22
+ setValue: (next: T | T[] | undefined) => void;
23
+ setSearch: (query: string) => void;
24
+ };
25
+ export declare class ComboboxState<T extends ComboboxValue> {
26
+ #private;
27
+ open: boolean;
28
+ /** Raw text in the search box. Updates on every keystroke. */
29
+ inputValue: string;
30
+ activeIndex: number;
31
+ /**
32
+ * Labels of options that were selected at some point. In remote-search mode
33
+ * `options` is replaced on every query, so a selected option can vanish from
34
+ * the list while still being the current value — this cache keeps the trigger
35
+ * able to render its label.
36
+ */
37
+ readonly selectedOptions: SvelteMap<T, ComboboxOption<T>>;
38
+ constructor(deps: ComboboxStateDeps<T>);
39
+ get multiple(): boolean;
40
+ get values(): T[];
41
+ /**
42
+ * Local filtering runs off the raw input so results feel instant. The debounce
43
+ * only delays what we hand to the parent. With `manualFilter` the parent has
44
+ * already filtered server-side, so we pass its list through untouched.
45
+ */
46
+ readonly filtered: ComboboxOption<T>[];
47
+ readonly groups: ComboboxRenderGroup<T>[];
48
+ readonly selectedItems: ComboboxOption<T>[];
49
+ isSelected(value: T): boolean;
50
+ /** Keeps labels of currently selected options available after `options` changes. */
51
+ cacheSelected(): void;
52
+ setInputValue(next: string): void;
53
+ openMenu(): void;
54
+ closeMenu(): void;
55
+ toggleMenu(): void;
56
+ resetActive(): void;
57
+ clampActive(): void;
58
+ /** Moves the highlight by `delta`, skipping disabled options and wrapping around. */
59
+ move(delta: number): void;
60
+ moveTo(edge: 'first' | 'last'): void;
61
+ setActive(index: number): void;
62
+ select(option: ComboboxOption<T>): void;
63
+ selectActive(): void;
64
+ deselect(value: T): void;
65
+ clear(): void;
66
+ /** Backspace on an empty query removes the last chip. */
67
+ popLast(): void;
68
+ destroy(): void;
69
+ }
@@ -0,0 +1,223 @@
1
+ import { SvelteMap } from 'svelte/reactivity';
2
+ function normalize(value) {
3
+ return value
4
+ .normalize('NFD')
5
+ .replace(/\p{Diacritic}/gu, '')
6
+ .toLowerCase()
7
+ .trim();
8
+ }
9
+ export function defaultFilter(option, query) {
10
+ const needle = normalize(query);
11
+ if (!needle)
12
+ return true;
13
+ if (normalize(option.label).includes(needle))
14
+ return true;
15
+ return (option.keywords ?? []).some((keyword) => normalize(keyword).includes(needle));
16
+ }
17
+ /** Splits a label around the first case-insensitive occurrence of the query. */
18
+ export function splitMatch(label, query) {
19
+ const needle = query.trim().toLowerCase();
20
+ if (!needle)
21
+ return [{ text: label, match: false }];
22
+ const start = label.toLowerCase().indexOf(needle);
23
+ if (start === -1)
24
+ return [{ text: label, match: false }];
25
+ const parts = [];
26
+ if (start > 0)
27
+ parts.push({ text: label.slice(0, start), match: false });
28
+ parts.push({ text: label.slice(start, start + needle.length), match: true });
29
+ if (start + needle.length < label.length) {
30
+ parts.push({ text: label.slice(start + needle.length), match: false });
31
+ }
32
+ return parts;
33
+ }
34
+ export class ComboboxState {
35
+ open = $state(false);
36
+ /** Raw text in the search box. Updates on every keystroke. */
37
+ inputValue = $state('');
38
+ activeIndex = $state(0);
39
+ /**
40
+ * Labels of options that were selected at some point. In remote-search mode
41
+ * `options` is replaced on every query, so a selected option can vanish from
42
+ * the list while still being the current value — this cache keeps the trigger
43
+ * able to render its label.
44
+ */
45
+ selectedOptions = new SvelteMap();
46
+ #deps;
47
+ #timer;
48
+ constructor(deps) {
49
+ this.#deps = deps;
50
+ }
51
+ get multiple() {
52
+ return this.#deps.multiple;
53
+ }
54
+ get values() {
55
+ const current = this.#deps.value;
56
+ if (current === undefined || current === null)
57
+ return [];
58
+ return Array.isArray(current) ? current : [current];
59
+ }
60
+ /**
61
+ * Local filtering runs off the raw input so results feel instant. The debounce
62
+ * only delays what we hand to the parent. With `manualFilter` the parent has
63
+ * already filtered server-side, so we pass its list through untouched.
64
+ */
65
+ filtered = $derived.by(() => {
66
+ const options = this.#deps.options;
67
+ if (this.#deps.manualFilter)
68
+ return options;
69
+ if (!this.inputValue.trim())
70
+ return options;
71
+ const filter = this.#deps.filter ?? defaultFilter;
72
+ return options.filter((option) => filter(option, this.inputValue));
73
+ });
74
+ groups = $derived.by(() => {
75
+ const groups = [];
76
+ // Plain lookup object, not a Map: this index is transient scratch space
77
+ // rebuilt on every recompute, so it must not be reactive.
78
+ const byKey = Object.create(null);
79
+ this.filtered.forEach((option, index) => {
80
+ const key = option.group ?? '';
81
+ let group = byKey[key];
82
+ if (!group) {
83
+ group = { label: option.group, items: [] };
84
+ byKey[key] = group;
85
+ groups.push(group);
86
+ }
87
+ group.items.push({ option, index });
88
+ });
89
+ return groups;
90
+ });
91
+ selectedItems = $derived.by(() => this.values.map((value) => this.selectedOptions.get(value) ??
92
+ this.#deps.options.find((option) => option.value === value) ?? {
93
+ value,
94
+ label: String(value)
95
+ }));
96
+ isSelected(value) {
97
+ return this.values.includes(value);
98
+ }
99
+ /** Keeps labels of currently selected options available after `options` changes. */
100
+ cacheSelected() {
101
+ for (const option of this.#deps.options) {
102
+ if (this.isSelected(option.value))
103
+ this.selectedOptions.set(option.value, option);
104
+ }
105
+ }
106
+ setInputValue(next) {
107
+ this.inputValue = next;
108
+ this.resetActive();
109
+ clearTimeout(this.#timer);
110
+ if (this.#deps.searchDebounce <= 0) {
111
+ this.#deps.setSearch(next);
112
+ return;
113
+ }
114
+ this.#timer = setTimeout(() => this.#deps.setSearch(next), this.#deps.searchDebounce);
115
+ }
116
+ #flushSearch(next) {
117
+ clearTimeout(this.#timer);
118
+ this.inputValue = next;
119
+ this.#deps.setSearch(next);
120
+ }
121
+ openMenu() {
122
+ if (this.open)
123
+ return;
124
+ this.open = true;
125
+ this.resetActive();
126
+ }
127
+ closeMenu() {
128
+ if (!this.open)
129
+ return;
130
+ this.open = false;
131
+ // Single-select commits on pick, so the next open should start clean.
132
+ if (!this.multiple && this.inputValue)
133
+ this.#flushSearch('');
134
+ }
135
+ toggleMenu() {
136
+ if (this.open)
137
+ this.closeMenu();
138
+ else
139
+ this.openMenu();
140
+ }
141
+ #isEnabled(index) {
142
+ const option = this.filtered[index];
143
+ return option !== undefined && !option.disabled;
144
+ }
145
+ resetActive() {
146
+ const next = this.filtered.findIndex((option) => !option.disabled);
147
+ this.activeIndex = next === -1 ? 0 : next;
148
+ }
149
+ clampActive() {
150
+ if (this.filtered.length === 0) {
151
+ this.activeIndex = 0;
152
+ return;
153
+ }
154
+ if (this.activeIndex > this.filtered.length - 1 || !this.#isEnabled(this.activeIndex)) {
155
+ this.resetActive();
156
+ }
157
+ }
158
+ /** Moves the highlight by `delta`, skipping disabled options and wrapping around. */
159
+ move(delta) {
160
+ const total = this.filtered.length;
161
+ if (total === 0)
162
+ return;
163
+ let index = this.activeIndex;
164
+ for (let step = 0; step < total; step += 1) {
165
+ index = (index + delta + total) % total;
166
+ if (this.#isEnabled(index)) {
167
+ this.activeIndex = index;
168
+ return;
169
+ }
170
+ }
171
+ }
172
+ moveTo(edge) {
173
+ const total = this.filtered.length;
174
+ if (total === 0)
175
+ return;
176
+ this.activeIndex = edge === 'first' ? -1 : total;
177
+ this.move(edge === 'first' ? 1 : -1);
178
+ }
179
+ setActive(index) {
180
+ if (this.#isEnabled(index))
181
+ this.activeIndex = index;
182
+ }
183
+ select(option) {
184
+ if (option.disabled)
185
+ return;
186
+ this.selectedOptions.set(option.value, option);
187
+ if (this.multiple) {
188
+ const next = this.isSelected(option.value)
189
+ ? this.values.filter((value) => value !== option.value)
190
+ : [...this.values, option.value];
191
+ this.#deps.setValue(next);
192
+ // Menu stays open and the query is kept so several picks in a row are cheap
193
+ // — clearing it here would refire the parent's remote search.
194
+ return;
195
+ }
196
+ this.#deps.setValue(option.value);
197
+ this.closeMenu();
198
+ }
199
+ selectActive() {
200
+ const option = this.filtered[this.activeIndex];
201
+ if (option)
202
+ this.select(option);
203
+ }
204
+ deselect(value) {
205
+ if (this.multiple) {
206
+ this.#deps.setValue(this.values.filter((current) => current !== value));
207
+ return;
208
+ }
209
+ this.#deps.setValue(undefined);
210
+ }
211
+ clear() {
212
+ this.#deps.setValue(this.multiple ? [] : undefined);
213
+ }
214
+ /** Backspace on an empty query removes the last chip. */
215
+ popLast() {
216
+ const last = this.values.at(-1);
217
+ if (last !== undefined)
218
+ this.deselect(last);
219
+ }
220
+ destroy() {
221
+ clearTimeout(this.#timer);
222
+ }
223
+ }
@@ -0,0 +1,3 @@
1
+ export { default as Combobox } from './Combobox.svelte';
2
+ export type { ComboboxProps, ComboboxOption, ComboboxFilter, ComboboxValue, ComboboxLabels, ComboboxRenderGroup, ComboboxRenderItem } from './Combobox.types.js';
3
+ export { comboboxVariants, comboboxOptionVariants, comboboxChipVariants, type ComboboxVariantProps } from './Combobox.variants.js';
@@ -0,0 +1,2 @@
1
+ export { default as Combobox } from './Combobox.svelte';
2
+ export { comboboxVariants, comboboxOptionVariants, comboboxChipVariants } from './Combobox.variants.js';
@@ -0,0 +1,113 @@
1
+ <script generics="TFeatures extends TableFeatures, TData extends RowData" lang="ts">
2
+ import { FlexRender } from '@tanstack/svelte-table';
3
+ import type { RowData, TableFeatures } from '@tanstack/svelte-table';
4
+ import { cn } from '../../utils/cn.js';
5
+ import Table from '../table/Table.svelte';
6
+ import TableCaption from '../table/TableCaption.svelte';
7
+ import TableHeader from '../table/TableHeader.svelte';
8
+ import TableBody from '../table/TableBody.svelte';
9
+ import TableRow from '../table/TableRow.svelte';
10
+ import TableHead from '../table/TableHead.svelte';
11
+ import TableCell from '../table/TableCell.svelte';
12
+ import EmptyState from '../empty-state/EmptyState.svelte';
13
+ import type { DataTableProps } from './DataTable.types.js';
14
+
15
+ let {
16
+ table,
17
+ class: className,
18
+ classes,
19
+ labels,
20
+ empty,
21
+ caption,
22
+ expandedRow,
23
+ ...restProps
24
+ }: DataTableProps<TFeatures, TData> = $props();
25
+
26
+ const rows = $derived(table.getRowModel().rows);
27
+
28
+ function toggleRowExpanded(row: (typeof rows)[number]) {
29
+ if ('toggleExpanded' in row) row.toggleExpanded();
30
+ }
31
+ </script>
32
+
33
+ <Table class={className} classes={{ table: classes?.table }} {...restProps}>
34
+ {#if caption}
35
+ <TableCaption>{@render caption()}</TableCaption>
36
+ {/if}
37
+ <TableHeader class={classes?.header}>
38
+ {#each table.getHeaderGroups() as headerGroup (headerGroup.id)}
39
+ <TableRow class={classes?.row}>
40
+ {#each headerGroup.headers as header (header.id)}
41
+ {@const sortable = 'getCanSort' in header.column ? header.column.getCanSort() : false}
42
+ {@const sorted = 'getIsSorted' in header.column ? header.column.getIsSorted() : false}
43
+ <TableHead
44
+ class={classes?.head}
45
+ aria-sort={sortable
46
+ ? sorted === 'asc'
47
+ ? 'ascending'
48
+ : sorted === 'desc'
49
+ ? 'descending'
50
+ : 'none'
51
+ : undefined}
52
+ >
53
+ {#if !header.isPlaceholder}
54
+ <FlexRender {header} />
55
+ {/if}
56
+ </TableHead>
57
+ {/each}
58
+ </TableRow>
59
+ {/each}
60
+ </TableHeader>
61
+ <TableBody class={classes?.body}>
62
+ {#if rows.length === 0}
63
+ <TableRow>
64
+ <TableCell colspan={table.getAllColumns().length}>
65
+ {#if empty}
66
+ {@render empty()}
67
+ {:else}
68
+ <EmptyState>
69
+ {#snippet title()}
70
+ {labels?.empty ?? 'No data'}
71
+ {/snippet}
72
+ </EmptyState>
73
+ {/if}
74
+ </TableCell>
75
+ </TableRow>
76
+ {:else}
77
+ {#each rows as row (row.id)}
78
+ {@const cells = 'getVisibleCells' in row ? row.getVisibleCells() : row.getAllCells()}
79
+ {@const selected = 'getIsSelected' in row ? row.getIsSelected() : false}
80
+ {@const expandable = 'getCanExpand' in row ? row.getCanExpand() : false}
81
+ {@const expanded = expandable && 'getIsExpanded' in row ? row.getIsExpanded() : false}
82
+ <TableRow
83
+ class={cn(expandable && 'cursor-pointer', classes?.row)}
84
+ {selected}
85
+ data-expanded={expandable && expanded ? '' : undefined}
86
+ tabindex={expandable ? 0 : undefined}
87
+ onclick={expandable ? () => toggleRowExpanded(row) : undefined}
88
+ onkeydown={expandable
89
+ ? (event) => {
90
+ if (event.key === 'Enter' || event.key === ' ') {
91
+ event.preventDefault();
92
+ toggleRowExpanded(row);
93
+ }
94
+ }
95
+ : undefined}
96
+ >
97
+ {#each cells as cell (cell.id)}
98
+ <TableCell class={classes?.cell}>
99
+ <FlexRender {cell} />
100
+ </TableCell>
101
+ {/each}
102
+ </TableRow>
103
+ {#if expandable && expanded && expandedRow}
104
+ <TableRow>
105
+ <TableCell class={classes?.cell} colspan={cells.length}>
106
+ {@render expandedRow({ row })}
107
+ </TableCell>
108
+ </TableRow>
109
+ {/if}
110
+ {/each}
111
+ {/if}
112
+ </TableBody>
113
+ </Table>
@@ -0,0 +1,26 @@
1
+ import type { RowData, TableFeatures } from '@tanstack/svelte-table';
2
+ import type { DataTableProps } from './DataTable.types.js';
3
+ declare function $$render<TFeatures extends TableFeatures, TData extends RowData>(): {
4
+ props: DataTableProps<TFeatures, TData>;
5
+ exports: {};
6
+ bindings: "";
7
+ slots: {};
8
+ events: {};
9
+ };
10
+ declare class __sveltets_Render<TFeatures extends TableFeatures, TData extends RowData> {
11
+ props(): ReturnType<typeof $$render<TFeatures, TData>>['props'];
12
+ events(): ReturnType<typeof $$render<TFeatures, TData>>['events'];
13
+ slots(): ReturnType<typeof $$render<TFeatures, TData>>['slots'];
14
+ bindings(): "";
15
+ exports(): {};
16
+ }
17
+ interface $$IsomorphicComponent {
18
+ new <TFeatures extends TableFeatures, TData extends RowData>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TFeatures, TData>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TFeatures, TData>['props']>, ReturnType<__sveltets_Render<TFeatures, TData>['events']>, ReturnType<__sveltets_Render<TFeatures, TData>['slots']>> & {
19
+ $$bindings?: ReturnType<__sveltets_Render<TFeatures, TData>['bindings']>;
20
+ } & ReturnType<__sveltets_Render<TFeatures, TData>['exports']>;
21
+ <TFeatures extends TableFeatures, TData extends RowData>(internal: unknown, props: ReturnType<__sveltets_Render<TFeatures, TData>['props']> & {}): ReturnType<__sveltets_Render<TFeatures, TData>['exports']>;
22
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
23
+ }
24
+ declare const DataTable: $$IsomorphicComponent;
25
+ type DataTable<TFeatures extends TableFeatures, TData extends RowData> = InstanceType<typeof DataTable<TFeatures, TData>>;
26
+ export default DataTable;
@@ -0,0 +1,32 @@
1
+ import type { Row, RowData, Table, TableFeatures } from '@tanstack/svelte-table';
2
+ import type { Snippet } from 'svelte';
3
+ import type { HTMLTableAttributes } from 'svelte/elements';
4
+ export interface DataTableLabels {
5
+ /** Announced when there are no rows. Defaults to "No data". */
6
+ empty?: string;
7
+ }
8
+ export interface DataTableProps<TFeatures extends TableFeatures, TData extends RowData> extends HTMLTableAttributes {
9
+ /** The instance you created yourself via `createTable()` — this component never calls it internally. */
10
+ table: Table<TFeatures, TData>;
11
+ class?: string;
12
+ classes?: {
13
+ table?: string;
14
+ header?: string;
15
+ body?: string;
16
+ row?: string;
17
+ head?: string;
18
+ cell?: string;
19
+ };
20
+ labels?: DataTableLabels;
21
+ /** Overrides the default `EmptyState` row shown when `table.getRowModel().rows` is empty. */
22
+ empty?: Snippet;
23
+ caption?: Snippet;
24
+ /**
25
+ * Rendered as a full-width row beneath any row where `row.getIsExpanded()` is true.
26
+ * Requires the consumer's `table` to compose `rowExpandingFeature` — a row without
27
+ * `getCanExpand()` is rendered exactly as before, click-to-expand included.
28
+ */
29
+ expandedRow?: Snippet<[{
30
+ row: Row<TFeatures, TData>;
31
+ }]>;
32
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,63 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+ import type { DataTableColumnHeaderProps } from './DataTableColumnHeader.types.js';
4
+
5
+ let { column, class: className, children }: DataTableColumnHeaderProps = $props();
6
+
7
+ const sorted = $derived(column.getIsSorted());
8
+ </script>
9
+
10
+ {#if column.getCanSort()}
11
+ <button
12
+ type="button"
13
+ onclick={column.getToggleSortingHandler()}
14
+ class={cn(
15
+ '-mx-tight inline-flex cursor-pointer appearance-none items-center gap-tight rounded-md px-tight py-0.5 text-sm leading-snug font-medium text-foreground-soft transition-colors duration-150 hover:bg-surface-subtle hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none',
16
+ className
17
+ )}
18
+ >
19
+ {@render children()}
20
+ {#if sorted === 'asc'}
21
+ <svg
22
+ viewBox="0 0 24 24"
23
+ fill="none"
24
+ stroke="currentColor"
25
+ stroke-width="2"
26
+ stroke-linecap="round"
27
+ stroke-linejoin="round"
28
+ aria-hidden="true"
29
+ class="size-3.5 shrink-0"
30
+ >
31
+ <path d="m18 15-6-6-6 6" />
32
+ </svg>
33
+ {:else if sorted === 'desc'}
34
+ <svg
35
+ viewBox="0 0 24 24"
36
+ fill="none"
37
+ stroke="currentColor"
38
+ stroke-width="2"
39
+ stroke-linecap="round"
40
+ stroke-linejoin="round"
41
+ aria-hidden="true"
42
+ class="size-3.5 shrink-0"
43
+ >
44
+ <path d="m6 9 6 6 6-6" />
45
+ </svg>
46
+ {:else}
47
+ <svg
48
+ viewBox="0 0 24 24"
49
+ fill="none"
50
+ stroke="currentColor"
51
+ stroke-width="2"
52
+ stroke-linecap="round"
53
+ stroke-linejoin="round"
54
+ aria-hidden="true"
55
+ class="size-3.5 shrink-0 text-foreground-faint"
56
+ >
57
+ <path d="m7 15 5 5 5-5M7 9l5-5 5 5" />
58
+ </svg>
59
+ {/if}
60
+ </button>
61
+ {:else}
62
+ {@render children()}
63
+ {/if}
@@ -0,0 +1,4 @@
1
+ import type { DataTableColumnHeaderProps } from './DataTableColumnHeader.types.js';
2
+ declare const DataTableColumnHeader: import("svelte").Component<DataTableColumnHeaderProps, {}, "">;
3
+ type DataTableColumnHeader = ReturnType<typeof DataTableColumnHeader>;
4
+ export default DataTableColumnHeader;
@@ -0,0 +1,17 @@
1
+ import type { Snippet } from 'svelte';
2
+ /**
3
+ * Structural subset of TanStack's `Column` — matches it without pinning to a
4
+ * specific `TFeatures`/`TData` instantiation, since a real `Column` from
5
+ * `rowSortingFeature` satisfies this shape regardless of what else the
6
+ * consumer's table composes.
7
+ */
8
+ export interface SortableColumn {
9
+ getCanSort(): boolean;
10
+ getIsSorted(): false | 'asc' | 'desc';
11
+ getToggleSortingHandler(): ((event: unknown) => void) | undefined;
12
+ }
13
+ export interface DataTableColumnHeaderProps {
14
+ column: SortableColumn;
15
+ class?: string;
16
+ children: Snippet;
17
+ }
@@ -0,0 +1,50 @@
1
+ <script generics="TFeatures extends TableFeatures, TData extends RowData" lang="ts">
2
+ import type { RowData, TableFeatures } from '@tanstack/svelte-table';
3
+ import { cn } from '../../utils/cn.js';
4
+ import { createIds } from '../../utils/id.js';
5
+ import Label from '../label/Label.svelte';
6
+ import Select from '../select/Select.svelte';
7
+ import Pagination from '../pagination/Pagination.svelte';
8
+ import type { DataTablePaginationProps } from './DataTablePagination.types.js';
9
+
10
+ let {
11
+ table,
12
+ pageSizeOptions,
13
+ class: className,
14
+ classes,
15
+ labels,
16
+ size = 'sm',
17
+ ...restProps
18
+ }: DataTablePaginationProps<TFeatures, TData> = $props();
19
+
20
+ const baseId = $props.id();
21
+ const ids = createIds(baseId, 'page-size');
22
+
23
+ const pagination = $derived(table.atoms.pagination.get());
24
+ </script>
25
+
26
+ <div class={cn('flex flex-wrap items-center justify-between gap-cozy', className)} {...restProps}>
27
+ <div class="flex items-center gap-tight">
28
+ <Label for={ids['page-size']} class="font-normal">{labels?.pageSize ?? 'Rows per page'}</Label>
29
+ <Select
30
+ id={ids['page-size']}
31
+ {size}
32
+ class={cn('w-fit', classes?.pageSize)}
33
+ classes={{ select: 'focus-visible:ring-0 focus-visible:border-ring' }}
34
+ value={String(pagination.pageSize)}
35
+ onchange={(event) => table.setPageSize(Number(event.currentTarget.value))}
36
+ >
37
+ {#each pageSizeOptions as option (option)}
38
+ <option value={String(option)}>{option}</option>
39
+ {/each}
40
+ </Select>
41
+ </div>
42
+ <Pagination
43
+ class={classes?.pagination}
44
+ {size}
45
+ {labels}
46
+ currentPage={pagination.pageIndex + 1}
47
+ totalPages={table.getPageCount()}
48
+ onPageChange={(page) => table.setPageIndex(page - 1)}
49
+ />
50
+ </div>
@@ -0,0 +1,26 @@
1
+ import type { RowData, TableFeatures } from '@tanstack/svelte-table';
2
+ import type { DataTablePaginationProps } from './DataTablePagination.types.js';
3
+ declare function $$render<TFeatures extends TableFeatures, TData extends RowData>(): {
4
+ props: DataTablePaginationProps<TFeatures, TData>;
5
+ exports: {};
6
+ bindings: "";
7
+ slots: {};
8
+ events: {};
9
+ };
10
+ declare class __sveltets_Render<TFeatures extends TableFeatures, TData extends RowData> {
11
+ props(): ReturnType<typeof $$render<TFeatures, TData>>['props'];
12
+ events(): ReturnType<typeof $$render<TFeatures, TData>>['events'];
13
+ slots(): ReturnType<typeof $$render<TFeatures, TData>>['slots'];
14
+ bindings(): "";
15
+ exports(): {};
16
+ }
17
+ interface $$IsomorphicComponent {
18
+ new <TFeatures extends TableFeatures, TData extends RowData>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TFeatures, TData>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TFeatures, TData>['props']>, ReturnType<__sveltets_Render<TFeatures, TData>['events']>, ReturnType<__sveltets_Render<TFeatures, TData>['slots']>> & {
19
+ $$bindings?: ReturnType<__sveltets_Render<TFeatures, TData>['bindings']>;
20
+ } & ReturnType<__sveltets_Render<TFeatures, TData>['exports']>;
21
+ <TFeatures extends TableFeatures, TData extends RowData>(internal: unknown, props: ReturnType<__sveltets_Render<TFeatures, TData>['props']> & {}): ReturnType<__sveltets_Render<TFeatures, TData>['exports']>;
22
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
23
+ }
24
+ declare const DataTablePagination: $$IsomorphicComponent;
25
+ type DataTablePagination<TFeatures extends TableFeatures, TData extends RowData> = InstanceType<typeof DataTablePagination<TFeatures, TData>>;
26
+ export default DataTablePagination;