flowbite-svelte 1.19.1 → 1.20.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 (338) hide show
  1. package/dist/accordion/Accordion.svelte +1 -1
  2. package/dist/accordion/Accordion.svelte.d.ts +1 -1
  3. package/dist/accordion/AccordionItem.svelte +16 -2
  4. package/dist/accordion/AccordionItem.svelte.d.ts +1 -1
  5. package/dist/alert/Alert.svelte +15 -2
  6. package/dist/alert/Alert.svelte.d.ts +1 -1
  7. package/dist/avatar/Avatar.svelte +1 -1
  8. package/dist/avatar/Avatar.svelte.d.ts +1 -1
  9. package/dist/badge/Badge.svelte +19 -2
  10. package/dist/badge/Badge.svelte.d.ts +1 -1
  11. package/dist/banner/Banner.svelte +17 -2
  12. package/dist/banner/Banner.svelte.d.ts +1 -1
  13. package/dist/bottom-navigation/BottomNav.svelte +1 -1
  14. package/dist/bottom-navigation/BottomNav.svelte.d.ts +1 -1
  15. package/dist/bottom-navigation/BottomNavHeader.svelte +1 -1
  16. package/dist/bottom-navigation/BottomNavHeader.svelte.d.ts +1 -1
  17. package/dist/bottom-navigation/BottomNavHeaderItem.svelte +1 -1
  18. package/dist/bottom-navigation/BottomNavHeaderItem.svelte.d.ts +1 -1
  19. package/dist/bottom-navigation/BottomNavItem.svelte +8 -2
  20. package/dist/bottom-navigation/BottomNavItem.svelte.d.ts +1 -1
  21. package/dist/breadcrumb/Breadcrumb.svelte +1 -1
  22. package/dist/breadcrumb/Breadcrumb.svelte.d.ts +1 -1
  23. package/dist/breadcrumb/BreadcrumbItem.svelte +4 -2
  24. package/dist/breadcrumb/BreadcrumbItem.svelte.d.ts +1 -1
  25. package/dist/button-group/ButtonGroup.svelte +1 -1
  26. package/dist/button-group/ButtonGroup.svelte.d.ts +1 -1
  27. package/dist/buttons/Button.svelte +1 -1
  28. package/dist/buttons/Button.svelte.d.ts +1 -1
  29. package/dist/buttons/GradientButton.svelte +1 -1
  30. package/dist/buttons/GradientButton.svelte.d.ts +1 -1
  31. package/dist/card/Card.svelte +1 -1
  32. package/dist/card/Card.svelte.d.ts +1 -1
  33. package/dist/carousel/Carousel.svelte +34 -3
  34. package/dist/carousel/Carousel.svelte.d.ts +1 -1
  35. package/dist/carousel/CarouselIndicators.svelte +1 -1
  36. package/dist/carousel/CarouselIndicators.svelte.d.ts +1 -1
  37. package/dist/carousel/ControlButton.svelte +1 -1
  38. package/dist/carousel/ControlButton.svelte.d.ts +1 -1
  39. package/dist/carousel/Controls.svelte +1 -1
  40. package/dist/carousel/Controls.svelte.d.ts +1 -1
  41. package/dist/carousel/Slide.svelte +1 -1
  42. package/dist/carousel/Slide.svelte.d.ts +1 -1
  43. package/dist/carousel/Thumbnail.svelte +1 -1
  44. package/dist/carousel/Thumbnail.svelte.d.ts +1 -1
  45. package/dist/carousel/Thumbnails.svelte +1 -1
  46. package/dist/carousel/Thumbnails.svelte.d.ts +1 -1
  47. package/dist/clipboard/Clipboard.svelte +1 -1
  48. package/dist/clipboard/Clipboard.svelte.d.ts +1 -1
  49. package/dist/darkmode/DarkMode.svelte +1 -1
  50. package/dist/darkmode/DarkMode.svelte.d.ts +1 -1
  51. package/dist/datepicker/Datepicker.svelte +69 -6
  52. package/dist/device-mockups/Android.svelte +6 -2
  53. package/dist/device-mockups/Android.svelte.d.ts +1 -1
  54. package/dist/device-mockups/DefaultMockup.svelte +6 -2
  55. package/dist/device-mockups/DefaultMockup.svelte.d.ts +1 -1
  56. package/dist/device-mockups/Desktop.svelte +1 -1
  57. package/dist/device-mockups/Desktop.svelte.d.ts +1 -1
  58. package/dist/device-mockups/DeviceMockup.svelte +1 -1
  59. package/dist/device-mockups/DeviceMockup.svelte.d.ts +1 -1
  60. package/dist/device-mockups/Ios.svelte +6 -2
  61. package/dist/device-mockups/Ios.svelte.d.ts +1 -1
  62. package/dist/device-mockups/Laptop.svelte +6 -2
  63. package/dist/device-mockups/Laptop.svelte.d.ts +1 -1
  64. package/dist/device-mockups/Smartwatch.svelte +6 -2
  65. package/dist/device-mockups/Smartwatch.svelte.d.ts +1 -1
  66. package/dist/device-mockups/Tablet.svelte +6 -2
  67. package/dist/device-mockups/Tablet.svelte.d.ts +1 -1
  68. package/dist/dialog/Dialog.svelte +34 -3
  69. package/dist/dialog/Dialog.svelte.d.ts +1 -1
  70. package/dist/drawer/Drawer.svelte +30 -3
  71. package/dist/drawer/Drawer.svelte.d.ts +1 -1
  72. package/dist/drawer/DrawerHandle.svelte +1 -1
  73. package/dist/drawer/DrawerHandle.svelte.d.ts +1 -1
  74. package/dist/drawer/Drawerhead.svelte +1 -1
  75. package/dist/drawer/Drawerhead.svelte.d.ts +1 -1
  76. package/dist/dropdown/Dropdown.svelte +1 -1
  77. package/dist/dropdown/Dropdown.svelte.d.ts +1 -1
  78. package/dist/dropdown/DropdownDivider.svelte +1 -1
  79. package/dist/dropdown/DropdownDivider.svelte.d.ts +1 -1
  80. package/dist/dropdown/DropdownGroup.svelte +1 -1
  81. package/dist/dropdown/DropdownGroup.svelte.d.ts +1 -1
  82. package/dist/dropdown/DropdownHeader.svelte +1 -1
  83. package/dist/dropdown/DropdownHeader.svelte.d.ts +1 -1
  84. package/dist/dropdown/DropdownItem.svelte +1 -1
  85. package/dist/dropdown/DropdownItem.svelte.d.ts +1 -1
  86. package/dist/footer/Footer.svelte +1 -1
  87. package/dist/footer/Footer.svelte.d.ts +1 -1
  88. package/dist/footer/FooterBrand.svelte +1 -1
  89. package/dist/footer/FooterBrand.svelte.d.ts +1 -1
  90. package/dist/footer/FooterCopyright.svelte +1 -1
  91. package/dist/footer/FooterCopyright.svelte.d.ts +1 -1
  92. package/dist/footer/FooterIcon.svelte +1 -1
  93. package/dist/footer/FooterIcon.svelte.d.ts +1 -1
  94. package/dist/footer/FooterLink.svelte +1 -1
  95. package/dist/footer/FooterLink.svelte.d.ts +1 -1
  96. package/dist/footer/FooterLinkGroup.svelte +1 -1
  97. package/dist/footer/FooterLinkGroup.svelte.d.ts +1 -1
  98. package/dist/forms/button-toggle/ButtonToggle.svelte +10 -2
  99. package/dist/forms/button-toggle/ButtonToggle.svelte.d.ts +1 -1
  100. package/dist/forms/button-toggle/ButtonToggleGroup.svelte +14 -1
  101. package/dist/forms/button-toggle/CheckIcon.svelte +14 -2
  102. package/dist/forms/button-toggle/CheckIcon.svelte.d.ts +1 -1
  103. package/dist/forms/checkbox/Checkbox.svelte +18 -1
  104. package/dist/forms/checkbox/CheckboxButton.svelte +1 -1
  105. package/dist/forms/checkbox/CheckboxButton.svelte.d.ts +1 -1
  106. package/dist/forms/dropzone/Dropzone.svelte +1 -1
  107. package/dist/forms/dropzone/Dropzone.svelte.d.ts +1 -1
  108. package/dist/forms/fileupload/Fileupload.svelte +15 -2
  109. package/dist/forms/fileupload/Fileupload.svelte.d.ts +1 -1
  110. package/dist/forms/floating-label/FloatingLabelInput.svelte +49 -6
  111. package/dist/forms/floating-label/FloatingLabelInput.svelte.d.ts +1 -1
  112. package/dist/forms/helper/Helper.svelte +1 -1
  113. package/dist/forms/helper/Helper.svelte.d.ts +1 -1
  114. package/dist/forms/input-addon/InputAddon.svelte +13 -2
  115. package/dist/forms/input-addon/InputAddon.svelte.d.ts +1 -1
  116. package/dist/forms/input-field/Input.svelte +55 -4
  117. package/dist/forms/label/Label.svelte +1 -1
  118. package/dist/forms/label/Label.svelte.d.ts +1 -1
  119. package/dist/forms/phoneinput/PhoneInput.svelte +14 -2
  120. package/dist/forms/radio/Radio.svelte +14 -1
  121. package/dist/forms/range/Range.svelte +1 -1
  122. package/dist/forms/range/Range.svelte.d.ts +1 -1
  123. package/dist/forms/search/Search.svelte +17 -2
  124. package/dist/forms/search/Search.svelte.d.ts +1 -1
  125. package/dist/forms/select/MultiSelect.svelte +10 -1
  126. package/dist/forms/select/Select.svelte +20 -1
  127. package/dist/forms/tags/Tags.svelte +30 -2
  128. package/dist/forms/textarea/Textarea.svelte +28 -3
  129. package/dist/forms/textarea/Textarea.svelte.d.ts +1 -1
  130. package/dist/forms/textarea/theme.js +3 -1
  131. package/dist/forms/timepicker/Timepicker.svelte +144 -11
  132. package/dist/forms/timepicker/Timepicker.svelte.d.ts +1 -1
  133. package/dist/forms/toggle/Toggle.svelte +1 -1
  134. package/dist/forms/toggle/Toggle.svelte.d.ts +1 -1
  135. package/dist/gallery/Gallery.svelte +1 -1
  136. package/dist/gallery/Gallery.svelte.d.ts +1 -1
  137. package/dist/index.d.ts +1 -0
  138. package/dist/index.js +1 -0
  139. package/dist/indicator/Indicator.svelte +1 -1
  140. package/dist/indicator/Indicator.svelte.d.ts +1 -1
  141. package/dist/kanban/KanbanBoard.svelte +98 -0
  142. package/dist/kanban/KanbanBoard.svelte.d.ts +4 -0
  143. package/dist/kanban/KanbanCard.svelte +58 -0
  144. package/dist/kanban/KanbanCard.svelte.d.ts +16 -0
  145. package/dist/kanban/index.d.ts +3 -0
  146. package/dist/kanban/index.js +3 -0
  147. package/dist/kanban/theme.d.ts +108 -0
  148. package/dist/kanban/theme.js +43 -0
  149. package/dist/kbd/Kbd.svelte +1 -1
  150. package/dist/kbd/Kbd.svelte.d.ts +1 -1
  151. package/dist/list-group/Listgroup.svelte +1 -1
  152. package/dist/list-group/Listgroup.svelte.d.ts +1 -1
  153. package/dist/list-group/ListgroupItem.svelte +1 -1
  154. package/dist/list-group/ListgroupItem.svelte.d.ts +1 -1
  155. package/dist/mega-menu/MegaMenu.svelte +1 -1
  156. package/dist/mega-menu/MegaMenu.svelte.d.ts +1 -1
  157. package/dist/modal/Modal.svelte +31 -3
  158. package/dist/modal/Modal.svelte.d.ts +1 -1
  159. package/dist/navbar/Menu.svelte +1 -1
  160. package/dist/navbar/Menu.svelte.d.ts +1 -1
  161. package/dist/navbar/NavBrand.svelte +1 -1
  162. package/dist/navbar/NavBrand.svelte.d.ts +1 -1
  163. package/dist/navbar/NavContainer.svelte +1 -1
  164. package/dist/navbar/NavContainer.svelte.d.ts +1 -1
  165. package/dist/navbar/NavHamburger.svelte +1 -1
  166. package/dist/navbar/NavHamburger.svelte.d.ts +1 -1
  167. package/dist/navbar/NavLi.svelte +4 -2
  168. package/dist/navbar/NavLi.svelte.d.ts +1 -1
  169. package/dist/navbar/NavUl.svelte +15 -2
  170. package/dist/navbar/NavUl.svelte.d.ts +1 -1
  171. package/dist/navbar/Navbar.svelte +1 -1
  172. package/dist/navbar/Navbar.svelte.d.ts +1 -1
  173. package/dist/pagination/Pagination.svelte +1 -1
  174. package/dist/pagination/Pagination.svelte.d.ts +1 -1
  175. package/dist/pagination/PaginationButton.svelte +1 -1
  176. package/dist/pagination/PaginationButton.svelte.d.ts +1 -1
  177. package/dist/pagination/PaginationItem.svelte +1 -1
  178. package/dist/pagination/PaginationItem.svelte.d.ts +1 -1
  179. package/dist/pagination/PaginationNav.svelte +1 -1
  180. package/dist/pagination/PaginationNav.svelte.d.ts +1 -1
  181. package/dist/pagination/theme.js +4 -1
  182. package/dist/popover/Popover.svelte +14 -2
  183. package/dist/popover/Popover.svelte.d.ts +1 -1
  184. package/dist/progress/Progressbar.svelte +15 -2
  185. package/dist/progress/Progressbar.svelte.d.ts +1 -1
  186. package/dist/progress/Progressradial.svelte +29 -3
  187. package/dist/progress/Progressradial.svelte.d.ts +1 -1
  188. package/dist/rating/AdvancedRating.svelte +6 -2
  189. package/dist/rating/AdvancedRating.svelte.d.ts +1 -1
  190. package/dist/rating/CustomIcon.svelte +14 -2
  191. package/dist/rating/CustomIcon.svelte.d.ts +1 -1
  192. package/dist/rating/Heart.svelte +20 -3
  193. package/dist/rating/Heart.svelte.d.ts +1 -1
  194. package/dist/rating/Rating.svelte +1 -1
  195. package/dist/rating/Rating.svelte.d.ts +1 -1
  196. package/dist/rating/RatingComment.svelte +1 -1
  197. package/dist/rating/RatingComment.svelte.d.ts +1 -1
  198. package/dist/rating/Review.svelte +6 -2
  199. package/dist/rating/Review.svelte.d.ts +1 -1
  200. package/dist/rating/ScoreRating.svelte +1 -1
  201. package/dist/rating/ScoreRating.svelte.d.ts +1 -1
  202. package/dist/rating/Star.svelte +13 -2
  203. package/dist/rating/Star.svelte.d.ts +1 -1
  204. package/dist/rating/Thumbup.svelte +20 -3
  205. package/dist/rating/Thumbup.svelte.d.ts +1 -1
  206. package/dist/sidebar/Sidebar.svelte +31 -3
  207. package/dist/sidebar/Sidebar.svelte.d.ts +1 -1
  208. package/dist/sidebar/SidebarBrand.svelte +1 -1
  209. package/dist/sidebar/SidebarBrand.svelte.d.ts +1 -1
  210. package/dist/sidebar/SidebarButton.svelte +6 -2
  211. package/dist/sidebar/SidebarButton.svelte.d.ts +1 -1
  212. package/dist/sidebar/SidebarCta.svelte +1 -1
  213. package/dist/sidebar/SidebarCta.svelte.d.ts +1 -1
  214. package/dist/sidebar/SidebarDropdownWrapper.svelte +19 -2
  215. package/dist/sidebar/SidebarDropdownWrapper.svelte.d.ts +1 -1
  216. package/dist/sidebar/SidebarGroup.svelte +1 -1
  217. package/dist/sidebar/SidebarGroup.svelte.d.ts +1 -1
  218. package/dist/sidebar/SidebarItem.svelte +1 -1
  219. package/dist/sidebar/SidebarItem.svelte.d.ts +1 -1
  220. package/dist/skeleton/CardPlaceholder.svelte +9 -3
  221. package/dist/skeleton/CardPlaceholder.svelte.d.ts +1 -1
  222. package/dist/skeleton/ImagePlaceholder.svelte +4 -2
  223. package/dist/skeleton/ImagePlaceholder.svelte.d.ts +1 -1
  224. package/dist/skeleton/ListPlaceholder.svelte +1 -1
  225. package/dist/skeleton/ListPlaceholder.svelte.d.ts +1 -1
  226. package/dist/skeleton/Skeleton.svelte +1 -1
  227. package/dist/skeleton/Skeleton.svelte.d.ts +1 -1
  228. package/dist/skeleton/TestimonialPlaceholder.svelte +6 -2
  229. package/dist/skeleton/TestimonialPlaceholder.svelte.d.ts +1 -1
  230. package/dist/skeleton/TextPlaceholder.svelte +1 -1
  231. package/dist/skeleton/TextPlaceholder.svelte.d.ts +1 -1
  232. package/dist/skeleton/VideoPlaceholder.svelte +4 -2
  233. package/dist/skeleton/VideoPlaceholder.svelte.d.ts +1 -1
  234. package/dist/skeleton/WidgetPlaceholder.svelte +1 -1
  235. package/dist/skeleton/WidgetPlaceholder.svelte.d.ts +1 -1
  236. package/dist/speed-dial/SpeedDial.svelte +14 -2
  237. package/dist/speed-dial/SpeedDial.svelte.d.ts +1 -1
  238. package/dist/speed-dial/SpeedDialButton.svelte +13 -2
  239. package/dist/speed-dial/SpeedDialButton.svelte.d.ts +1 -1
  240. package/dist/speed-dial/SpeedDialTrigger.svelte +1 -1
  241. package/dist/speed-dial/SpeedDialTrigger.svelte.d.ts +1 -1
  242. package/dist/spinner/Spinner.svelte +9 -3
  243. package/dist/spinner/Spinner.svelte.d.ts +1 -1
  244. package/dist/step-indicator/StepIndicator.svelte +14 -2
  245. package/dist/step-indicator/StepIndicator.svelte.d.ts +1 -1
  246. package/dist/stepper/BreadcrumbStepper.svelte +1 -1
  247. package/dist/stepper/BreadcrumbStepper.svelte.d.ts +1 -1
  248. package/dist/stepper/DetailedStepper.svelte +1 -1
  249. package/dist/stepper/DetailedStepper.svelte.d.ts +1 -1
  250. package/dist/stepper/ProgressStepper.svelte +4 -2
  251. package/dist/stepper/ProgressStepper.svelte.d.ts +1 -1
  252. package/dist/stepper/Stepper.svelte +1 -1
  253. package/dist/stepper/Stepper.svelte.d.ts +1 -1
  254. package/dist/stepper/TimelineStepper.svelte +4 -2
  255. package/dist/stepper/TimelineStepper.svelte.d.ts +1 -1
  256. package/dist/stepper/VerticalStepper.svelte +1 -1
  257. package/dist/stepper/VerticalStepper.svelte.d.ts +1 -1
  258. package/dist/table/Table.svelte +1 -1
  259. package/dist/table/Table.svelte.d.ts +1 -1
  260. package/dist/table/TableBody.svelte +1 -1
  261. package/dist/table/TableBody.svelte.d.ts +1 -1
  262. package/dist/table/TableBodyCell.svelte +1 -1
  263. package/dist/table/TableBodyCell.svelte.d.ts +1 -1
  264. package/dist/table/TableBodyRow.svelte +1 -1
  265. package/dist/table/TableBodyRow.svelte.d.ts +1 -1
  266. package/dist/table/TableHead.svelte +1 -1
  267. package/dist/table/TableHead.svelte.d.ts +1 -1
  268. package/dist/table/TableHeadCell.svelte +1 -1
  269. package/dist/table/TableHeadCell.svelte.d.ts +1 -1
  270. package/dist/table/TableSearch.svelte +27 -3
  271. package/dist/table/TableSearch.svelte.d.ts +1 -1
  272. package/dist/tabs/TabItem.svelte +1 -1
  273. package/dist/tabs/TabItem.svelte.d.ts +1 -1
  274. package/dist/tabs/Tabs.svelte +1 -1
  275. package/dist/tabs/Tabs.svelte.d.ts +1 -1
  276. package/dist/theme/themeUtils.js +3 -1
  277. package/dist/theme/themes.d.ts +1 -0
  278. package/dist/theme/themes.js +1 -0
  279. package/dist/timeline/Activity.svelte +1 -1
  280. package/dist/timeline/Activity.svelte.d.ts +1 -1
  281. package/dist/timeline/ActivityItem.svelte +1 -1
  282. package/dist/timeline/ActivityItem.svelte.d.ts +1 -1
  283. package/dist/timeline/Group.svelte +1 -1
  284. package/dist/timeline/Group.svelte.d.ts +1 -1
  285. package/dist/timeline/GroupItem.svelte +11 -3
  286. package/dist/timeline/GroupItem.svelte.d.ts +1 -1
  287. package/dist/timeline/Timeline.svelte +1 -1
  288. package/dist/timeline/Timeline.svelte.d.ts +1 -1
  289. package/dist/timeline/TimelineItem.svelte +25 -3
  290. package/dist/timeline/TimelineItem.svelte.d.ts +1 -1
  291. package/dist/toast/Toast.svelte +17 -2
  292. package/dist/toast/Toast.svelte.d.ts +1 -1
  293. package/dist/toolbar/Toolbar.svelte +1 -1
  294. package/dist/toolbar/Toolbar.svelte.d.ts +1 -1
  295. package/dist/toolbar/ToolbarButton.svelte +1 -1
  296. package/dist/toolbar/ToolbarButton.svelte.d.ts +1 -1
  297. package/dist/toolbar/ToolbarGroup.svelte +1 -1
  298. package/dist/toolbar/ToolbarGroup.svelte.d.ts +1 -1
  299. package/dist/tooltip/Tooltip.svelte +13 -2
  300. package/dist/tooltip/Tooltip.svelte.d.ts +1 -1
  301. package/dist/types.d.ts +26 -0
  302. package/dist/typography/a/A.svelte +1 -1
  303. package/dist/typography/a/A.svelte.d.ts +1 -1
  304. package/dist/typography/blockquote/Blockquote.svelte +1 -1
  305. package/dist/typography/blockquote/Blockquote.svelte.d.ts +1 -1
  306. package/dist/typography/descriptionlist/DescriptionList.svelte +1 -1
  307. package/dist/typography/descriptionlist/DescriptionList.svelte.d.ts +1 -1
  308. package/dist/typography/heading/Heading.svelte +1 -1
  309. package/dist/typography/heading/Heading.svelte.d.ts +1 -1
  310. package/dist/typography/img/EnhancedImg.svelte +1 -1
  311. package/dist/typography/img/EnhancedImg.svelte.d.ts +1 -1
  312. package/dist/typography/img/Img.svelte +1 -1
  313. package/dist/typography/img/Img.svelte.d.ts +1 -1
  314. package/dist/typography/layout/Layout.svelte +1 -1
  315. package/dist/typography/layout/Layout.svelte.d.ts +1 -1
  316. package/dist/typography/list/Li.svelte +1 -1
  317. package/dist/typography/list/Li.svelte.d.ts +1 -1
  318. package/dist/typography/list/List.svelte +1 -1
  319. package/dist/typography/list/List.svelte.d.ts +1 -1
  320. package/dist/typography/mark/Mark.svelte +1 -1
  321. package/dist/typography/mark/Mark.svelte.d.ts +1 -1
  322. package/dist/typography/paragraph/P.svelte +15 -2
  323. package/dist/typography/paragraph/P.svelte.d.ts +1 -1
  324. package/dist/typography/secondary/Secondary.svelte +1 -1
  325. package/dist/typography/secondary/Secondary.svelte.d.ts +1 -1
  326. package/dist/typography/span/Span.svelte +1 -1
  327. package/dist/typography/span/Span.svelte.d.ts +1 -1
  328. package/dist/utils/Arrow.svelte +1 -1
  329. package/dist/utils/Arrow.svelte.d.ts +1 -1
  330. package/dist/utils/CloseButton.svelte +11 -3
  331. package/dist/utils/CloseButton.svelte.d.ts +1 -1
  332. package/dist/utils/Popper.svelte +39 -3
  333. package/dist/utils/Popper.svelte.d.ts +1 -1
  334. package/dist/video/Video.svelte +1 -1
  335. package/dist/video/Video.svelte.d.ts +1 -1
  336. package/dist/virtuallist/VirtualList.svelte +9 -2
  337. package/dist/virtuallist/VirtualList.svelte.d.ts +1 -1
  338. package/package.json +12 -4
