flowbite-svelte 1.9.0 → 1.10.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 (542) hide show
  1. package/dist/accordion/Accordion.svelte +8 -9
  2. package/dist/accordion/Accordion.svelte.d.ts +1 -1
  3. package/dist/accordion/AccordionItem.svelte +10 -11
  4. package/dist/accordion/AccordionItem.svelte.d.ts +1 -1
  5. package/dist/accordion/index.d.ts +1 -1
  6. package/dist/accordion/index.js +1 -1
  7. package/dist/accordion/theme.d.ts +18 -3
  8. package/dist/accordion/theme.js +6 -2
  9. package/dist/alert/Alert.svelte +8 -8
  10. package/dist/alert/Alert.svelte.d.ts +1 -1
  11. package/dist/alert/index.d.ts +1 -1
  12. package/dist/alert/theme.d.ts +1 -0
  13. package/dist/avatar/Avatar.svelte +8 -9
  14. package/dist/avatar/Avatar.svelte.d.ts +1 -1
  15. package/dist/avatar/index.d.ts +1 -1
  16. package/dist/avatar/theme.d.ts +1 -0
  17. package/dist/badge/Badge.svelte +9 -11
  18. package/dist/badge/Badge.svelte.d.ts +1 -1
  19. package/dist/badge/index.d.ts +1 -1
  20. package/dist/badge/theme.d.ts +5 -3
  21. package/dist/badge/theme.js +1 -1
  22. package/dist/banner/Banner.svelte +9 -5
  23. package/dist/banner/Banner.svelte.d.ts +1 -1
  24. package/dist/banner/index.d.ts +1 -1
  25. package/dist/banner/theme.d.ts +2 -0
  26. package/dist/bottom-navigation/BottomNav.svelte +8 -4
  27. package/dist/bottom-navigation/BottomNav.svelte.d.ts +1 -1
  28. package/dist/bottom-navigation/BottomNavHeader.svelte +11 -6
  29. package/dist/bottom-navigation/BottomNavHeader.svelte.d.ts +1 -1
  30. package/dist/bottom-navigation/BottomNavHeaderItem.svelte +9 -4
  31. package/dist/bottom-navigation/BottomNavHeaderItem.svelte.d.ts +1 -1
  32. package/dist/bottom-navigation/BottomNavItem.svelte +8 -4
  33. package/dist/bottom-navigation/BottomNavItem.svelte.d.ts +1 -1
  34. package/dist/bottom-navigation/index.d.ts +1 -1
  35. package/dist/bottom-navigation/index.js +1 -1
  36. package/dist/bottom-navigation/theme.d.ts +10 -2
  37. package/dist/bottom-navigation/theme.js +2 -2
  38. package/dist/breadcrumb/Breadcrumb.svelte +7 -10
  39. package/dist/breadcrumb/Breadcrumb.svelte.d.ts +1 -1
  40. package/dist/breadcrumb/BreadcrumbItem.svelte +13 -10
  41. package/dist/breadcrumb/BreadcrumbItem.svelte.d.ts +1 -1
  42. package/dist/breadcrumb/index.d.ts +1 -1
  43. package/dist/breadcrumb/index.js +1 -1
  44. package/dist/breadcrumb/theme.d.ts +33 -22
  45. package/dist/breadcrumb/theme.js +18 -12
  46. package/dist/button-group/ButtonGroup.svelte +5 -2
  47. package/dist/button-group/ButtonGroup.svelte.d.ts +1 -1
  48. package/dist/button-group/index.d.ts +1 -1
  49. package/dist/button-group/theme.d.ts +1 -0
  50. package/dist/buttons/Button.svelte +7 -3
  51. package/dist/buttons/Button.svelte.d.ts +1 -1
  52. package/dist/buttons/GradientButton.svelte +8 -5
  53. package/dist/buttons/GradientButton.svelte.d.ts +1 -1
  54. package/dist/buttons/index.d.ts +1 -1
  55. package/dist/buttons/theme.d.ts +4 -0
  56. package/dist/card/Card.svelte +9 -6
  57. package/dist/card/Card.svelte.d.ts +2 -2
  58. package/dist/card/index.d.ts +1 -1
  59. package/dist/card/theme.d.ts +2 -0
  60. package/dist/carousel/Carousel.svelte +5 -2
  61. package/dist/carousel/Carousel.svelte.d.ts +1 -1
  62. package/dist/carousel/{Indicators.svelte → CarouselIndicators.svelte} +8 -5
  63. package/dist/carousel/{Indicators.svelte.d.ts → CarouselIndicators.svelte.d.ts} +4 -4
  64. package/dist/carousel/ControlButton.svelte +5 -2
  65. package/dist/carousel/ControlButton.svelte.d.ts +1 -1
  66. package/dist/carousel/Controls.svelte +6 -3
  67. package/dist/carousel/Controls.svelte.d.ts +1 -1
  68. package/dist/carousel/Slide.svelte +5 -2
  69. package/dist/carousel/Slide.svelte.d.ts +1 -1
  70. package/dist/carousel/Thumbnail.svelte +5 -2
  71. package/dist/carousel/Thumbnail.svelte.d.ts +1 -1
  72. package/dist/carousel/Thumbnails.svelte +5 -2
  73. package/dist/carousel/Thumbnails.svelte.d.ts +1 -1
  74. package/dist/carousel/index.d.ts +2 -2
  75. package/dist/carousel/index.js +2 -2
  76. package/dist/carousel/theme.d.ts +8 -1
  77. package/dist/carousel/theme.js +1 -2
  78. package/dist/clipboard/Clipboard.svelte +6 -3
  79. package/dist/clipboard/Clipboard.svelte.d.ts +2 -2
  80. package/dist/clipboard/index.d.ts +1 -1
  81. package/dist/clipboard/theme.d.ts +1 -0
  82. package/dist/darkmode/DarkMode.svelte +5 -2
  83. package/dist/darkmode/DarkMode.svelte.d.ts +1 -1
  84. package/dist/darkmode/index.d.ts +1 -1
  85. package/dist/darkmode/theme.d.ts +1 -0
  86. package/dist/datepicker/Datepicker.svelte +25 -20
  87. package/dist/datepicker/Datepicker.svelte.d.ts +2 -2
  88. package/dist/datepicker/index.d.ts +1 -1
  89. package/dist/datepicker/theme.d.ts +2 -0
  90. package/dist/device-mockups/Android.svelte +1 -1
  91. package/dist/device-mockups/Android.svelte.d.ts +1 -1
  92. package/dist/device-mockups/DefaultMockup.svelte +1 -1
  93. package/dist/device-mockups/DefaultMockup.svelte.d.ts +1 -1
  94. package/dist/device-mockups/Desktop.svelte +1 -1
  95. package/dist/device-mockups/Desktop.svelte.d.ts +1 -1
  96. package/dist/device-mockups/DeviceMockup.svelte +1 -1
  97. package/dist/device-mockups/DeviceMockup.svelte.d.ts +1 -1
  98. package/dist/device-mockups/Ios.svelte +1 -1
  99. package/dist/device-mockups/Ios.svelte.d.ts +1 -1
  100. package/dist/device-mockups/Laptop.svelte +1 -1
  101. package/dist/device-mockups/Laptop.svelte.d.ts +1 -1
  102. package/dist/device-mockups/Smartwatch.svelte +1 -1
  103. package/dist/device-mockups/Smartwatch.svelte.d.ts +1 -1
  104. package/dist/device-mockups/Tablet.svelte +1 -1
  105. package/dist/device-mockups/Tablet.svelte.d.ts +1 -1
  106. package/dist/device-mockups/theme.d.ts +21 -21
  107. package/dist/drawer/Drawer.svelte +8 -5
  108. package/dist/drawer/Drawer.svelte.d.ts +1 -1
  109. package/dist/drawer/Drawerhead.svelte +8 -5
  110. package/dist/drawer/Drawerhead.svelte.d.ts +1 -1
  111. package/dist/drawer/index.d.ts +1 -1
  112. package/dist/drawer/theme.d.ts +16 -12
  113. package/dist/drawer/theme.js +4 -4
  114. package/dist/dropdown/Dropdown.svelte +5 -2
  115. package/dist/dropdown/Dropdown.svelte.d.ts +1 -1
  116. package/dist/dropdown/DropdownDivider.svelte +5 -2
  117. package/dist/dropdown/DropdownDivider.svelte.d.ts +1 -1
  118. package/dist/dropdown/DropdownGroup.svelte +5 -2
  119. package/dist/dropdown/DropdownGroup.svelte.d.ts +1 -1
  120. package/dist/dropdown/DropdownHeader.svelte +5 -2
  121. package/dist/dropdown/DropdownHeader.svelte.d.ts +1 -1
  122. package/dist/dropdown/DropdownItem.svelte +6 -3
  123. package/dist/dropdown/DropdownItem.svelte.d.ts +1 -1
  124. package/dist/dropdown/index.d.ts +1 -1
  125. package/dist/dropdown/theme.d.ts +7 -0
  126. package/dist/footer/Footer.svelte +5 -2
  127. package/dist/footer/Footer.svelte.d.ts +1 -1
  128. package/dist/footer/FooterBrand.svelte +8 -5
  129. package/dist/footer/FooterBrand.svelte.d.ts +1 -1
  130. package/dist/footer/FooterCopyright.svelte +8 -5
  131. package/dist/footer/FooterCopyright.svelte.d.ts +1 -1
  132. package/dist/footer/FooterIcon.svelte +5 -2
  133. package/dist/footer/FooterIcon.svelte.d.ts +1 -1
  134. package/dist/footer/FooterLink.svelte +8 -4
  135. package/dist/footer/FooterLink.svelte.d.ts +1 -1
  136. package/dist/footer/FooterLinkGroup.svelte +5 -2
  137. package/dist/footer/FooterLinkGroup.svelte.d.ts +1 -1
  138. package/dist/footer/index.d.ts +1 -1
  139. package/dist/footer/theme.d.ts +18 -10
  140. package/dist/footer/theme.js +6 -7
  141. package/dist/forms/button-toggle/ButtonToggle.svelte +8 -5
  142. package/dist/forms/button-toggle/ButtonToggle.svelte.d.ts +1 -1
  143. package/dist/forms/button-toggle/ButtonToggleGroup.svelte +4 -1
  144. package/dist/forms/button-toggle/CheckIcon.svelte +1 -1
  145. package/dist/forms/button-toggle/CheckIcon.svelte.d.ts +1 -1
  146. package/dist/forms/button-toggle/index.d.ts +1 -1
  147. package/dist/forms/button-toggle/theme.d.ts +152 -144
  148. package/dist/forms/button-toggle/theme.js +65 -63
  149. package/dist/forms/checkbox/Checkbox.svelte +8 -5
  150. package/dist/forms/checkbox/CheckboxButton.svelte +5 -2
  151. package/dist/forms/checkbox/CheckboxButton.svelte.d.ts +1 -1
  152. package/dist/forms/checkbox/index.d.ts +1 -1
  153. package/dist/forms/checkbox/theme.d.ts +3 -0
  154. package/dist/forms/dropzone/Dropzone.svelte +5 -2
  155. package/dist/forms/dropzone/Dropzone.svelte.d.ts +1 -1
  156. package/dist/forms/dropzone/index.d.ts +1 -1
  157. package/dist/forms/dropzone/theme.d.ts +1 -0
  158. package/dist/forms/fileupload/Fileupload.svelte +8 -5
  159. package/dist/forms/fileupload/Fileupload.svelte.d.ts +1 -1
  160. package/dist/forms/fileupload/index.d.ts +1 -1
  161. package/dist/forms/fileupload/theme.d.ts +2 -0
  162. package/dist/forms/floating-label/FloatingLabelInput.svelte +11 -8
  163. package/dist/forms/floating-label/FloatingLabelInput.svelte.d.ts +1 -1
  164. package/dist/forms/floating-label/index.d.ts +1 -1
  165. package/dist/forms/floating-label/theme.d.ts +5 -3
  166. package/dist/forms/floating-label/theme.js +1 -1
  167. package/dist/forms/helper/Helper.svelte +5 -2
  168. package/dist/forms/helper/Helper.svelte.d.ts +1 -1
  169. package/dist/forms/helper/index.d.ts +1 -1
  170. package/dist/forms/helper/theme.d.ts +1 -0
  171. package/dist/forms/input-addon/InputAddon.svelte +6 -2
  172. package/dist/forms/input-addon/InputAddon.svelte.d.ts +1 -1
  173. package/dist/forms/input-field/Input.svelte +13 -10
  174. package/dist/forms/input-field/index.d.ts +1 -1
  175. package/dist/forms/input-field/theme.d.ts +5 -3
  176. package/dist/forms/input-field/theme.js +1 -1
  177. package/dist/forms/label/Label.svelte +5 -2
  178. package/dist/forms/label/Label.svelte.d.ts +1 -1
  179. package/dist/forms/label/index.d.ts +1 -1
  180. package/dist/forms/label/theme.d.ts +1 -0
  181. package/dist/forms/phoneinput/PhoneInput.svelte +11 -8
  182. package/dist/forms/phoneinput/PhoneInput.svelte.d.ts +1 -1
  183. package/dist/forms/phoneinput/index.d.ts +1 -1
  184. package/dist/forms/phoneinput/theme.d.ts +2 -0
  185. package/dist/forms/radio/Radio.svelte +6 -3
  186. package/dist/forms/radio/RadioButton.svelte +4 -1
  187. package/dist/forms/radio/index.d.ts +1 -1
  188. package/dist/forms/radio/theme.d.ts +3 -0
  189. package/dist/forms/range/Range.svelte +5 -2
  190. package/dist/forms/range/Range.svelte.d.ts +1 -1
  191. package/dist/forms/range/theme.d.ts +1 -0
  192. package/dist/forms/search/Search.svelte +12 -9
  193. package/dist/forms/search/Search.svelte.d.ts +1 -1
  194. package/dist/forms/search/index.d.ts +1 -1
  195. package/dist/forms/search/theme.d.ts +5 -3
  196. package/dist/forms/search/theme.js +1 -1
  197. package/dist/forms/select/MultiSelect.svelte +7 -4
  198. package/dist/forms/select/Select.svelte +8 -5
  199. package/dist/forms/select/index.d.ts +1 -1
  200. package/dist/forms/select/index.js +1 -1
  201. package/dist/forms/select/theme.d.ts +7 -3
  202. package/dist/forms/select/theme.js +1 -1
  203. package/dist/forms/tags/Tags.svelte +10 -7
  204. package/dist/forms/tags/Tags.svelte.d.ts +1 -1
  205. package/dist/forms/tags/index.d.ts +1 -1
  206. package/dist/forms/tags/theme.d.ts +11 -9
  207. package/dist/forms/tags/theme.js +1 -1
  208. package/dist/forms/textarea/Textarea.svelte +14 -11
  209. package/dist/forms/textarea/Textarea.svelte.d.ts +1 -1
  210. package/dist/forms/textarea/index.d.ts +1 -1
  211. package/dist/forms/textarea/theme.d.ts +5 -3
  212. package/dist/forms/textarea/theme.js +1 -1
  213. package/dist/forms/timepicker/Timepicker.svelte +107 -64
  214. package/dist/forms/timepicker/Timepicker.svelte.d.ts +1 -1
  215. package/dist/forms/timepicker/index.d.ts +1 -0
  216. package/dist/forms/timepicker/index.js +1 -0
  217. package/dist/forms/timepicker/theme.d.ts +191 -0
  218. package/dist/forms/timepicker/theme.js +72 -0
  219. package/dist/forms/toggle/Toggle.svelte +8 -5
  220. package/dist/forms/toggle/Toggle.svelte.d.ts +1 -1
  221. package/dist/forms/toggle/index.d.ts +1 -1
  222. package/dist/forms/toggle/theme.d.ts +2 -0
  223. package/dist/gallery/Gallery.svelte +7 -4
  224. package/dist/gallery/Gallery.svelte.d.ts +1 -1
  225. package/dist/gallery/index.d.ts +1 -1
  226. package/dist/gallery/theme.d.ts +5 -3
  227. package/dist/index.d.ts +2 -2
  228. package/dist/index.js +5 -2
  229. package/dist/indicator/Indicator.svelte +6 -3
  230. package/dist/indicator/Indicator.svelte.d.ts +1 -1
  231. package/dist/indicator/index.d.ts +1 -1
  232. package/dist/indicator/theme.d.ts +121 -360
  233. package/dist/indicator/theme.js +48 -56
  234. package/dist/kbd/Kbd.svelte +6 -2
  235. package/dist/kbd/Kbd.svelte.d.ts +1 -1
  236. package/dist/kbd/index.d.ts +1 -1
  237. package/dist/kbd/theme.d.ts +1 -0
  238. package/dist/list-group/Listgroup.svelte +5 -2
  239. package/dist/list-group/Listgroup.svelte.d.ts +1 -1
  240. package/dist/list-group/ListgroupItem.svelte +7 -4
  241. package/dist/list-group/ListgroupItem.svelte.d.ts +1 -1
  242. package/dist/list-group/index.d.ts +1 -1
  243. package/dist/list-group/theme.d.ts +2 -0
  244. package/dist/mega-menu/MegaMenu.svelte +9 -6
  245. package/dist/mega-menu/MegaMenu.svelte.d.ts +1 -1
  246. package/dist/mega-menu/index.d.ts +1 -1
  247. package/dist/mega-menu/theme.d.ts +2 -0
  248. package/dist/modal/Modal.svelte +13 -10
  249. package/dist/modal/Modal.svelte.d.ts +1 -1
  250. package/dist/modal/index.d.ts +2 -3
  251. package/dist/modal/index.js +2 -3
  252. package/dist/modal/theme.d.ts +5 -3
  253. package/dist/modal/theme.js +1 -1
  254. package/dist/navbar/Menu.svelte +6 -2
  255. package/dist/navbar/Menu.svelte.d.ts +1 -1
  256. package/dist/navbar/NavBrand.svelte +7 -4
  257. package/dist/navbar/NavBrand.svelte.d.ts +1 -1
  258. package/dist/navbar/NavContainer.svelte +7 -4
  259. package/dist/navbar/NavContainer.svelte.d.ts +1 -1
  260. package/dist/navbar/NavHamburger.svelte +9 -6
  261. package/dist/navbar/NavHamburger.svelte.d.ts +1 -1
  262. package/dist/navbar/NavLi.svelte +7 -4
  263. package/dist/navbar/NavLi.svelte.d.ts +1 -1
  264. package/dist/navbar/NavUl.svelte +11 -8
  265. package/dist/navbar/NavUl.svelte.d.ts +1 -1
  266. package/dist/navbar/Navbar.svelte +6 -4
  267. package/dist/navbar/Navbar.svelte.d.ts +1 -1
  268. package/dist/navbar/index.d.ts +7 -7
  269. package/dist/navbar/index.js +7 -7
  270. package/dist/navbar/theme.d.ts +12 -5
  271. package/dist/navbar/theme.js +5 -5
  272. package/dist/pagination/Pagination.svelte +7 -3
  273. package/dist/pagination/Pagination.svelte.d.ts +1 -1
  274. package/dist/pagination/PaginationButton.svelte +18 -12
  275. package/dist/pagination/PaginationButton.svelte.d.ts +1 -1
  276. package/dist/pagination/PaginationItem.svelte +7 -4
  277. package/dist/pagination/PaginationItem.svelte.d.ts +1 -1
  278. package/dist/pagination/PaginationNav.svelte +13 -11
  279. package/dist/pagination/PaginationNav.svelte.d.ts +1 -1
  280. package/dist/pagination/index.d.ts +1 -1
  281. package/dist/pagination/index.js +1 -1
  282. package/dist/pagination/theme.d.ts +7 -2
  283. package/dist/pagination/theme.js +2 -2
  284. package/dist/popover/Popover.svelte +10 -7
  285. package/dist/popover/Popover.svelte.d.ts +1 -1
  286. package/dist/popover/index.d.ts +2 -3
  287. package/dist/popover/index.js +2 -3
  288. package/dist/popover/theme.d.ts +2 -3
  289. package/dist/popover/theme.js +1 -2
  290. package/dist/progress/Progressbar.svelte +12 -8
  291. package/dist/progress/Progressbar.svelte.d.ts +1 -1
  292. package/dist/progress/Progressradial.svelte +13 -9
  293. package/dist/progress/Progressradial.svelte.d.ts +1 -1
  294. package/dist/progress/index.d.ts +1 -1
  295. package/dist/progress/index.js +1 -1
  296. package/dist/progress/theme.d.ts +4 -0
  297. package/dist/rating/AdvancedRating.svelte +12 -9
  298. package/dist/rating/AdvancedRating.svelte.d.ts +1 -1
  299. package/dist/rating/CustomIcon.svelte +1 -1
  300. package/dist/rating/CustomIcon.svelte.d.ts +1 -1
  301. package/dist/rating/Heart.svelte +1 -1
  302. package/dist/rating/Heart.svelte.d.ts +1 -1
  303. package/dist/rating/Rating.svelte +8 -4
  304. package/dist/rating/Rating.svelte.d.ts +1 -1
  305. package/dist/rating/RatingComment.svelte +1 -1
  306. package/dist/rating/RatingComment.svelte.d.ts +1 -1
  307. package/dist/rating/Review.svelte +14 -11
  308. package/dist/rating/Review.svelte.d.ts +1 -1
  309. package/dist/rating/ScoreRating.svelte +14 -10
  310. package/dist/rating/ScoreRating.svelte.d.ts +1 -1
  311. package/dist/rating/Star.svelte +1 -1
  312. package/dist/rating/Star.svelte.d.ts +1 -1
  313. package/dist/rating/Thumbup.svelte +1 -1
  314. package/dist/rating/Thumbup.svelte.d.ts +1 -1
  315. package/dist/rating/index.d.ts +10 -11
  316. package/dist/rating/index.js +10 -11
  317. package/dist/rating/theme.d.ts +16 -14
  318. package/dist/rating/theme.js +2 -3
  319. package/dist/sidebar/Sidebar.svelte +12 -9
  320. package/dist/sidebar/Sidebar.svelte.d.ts +1 -1
  321. package/dist/sidebar/SidebarBrand.svelte +10 -7
  322. package/dist/sidebar/SidebarBrand.svelte.d.ts +1 -1
  323. package/dist/sidebar/SidebarButton.svelte +8 -4
  324. package/dist/sidebar/SidebarButton.svelte.d.ts +1 -1
  325. package/dist/sidebar/SidebarCta.svelte +11 -7
  326. package/dist/sidebar/SidebarCta.svelte.d.ts +1 -1
  327. package/dist/sidebar/SidebarDropdownWrapper.svelte +13 -10
  328. package/dist/sidebar/SidebarDropdownWrapper.svelte.d.ts +1 -1
  329. package/dist/sidebar/SidebarGroup.svelte +1 -1
  330. package/dist/sidebar/SidebarGroup.svelte.d.ts +1 -1
  331. package/dist/sidebar/SidebarItem.svelte +1 -1
  332. package/dist/sidebar/SidebarItem.svelte.d.ts +1 -1
  333. package/dist/sidebar/index.d.ts +10 -11
  334. package/dist/sidebar/index.js +10 -11
  335. package/dist/sidebar/theme.d.ts +22 -13
  336. package/dist/sidebar/theme.js +4 -4
  337. package/dist/skeleton/CardPlaceholder.svelte +17 -14
  338. package/dist/skeleton/CardPlaceholder.svelte.d.ts +1 -1
  339. package/dist/skeleton/ImagePlaceholder.svelte +17 -14
  340. package/dist/skeleton/ImagePlaceholder.svelte.d.ts +1 -1
  341. package/dist/skeleton/ListPlaceholder.svelte +12 -9
  342. package/dist/skeleton/ListPlaceholder.svelte.d.ts +1 -1
  343. package/dist/skeleton/Skeleton.svelte +15 -11
  344. package/dist/skeleton/Skeleton.svelte.d.ts +1 -1
  345. package/dist/skeleton/TestimonialPlaceholder.svelte +14 -10
  346. package/dist/skeleton/TestimonialPlaceholder.svelte.d.ts +1 -1
  347. package/dist/skeleton/TextPlaceholder.svelte +32 -28
  348. package/dist/skeleton/TextPlaceholder.svelte.d.ts +1 -1
  349. package/dist/skeleton/VideoPlaceholder.svelte +7 -3
  350. package/dist/skeleton/VideoPlaceholder.svelte.d.ts +1 -1
  351. package/dist/skeleton/WidgetPlaceholder.svelte +8 -4
  352. package/dist/skeleton/WidgetPlaceholder.svelte.d.ts +1 -1
  353. package/dist/skeleton/index.d.ts +9 -10
  354. package/dist/skeleton/index.js +9 -10
  355. package/dist/skeleton/theme.d.ts +29 -15
  356. package/dist/skeleton/theme.js +8 -9
  357. package/dist/speed-dial/SpeedDial.svelte +9 -9
  358. package/dist/speed-dial/SpeedDial.svelte.d.ts +1 -1
  359. package/dist/speed-dial/SpeedDialButton.svelte +9 -8
  360. package/dist/speed-dial/SpeedDialButton.svelte.d.ts +1 -1
  361. package/dist/speed-dial/SpeedDialTrigger.svelte +1 -1
  362. package/dist/speed-dial/SpeedDialTrigger.svelte.d.ts +1 -1
  363. package/dist/speed-dial/index.d.ts +4 -5
  364. package/dist/speed-dial/index.js +4 -5
  365. package/dist/speed-dial/theme.d.ts +8 -4
  366. package/dist/speed-dial/theme.js +2 -2
  367. package/dist/spinner/Spinner.svelte +6 -3
  368. package/dist/spinner/Spinner.svelte.d.ts +1 -1
  369. package/dist/spinner/index.d.ts +2 -3
  370. package/dist/spinner/index.js +2 -3
  371. package/dist/spinner/theme.d.ts +1 -0
  372. package/dist/stepindicator/StepIndicator.svelte +28 -49
  373. package/dist/stepindicator/StepIndicator.svelte.d.ts +3 -3
  374. package/dist/stepindicator/index.d.ts +1 -0
  375. package/dist/stepindicator/index.js +1 -0
  376. package/dist/stepindicator/theme.d.ts +246 -0
  377. package/dist/stepindicator/theme.js +103 -0
  378. package/dist/stepper/BreadcrumbStepper.svelte +15 -11
  379. package/dist/stepper/BreadcrumbStepper.svelte.d.ts +1 -1
  380. package/dist/stepper/DetailedStepper.svelte +9 -9
  381. package/dist/stepper/DetailedStepper.svelte.d.ts +1 -1
  382. package/dist/stepper/ProgressStepper.svelte +13 -11
  383. package/dist/stepper/ProgressStepper.svelte.d.ts +1 -1
  384. package/dist/stepper/Stepper.svelte +15 -13
  385. package/dist/stepper/Stepper.svelte.d.ts +1 -1
  386. package/dist/stepper/TimelineStepper.svelte +9 -9
  387. package/dist/stepper/TimelineStepper.svelte.d.ts +1 -1
  388. package/dist/stepper/VerticalStepper.svelte +9 -10
  389. package/dist/stepper/VerticalStepper.svelte.d.ts +1 -1
  390. package/dist/stepper/index.d.ts +1 -1
  391. package/dist/stepper/index.js +1 -1
  392. package/dist/stepper/theme.d.ts +303 -261
  393. package/dist/stepper/theme.js +198 -186
  394. package/dist/table/Table.svelte +8 -6
  395. package/dist/table/Table.svelte.d.ts +2 -2
  396. package/dist/table/TableBody.svelte +6 -2
  397. package/dist/table/TableBody.svelte.d.ts +1 -1
  398. package/dist/table/TableBodyCell.svelte +7 -4
  399. package/dist/table/TableBodyCell.svelte.d.ts +1 -1
  400. package/dist/table/TableBodyRow.svelte +8 -5
  401. package/dist/table/TableBodyRow.svelte.d.ts +1 -1
  402. package/dist/table/TableHead.svelte +8 -5
  403. package/dist/table/TableHead.svelte.d.ts +1 -1
  404. package/dist/table/TableHeadCell.svelte +7 -4
  405. package/dist/table/TableHeadCell.svelte.d.ts +1 -1
  406. package/dist/table/TableSearch.svelte +35 -30
  407. package/dist/table/TableSearch.svelte.d.ts +8 -8
  408. package/dist/table/index.d.ts +8 -9
  409. package/dist/table/index.js +8 -9
  410. package/dist/table/theme.d.ts +192 -4
  411. package/dist/table/theme.js +68 -4
  412. package/dist/tabs/TabItem.svelte +8 -5
  413. package/dist/tabs/TabItem.svelte.d.ts +1 -1
  414. package/dist/tabs/Tabs.svelte +9 -6
  415. package/dist/tabs/Tabs.svelte.d.ts +1 -1
  416. package/dist/tabs/index.d.ts +3 -4
  417. package/dist/tabs/index.js +3 -4
  418. package/dist/tabs/theme.d.ts +4 -0
  419. package/dist/theme/ThemeProvider.svelte +30 -0
  420. package/dist/theme/ThemeProvider.svelte.d.ts +17 -0
  421. package/dist/theme/index.d.ts +0 -10296
  422. package/dist/theme/index.js +2 -119
  423. package/dist/theme/themeUtils.d.ts +2 -0
  424. package/dist/theme/themeUtils.js +6 -0
  425. package/dist/timeline/Activity.svelte +6 -3
  426. package/dist/timeline/Activity.svelte.d.ts +1 -1
  427. package/dist/timeline/ActivityItem.svelte +15 -11
  428. package/dist/timeline/ActivityItem.svelte.d.ts +1 -1
  429. package/dist/timeline/Group.svelte +11 -5
  430. package/dist/timeline/Group.svelte.d.ts +1 -1
  431. package/dist/timeline/GroupItem.svelte +13 -8
  432. package/dist/timeline/GroupItem.svelte.d.ts +1 -1
  433. package/dist/timeline/Timeline.svelte +6 -2
  434. package/dist/timeline/Timeline.svelte.d.ts +1 -1
  435. package/dist/timeline/TimelineItem.svelte +13 -9
  436. package/dist/timeline/TimelineItem.svelte.d.ts +1 -1
  437. package/dist/timeline/index.d.ts +7 -8
  438. package/dist/timeline/index.js +7 -8
  439. package/dist/timeline/theme.d.ts +25 -15
  440. package/dist/timeline/theme.js +3 -3
  441. package/dist/toast/Toast.svelte +10 -6
  442. package/dist/toast/Toast.svelte.d.ts +1 -1
  443. package/dist/toast/index.d.ts +2 -3
  444. package/dist/toast/index.js +2 -3
  445. package/dist/toast/theme.d.ts +2 -0
  446. package/dist/toolbar/Toolbar.svelte +8 -4
  447. package/dist/toolbar/Toolbar.svelte.d.ts +1 -1
  448. package/dist/toolbar/ToolbarButton.svelte +6 -2
  449. package/dist/toolbar/ToolbarButton.svelte.d.ts +1 -1
  450. package/dist/toolbar/ToolbarGroup.svelte +6 -2
  451. package/dist/toolbar/ToolbarGroup.svelte.d.ts +1 -1
  452. package/dist/toolbar/index.d.ts +4 -5
  453. package/dist/toolbar/index.js +4 -5
  454. package/dist/toolbar/theme.d.ts +4 -0
  455. package/dist/tooltip/Tooltip.svelte +7 -3
  456. package/dist/tooltip/Tooltip.svelte.d.ts +1 -1
  457. package/dist/tooltip/index.d.ts +2 -3
  458. package/dist/tooltip/index.js +2 -3
  459. package/dist/tooltip/theme.d.ts +2 -0
  460. package/dist/types.d.ts +25 -25
  461. package/dist/types.js +1 -1
  462. package/dist/typography/anchor/A.svelte +7 -3
  463. package/dist/typography/anchor/A.svelte.d.ts +1 -1
  464. package/dist/typography/anchor/index.d.ts +2 -3
  465. package/dist/typography/anchor/index.js +2 -3
  466. package/dist/typography/anchor/theme.d.ts +1 -0
  467. package/dist/typography/blockquote/Blockquote.svelte +6 -2
  468. package/dist/typography/blockquote/Blockquote.svelte.d.ts +1 -1
  469. package/dist/typography/blockquote/theme.d.ts +1 -0
  470. package/dist/typography/descriptionlist/DescriptionList.svelte +7 -3
  471. package/dist/typography/descriptionlist/DescriptionList.svelte.d.ts +1 -1
  472. package/dist/typography/descriptionlist/index.d.ts +2 -3
  473. package/dist/typography/descriptionlist/index.js +2 -3
  474. package/dist/typography/descriptionlist/theme.d.ts +1 -0
  475. package/dist/typography/heading/Heading.svelte +7 -3
  476. package/dist/typography/heading/Heading.svelte.d.ts +1 -1
  477. package/dist/typography/heading/index.d.ts +2 -3
  478. package/dist/typography/heading/index.js +2 -3
  479. package/dist/typography/heading/theme.d.ts +1 -0
  480. package/dist/typography/hr/Hr.svelte +10 -6
  481. package/dist/typography/hr/Hr.svelte.d.ts +1 -1
  482. package/dist/typography/hr/index.d.ts +2 -3
  483. package/dist/typography/hr/index.js +2 -3
  484. package/dist/typography/hr/theme.d.ts +2 -0
  485. package/dist/typography/img/EnhancedImg.svelte +10 -6
  486. package/dist/typography/img/EnhancedImg.svelte.d.ts +1 -1
  487. package/dist/typography/img/Img.svelte +10 -6
  488. package/dist/typography/img/Img.svelte.d.ts +1 -1
  489. package/dist/typography/img/index.d.ts +3 -4
  490. package/dist/typography/img/index.js +3 -4
  491. package/dist/typography/img/theme.d.ts +2 -0
  492. package/dist/typography/layout/Layout.svelte +6 -2
  493. package/dist/typography/layout/Layout.svelte.d.ts +1 -1
  494. package/dist/typography/layout/index.d.ts +2 -3
  495. package/dist/typography/layout/index.js +2 -3
  496. package/dist/typography/layout/theme.d.ts +1 -0
  497. package/dist/typography/list/Li.svelte +6 -3
  498. package/dist/typography/list/Li.svelte.d.ts +1 -1
  499. package/dist/typography/list/List.svelte +6 -2
  500. package/dist/typography/list/List.svelte.d.ts +1 -1
  501. package/dist/typography/list/index.d.ts +3 -4
  502. package/dist/typography/list/index.js +3 -4
  503. package/dist/typography/list/theme.d.ts +1 -0
  504. package/dist/typography/mark/Mark.svelte +6 -2
  505. package/dist/typography/mark/Mark.svelte.d.ts +1 -1
  506. package/dist/typography/mark/index.d.ts +2 -3
  507. package/dist/typography/mark/index.js +2 -3
  508. package/dist/typography/mark/theme.d.ts +1 -0
  509. package/dist/typography/paragraph/P.svelte +6 -2
  510. package/dist/typography/paragraph/P.svelte.d.ts +1 -1
  511. package/dist/typography/paragraph/index.d.ts +2 -3
  512. package/dist/typography/paragraph/index.js +2 -3
  513. package/dist/typography/paragraph/theme.d.ts +1 -0
  514. package/dist/typography/secondary/Secondary.svelte +6 -2
  515. package/dist/typography/secondary/Secondary.svelte.d.ts +1 -1
  516. package/dist/typography/secondary/index.d.ts +2 -3
  517. package/dist/typography/secondary/index.js +2 -3
  518. package/dist/typography/secondary/theme.d.ts +1 -0
  519. package/dist/typography/span/Span.svelte +6 -2
  520. package/dist/typography/span/Span.svelte.d.ts +1 -1
  521. package/dist/typography/span/index.d.ts +2 -3
  522. package/dist/typography/span/index.js +2 -3
  523. package/dist/typography/span/theme.d.ts +1 -0
  524. package/dist/utils/Arrow.svelte +1 -1
  525. package/dist/utils/Arrow.svelte.d.ts +1 -1
  526. package/dist/utils/CloseButton.svelte +1 -1
  527. package/dist/utils/CloseButton.svelte.d.ts +1 -1
  528. package/dist/utils/Popper.svelte +1 -1
  529. package/dist/utils/Popper.svelte.d.ts +1 -1
  530. package/dist/video/Video.svelte +6 -2
  531. package/dist/video/Video.svelte.d.ts +1 -1
  532. package/dist/video/index.d.ts +1 -2
  533. package/dist/video/index.js +1 -2
  534. package/package.json +9 -12
  535. package/dist/chart/Chart.svelte +0 -45
  536. package/dist/chart/Chart.svelte.d.ts +0 -13
  537. package/dist/chart/chart.css +0 -166
  538. package/dist/chart/index.d.ts +0 -1
  539. package/dist/chart/index.js +0 -1
  540. package/dist/forms/button-toggle/button-toggle.txt +0 -25
  541. package/dist/theme/Theme.svelte +0 -60
  542. package/dist/theme/Theme.svelte.d.ts +0 -12
