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
package/dist/index.css ADDED
@@ -0,0 +1,399 @@
1
+ @import 'tailwindcss';
2
+ @plugin '@tailwindcss/typography';
3
+
4
+ /*
5
+ Theme tokens.
6
+
7
+ Two layers, on purpose:
8
+
9
+ 1. Raw variables (`--surface`, `--foreground`, …) hold the actual colors.
10
+ 2. `@theme inline` maps them to Tailwind's `--color-*` namespace, which is
11
+ what generates the `bg-surface` / `text-foreground` / `border-border`
12
+ utilities the components use.
13
+
14
+ `inline` is what makes theming work: it compiles `bg-surface` down to
15
+ `background-color: var(--surface)` — pointing straight at the raw variable
16
+ instead of at a second variable pinned to `:root` by Tailwind's theme layer.
17
+ A consumer can therefore redefine a token under ANY selector and it wins,
18
+ with no specificity fight and no `!important`:
19
+
20
+ [data-theme='sepia'] { --surface: oklch(97% 0.02 85); }
21
+ .invoice-preview { --foreground: black; }
22
+
23
+ Components must only ever use these semantic utilities — never a raw palette
24
+ shade like `bg-slate-50`. A hardcoded shade is invisible to every theme.
25
+ */
26
+
27
+ :root {
28
+ --surface: oklch(100% 0 0);
29
+ --surface-subtle: oklch(98.4% 0.003 247.858);
30
+ --surface-hover: oklch(96.8% 0.007 247.896);
31
+
32
+ --border: oklch(92.9% 0.013 255.508);
33
+ --border-hover: oklch(86.9% 0.022 252.894);
34
+
35
+ --foreground: oklch(20.8% 0.042 265.755);
36
+ --foreground-soft: oklch(37.2% 0.044 257.287);
37
+ --foreground-muted: oklch(44.6% 0.043 257.281);
38
+ --foreground-subtle: oklch(55.4% 0.046 257.417);
39
+ --foreground-faint: oklch(70.4% 0.04 256.788);
40
+
41
+ /* Brand teal. teal-700 rather than the more obvious teal-500/600: white
42
+ text needs 4.5:1 to pass WCAG AA, and teal-500 only reaches 2.42:1,
43
+ teal-600 3.66:1. teal-700 is 5.39:1. */
44
+ --primary: oklch(51.1% 0.096 186.391);
45
+ --primary-hover: oklch(43.7% 0.078 188.216);
46
+ --primary-foreground: oklch(100% 0 0);
47
+
48
+ --ring: oklch(51.1% 0.096 186.391);
49
+
50
+ /* danger-500 fails white-text/text-on-white contrast the same way teal-500 does above —
51
+ 52% lightness is the point it clears 4.5:1 for body text while staying a clear "danger" red. */
52
+ --danger: oklch(52% 0.19 13.428);
53
+ --danger-border: oklch(81% 0.117 11.638);
54
+ --danger-foreground: oklch(100% 0 0);
55
+
56
+ /* Same 4.5:1-against-white constraint as danger, same hue kept between
57
+ light and dark — 52% lightness reaches 5.62:1 as amber, not the paler
58
+ "brand yellow" a naive amber-400/500 would give. */
59
+ --warning: oklch(52% 0.15 75);
60
+ --warning-border: oklch(83% 0.09 75);
61
+ --warning-foreground: oklch(100% 0 0);
62
+
63
+ /* 50% lightness reaches 5.59:1 — green needs a touch more lightness than
64
+ red/amber at the same chroma before it reads as "green" rather than a
65
+ near-black olive. */
66
+ --success: oklch(50% 0.16 145);
67
+ --success-border: oklch(82% 0.1 145);
68
+ --success-foreground: oklch(100% 0 0);
69
+ }
70
+
71
+ [data-theme='dark'] {
72
+ --surface: oklch(12.9% 0.042 264.695);
73
+ --surface-subtle: oklch(20.8% 0.042 265.755);
74
+ --surface-hover: oklch(27.9% 0.041 260.031);
75
+
76
+ --border: oklch(27.9% 0.041 260.031);
77
+ --border-hover: oklch(37.2% 0.044 257.287);
78
+
79
+ --foreground: oklch(98.4% 0.003 247.858);
80
+ --foreground-soft: oklch(92.9% 0.013 255.508);
81
+ --foreground-muted: oklch(86.9% 0.022 252.894);
82
+ --foreground-subtle: oklch(70.4% 0.04 256.788);
83
+ --foreground-faint: oklch(55.4% 0.046 257.417);
84
+
85
+ /* Dark flips the relationship: a light teal fill carrying dark text.
86
+ teal-400 against the dark surface is 10.81:1. */
87
+ --primary: oklch(77.7% 0.152 181.912);
88
+ --primary-hover: oklch(85.5% 0.138 181.071);
89
+ --primary-foreground: oklch(12.9% 0.042 264.695);
90
+
91
+ --ring: oklch(77.7% 0.152 181.912);
92
+
93
+ --danger: oklch(71.2% 0.194 13.428);
94
+ --danger-border: oklch(64.5% 0.246 16.439);
95
+ --danger-foreground: oklch(12.9% 0.042 264.695);
96
+
97
+ /* 66% lightness against the dark surface is 6.35:1. */
98
+ --warning: oklch(66% 0.13 75);
99
+ --warning-border: oklch(59% 0.165 75);
100
+ --warning-foreground: oklch(12.9% 0.042 264.695);
101
+
102
+ /* 64% lightness against the dark surface is 6.37:1. */
103
+ --success: oklch(64% 0.15 145);
104
+ --success-border: oklch(57% 0.19 145);
105
+ --success-foreground: oklch(12.9% 0.042 264.695);
106
+ }
107
+
108
+ @theme inline {
109
+ --color-surface: var(--surface);
110
+ --color-surface-subtle: var(--surface-subtle);
111
+ --color-surface-hover: var(--surface-hover);
112
+
113
+ --color-border: var(--border);
114
+ --color-border-hover: var(--border-hover);
115
+
116
+ --color-foreground: var(--foreground);
117
+ --color-foreground-soft: var(--foreground-soft);
118
+ --color-foreground-muted: var(--foreground-muted);
119
+ --color-foreground-subtle: var(--foreground-subtle);
120
+ --color-foreground-faint: var(--foreground-faint);
121
+
122
+ --color-primary: var(--primary);
123
+ --color-primary-hover: var(--primary-hover);
124
+ --color-primary-foreground: var(--primary-foreground);
125
+
126
+ --color-ring: var(--ring);
127
+
128
+ --color-danger: var(--danger);
129
+ --color-danger-border: var(--danger-border);
130
+ --color-danger-foreground: var(--danger-foreground);
131
+
132
+ --color-warning: var(--warning);
133
+ --color-warning-border: var(--warning-border);
134
+ --color-warning-foreground: var(--warning-foreground);
135
+
136
+ --color-success: var(--success);
137
+ --color-success-border: var(--success-border);
138
+ --color-success-foreground: var(--success-foreground);
139
+ }
140
+
141
+ /*
142
+ Density scale — prep for the Linear-style migration tracked in
143
+ docs/component-roadmap.md. Pinned to the padding/gap values already most
144
+ common across src/lib/components (surveyed via grep), so defining this
145
+ block changes nothing visually today.
146
+
147
+ Radius and shadow need NO equivalent block: `rounded-lg`/`shadow-sm`/
148
+ `shadow-md` already resolve to Tailwind's own `--radius-lg`/`--shadow-sm`/
149
+ `--shadow-md` theme variables, so those are already a single dial —
150
+ override them directly in a plain `@theme` block when the time comes,
151
+ no prep needed.
152
+
153
+ Spacing has no such built-in dial: components reference literal `p-3`/
154
+ `px-4`/`gap-2` directly, so these tokens have no effect until each
155
+ component is migrated to the utilities they generate (Tailwind's
156
+ `--spacing-*` theme namespace turns each of these into real utilities:
157
+ `px-control-x`, `p-compact`, `gap-cozy`, etc — named `tight`/`cozy`/`loose`
158
+ rather than e.g. `--spacing-gap` so the generated class isn't the
159
+ stuttering `gap-gap`). That migration is deliberately NOT done here —
160
+ this block only adds the dial, one component at a time swaps onto it
161
+ later.
162
+ */
163
+ @theme {
164
+ --spacing-control-x: 1rem; /* 4 — button/input horizontal padding */
165
+ --spacing-control-y: 0.5rem; /* 2 — button/input vertical padding */
166
+ --spacing-compact: 0.75rem; /* 3 — dense rows: list/menu items, popover content */
167
+ --spacing-surface: 1.5rem; /* 6 — card/dialog surface padding */
168
+ --spacing-tight: 0.375rem; /* 1.5 — icon-to-label gaps */
169
+ --spacing-cozy: 0.5rem; /* 2 — default inter-element gap */
170
+ --spacing-loose: 0.75rem; /* 3 — looser stacks (form fields, list rows) */
171
+ }
172
+
173
+ @theme {
174
+ --animate-progress-indeterminate: progress-indeterminate 1.5s ease-in-out infinite;
175
+
176
+ @keyframes progress-indeterminate {
177
+ 0% {
178
+ transform: translateX(-100%);
179
+ }
180
+ 50% {
181
+ transform: translateX(100%);
182
+ }
183
+ 100% {
184
+ transform: translateX(400%);
185
+ }
186
+ }
187
+
188
+ /*
189
+ Dialog enter/exit, applied by default via `data-[state=*]:animate-*`.
190
+
191
+ The content keyframes deliberately touch `transform` only: Dialog centres
192
+ its content with a flex wrapper rather than a translate, so these must not
193
+ restate a centring offset — Tailwind v4 compiles `-translate-x-1/2` to the
194
+ standalone `translate` property, which composes on top of `transform`
195
+ instead of replacing it, and the two would stack into a doubled offset.
196
+ */
197
+ --animate-dialog-overlay-in: dialog-overlay-in 150ms ease-out forwards;
198
+ --animate-dialog-overlay-out: dialog-overlay-out 150ms ease-in forwards;
199
+ --animate-dialog-content-in: dialog-content-in 150ms ease-out forwards;
200
+ --animate-dialog-content-out: dialog-content-out 150ms ease-in forwards;
201
+
202
+ @keyframes dialog-overlay-in {
203
+ from {
204
+ opacity: 0;
205
+ }
206
+ }
207
+
208
+ @keyframes dialog-overlay-out {
209
+ to {
210
+ opacity: 0;
211
+ }
212
+ }
213
+
214
+ @keyframes dialog-content-in {
215
+ from {
216
+ opacity: 0;
217
+ transform: scale(0.96);
218
+ }
219
+ }
220
+
221
+ @keyframes dialog-content-out {
222
+ to {
223
+ opacity: 0;
224
+ transform: scale(0.96);
225
+ }
226
+ }
227
+
228
+ /*
229
+ Drawer enter/exit — one pair of keyframes per edge, since the offset
230
+ direction depends on which side the panel slides from. Reuses Dialog's
231
+ overlay animation (`data-slot='dialog-overlay'`) for its own scrim; only
232
+ the edge-anchored content needs new keyframes. Unlike Dialog's content,
233
+ no wrapper-vs-translate caveat applies here — Drawer positions with
234
+ `inset-*`, not a transform, so this `translateX/Y` is the only transform
235
+ ever on the element.
236
+ */
237
+ --animate-drawer-content-in-right: drawer-content-in-right 200ms ease-out forwards;
238
+ --animate-drawer-content-out-right: drawer-content-out-right 200ms ease-in forwards;
239
+ --animate-drawer-content-in-left: drawer-content-in-left 200ms ease-out forwards;
240
+ --animate-drawer-content-out-left: drawer-content-out-left 200ms ease-in forwards;
241
+ --animate-drawer-content-in-top: drawer-content-in-top 200ms ease-out forwards;
242
+ --animate-drawer-content-out-top: drawer-content-out-top 200ms ease-in forwards;
243
+ --animate-drawer-content-in-bottom: drawer-content-in-bottom 200ms ease-out forwards;
244
+ --animate-drawer-content-out-bottom: drawer-content-out-bottom 200ms ease-in forwards;
245
+
246
+ @keyframes drawer-content-in-right {
247
+ from {
248
+ transform: translateX(100%);
249
+ }
250
+ }
251
+
252
+ @keyframes drawer-content-out-right {
253
+ to {
254
+ transform: translateX(100%);
255
+ }
256
+ }
257
+
258
+ @keyframes drawer-content-in-left {
259
+ from {
260
+ transform: translateX(-100%);
261
+ }
262
+ }
263
+
264
+ @keyframes drawer-content-out-left {
265
+ to {
266
+ transform: translateX(-100%);
267
+ }
268
+ }
269
+
270
+ @keyframes drawer-content-in-top {
271
+ from {
272
+ transform: translateY(-100%);
273
+ }
274
+ }
275
+
276
+ @keyframes drawer-content-out-top {
277
+ to {
278
+ transform: translateY(-100%);
279
+ }
280
+ }
281
+
282
+ @keyframes drawer-content-in-bottom {
283
+ from {
284
+ transform: translateY(100%);
285
+ }
286
+ }
287
+
288
+ @keyframes drawer-content-out-bottom {
289
+ to {
290
+ transform: translateY(100%);
291
+ }
292
+ }
293
+
294
+ /* Toast enter/exit, same `components`-layer/`data-slot` override story as Dialog above. */
295
+ --animate-toast-in: toast-in 150ms ease-out forwards;
296
+ --animate-toast-out: toast-out 150ms ease-in forwards;
297
+
298
+ @keyframes toast-in {
299
+ from {
300
+ opacity: 0;
301
+ transform: scale(0.96);
302
+ }
303
+ }
304
+
305
+ @keyframes toast-out {
306
+ to {
307
+ opacity: 0;
308
+ transform: scale(0.96);
309
+ }
310
+ }
311
+ }
312
+
313
+ /*
314
+ Dialog's default enter/exit, in the `components` layer on purpose.
315
+
316
+ Layer order is what makes this overridable: Tailwind orders `components`
317
+ before `utilities`, so any utility a consumer passes through `classes`
318
+ (`data-[state=open]:animate-…`, or `animate-none` to opt out) beats these
319
+ regardless of specificity. A utility class here instead would land in the
320
+ same layer as the consumer's and leave the winner to source order —
321
+ tailwind-merge can't arbitrate it, since it only knows Tailwind's five
322
+ built-in `animate-*` values and treats custom ones as unrelated classes.
323
+
324
+ Keyed on `data-slot` rather than the internal utility classes so the hook
325
+ stays stable if the styling changes.
326
+ */
327
+ @layer components {
328
+ [data-slot='dialog-overlay'][data-state='open'] {
329
+ animation: var(--animate-dialog-overlay-in);
330
+ }
331
+
332
+ [data-slot='dialog-overlay'][data-state='closed'] {
333
+ animation: var(--animate-dialog-overlay-out);
334
+ }
335
+
336
+ [data-slot='dialog-content'][data-state='open'] {
337
+ animation: var(--animate-dialog-content-in);
338
+ }
339
+
340
+ [data-slot='dialog-content'][data-state='closed'] {
341
+ animation: var(--animate-dialog-content-out);
342
+ }
343
+
344
+ [data-slot='toast'][data-state='open'] {
345
+ animation: var(--animate-toast-in);
346
+ }
347
+
348
+ [data-slot='toast'][data-state='closed'] {
349
+ animation: var(--animate-toast-out);
350
+ }
351
+
352
+ [data-slot='drawer-content'][data-side='right'][data-state='open'] {
353
+ animation: var(--animate-drawer-content-in-right);
354
+ }
355
+
356
+ [data-slot='drawer-content'][data-side='right'][data-state='closed'] {
357
+ animation: var(--animate-drawer-content-out-right);
358
+ }
359
+
360
+ [data-slot='drawer-content'][data-side='left'][data-state='open'] {
361
+ animation: var(--animate-drawer-content-in-left);
362
+ }
363
+
364
+ [data-slot='drawer-content'][data-side='left'][data-state='closed'] {
365
+ animation: var(--animate-drawer-content-out-left);
366
+ }
367
+
368
+ [data-slot='drawer-content'][data-side='top'][data-state='open'] {
369
+ animation: var(--animate-drawer-content-in-top);
370
+ }
371
+
372
+ [data-slot='drawer-content'][data-side='top'][data-state='closed'] {
373
+ animation: var(--animate-drawer-content-out-top);
374
+ }
375
+
376
+ [data-slot='drawer-content'][data-side='bottom'][data-state='open'] {
377
+ animation: var(--animate-drawer-content-in-bottom);
378
+ }
379
+
380
+ [data-slot='drawer-content'][data-side='bottom'][data-state='closed'] {
381
+ animation: var(--animate-drawer-content-out-bottom);
382
+ }
383
+
384
+ /*
385
+ Same layer and same specificity as the rules above, but later, so it
386
+ switches only *these* defaults off — a consumer who deliberately sets an
387
+ animation still gets it, since theirs is a utility and outranks the whole
388
+ layer. `createPresence` unmounts immediately when no animation runs, so
389
+ nothing is left hanging.
390
+ */
391
+ @media (prefers-reduced-motion: reduce) {
392
+ [data-slot='dialog-overlay'][data-state],
393
+ [data-slot='dialog-content'][data-state],
394
+ [data-slot='toast'][data-state],
395
+ [data-slot='drawer-content'][data-state] {
396
+ animation: none;
397
+ }
398
+ }
399
+ }
@@ -0,0 +1,20 @@
1
+ import { type CalendarDate } from '@internationalized/date';
2
+ export interface CalendarGridOptions {
3
+ /** Any date within the month to render. */
4
+ date: CalendarDate;
5
+ locale: string;
6
+ }
7
+ export interface CalendarCell {
8
+ date: CalendarDate;
9
+ outsideMonth: boolean;
10
+ }
11
+ /**
12
+ * Computes the full weeks grid for a month, including the leading/trailing
13
+ * days from adjacent months needed to fill complete weeks — e.g. late Feb
14
+ * days appearing on the first row of a March grid. Delegates all calendar
15
+ * math (leap years, locale-aware week boundaries) to `@internationalized/date`
16
+ * rather than hand-rolling it, then just walks day-by-day chunking into rows
17
+ * of 7 — the same "compute the hard part once, walk it linearly" shape as
18
+ * `pagination-range.ts`.
19
+ */
20
+ export declare function getCalendarGrid({ date, locale }: CalendarGridOptions): CalendarCell[][];
@@ -0,0 +1,26 @@
1
+ import { startOfMonth, endOfMonth, startOfWeek, endOfWeek, isSameMonth } from '@internationalized/date';
2
+ /**
3
+ * Computes the full weeks grid for a month, including the leading/trailing
4
+ * days from adjacent months needed to fill complete weeks — e.g. late Feb
5
+ * days appearing on the first row of a March grid. Delegates all calendar
6
+ * math (leap years, locale-aware week boundaries) to `@internationalized/date`
7
+ * rather than hand-rolling it, then just walks day-by-day chunking into rows
8
+ * of 7 — the same "compute the hard part once, walk it linearly" shape as
9
+ * `pagination-range.ts`.
10
+ */
11
+ export function getCalendarGrid({ date, locale }) {
12
+ const firstCell = startOfWeek(startOfMonth(date), locale);
13
+ const lastCell = endOfWeek(endOfMonth(date), locale);
14
+ const weeks = [];
15
+ let week = [];
16
+ let cursor = firstCell;
17
+ while (cursor.compare(lastCell) <= 0) {
18
+ week.push({ date: cursor, outsideMonth: !isSameMonth(cursor, date) });
19
+ if (week.length === 7) {
20
+ weeks.push(week);
21
+ week = [];
22
+ }
23
+ cursor = cursor.add({ days: 1 });
24
+ }
25
+ return weeks;
26
+ }
@@ -0,0 +1,2 @@
1
+ import { type ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
@@ -0,0 +1,5 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+ export function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
@@ -0,0 +1,12 @@
1
+ export interface DismissableLayerOptions {
2
+ onPointerDownOutside?: (event: PointerEvent) => void;
3
+ onEscapeKeydown?: (event: KeyboardEvent) => void;
4
+ }
5
+ /**
6
+ * Registers `node`'s consumer as a dismissable layer: Escape and
7
+ * pointerdown-outside are reported via the callbacks, scoped to elements
8
+ * outside `getExcluded()` (typically the trigger and the content itself) and
9
+ * only while this layer is topmost. Call from a component's `$effect` and
10
+ * return (or call) the returned teardown on cleanup.
11
+ */
12
+ export declare function createDismissableLayer(getExcluded: () => (HTMLElement | null | undefined)[], options: DismissableLayerOptions): () => void;
@@ -0,0 +1,44 @@
1
+ // Stack of currently open layers (popovers, dropdowns, dialogs, ...), topmost
2
+ // last. Only the topmost layer reacts, so a popover opened from inside a
3
+ // dialog doesn't also close the dialog underneath on the same Escape press.
4
+ const layers = [];
5
+ /**
6
+ * Registers `node`'s consumer as a dismissable layer: Escape and
7
+ * pointerdown-outside are reported via the callbacks, scoped to elements
8
+ * outside `getExcluded()` (typically the trigger and the content itself) and
9
+ * only while this layer is topmost. Call from a component's `$effect` and
10
+ * return (or call) the returned teardown on cleanup.
11
+ */
12
+ export function createDismissableLayer(getExcluded, options) {
13
+ const id = Symbol();
14
+ function isTopmost() {
15
+ return layers[layers.length - 1] === id;
16
+ }
17
+ function handlePointerDown(event) {
18
+ if (!isTopmost())
19
+ return;
20
+ const target = event.target;
21
+ if (getExcluded().some((el) => el?.contains(target)))
22
+ return;
23
+ options.onPointerDownOutside?.(event);
24
+ }
25
+ function handleKeydown(event) {
26
+ if (event.key !== 'Escape' || !isTopmost())
27
+ return;
28
+ options.onEscapeKeydown?.(event);
29
+ }
30
+ layers.push(id);
31
+ document.addEventListener('pointerdown', handlePointerDown);
32
+ document.addEventListener('keydown', handleKeydown);
33
+ let destroyed = false;
34
+ return function destroy() {
35
+ if (destroyed)
36
+ return;
37
+ destroyed = true;
38
+ const index = layers.indexOf(id);
39
+ if (index !== -1)
40
+ layers.splice(index, 1);
41
+ document.removeEventListener('pointerdown', handlePointerDown);
42
+ document.removeEventListener('keydown', handleKeydown);
43
+ };
44
+ }
@@ -0,0 +1,18 @@
1
+ import { type Placement, type Strategy } from '@floating-ui/dom';
2
+ import type { Action } from 'svelte/action';
3
+ export interface FloatingOptions {
4
+ reference: HTMLElement | null;
5
+ placement?: Placement;
6
+ strategy?: Strategy;
7
+ offset?: number;
8
+ arrowEl?: HTMLElement | null;
9
+ /** Pins the floating element's min-width to the reference's width (e.g. a combobox popup matching its trigger). */
10
+ matchReferenceWidth?: boolean;
11
+ /** Caps the floating element's max-height to the lesser of this and the space actually available in the viewport. */
12
+ maxHeight?: number;
13
+ onComputed?: (position: {
14
+ x: number;
15
+ y: number;
16
+ }) => void;
17
+ }
18
+ export declare const floating: Action<HTMLElement, FloatingOptions>;
@@ -0,0 +1,61 @@
1
+ import { autoUpdate, computePosition, flip, offset, shift, arrow, size } from '@floating-ui/dom';
2
+ export const floating = (node, options) => {
3
+ let cleanup;
4
+ function setup(opts) {
5
+ cleanup?.();
6
+ if (!opts.reference)
7
+ return;
8
+ const strategy = opts.strategy ?? 'fixed';
9
+ // Take the node out of normal flow *synchronously*. `computePosition` is
10
+ // async, so without this the node spends a beat laid out at the end of its
11
+ // (portalled) parent — which lets a focus() call scroll the page to the
12
+ // bottom before the real coordinates ever land.
13
+ node.style.position = strategy;
14
+ node.style.left = '0';
15
+ node.style.top = '0';
16
+ const middleware = [offset(opts.offset ?? 8), flip(), shift({ padding: 8 })];
17
+ if (opts.arrowEl) {
18
+ // Keeps the arrow off the content box's rounded corners on small bubbles.
19
+ middleware.push(arrow({ element: opts.arrowEl, padding: 4 }));
20
+ }
21
+ if (opts.matchReferenceWidth || opts.maxHeight != null) {
22
+ middleware.push(size({
23
+ padding: 8,
24
+ apply({ rects, availableHeight, elements }) {
25
+ if (opts.matchReferenceWidth) {
26
+ elements.floating.style.minWidth = `${rects.reference.width}px`;
27
+ }
28
+ if (opts.maxHeight != null) {
29
+ elements.floating.style.maxHeight = `${Math.min(availableHeight, opts.maxHeight)}px`;
30
+ }
31
+ }
32
+ }));
33
+ }
34
+ async function update() {
35
+ if (!opts.reference)
36
+ return;
37
+ const { x, y, placement, middlewareData } = await computePosition(opts.reference, node, {
38
+ placement: opts.placement ?? 'bottom',
39
+ strategy,
40
+ middleware
41
+ });
42
+ node.style.left = `${x}px`;
43
+ node.style.top = `${y}px`;
44
+ node.setAttribute('data-placement', placement);
45
+ if (opts.arrowEl && middlewareData.arrow) {
46
+ const { x: arrowX, y: arrowY } = middlewareData.arrow;
47
+ opts.arrowEl.style.left = arrowX != null ? `${arrowX}px` : '';
48
+ opts.arrowEl.style.top = arrowY != null ? `${arrowY}px` : '';
49
+ }
50
+ opts.onComputed?.({ x, y });
51
+ }
52
+ cleanup = autoUpdate(opts.reference, node, update);
53
+ }
54
+ setup(options);
55
+ return {
56
+ update: setup,
57
+ destroy() {
58
+ cleanup?.();
59
+ }
60
+ };
61
+ };
@@ -0,0 +1,12 @@
1
+ import type { Action } from 'svelte/action';
2
+ export interface FocusTrapOptions {
3
+ enabled?: boolean;
4
+ /** Element (or a getter for one) to focus when the trap activates. Defaults to the first focusable descendant. */
5
+ initialFocus?: HTMLElement | (() => HTMLElement | null) | null;
6
+ }
7
+ /**
8
+ * Cycles Tab/Shift+Tab focus within `node` while enabled — Esc handling and
9
+ * outside-click dismissal are the `dismissable-layer` util's job, kept
10
+ * separate so a consumer can compose either without the other.
11
+ */
12
+ export declare const focusTrap: Action<HTMLElement, FocusTrapOptions | undefined>;
@@ -0,0 +1,55 @@
1
+ const FOCUSABLE_SELECTOR = [
2
+ 'a[href]',
3
+ 'button:not([disabled])',
4
+ 'input:not([disabled])',
5
+ 'select:not([disabled])',
6
+ 'textarea:not([disabled])',
7
+ '[tabindex]:not([tabindex="-1"])',
8
+ '[contenteditable="true"]'
9
+ ].join(',');
10
+ /**
11
+ * Cycles Tab/Shift+Tab focus within `node` while enabled — Esc handling and
12
+ * outside-click dismissal are the `dismissable-layer` util's job, kept
13
+ * separate so a consumer can compose either without the other.
14
+ */
15
+ export const focusTrap = (node, options) => {
16
+ let cleanup;
17
+ function getFocusable() {
18
+ return Array.from(node.querySelectorAll(FOCUSABLE_SELECTOR));
19
+ }
20
+ function handleKeydown(event) {
21
+ if (event.key !== 'Tab')
22
+ return;
23
+ const focusable = getFocusable();
24
+ if (focusable.length === 0) {
25
+ event.preventDefault();
26
+ return;
27
+ }
28
+ const first = focusable[0];
29
+ const last = focusable[focusable.length - 1];
30
+ if (event.shiftKey && document.activeElement === first) {
31
+ event.preventDefault();
32
+ last.focus();
33
+ }
34
+ else if (!event.shiftKey && document.activeElement === last) {
35
+ event.preventDefault();
36
+ first.focus();
37
+ }
38
+ }
39
+ function setup(opts) {
40
+ cleanup?.();
41
+ if (opts?.enabled === false)
42
+ return;
43
+ const target = typeof opts?.initialFocus === 'function' ? opts.initialFocus() : opts?.initialFocus;
44
+ (target ?? getFocusable()[0] ?? node).focus({ preventScroll: true });
45
+ document.addEventListener('keydown', handleKeydown);
46
+ cleanup = () => document.removeEventListener('keydown', handleKeydown);
47
+ }
48
+ setup(options);
49
+ return {
50
+ update: setup,
51
+ destroy() {
52
+ cleanup?.();
53
+ }
54
+ };
55
+ };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Derives a stable set of related DOM ids from one `$props.id()` call, so a
3
+ * component needs only one call site to hand out `aria-labelledby`,
4
+ * `aria-controls`, etc. targets without risking an SSR/hydration mismatch
5
+ * from a module-level counter.
6
+ */
7
+ export declare function createIds<const Parts extends readonly string[]>(base: string, ...parts: Parts): {
8
+ [K in Parts[number]]: string;
9
+ };
10
+ /** Composes an id from a base and dynamic segments, e.g. a tab's index. */
11
+ export declare function idFor(base: string, ...segments: (string | number)[]): string;