@@ -7,7 +7,20 @@
7
7
  import { getTheme, warnThemeDeprecation } from "../../theme/themeUtils";
8
8
 
9
9
  // remove inputClass in next major version
10
- let { children, "aria-describedby": ariaDescribedby, inline = false, labelClass, color = "primary", custom = false, group = $bindable<T>(), value = $bindable<T>(), class: className, inputClass, classes, ...restProps }: RadioProps<T> = $props();
10
+ let {
11
+ children,
12
+ "aria-describedby": ariaDescribedby,
13
+ inline = false,
14
+ labelClass,
15
+ color = "primary",
16
+ custom = false,
17
+ group = $bindable<T>(),
18
+ value = $bindable<T>(),
19
+ class: className,
20
+ inputClass,
21
+ classes,
22
+ ...restProps
23
+ }: RadioProps<T> = $props();
11
24
 
12
25
  warnThemeDeprecation("Radio", { inputClass, labelClass }, { inputClass: "class", labelClass: "label" });
13
26
  const styling = $derived(classes ?? { label: labelClass });
@@ -17,7 +17,7 @@
17
17
  @component
18
18
  [Go to docs](https://flowbite-svelte.com/)
19
19
  ## Type
20
- [RangeProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L832)
20
+ [RangeProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L833)
21
21
  ## Props
22
22
  @prop value = $bindable()
23
23
  @prop appearance = "none"
@@ -2,7 +2,7 @@ import type { RangeProps } from "../..";
2
2
  /**
3
3
  * [Go to docs](https://flowbite-svelte.com/)
4
4
  * ## Type
5
- * [RangeProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L832)
5
+ * [RangeProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L833)
6
6
  * ## Props
7
7
  * @prop value = $bindable()
8
8
  * @prop appearance = "none"
@@ -6,7 +6,22 @@
6
6
  import { getTheme, warnThemeDeprecation } from "../../theme/themeUtils";
7
7
  import { createDismissableContext } from "../../utils/dismissable";
8
8
 
9
- let { children, inputClass, size, placeholder = "Search", value = $bindable(), elementRef = $bindable(), clearable = false, clearableSvgClass, clearableColor = "none", clearableClass, clearableOnClick, class: className, classes, ...restProps }: SearchProps = $props();
9
+ let {
10
+ children,
11
+ inputClass,
12
+ size,
13
+ placeholder = "Search",
14
+ value = $bindable(),
15
+ elementRef = $bindable(),
16
+ clearable = false,
17
+ clearableSvgClass,
18
+ clearableColor = "none",
19
+ clearableClass,
20
+ clearableOnClick,
21
+ class: className,
22
+ classes,
23
+ ...restProps
24
+ }: SearchProps = $props();
10
25
 
11
26
  warnThemeDeprecation("Search", { inputClass, clearableSvgClass, clearableClass }, { inputClass: "input", clearableSvgClass: "svg", clearableClass: "close" });
12
27
  const styling = $derived(classes ?? { input: inputClass, svg: clearableSvgClass, close: clearableClass });
@@ -47,7 +62,7 @@
47
62
  @component
48
63
  [Go to docs](https://flowbite-svelte.com/)
49
64
  ## Type
50
- [SearchProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L838)
65
+ [SearchProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L839)
51
66
  ## Props
52
67
  @prop children
53
68
  @prop inputClass
@@ -2,7 +2,7 @@ import type { SearchProps } from "../..";
2
2
  /**
3
3
  * [Go to docs](https://flowbite-svelte.com/)
4
4
  * ## Type
5
- * [SearchProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L838)
5
+ * [SearchProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L839)
6
6
  * ## Props
7
7
  * @prop children
8
8
  * @prop inputClass
@@ -203,7 +203,16 @@
203
203
  {/each}
204
204
  </select>
205
205
 
206
- <div bind:this={multiSelectContainer} {...restProps} onclick={toggleDropdown} onblur={handleBlur} onkeydown={handleKeyDown} tabindex="0" role="listbox" class={base({ size, class: clsx(theme?.base, className) })}>
206
+ <div
207
+ bind:this={multiSelectContainer}
208
+ {...restProps}
209
+ onclick={toggleDropdown}
210
+ onblur={handleBlur}
211
+ onkeydown={handleKeyDown}
212
+ tabindex="0"
213
+ role="listbox"
214
+ class={base({ size, class: clsx(theme?.base, className) })}
215
+ >
207
216
  {#if !selectItems.length}
208
217
  <span class={placeholderSpan({ class: clsx(classes?.placeholder) })}>{placeholder}</span>
209
218
  {/if}
@@ -7,7 +7,26 @@
7
7
  import { createDismissableContext } from "../../utils/dismissable";
8
8
  import { getContext } from "svelte";
9
9
 
10
- let { children, items, value = $bindable(), elementRef = $bindable(), underline, size = "md", disabled, placeholder = "Choose option ...", clearable, clearableColor = "none", clearableOnClick, onClear, clearableSvgClass, clearableClass, selectClass, class: className, classes, ...restProps }: SelectProps<T> = $props();
10
+ let {
11
+ children,
12
+ items,
13
+ value = $bindable(),
14
+ elementRef = $bindable(),
15
+ underline,
16
+ size = "md",
17
+ disabled,
18
+ placeholder = "Choose option ...",
19
+ clearable,
20
+ clearableColor = "none",
21
+ clearableOnClick,
22
+ onClear,
23
+ clearableSvgClass,
24
+ clearableClass,
25
+ selectClass,
26
+ class: className,
27
+ classes,
28
+ ...restProps
29
+ }: SelectProps<T> = $props();
11
30
 
12
31
  // clearableSvgClass, clearableClass, selectClass
13
32
  warnThemeDeprecation("Select", { selectClass, clearableSvgClass, clearableClass }, { selectClass: "select", clearableSvgClass: "svg", clearableClass: "close" });
@@ -8,7 +8,25 @@
8
8
  import { computePosition, offset, flip, shift, autoUpdate } from "@floating-ui/dom";
9
9
  import { onDestroy } from "svelte";
10
10
 
11
- let { value = $bindable([]), placeholder = "Enter tags", class: className, classes, itemClass, spanClass, closeClass, inputClass, closeBtnSize = "xs", unique = false, availableTags = [], showHelper = false, showAvailableTags = false, allowNewTags = true, inputProps = {}, disabled, ...restProps }: TagsProps = $props();
11
+ let {
12
+ value = $bindable([]),
13
+ placeholder = "Enter tags",
14
+ class: className,
15
+ classes,
16
+ itemClass,
17
+ spanClass,
18
+ closeClass,
19
+ inputClass,
20
+ closeBtnSize = "xs",
21
+ unique = false,
22
+ availableTags = [],
23
+ showHelper = false,
24
+ showAvailableTags = false,
25
+ allowNewTags = true,
26
+ inputProps = {},
27
+ disabled,
28
+ ...restProps
29
+ }: TagsProps = $props();
12
30
 
13
31
  warnThemeDeprecation("Tags", { itemClass, spanClass, closeClass, inputClass }, { itemClass: "tag", spanClass: "span", closeClass: "close", inputClass: "input" });
14
32
  const styling = $derived(
@@ -160,7 +178,17 @@
160
178
  </div>
161
179
  {/each}
162
180
  <div class="relative w-full" bind:this={inputContainer}>
163
- <input {...inputProps} {disabled} bind:this={inputElement} onkeydown={handleKeys} bind:value={contents} placeholder={value.length === 0 ? placeholder : ""} type="text" autocomplete="off" class={inputCls({ class: clsx(styling.input) })} />
181
+ <input
182
+ {...inputProps}
183
+ {disabled}
184
+ bind:this={inputElement}
185
+ onkeydown={handleKeys}
186
+ bind:value={contents}
187
+ placeholder={value.length === 0 ? placeholder : ""}
188
+ type="text"
189
+ autocomplete="off"
190
+ class={inputCls({ class: clsx(styling.input) })}
191
+ />
164
192
  {#if availableTags.length > 0 && contents.trim() !== ""}
165
193
  {@const filteredSuggestions = availableTags.filter((tag) => tag.toLowerCase().includes(contents.trim().toLowerCase()) && (!unique || !value.some((t) => t.toLowerCase() === tag.toLowerCase())))}
166
194
  {#if filteredSuggestions.length > 0}
@@ -6,9 +6,34 @@
6
6
  import { getTheme, warnThemeDeprecation } from "../../theme/themeUtils";
7
7
  import { createDismissableContext } from "../../utils/dismissable";
8
8
 
9
- let { header, footer, addon, value = $bindable(), elementRef = $bindable(), divClass, innerClass, headerClass, footerClass, addonClass, disabled, class: className, classes, clearable, clearableSvgClass, clearableColor = "none", clearableClass, clearableOnClick, textareaClass, ...restProps }: TextareaProps = $props();
9
+ let {
10
+ header,
11
+ footer,
12
+ addon,
13
+ value = $bindable(),
14
+ elementRef = $bindable(),
15
+ divClass,
16
+ innerClass,
17
+ headerClass,
18
+ footerClass,
19
+ addonClass,
20
+ disabled,
21
+ class: className,
22
+ classes,
23
+ clearable,
24
+ clearableSvgClass,
25
+ clearableColor = "none",
26
+ clearableClass,
27
+ clearableOnClick,
28
+ textareaClass,
29
+ ...restProps
30
+ }: TextareaProps = $props();
10
31
 
11
- warnThemeDeprecation("Textarea", { divClass, innerClass, headerClass, footerClass, addonClass, textareaClass, clearableClass, clearableSvgClass }, { divClass: "div", innerClass: "inner", headerClass: "header", footerClass: "footer", addonClass: "addon", textareaClass: "class", clearableClass: "close", clearableSvgClass: "svg" });
32
+ warnThemeDeprecation(
33
+ "Textarea",
34
+ { divClass, innerClass, headerClass, footerClass, addonClass, textareaClass, clearableClass, clearableSvgClass },
35
+ { divClass: "div", innerClass: "inner", headerClass: "header", footerClass: "footer", addonClass: "addon", textareaClass: "class", clearableClass: "close", clearableSvgClass: "svg" }
36
+ );
12
37
  const styling = $derived(
13
38
  classes ?? {
14
39
  div: divClass,
@@ -76,7 +101,7 @@
76
101
  @component
77
102
  [Go to docs](https://flowbite-svelte.com/)
78
103
  ## Type
79
- [TextareaProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L947)
104
+ [TextareaProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L948)
80
105
  ## Props
81
106
  @prop header
82
107
  @prop footer
@@ -2,7 +2,7 @@ import type { TextareaProps } from "../..";
2
2
  /**
3
3
  * [Go to docs](https://flowbite-svelte.com/)
4
4
  * ## Type
5
- * [TextareaProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L947)
5
+ * [TextareaProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L948)
6
6
  * ## Props
7
7
  * @prop header
8
8
  * @prop footer
@@ -13,7 +13,9 @@ export const textarea = tv({
13
13
  },
14
14
  variants: {
15
15
  wrapped: {
16
- false: { wrapper: "p-2.5 text-sm focus:outline-hidden focus:ring-primary-500 border-gray-300 focus:border-primary-500 dark:focus:ring-primary-500 dark:focus:border-primary-500 disabled:cursor-not-allowed disabled:opacity-50" }
16
+ false: {
17
+ wrapper: "p-2.5 text-sm focus:outline-hidden focus:ring-primary-500 border-gray-300 focus:border-primary-500 dark:focus:ring-primary-500 dark:focus:border-primary-500 disabled:cursor-not-allowed disabled:opacity-50"
18
+ }
17
19
  },
18
20
  hasHeader: {
19
21
  true: {
@@ -13,7 +13,32 @@
13
13
  import { parse, isValid, isBefore, isAfter } from "date-fns";
14
14
  import { getTheme } from "../../theme/themeUtils";
15
15
 
16
- let { id = "time", endId = "end-time", value = $bindable("00:00"), endValue = $bindable("00:00"), min = "", max = "", required = true, disabled = false, inputColor, buttonColor = "primary", Icon, iconClass = "h-5 w-5 text-gray-500 dark:text-gray-400", type = "default", optionLabel = "Options", options = [], size = "md", divClass, inputClass, selectClass, timerangeLabel = "Choose time range", timerangeButtonLabel = "Save time", timeIntervals = [], columns = 2, onselect }: TimepickerProps = $props();
16
+ let {
17
+ id = "time",
18
+ endId = "end-time",
19
+ value = $bindable("00:00"),
20
+ endValue = $bindable("00:00"),
21
+ min = "",
22
+ max = "",
23
+ required = true,
24
+ disabled = false,
25
+ inputColor,
26
+ buttonColor = "primary",
27
+ Icon,
28
+ iconClass = "h-5 w-5 text-gray-500 dark:text-gray-400",
29
+ type = "default",
30
+ optionLabel = "Options",
31
+ options = [],
32
+ size = "md",
33
+ divClass,
34
+ inputClass,
35
+ selectClass,
36
+ timerangeLabel = "Choose time range",
37
+ timerangeButtonLabel = "Save time",
38
+ timeIntervals = [],
39
+ columns = 2,
40
+ onselect
41
+ }: TimepickerProps = $props();
17
42
 
18
43
  const theme = getTheme("timepicker");
19
44
 
@@ -162,7 +187,19 @@
162
187
  {#if type !== "inline-buttons"}
163
188
  <ButtonGroup {size} class={styles.buttonGroup({ class: clsx(theme?.buttonGroup, divClass) })}>
164
189
  {#if type === "default"}
165
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={styles.input({ class: clsx(styles.inputWithIcon(), theme?.input, inputClass) })} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
190
+ <Input
191
+ {id}
192
+ color={inputColor}
193
+ type="time"
194
+ {min}
195
+ {max}
196
+ {required}
197
+ {disabled}
198
+ class={styles.input({ class: clsx(styles.inputWithIcon(), theme?.input, inputClass) })}
199
+ bind:value
200
+ oninput={(e) => handleTimeChange(e)}
201
+ onchange={(e) => handleTimeChange(e)}
202
+ />
166
203
  <div class={styles.iconWrapper({ class: clsx(theme?.iconWrapper) })}>
167
204
  {#if Icon}
168
205
  <Icon class={iconClass} />
@@ -173,10 +210,34 @@
173
210
  {/if}
174
211
  </div>
175
212
  {:else if type === "select"}
176
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={styles.input({ class: clsx(theme?.input, inputClass) })} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
213
+ <Input
214
+ {id}
215
+ color={inputColor}
216
+ type="time"
217
+ {min}
218
+ {max}
219
+ {required}
220
+ {disabled}
221
+ class={styles.input({ class: clsx(theme?.input, inputClass) })}
222
+ bind:value
223
+ oninput={(e) => handleTimeChange(e)}
224
+ onchange={(e) => handleTimeChange(e)}
225
+ />
177
226
  <Select selectClass={styles.select({ class: clsx(theme?.select, selectClass) })} onchange={handleOptionSelect} items={options} value={selectedOption} />
178
227
  {:else if type === "dropdown"}
179
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={styles.input({ class: clsx(theme?.input, inputClass) })} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
228
+ <Input
229
+ {id}
230
+ color={inputColor}
231
+ type="time"
232
+ {min}
233
+ {max}
234
+ {required}
235
+ {disabled}
236
+ class={styles.input({ class: clsx(theme?.input, inputClass) })}
237
+ bind:value
238
+ oninput={(e) => handleTimeChange(e)}
239
+ onchange={(e) => handleTimeChange(e)}
240
+ />
180
241
  <Button color={buttonColor} class={styles.button({ class: clsx(theme?.button) })}>
181
242
  {optionLabel}
182
243
  <svg class={styles.buttonIcon({ class: clsx(theme?.buttonIcon) })} aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
@@ -192,7 +253,19 @@
192
253
  </Dropdown>
193
254
  {:else if type === "range"}
194
255
  <div class={styles.rangeInputWrapper({ class: clsx(theme?.rangeInputWrapper) })}>
195
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={styles.input({ class: clsx(theme?.rangeInput, styles.rangeInput(), inputClass) })} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
256
+ <Input
257
+ {id}
258
+ color={inputColor}
259
+ type="time"
260
+ {min}
261
+ {max}
262
+ {required}
263
+ {disabled}
264
+ class={styles.input({ class: clsx(theme?.rangeInput, styles.rangeInput(), inputClass) })}
265
+ bind:value
266
+ oninput={(e) => handleTimeChange(e)}
267
+ onchange={(e) => handleTimeChange(e)}
268
+ />
196
269
  <button type="button" class={styles.rangeButton({ class: clsx(theme?.rangeButton) })} onclick={() => document.getElementById(id)?.click()} aria-label="Open time picker">
197
270
  {#if Icon}
198
271
  <Icon class={iconClass} />
@@ -205,7 +278,19 @@
205
278
  </div>
206
279
  <span class={styles.rangeSeparator({ class: clsx(theme?.rangeSeparator) })}>-</span>
207
280
  <div class={styles.rangeInputWrapper({ class: clsx(theme?.rangeInputWrapper) })}>
208
- <Input id={endId} color={inputColor} type="time" {min} {max} {required} {disabled} class={styles.input({ class: clsx(styles.rangeInput(), theme?.rangeInput, inputClass) })} bind:value={endValue} oninput={(e) => handleTimeChange(e, true)} onchange={(e) => handleTimeChange(e, true)} />
281
+ <Input
282
+ id={endId}
283
+ color={inputColor}
284
+ type="time"
285
+ {min}
286
+ {max}
287
+ {required}
288
+ {disabled}
289
+ class={styles.input({ class: clsx(styles.rangeInput(), theme?.rangeInput, inputClass) })}
290
+ bind:value={endValue}
291
+ oninput={(e) => handleTimeChange(e, true)}
292
+ onchange={(e) => handleTimeChange(e, true)}
293
+ />
209
294
  <button type="button" class={styles.rangeButton({ class: clsx(theme?.rangeButton) })} onclick={() => document.getElementById(endId)?.click()} aria-label="Open end time picker">
210
295
  {#if Icon}
211
296
  <Icon class={iconClass} />
@@ -228,11 +313,35 @@
228
313
  <div class={styles.dropdownTimeRow({ class: clsx(theme?.dropdownTimeRow) })}>
229
314
  <div class={styles.dropdownTimeCol({ class: clsx(theme?.dropdownTimeCol) })}>
230
315
  <Label for={id}>Start time:</Label>
231
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={styles.dropdownTimeInput({ class: clsx(theme?.dropdownTimeInput, inputClass) })} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
316
+ <Input
317
+ {id}
318
+ color={inputColor}
319
+ type="time"
320
+ {min}
321
+ {max}
322
+ {required}
323
+ {disabled}
324
+ class={styles.dropdownTimeInput({ class: clsx(theme?.dropdownTimeInput, inputClass) })}
325
+ bind:value
326
+ oninput={(e) => handleTimeChange(e)}
327
+ onchange={(e) => handleTimeChange(e)}
328
+ />
232
329
  </div>
233
330
  <div class={styles.dropdownTimeCol({ class: clsx(theme?.dropdownTimeCol) })}>
234
331
  <Label for={endId}>End time:</Label>
235
- <Input id={endId} color={inputColor} type="time" {min} {max} {required} {disabled} class={styles.dropdownTimeInput({ class: clsx(theme?.dropdownTimeInput, inputClass) })} bind:value={endValue} oninput={(e) => handleTimeChange(e, true)} onchange={(e) => handleTimeChange(e, true)} />
332
+ <Input
333
+ id={endId}
334
+ color={inputColor}
335
+ type="time"
336
+ {min}
337
+ {max}
338
+ {required}
339
+ {disabled}
340
+ class={styles.dropdownTimeInput({ class: clsx(theme?.dropdownTimeInput, inputClass) })}
341
+ bind:value={endValue}
342
+ oninput={(e) => handleTimeChange(e, true)}
343
+ onchange={(e) => handleTimeChange(e, true)}
344
+ />
236
345
  </div>
237
346
  </div>
238
347
  <Button color={buttonColor} class={styles.dropdownButton({ class: clsx(theme?.dropdownButton) })} onclick={applyTimerange}>
@@ -249,11 +358,35 @@
249
358
  <div class={styles.toggleTimeRow({ class: clsx(theme?.toggleTimeRow) })}>
250
359
  <div class={styles.toggleTimeCol({ class: clsx(theme?.toggleTimeCol) })}>
251
360
  <Label for={id}>Start time:</Label>
252
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={styles.toggleTimeInput({ class: clsx(theme?.toggleTimeInput, inputClass) })} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
361
+ <Input
362
+ {id}
363
+ color={inputColor}
364
+ type="time"
365
+ {min}
366
+ {max}
367
+ {required}
368
+ {disabled}
369
+ class={styles.toggleTimeInput({ class: clsx(theme?.toggleTimeInput, inputClass) })}
370
+ bind:value
371
+ oninput={(e) => handleTimeChange(e)}
372
+ onchange={(e) => handleTimeChange(e)}
373
+ />
253
374
  </div>
254
375
  <div class={styles.toggleTimeCol({ class: clsx(theme?.toggleTimeCol) })}>
255
376
  <Label for={endId}>End time:</Label>
256
- <Input id={endId} color={inputColor} type="time" {min} {max} {required} {disabled} class={styles.toggleTimeInput({ class: clsx(theme?.toggleTimeInput, inputClass) })} bind:value={endValue} oninput={(e) => handleTimeChange(e, true)} onchange={(e) => handleTimeChange(e, true)} />
377
+ <Input
378
+ id={endId}
379
+ color={inputColor}
380
+ type="time"
381
+ {min}
382
+ {max}
383
+ {required}
384
+ {disabled}
385
+ class={styles.toggleTimeInput({ class: clsx(theme?.toggleTimeInput, inputClass) })}
386
+ bind:value={endValue}
387
+ oninput={(e) => handleTimeChange(e, true)}
388
+ onchange={(e) => handleTimeChange(e, true)}
389
+ />
257
390
  </div>
258
391
  </div>
259
392
  {/if}
@@ -274,7 +407,7 @@
274
407
  @component
275
408
  [Go to docs](https://flowbite-svelte.com/)
276
409
  ## Type
277
- [TimepickerProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L918)
410
+ [TimepickerProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L919)
278
411
  ## Props
279
412
  @prop id = "time"
280
413
  @prop endId = "end-time"
@@ -2,7 +2,7 @@ import type { TimepickerProps } from "../..";
2
2
  /**
3
3
  * [Go to docs](https://flowbite-svelte.com/)
4
4
  * ## Type
5
- * [TimepickerProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L918)
5
+ * [TimepickerProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L919)
6
6
  * ## Props
7
7
  * @prop id = "time"
8
8
  * @prop endId = "end-time"
@@ -30,7 +30,7 @@
30
30
  @component
31
31
  [Go to docs](https://flowbite-svelte.com/)
32
32
  ## Type
33
- [ToggleProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L969)
33
+ [ToggleProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L970)
34
34
  ## Props
35
35
  @prop children
36
36
  @prop size = "default"
@@ -2,7 +2,7 @@ import type { ToggleProps } from "../..";
2
2
  /**
3
3
  * [Go to docs](https://flowbite-svelte.com/)
4
4
  * ## Type
5
- * [ToggleProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L969)
5
+ * [ToggleProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L970)
6
6
  * ## Props
7
7
  * @prop children
8
8
  * @prop size = "default"
@@ -42,7 +42,7 @@
42
42
  @component
43
43
  [Go to docs](https://flowbite-svelte.com/)
44
44
  ## Type
45
- [GalleryProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L986)
45
+ [GalleryProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L987)
46
46
  ## Props
47
47
  @prop children
48
48
  @prop figure
@@ -2,7 +2,7 @@ import type { GalleryProps } from "..";
2
2
  /**
3
3
  * [Go to docs](https://flowbite-svelte.com/)
4
4
  * ## Type
5
- * [GalleryProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L986)
5
+ * [GalleryProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L987)
6
6
  * ## Props
7
7
  * @prop children
8
8
  * @prop figure
package/dist/index.d.ts CHANGED
@@ -79,3 +79,4 @@ export * from "./video";
79
79
  export * from "./utils";
80
80
  export * from "./types";
81
81
  export * from "./virtuallist";
82
+ export * from "./kanban";
package/dist/index.js CHANGED
@@ -85,3 +85,4 @@ export * from "./utils";
85
85
  export * from "./types";
86
86
  // extend
87
87
  export * from "./virtuallist";
88
+ export * from "./kanban";
@@ -33,7 +33,7 @@
33
33
  @component
34
34
  [Go to docs](https://flowbite-svelte.com/)
35
35
  ## Type
36
- [IndicatorProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L997)
36
+ [IndicatorProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L998)
37
37
  ## Props
38
38
  @prop children
39
39
  @prop color = "primary"
@@ -2,7 +2,7 @@ import type { IndicatorProps } from "..";
2
2
  /**
3
3
  * [Go to docs](https://flowbite-svelte.com/)
4
4
  * ## Type
5
- * [IndicatorProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L997)
5
+ * [IndicatorProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L998)
6
6
  * ## Props
7
7
  * @prop children
8
8
  * @prop color = "primary"
@@ -0,0 +1,98 @@
1
+ <script lang="ts">
2
+ import type { KanbanBoardProps, KanbanCardType, KanbanColumnType } from "../types";
3
+ import clsx from "clsx";
4
+ import { kanbanBoard } from "./theme";
5
+ import { getTheme } from "../theme/themeUtils";
6
+ import KanbanCard from "./KanbanCard.svelte";
7
+
8
+ let {
9
+ columns = $bindable([]),
10
+ onMove = (_card: KanbanCardType, _from: KanbanColumnType, _to: KanbanColumnType) => {},
11
+ onAddCard = (_col: KanbanColumnType) => {},
12
+ class: className,
13
+ classes,
14
+ ...restProps
15
+ }: KanbanBoardProps = $props();
16
+
17
+ const theme = getTheme("kanbanBoard");
18
+
19
+ // Changed from KanbanCard to KanbanCardType
20
+ let draggedCard = $state<KanbanCardType | null>(null);
21
+ let sourceColumnId = $state<string | number | null>(null);
22
+ let dragOverColumnId = $state<string | number | null>(null);
23
+
24
+ const styles = kanbanBoard();
25
+
26
+ // Changed parameter type from KanbanCard to KanbanCardType
27
+ function handleDragStart(card: KanbanCardType, colId: string | number) {
28
+ draggedCard = card;
29
+ sourceColumnId = colId;
30
+ }
31
+
32
+ function handleDragOver(e: DragEvent, colId: string | number) {
33
+ e.preventDefault();
34
+ dragOverColumnId = colId;
35
+ }
36
+
37
+ function handleDragLeave(e: DragEvent) {
38
+ const currentTarget = e.currentTarget as HTMLElement;
39
+ const relatedTarget = e.relatedTarget as Node | null;
40
+ if (!relatedTarget || !currentTarget.contains(relatedTarget)) {
41
+ dragOverColumnId = null;
42
+ }
43
+ }
44
+
45
+ function handleDrop(e: DragEvent, targetColId: string | number) {
46
+ e.preventDefault();
47
+ dragOverColumnId = null;
48
+
49
+ if (draggedCard === null || sourceColumnId === null) return;
50
+ if (sourceColumnId === targetColId) {
51
+ draggedCard = null;
52
+ sourceColumnId = null;
53
+ return;
54
+ }
55
+
56
+ const fromCol = columns.find((c) => c.id === sourceColumnId);
57
+ const toCol = columns.find((c) => c.id === targetColId);
58
+ if (!fromCol || !toCol) return;
59
+
60
+ fromCol.cards = fromCol.cards.filter((c) => c.id !== draggedCard!.id);
61
+ toCol.cards = [...toCol.cards, draggedCard!];
62
+
63
+ onMove(draggedCard, fromCol, toCol);
64
+
65
+ draggedCard = null;
66
+ sourceColumnId = null;
67
+ }
68
+
69
+ function handleDragEnd() {
70
+ draggedCard = null;
71
+ sourceColumnId = null;
72
+ dragOverColumnId = null;
73
+ }
74
+ </script>
75
+
76
+ <div {...restProps} class={styles.container({ class: clsx(theme?.container, className) })}>
77
+ {#each columns as col (col.id)}
78
+ <div
79
+ role="group"
80
+ aria-label={`${col.title} column drop zone`}
81
+ class={styles.column({ isDragOver: dragOverColumnId === col.id, class: clsx(theme?.column, classes?.column) })}
82
+ ondragover={(e) => handleDragOver(e, col.id)}
83
+ ondragleave={(e) => handleDragLeave(e)}
84
+ ondrop={(e) => handleDrop(e, col.id)}
85
+ style={col.color ? `border-top: 4px solid ${col.color}` : ""}
86
+ >
87
+ <h2 class={styles.columnTitle({ class: clsx(theme?.columnTitle, classes?.columnTitle) })}>{col.title}</h2>
88
+
89
+ <div class={styles.cardList({ class: clsx(theme?.cardList, classes?.cardList) })} role="list" aria-label={`${col.title} cards`}>
90
+ {#each col.cards as card (card.id)}
91
+ <KanbanCard {card} {classes} isDragging={draggedCard?.id === card.id} onDragStart={() => handleDragStart(card, col.id)} onDragEnd={handleDragEnd} />
92
+ {/each}
93
+ </div>
94
+
95
+ <button class={styles.addButton({ class: clsx(theme?.addButton, classes?.addButton) })} onclick={() => onAddCard(col)} aria-label={`Add card to ${col.title}`}>+ Add card</button>
96
+ </div>
97
+ {/each}
98
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { KanbanBoardProps } from "../types";
2
+ declare const KanbanBoard: import("svelte").Component<KanbanBoardProps, {}, "columns">;
3
+ type KanbanBoard = ReturnType<typeof KanbanBoard>;
4
+ export default KanbanBoard;