@@ -1,67 +1,94 @@
1
1
  <script lang="ts">
2
2
  import { Dropdown, DropdownItem, Button, Input, ButtonGroup, Select, Label, Toggle, type TimepickerProps, type TimePickerOption, cn } from "../..";
3
- import { twMerge } from "tailwind-merge";
3
+ import { timepicker, type TimepickerTheme } from ".";
4
+ import { parse, isValid, isBefore, isAfter } from "date-fns";
5
+ import { getTheme } from "../../theme/themeUtils";
4
6
 
5
- // Props
6
7
  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();
7
8
 
8
- const defaultDivClass = "inline-flex rounded-lg shadow-sm";
9
- const acturalDivCls = cn(defaultDivClass, divClass);
10
- const defaultInputClass = "block disabled:cursor-not-allowed disabled:opacity-50 rtl:text-right focus:ring-0 focus:outline-none rounded-e-lg";
11
- const inputCls = cn(defaultInputClass, inputClass);
12
- const defaultSelectClass = "text-gray-900 disabled:text-gray-400 bg-gray-50 border border-gray-300 rounded-r-lg rounded-l-none focus:ring-0 focus:outline-none block w-full border-l-1 focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:disabled:text-gray-500 dark:focus:ring-primary-500 dark:focus:border-primary-500";
13
- const selectCls = cn(defaultSelectClass, selectClass);
9
+ const theme = getTheme("timepicker");
10
+
11
+ // Generate theme classes
12
+ const styles = timepicker({ type, columns, disabled });
14
13
 
15
14
  // State
16
- // let value = $state("00:00");
17
- // let endValue = $state("00:00");
18
15
  let selectedOption = $state("");
19
16
  let dropdownOpen = $state(false);
20
17
  let showTimerange = $state(false);
21
18
 
19
+ // Helper functions using date-fns
20
+ function parseTime(time: string): Date | null {
21
+ if (!time) return null;
22
+ const parsed = parse(time, "HH:mm", new Date());
23
+ return isValid(parsed) ? parsed : null;
24
+ }
25
+
22
26
  function timeToMinutes(time: string): number {
23
- const [hours, minutes] = time.split(":").map(Number);
24
- return hours * 60 + minutes;
27
+ const date = parseTime(time);
28
+ return date ? date.getHours() * 60 + date.getMinutes() : 0;
29
+ }
30
+
31
+ function isValidTimeFormat(time: string): boolean {
32
+ return parseTime(time) !== null;
33
+ }
34
+
35
+ function isTimeInRange(time: string, minTime: string, maxTime: string): boolean {
36
+ const timeDate = parseTime(time);
37
+ if (!timeDate) return false;
38
+
39
+ if (minTime) {
40
+ const minDate = parseTime(minTime);
41
+ if (minDate && isBefore(timeDate, minDate)) return false;
42
+ }
43
+
44
+ if (maxTime) {
45
+ const maxDate = parseTime(maxTime);
46
+ if (maxDate && isAfter(timeDate, maxDate)) return false;
47
+ }
48
+
49
+ return true;
25
50
  }
26
51
 
27
52
  function handleTimeChange(event: Event, isEndTime: boolean = false): void {
28
53
  const target = event.target as HTMLInputElement;
29
54
  const newValue = target.value;
30
55
 
31
- // Validate against min/max constraints first
32
- if (min && newValue < min) {
33
- target.value = isEndTime ? endValue : value; // Reset to previous valid value
56
+ // Validate time format
57
+ if (!isValidTimeFormat(newValue)) {
58
+ target.value = isEndTime ? endValue : value;
34
59
  return;
35
60
  }
36
61
 
37
- if (max && newValue > max) {
38
- target.value = isEndTime ? endValue : value; // Reset to previous valid value
62
+ // Validate against min/max constraints
63
+ if (!isTimeInRange(newValue, min, max)) {
64
+ target.value = isEndTime ? endValue : value;
39
65
  return;
40
66
  }
41
67
 
42
- const newMinutes = timeToMinutes(newValue);
68
+ // Use date-fns for reliable time comparison
69
+ const newValueMinutes = timeToMinutes(newValue);
43
70
  const valueMinutes = timeToMinutes(value);
44
71
  const endValueMinutes = timeToMinutes(endValue);
45
72
 
46
73
  if (isEndTime) {
47
- if (newMinutes < valueMinutes) {
74
+ if (newValueMinutes < valueMinutes) {
48
75
  // Only update start time if it respects min/max constraints
49
- if ((!min || newValue >= min) && (!max || newValue <= max)) {
76
+ if (isTimeInRange(newValue, min, max)) {
50
77
  value = newValue;
51
78
  } else {
52
- target.value = endValue; // Reset if constraint violation
79
+ target.value = endValue;
53
80
  return;
54
81
  }
55
82
  } else {
56
83
  endValue = newValue;
57
84
  }
58
85
  } else {
59
- if (newMinutes > endValueMinutes) {
86
+ if (newValueMinutes > endValueMinutes) {
60
87
  // Only update end time if it respects min/max constraints
61
- if ((!min || newValue >= min) && (!max || newValue <= max)) {
88
+ if (isTimeInRange(newValue, min, max)) {
62
89
  endValue = newValue;
63
90
  } else {
64
- target.value = value; // Reset if constraint violation
91
+ target.value = value;
65
92
  return;
66
93
  }
67
94
  } else {
@@ -109,32 +136,46 @@
109
136
  }
110
137
 
111
138
  function handleInlineButtonSelect(time: string): void {
112
- value = time;
113
- notifyChange();
139
+ if (isValidTimeFormat(time) && isTimeInRange(time, min, max)) {
140
+ value = time;
141
+ notifyChange();
142
+ }
114
143
  }
144
+
145
+ // Ensure initial values are valid
146
+ $effect(() => {
147
+ if (!isValidTimeFormat(value)) {
148
+ value = "00:00";
149
+ }
150
+ if (!isValidTimeFormat(endValue)) {
151
+ endValue = "00:00";
152
+ }
153
+ });
115
154
  </script>
116
155
 
117
156
  {#if type !== "inline-buttons"}
118
- <ButtonGroup {size} class={acturalDivCls}>
157
+ <ButtonGroup {size} class={cn(styles.buttonGroup(), divClass, (theme as TimepickerTheme)?.buttonGroup)}>
119
158
  {#if type === "default"}
120
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn("relative px-2 pr-8", inputCls)} bind:value onchange={(e) => handleTimeChange(e)} />
121
- <div class="pointer-events-none absolute inset-y-0 end-0 top-0 flex items-center pe-3.5">
159
+ <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn(styles.input(), styles.inputWithIcon(), inputClass, (theme as TimepickerTheme)?.input)} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
160
+ <div class={cn(styles.iconWrapper(), (theme as TimepickerTheme)?.iconWrapper)}>
122
161
  {#if Icon}
123
162
  <Icon class={iconClass} />
124
163
  {:else}
125
- <svg class="h-4 w-4 text-gray-500 dark:text-gray-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
164
+ <svg class={styles.icon()} aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
126
165
  <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6v4l3.276 3.276M19 10a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
127
166
  </svg>
128
167
  {/if}
129
168
  </div>
130
169
  {:else if type === "select"}
131
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={twMerge(cn("w-1/3 rounded-l-lg", inputCls), "rounded-e-none")} bind:value onchange={(e) => handleTimeChange(e)} />
132
- <Select selectClass={selectCls} onchange={handleOptionSelect} items={options} value={selectedOption} />
170
+ <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn(styles.input(), inputClass, (theme as TimepickerTheme)?.input)} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
171
+ <Select selectClass={cn(styles.select(), selectClass, (theme as TimepickerTheme)?.select)} onchange={handleOptionSelect} items={options} value={selectedOption} />
133
172
  {:else if type === "dropdown"}
134
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={twMerge(cn("rounded-l-lg", inputCls), "rounded-e-none")} bind:value onchange={(e) => handleTimeChange(e)} />
135
- <Button color={buttonColor} class="!rounded-r-lg">
173
+ <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn(styles.input(), inputClass, (theme as TimepickerTheme)?.input)} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
174
+ <Button color={buttonColor} class={cn(styles.button(), (theme as TimepickerTheme)?.button)}>
136
175
  {optionLabel}
137
- <svg class="ml-2 h-4 w-4" aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg>
176
+ <svg class={cn(styles.buttonIcon(), (theme as TimepickerTheme)?.buttonIcon)} aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
177
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
178
+ </svg>
138
179
  </Button>
139
180
  <Dropdown simple>
140
181
  {#each options as option}
@@ -144,67 +185,69 @@
144
185
  {/each}
145
186
  </Dropdown>
146
187
  {:else if type === "range"}
147
- <div class="relative">
148
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={twMerge(cn("relative pr-8", inputCls))} bind:value onchange={(e) => handleTimeChange(e)} />
149
- <button type="button" class="pointer-events-none absolute inset-y-0 top-0 right-0 flex items-center border-0 bg-transparent pe-3.5" onclick={() => document.getElementById(id)?.click()} aria-label="Open time picker">
188
+ <div class={cn(styles.rangeInputWrapper(), (theme as TimepickerTheme)?.rangeInputWrapper)}>
189
+ <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn(styles.input(), styles.rangeInput(), inputClass, (theme as TimepickerTheme)?.rangeInput)} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
190
+ <button type="button" class={cn(styles.rangeButton(), (theme as TimepickerTheme)?.rangeButton)} onclick={() => document.getElementById(id)?.click()} aria-label="Open time picker">
150
191
  {#if Icon}
151
192
  <Icon class={iconClass} />
152
193
  {:else}
153
- <svg class="h-4 w-4 text-gray-500 dark:text-gray-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
194
+ <svg class={cn(styles.icon(), (theme as TimepickerTheme)?.icon)} aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
154
195
  <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6v4l3.276 3.276M19 10a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
155
196
  </svg>
156
197
  {/if}
157
198
  </button>
158
199
  </div>
159
- <span class="flex items-center justify-center px-2 text-gray-500 dark:text-gray-400">-</span>
160
- <div class="relative">
161
- <Input id={endId} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn(inputCls, "relative pr-8")} bind:value={endValue} onchange={(e) => handleTimeChange(e, true)} />
162
- <button type="button" class="pointer-events-none absolute inset-y-0 top-0 right-0 flex items-center border-0 bg-transparent pe-3.5" onclick={() => document.getElementById(endId)?.click()} aria-label="Open end time picker">
200
+ <span class={cn(styles.rangeSeparator(), (theme as TimepickerTheme)?.rangeSeparator)}>-</span>
201
+ <div class={cn(styles.rangeInputWrapper(), (theme as TimepickerTheme)?.rangeInputWrapper)}>
202
+ <Input id={endId} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn(styles.input(), styles.rangeInput(), inputClass, (theme as TimepickerTheme)?.rangeInput)} bind:value={endValue} oninput={(e) => handleTimeChange(e, true)} onchange={(e) => handleTimeChange(e, true)} />
203
+ <button type="button" class={cn(styles.rangeButton(), (theme as TimepickerTheme)?.rangeButton)} onclick={() => document.getElementById(endId)?.click()} aria-label="Open end time picker">
163
204
  {#if Icon}
164
205
  <Icon class={iconClass} />
165
206
  {:else}
166
- <svg class="h-4 w-4 text-gray-500 dark:text-gray-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
207
+ <svg class={cn(styles.icon(), (theme as TimepickerTheme)?.icon)} aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
167
208
  <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6v4l3.276 3.276M19 10a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
168
209
  </svg>
169
210
  {/if}
170
211
  </button>
171
212
  </div>
172
213
  {:else if type === "timerange-dropdown"}
173
- <Button color={buttonColor} {size} class="!rounded-r-lg">
214
+ <Button color={buttonColor} {size} class={cn(styles.button(), (theme as TimepickerTheme)?.button)}>
174
215
  {timerangeLabel}
175
- <svg class="ml-2 h-4 w-4" aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg>
216
+ <svg class={cn(styles.buttonIcon(), (theme as TimepickerTheme)?.buttonIcon)} aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
217
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
218
+ </svg>
176
219
  </Button>
177
- <Dropdown simple class="p-4 last:rounded-r-lg">
178
- <div class="flex flex-col space-y-4">
179
- <div class="flex space-x-4">
180
- <div class="flex flex-col">
220
+ <Dropdown simple class={cn(styles.dropdownContent(), (theme as TimepickerTheme)?.dropdownContent)}>
221
+ <div class={cn(styles.dropdownInner(), (theme as TimepickerTheme)?.dropdownInner)}>
222
+ <div class={cn(styles.dropdownTimeRow(), (theme as TimepickerTheme)?.dropdownTimeRow)}>
223
+ <div class={cn(styles.dropdownTimeCol(), (theme as TimepickerTheme)?.dropdownTimeCol)}>
181
224
  <Label for={id}>Start time:</Label>
182
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn("w-24 rounded-l-lg !border-r px-2", inputCls)} bind:value onchange={(e) => handleTimeChange(e)} />
225
+ <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn(styles.dropdownTimeInput(), inputClass, (theme as TimepickerTheme)?.dropdownTimeInput)} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
183
226
  </div>
184
- <div class="flex flex-col">
227
+ <div class={cn(styles.dropdownTimeCol(), (theme as TimepickerTheme)?.dropdownTimeCol)}>
185
228
  <Label for={endId}>End time:</Label>
186
- <Input id={endId} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn("w-24 rounded-l-lg !border-r px-2", inputCls)} bind:value={endValue} onchange={(e) => handleTimeChange(e, true)} />
229
+ <Input id={endId} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn(styles.dropdownTimeInput(), inputClass, (theme as TimepickerTheme)?.dropdownTimeInput)} bind:value={endValue} oninput={(e) => handleTimeChange(e, true)} onchange={(e) => handleTimeChange(e, true)} />
187
230
  </div>
188
231
  </div>
189
- <Button color={buttonColor} class="w-full !rounded-l-lg" onclick={applyTimerange}>
232
+ <Button color={buttonColor} class={cn(styles.dropdownButton(), (theme as TimepickerTheme)?.dropdownButton)} onclick={applyTimerange}>
190
233
  {timerangeButtonLabel}
191
234
  </Button>
192
235
  </div>
193
236
  </Dropdown>
194
237
  {:else if type === "timerange-toggle"}
195
- <div class="flex w-full flex-col space-y-2">
196
- <div class="flex items-center justify-between">
238
+ <div class={cn(styles.toggleWrapper(), (theme as TimepickerTheme)?.toggleWrapper)}>
239
+ <div class={cn(styles.toggleRow(), (theme as TimepickerTheme)?.toggleRow)}>
197
240
  <Toggle id={`${id}-timerange-toggle`} checked={showTimerange} onchange={toggleTimerange} spanClass="me-0 rounded-lg" />
198
241
  </div>
199
242
  {#if showTimerange}
200
- <div class="flex space-x-4 p-2.5">
201
- <div class="flex flex-col">
243
+ <div class={cn(styles.toggleTimeRow(), (theme as TimepickerTheme)?.toggleTimeRow)}>
244
+ <div class={cn(styles.toggleTimeCol(), (theme as TimepickerTheme)?.toggleTimeCol)}>
202
245
  <Label for={id}>Start time:</Label>
203
- <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn("w-24 rounded-lg !border-r px-2", inputCls)} bind:value onchange={(e) => handleTimeChange(e)} />
246
+ <Input {id} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn(styles.toggleTimeInput(), inputClass, (theme as TimepickerTheme)?.toggleTimeInput)} bind:value oninput={(e) => handleTimeChange(e)} onchange={(e) => handleTimeChange(e)} />
204
247
  </div>
205
- <div class="flex flex-col">
248
+ <div class={cn(styles.toggleTimeCol(), (theme as TimepickerTheme)?.toggleTimeCol)}>
206
249
  <Label for={endId}>End time:</Label>
207
- <Input id={endId} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn("w-24 rounded-lg !border-r px-2", inputCls)} bind:value={endValue} onchange={(e) => handleTimeChange(e, true)} />
250
+ <Input id={endId} color={inputColor} type="time" {min} {max} {required} {disabled} class={cn(styles.toggleTimeInput(), inputClass, (theme as TimepickerTheme)?.toggleTimeInput)} bind:value={endValue} oninput={(e) => handleTimeChange(e, true)} onchange={(e) => handleTimeChange(e, true)} />
208
251
  </div>
209
252
  </div>
210
253
  {/if}
@@ -212,9 +255,9 @@
212
255
  {/if}
213
256
  </ButtonGroup>
214
257
  {:else}
215
- <div class="grid w-full gap-2" class:grid-cols-1={columns === 1} class:grid-cols-2={columns === 2} class:grid-cols-3={columns === 3} class:grid-cols-4={columns === 4}>
258
+ <div class={cn(styles.inlineGrid(), (theme as TimepickerTheme)?.inlineGrid)}>
216
259
  {#each timeIntervals as time}
217
- <Button {size} color={value === time ? buttonColor : "light"} class="rounded-lg" onclick={() => handleInlineButtonSelect(time)}>
260
+ <Button {size} color={value === time ? buttonColor : "light"} class={cn(styles.inlineButton(), (theme as TimepickerTheme)?.inlineButton)} onclick={() => handleInlineButtonSelect(time)}>
218
261
  {time}
219
262
  </Button>
220
263
  {/each}
@@ -225,7 +268,7 @@
225
268
  @component
226
269
  [Go to docs](https://flowbite-svelte.com/)
227
270
  ## Type
228
- [TimepickerProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L924)
271
+ [TimepickerProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L917)
229
272
  ## Props
230
273
  @prop id = "time"
231
274
  @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#L924)
5
+ * [TimepickerProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L917)
6
6
  * ## Props
7
7
  * @prop id = "time"
8
8
  * @prop endId = "end-time"
@@ -1 +1,2 @@
1
1
  export { default as Timepicker } from "./Timepicker.svelte";
2
+ export { timepicker, type TimepickerTheme } from "./theme";
@@ -1 +1,2 @@
1
1
  export { default as Timepicker } from "./Timepicker.svelte";
2
+ export { timepicker } from "./theme";
@@ -0,0 +1,191 @@
1
+ import { type VariantProps } from "tailwind-variants";
2
+ export type TimepickerVariants = VariantProps<typeof timepicker>;
3
+ export declare const timepicker: import("tailwind-variants").TVReturnType<{
4
+ type: {
5
+ default: {
6
+ input: string;
7
+ };
8
+ select: {
9
+ input: string;
10
+ select: string;
11
+ };
12
+ dropdown: {
13
+ input: string;
14
+ };
15
+ range: {};
16
+ "timerange-dropdown": {};
17
+ "timerange-toggle": {};
18
+ "inline-buttons": {};
19
+ };
20
+ columns: {
21
+ 1: {
22
+ inlineGrid: string;
23
+ };
24
+ 2: {
25
+ inlineGrid: string;
26
+ };
27
+ 3: {
28
+ inlineGrid: string;
29
+ };
30
+ 4: {
31
+ inlineGrid: string;
32
+ };
33
+ };
34
+ disabled: {
35
+ true: {
36
+ input: string;
37
+ };
38
+ };
39
+ }, {
40
+ buttonGroup: string;
41
+ input: string;
42
+ inputWithIcon: string;
43
+ iconWrapper: string;
44
+ icon: string;
45
+ select: string;
46
+ button: string;
47
+ buttonIcon: string;
48
+ rangeSeparator: string;
49
+ rangeInputWrapper: string;
50
+ rangeInput: string;
51
+ rangeButton: string;
52
+ dropdownContent: string;
53
+ dropdownInner: string;
54
+ dropdownTimeRow: string;
55
+ dropdownTimeCol: string;
56
+ dropdownTimeInput: string;
57
+ dropdownButton: string;
58
+ toggleWrapper: string;
59
+ toggleRow: string;
60
+ toggleTimeRow: string;
61
+ toggleTimeCol: string;
62
+ toggleTimeInput: string;
63
+ inlineGrid: string;
64
+ inlineButton: string;
65
+ }, undefined, {
66
+ type: {
67
+ default: {
68
+ input: string;
69
+ };
70
+ select: {
71
+ input: string;
72
+ select: string;
73
+ };
74
+ dropdown: {
75
+ input: string;
76
+ };
77
+ range: {};
78
+ "timerange-dropdown": {};
79
+ "timerange-toggle": {};
80
+ "inline-buttons": {};
81
+ };
82
+ columns: {
83
+ 1: {
84
+ inlineGrid: string;
85
+ };
86
+ 2: {
87
+ inlineGrid: string;
88
+ };
89
+ 3: {
90
+ inlineGrid: string;
91
+ };
92
+ 4: {
93
+ inlineGrid: string;
94
+ };
95
+ };
96
+ disabled: {
97
+ true: {
98
+ input: string;
99
+ };
100
+ };
101
+ }, {
102
+ buttonGroup: string;
103
+ input: string;
104
+ inputWithIcon: string;
105
+ iconWrapper: string;
106
+ icon: string;
107
+ select: string;
108
+ button: string;
109
+ buttonIcon: string;
110
+ rangeSeparator: string;
111
+ rangeInputWrapper: string;
112
+ rangeInput: string;
113
+ rangeButton: string;
114
+ dropdownContent: string;
115
+ dropdownInner: string;
116
+ dropdownTimeRow: string;
117
+ dropdownTimeCol: string;
118
+ dropdownTimeInput: string;
119
+ dropdownButton: string;
120
+ toggleWrapper: string;
121
+ toggleRow: string;
122
+ toggleTimeRow: string;
123
+ toggleTimeCol: string;
124
+ toggleTimeInput: string;
125
+ inlineGrid: string;
126
+ inlineButton: string;
127
+ }, import("tailwind-variants").TVReturnType<{
128
+ type: {
129
+ default: {
130
+ input: string;
131
+ };
132
+ select: {
133
+ input: string;
134
+ select: string;
135
+ };
136
+ dropdown: {
137
+ input: string;
138
+ };
139
+ range: {};
140
+ "timerange-dropdown": {};
141
+ "timerange-toggle": {};
142
+ "inline-buttons": {};
143
+ };
144
+ columns: {
145
+ 1: {
146
+ inlineGrid: string;
147
+ };
148
+ 2: {
149
+ inlineGrid: string;
150
+ };
151
+ 3: {
152
+ inlineGrid: string;
153
+ };
154
+ 4: {
155
+ inlineGrid: string;
156
+ };
157
+ };
158
+ disabled: {
159
+ true: {
160
+ input: string;
161
+ };
162
+ };
163
+ }, {
164
+ buttonGroup: string;
165
+ input: string;
166
+ inputWithIcon: string;
167
+ iconWrapper: string;
168
+ icon: string;
169
+ select: string;
170
+ button: string;
171
+ buttonIcon: string;
172
+ rangeSeparator: string;
173
+ rangeInputWrapper: string;
174
+ rangeInput: string;
175
+ rangeButton: string;
176
+ dropdownContent: string;
177
+ dropdownInner: string;
178
+ dropdownTimeRow: string;
179
+ dropdownTimeCol: string;
180
+ dropdownTimeInput: string;
181
+ dropdownButton: string;
182
+ toggleWrapper: string;
183
+ toggleRow: string;
184
+ toggleTimeRow: string;
185
+ toggleTimeCol: string;
186
+ toggleTimeInput: string;
187
+ inlineGrid: string;
188
+ inlineButton: string;
189
+ }, undefined, unknown, unknown, undefined>>;
190
+ export type TimepickerSlots = keyof typeof timepicker.slots;
191
+ export type TimepickerTheme = Partial<Record<TimepickerSlots, string>>;
@@ -0,0 +1,72 @@
1
+ import { tv } from "tailwind-variants";
2
+ export const timepicker = tv({
3
+ slots: {
4
+ buttonGroup: "inline-flex rounded-lg shadow-sm",
5
+ input: "block disabled:cursor-not-allowed disabled:opacity-50 rtl:text-right focus:ring-0 focus:outline-none",
6
+ inputWithIcon: "relative px-2 pr-8",
7
+ iconWrapper: "pointer-events-none absolute inset-y-0 end-0 top-0 flex items-center pe-3.5",
8
+ icon: "h-4 w-4 text-gray-500 dark:text-gray-400",
9
+ select: "text-gray-900 disabled:text-gray-400 bg-gray-50 border border-gray-300 focus:ring-0 focus:outline-none block w-full border-l-1 focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:disabled:text-gray-500 dark:focus:ring-primary-500 dark:focus:border-primary-500",
10
+ button: "!rounded-r-lg",
11
+ buttonIcon: "ml-2 h-4 w-4",
12
+ rangeSeparator: "flex items-center justify-center px-2 text-gray-500 dark:text-gray-400",
13
+ rangeInputWrapper: "relative",
14
+ rangeInput: "relative pr-8",
15
+ rangeButton: "pointer-events-none absolute inset-y-0 top-0 right-0 flex items-center border-0 bg-transparent pe-3.5",
16
+ dropdownContent: "p-4 last:rounded-r-lg",
17
+ dropdownInner: "flex flex-col space-y-4",
18
+ dropdownTimeRow: "flex space-x-4",
19
+ dropdownTimeCol: "flex flex-col",
20
+ dropdownTimeInput: "w-24 rounded-l-lg !border-r px-2",
21
+ dropdownButton: "w-full !rounded-l-lg",
22
+ toggleWrapper: "flex w-full flex-col space-y-2",
23
+ toggleRow: "flex items-center justify-between",
24
+ toggleTimeRow: "flex space-x-4 p-2.5",
25
+ toggleTimeCol: "flex flex-col",
26
+ toggleTimeInput: "w-24 rounded-lg !border-r px-2",
27
+ inlineGrid: "grid w-full gap-2",
28
+ inlineButton: "rounded-lg"
29
+ },
30
+ variants: {
31
+ type: {
32
+ default: {
33
+ input: "rounded-e-lg"
34
+ },
35
+ select: {
36
+ input: "w-1/3 rounded-l-lg rounded-e-none",
37
+ select: "rounded-r-lg rounded-l-none"
38
+ },
39
+ dropdown: {
40
+ input: "rounded-l-lg rounded-e-none"
41
+ },
42
+ range: {},
43
+ "timerange-dropdown": {},
44
+ "timerange-toggle": {},
45
+ "inline-buttons": {}
46
+ },
47
+ columns: {
48
+ 1: {
49
+ inlineGrid: "grid-cols-1"
50
+ },
51
+ 2: {
52
+ inlineGrid: "grid-cols-2"
53
+ },
54
+ 3: {
55
+ inlineGrid: "grid-cols-3"
56
+ },
57
+ 4: {
58
+ inlineGrid: "grid-cols-4"
59
+ }
60
+ },
61
+ disabled: {
62
+ true: {
63
+ input: "disabled:cursor-not-allowed disabled:opacity-50"
64
+ }
65
+ }
66
+ },
67
+ defaultVariants: {
68
+ type: "default",
69
+ columns: 2,
70
+ disabled: false
71
+ }
72
+ });
@@ -1,18 +1,21 @@
1
1
  <script lang="ts">
2
- import { toggle } from "./index";
2
+ import { toggle, type ToggleTheme } from "./index";
3
3
  import { type ToggleProps, Label, cn } from "../..";
4
+ import { getTheme } from "../../theme/themeUtils";
4
5
 
5
6
  let { children, size = "default", value, checked = $bindable(), disabled, color = "primary", class: className, inputClass, spanClass, offLabel, ...restProps }: ToggleProps = $props();
6
7
 
8
+ const theme = getTheme("toggle");
9
+
7
10
  const { input, label, span } = $derived(toggle({ color, checked, size, disabled, off_state_label: !!offLabel }));
8
11
  </script>
9
12
 
10
- <Label class={cn(label(), className)}>
13
+ <Label class={cn(label(), className, (theme as ToggleTheme)?.label)}>
11
14
  {#if offLabel}
12
15
  {@render offLabel()}
13
16
  {/if}
14
- <input type="checkbox" bind:checked {value} {...restProps} {disabled} class={cn(input(), inputClass)} />
15
- <span class={cn(span(), spanClass)}></span>
17
+ <input type="checkbox" bind:checked {value} {...restProps} {disabled} class={cn(input(), inputClass, (theme as ToggleTheme)?.input)} />
18
+ <span class={cn(span(), spanClass, (theme as ToggleTheme)?.span)}></span>
16
19
  {#if children}
17
20
  {@render children()}
18
21
  {/if}
@@ -22,7 +25,7 @@
22
25
  @component
23
26
  [Go to docs](https://flowbite-svelte.com/)
24
27
  ## Type
25
- [ToggleProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L975)
28
+ [ToggleProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L968)
26
29
  ## Props
27
30
  @prop children
28
31
  @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#L975)
5
+ * [ToggleProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L968)
6
6
  * ## Props
7
7
  * @prop children
8
8
  * @prop size = "default"
@@ -1,2 +1,2 @@
1
1
  export { default as Toggle } from "./Toggle.svelte";
2
- export { toggle } from "./theme";
2
+ export { toggle, type ToggleTheme } from "./theme";
@@ -277,3 +277,5 @@ export declare const toggle: import("tailwind-variants").TVReturnType<{
277
277
  label: string;
278
278
  input: string;
279
279
  }, undefined, unknown, unknown, undefined>>;
280
+ export type ToggleSlots = keyof typeof toggle.slots;
281
+ export type ToggleTheme = Partial<Record<ToggleSlots, string>>;