flowbite-svelte 0.44.8 → 0.44.10

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 (758) hide show
  1. package/.env +2 -0
  2. package/.eslintrc.cjs +20 -0
  3. package/.github/ISSUE_TEMPLATE/bug_report.yml +33 -0
  4. package/.github/ISSUE_TEMPLATE/config.yml +5 -0
  5. package/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
  6. package/.github/pull_request_template.md +71 -0
  7. package/.github/workflows/playwright-and-lint.yaml +47 -0
  8. package/.prettierignore +16 -0
  9. package/.prettierrc +9 -0
  10. package/CHANGELOG.md +3858 -0
  11. package/CONTRIBUTING.md +66 -0
  12. package/dist/bottom-nav/BottomNavItem.svelte +3 -1
  13. package/dist/bottom-nav/BottomNavItem.svelte.d.ts +2 -0
  14. package/dist/bottom-nav/BottomNavItem.svelte.d.ts.map +1 -1
  15. package/dist/carousels/Carousel.svelte +52 -153
  16. package/dist/carousels/Carousel.svelte.d.ts +22 -37
  17. package/dist/carousels/Carousel.svelte.d.ts.map +1 -1
  18. package/dist/carousels/ControlButton.svelte +31 -0
  19. package/dist/carousels/ControlButton.svelte.d.ts +29 -0
  20. package/dist/carousels/ControlButton.svelte.d.ts.map +1 -0
  21. package/dist/carousels/Controls.svelte +17 -0
  22. package/dist/carousels/Controls.svelte.d.ts +23 -0
  23. package/dist/carousels/Controls.svelte.d.ts.map +1 -0
  24. package/dist/carousels/Indicators.svelte +26 -0
  25. package/dist/carousels/Indicators.svelte.d.ts +32 -0
  26. package/dist/carousels/Indicators.svelte.d.ts.map +1 -0
  27. package/dist/carousels/Thumbnail.svelte +6 -23
  28. package/dist/carousels/Thumbnail.svelte.d.ts +5 -16
  29. package/dist/carousels/Thumbnail.svelte.d.ts.map +1 -1
  30. package/dist/carousels/Thumbnails.svelte +26 -0
  31. package/dist/carousels/Thumbnails.svelte.d.ts +33 -0
  32. package/dist/carousels/Thumbnails.svelte.d.ts.map +1 -0
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/tables/TableSearch.svelte +2 -2
  37. package/dist/tables/TableSearch.svelte.d.ts +1 -1
  38. package/mdsvex.config.js +18 -0
  39. package/package.json +18 -80
  40. package/playwright.config.ts +12 -0
  41. package/postcss.config.cjs +12 -0
  42. package/src/app.css +45 -0
  43. package/src/app.d.ts +9 -0
  44. package/src/app.html +28 -0
  45. package/src/app.postcss +55 -0
  46. package/src/hooks.server.js +27 -0
  47. package/src/lib/accordion/Accordion.svelte +61 -0
  48. package/src/lib/accordion/AccordionItem.svelte +120 -0
  49. package/src/lib/alerts/Alert.svelte +60 -0
  50. package/src/lib/avatar/Avatar.svelte +56 -0
  51. package/src/lib/avatar/Placeholder.svelte +16 -0
  52. package/src/lib/badges/Badge.svelte +108 -0
  53. package/src/lib/banner/Banner.svelte +64 -0
  54. package/src/lib/bottom-nav/BottomNav.svelte +76 -0
  55. package/src/lib/bottom-nav/BottomNavHeader.svelte +19 -0
  56. package/src/lib/bottom-nav/BottomNavHeaderItem.svelte +23 -0
  57. package/src/lib/bottom-nav/BottomNavItem.svelte +76 -0
  58. package/src/lib/breadcrumbs/Breadcrumb.svelte +25 -0
  59. package/src/lib/breadcrumbs/BreadcrumbItem.svelte +51 -0
  60. package/src/lib/buttongroups/ButtonGroup.svelte +22 -0
  61. package/src/lib/buttons/Button.svelte +100 -0
  62. package/src/lib/buttons/GradientButton.svelte +79 -0
  63. package/src/lib/cards/Card.svelte +70 -0
  64. package/src/lib/carousels/Carousel.svelte +166 -0
  65. package/src/lib/carousels/ControlButton.svelte +34 -0
  66. package/src/lib/carousels/Controls.svelte +21 -0
  67. package/src/lib/carousels/Indicators.svelte +31 -0
  68. package/src/lib/carousels/Thumbnail.svelte +20 -0
  69. package/src/lib/carousels/Thumbnails.svelte +30 -0
  70. package/src/lib/charts/Chart.svelte +35 -0
  71. package/src/lib/darkmode/DarkMode.svelte +58 -0
  72. package/src/lib/datepicker/Calender.svelte +3 -0
  73. package/src/lib/datepicker/Datepicker.svelte +66 -0
  74. package/src/lib/device-mockup/Android.svelte +24 -0
  75. package/src/lib/device-mockup/DefaultMockup.svelte +21 -0
  76. package/src/lib/device-mockup/DeviceMockup.svelte +235 -0
  77. package/src/lib/device-mockup/Ios.svelte +21 -0
  78. package/src/lib/device-mockup/Smartwatch.svelte +15 -0
  79. package/src/lib/device-mockup/Tablet.svelte +21 -0
  80. package/src/lib/drawer/Drawer.svelte +87 -0
  81. package/src/lib/dropdowns/Dropdown.svelte +81 -0
  82. package/src/lib/dropdowns/DropdownDivider.svelte +13 -0
  83. package/src/lib/dropdowns/DropdownHeader.svelte +21 -0
  84. package/src/lib/dropdowns/DropdownItem.svelte +47 -0
  85. package/src/lib/footer/Footer.svelte +18 -0
  86. package/src/lib/footer/FooterBrand.svelte +39 -0
  87. package/src/lib/footer/FooterCopyright.svelte +38 -0
  88. package/src/lib/footer/FooterIcon.svelte +25 -0
  89. package/src/lib/footer/FooterLink.svelte +26 -0
  90. package/src/lib/footer/FooterLinkGroup.svelte +15 -0
  91. package/src/lib/forms/Checkbox.svelte +70 -0
  92. package/src/lib/forms/Dropzone.svelte +32 -0
  93. package/src/lib/forms/Fileupload.svelte +21 -0
  94. package/src/lib/forms/FloatingLabelInput.svelte +94 -0
  95. package/src/lib/forms/Helper.svelte +23 -0
  96. package/src/lib/forms/Input.svelte +83 -0
  97. package/src/lib/forms/InputAddon.svelte +47 -0
  98. package/src/lib/forms/Label.svelte +40 -0
  99. package/src/lib/forms/MultiSelect.svelte +126 -0
  100. package/src/lib/forms/NumberInput.svelte +16 -0
  101. package/src/lib/forms/Radio.svelte +53 -0
  102. package/src/lib/forms/RadioInline.svelte +9 -0
  103. package/src/lib/forms/Range.svelte +24 -0
  104. package/src/lib/forms/Search.svelte +44 -0
  105. package/src/lib/forms/Select.svelte +49 -0
  106. package/src/lib/forms/Textarea.svelte +51 -0
  107. package/src/lib/forms/Toggle.svelte +56 -0
  108. package/src/lib/forms/VoiceSearch.svelte +57 -0
  109. package/src/lib/gallery/Gallery.svelte +31 -0
  110. package/src/lib/index.ts +225 -0
  111. package/src/lib/indicators/Indicator.svelte +86 -0
  112. package/src/lib/kbd/ArrowKeyDown.svelte +15 -0
  113. package/src/lib/kbd/ArrowKeyLeft.svelte +15 -0
  114. package/src/lib/kbd/ArrowKeyRight.svelte +15 -0
  115. package/src/lib/kbd/ArrowKeyUp.svelte +15 -0
  116. package/src/lib/kbd/Kbd.svelte +15 -0
  117. package/src/lib/list-group/Listgroup.svelte +45 -0
  118. package/src/lib/list-group/ListgroupItem.svelte +57 -0
  119. package/src/lib/megamenu/MegaMenu.svelte +52 -0
  120. package/src/lib/modals/Modal.svelte +162 -0
  121. package/src/lib/navbar/Menu.svelte +38 -0
  122. package/src/lib/navbar/NavBrand.svelte +15 -0
  123. package/src/lib/navbar/NavHamburger.svelte +20 -0
  124. package/src/lib/navbar/NavLi.svelte +37 -0
  125. package/src/lib/navbar/NavSidebarHamburger.svelte +20 -0
  126. package/src/lib/navbar/NavUl.svelte +68 -0
  127. package/src/lib/navbar/Navbar.svelte +42 -0
  128. package/src/lib/navbar/SidebarMenu.svelte +37 -0
  129. package/src/lib/paginations/Pagination.svelte +59 -0
  130. package/src/lib/paginations/PaginationItem.svelte +40 -0
  131. package/src/lib/popover/Popover.svelte +34 -0
  132. package/src/lib/progressbars/Progressbar.svelte +52 -0
  133. package/src/lib/ratings/AdvancedRating.svelte +45 -0
  134. package/src/lib/ratings/Heart.svelte +39 -0
  135. package/src/lib/ratings/Rating.svelte +57 -0
  136. package/src/lib/ratings/RatingComment.svelte +85 -0
  137. package/src/lib/ratings/Review.svelte +78 -0
  138. package/src/lib/ratings/ScoreRating.svelte +76 -0
  139. package/src/lib/ratings/Star.svelte +47 -0
  140. package/src/lib/ratings/Thumbup.svelte +39 -0
  141. package/src/lib/sidebars/Sidebar.svelte +40 -0
  142. package/src/lib/sidebars/SidebarBrand.svelte +24 -0
  143. package/src/lib/sidebars/SidebarCta.svelte +28 -0
  144. package/src/lib/sidebars/SidebarDropdownItem.svelte +26 -0
  145. package/src/lib/sidebars/SidebarDropdownWrapper.svelte +71 -0
  146. package/src/lib/sidebars/SidebarGroup.svelte +24 -0
  147. package/src/lib/sidebars/SidebarItem.svelte +49 -0
  148. package/src/lib/sidebars/SidebarWrapper.svelte +16 -0
  149. package/src/lib/skeleton/CardPlaceholder.svelte +48 -0
  150. package/src/lib/skeleton/ImagePlaceholder.svelte +31 -0
  151. package/src/lib/skeleton/ListPlaceholder.svelte +50 -0
  152. package/src/lib/skeleton/Skeleton.svelte +38 -0
  153. package/src/lib/skeleton/TestimonialPlaceholder.svelte +24 -0
  154. package/src/lib/skeleton/TextPlaceholder.svelte +60 -0
  155. package/src/lib/skeleton/VideoPlaceholder.svelte +33 -0
  156. package/src/lib/skeleton/WidgetPlaceholder.svelte +26 -0
  157. package/src/lib/speed-dial/SpeedDial.svelte +80 -0
  158. package/src/lib/speed-dial/SpeedDialButton.svelte +49 -0
  159. package/src/lib/spinners/Spinner.svelte +49 -0
  160. package/src/lib/steps/StepIndicator.svelte +75 -0
  161. package/src/lib/tables/Table.svelte +49 -0
  162. package/src/lib/tables/TableBody.svelte +14 -0
  163. package/src/lib/tables/TableBodyCell.svelte +22 -0
  164. package/src/lib/tables/TableBodyRow.svelte +50 -0
  165. package/src/lib/tables/TableHead.svelte +45 -0
  166. package/src/lib/tables/TableHeadCell.svelte +15 -0
  167. package/src/lib/tables/TableSearch.svelte +73 -0
  168. package/src/lib/tabs/TabItem.svelte +61 -0
  169. package/src/lib/tabs/Tabs.svelte +78 -0
  170. package/src/lib/timeline/Activity.svelte +16 -0
  171. package/src/lib/timeline/ActivityItem.svelte +59 -0
  172. package/src/lib/timeline/Group.svelte +27 -0
  173. package/src/lib/timeline/GroupItem.svelte +59 -0
  174. package/src/lib/timeline/Timeline.svelte +25 -0
  175. package/src/lib/timeline/TimelineHorizontal.svelte +17 -0
  176. package/src/lib/timeline/TimelineItem.svelte +116 -0
  177. package/src/lib/timeline/TimelineItemHorizontal.svelte +72 -0
  178. package/src/lib/timeline/TimelineItemVertical.svelte +44 -0
  179. package/src/lib/toasts/Toast.svelte +99 -0
  180. package/src/lib/toolbar/Toolbar.svelte +52 -0
  181. package/src/lib/toolbar/ToolbarButton.svelte +67 -0
  182. package/src/lib/toolbar/ToolbarGroup.svelte +20 -0
  183. package/src/lib/tooltips/Tooltip.svelte +42 -0
  184. package/src/lib/types.ts +163 -0
  185. package/src/lib/typography/A.svelte +20 -0
  186. package/src/lib/typography/Blockquote.svelte +51 -0
  187. package/src/lib/typography/DescriptionList.svelte +22 -0
  188. package/src/lib/typography/Heading.svelte +28 -0
  189. package/src/lib/typography/Hr.svelte +37 -0
  190. package/src/lib/typography/Img.svelte +39 -0
  191. package/src/lib/typography/Layout.svelte +21 -0
  192. package/src/lib/typography/Li.svelte +19 -0
  193. package/src/lib/typography/List.svelte +33 -0
  194. package/src/lib/typography/Mark.svelte +20 -0
  195. package/src/lib/typography/P.svelte +102 -0
  196. package/src/lib/typography/Secondary.svelte +18 -0
  197. package/src/lib/typography/Span.svelte +35 -0
  198. package/src/lib/utils/CloseButton.svelte +19 -0
  199. package/src/lib/utils/Frame.svelte +142 -0
  200. package/src/lib/utils/Popper.svelte +206 -0
  201. package/src/lib/utils/Wrapper.svelte +22 -0
  202. package/src/lib/utils/backdrop.ts +101 -0
  203. package/src/lib/utils/clickOutside.ts +16 -0
  204. package/src/lib/utils/createEventDispatcher.ts +24 -0
  205. package/src/lib/utils/focusTrap.js +42 -0
  206. package/src/lib/utils/generateId.js +5 -0
  207. package/src/lib/video/Video.svelte +29 -0
  208. package/src/routes/+error.svelte +5 -0
  209. package/src/routes/+layout.svelte +98 -0
  210. package/src/routes/+page.server.ts +18 -0
  211. package/src/routes/+page.svelte +55 -0
  212. package/src/routes/api/posts/+server.js +7 -0
  213. package/src/routes/component-data/A.json +10 -0
  214. package/src/routes/component-data/Accordion.json +12 -0
  215. package/src/routes/component-data/AccordionItem.json +23 -0
  216. package/src/routes/component-data/Activity.json +1 -0
  217. package/src/routes/component-data/ActivityItem.json +16 -0
  218. package/src/routes/component-data/AdvancedRating.json +13 -0
  219. package/src/routes/component-data/Alert.json +9 -0
  220. package/src/routes/component-data/Android.json +12 -0
  221. package/src/routes/component-data/ArrowKeyDown.json +1 -0
  222. package/src/routes/component-data/ArrowKeyLeft.json +1 -0
  223. package/src/routes/component-data/ArrowKeyRight.json +1 -0
  224. package/src/routes/component-data/ArrowKeyUp.json +1 -0
  225. package/src/routes/component-data/Avatar.json +15 -0
  226. package/src/routes/component-data/Badge.json +10 -0
  227. package/src/routes/component-data/Banner.json +12 -0
  228. package/src/routes/component-data/Blockquote.json +15 -0
  229. package/src/routes/component-data/BottomNav.json +13 -0
  230. package/src/routes/component-data/BottomNavHeader.json +9 -0
  231. package/src/routes/component-data/BottomNavHeaderItem.json +11 -0
  232. package/src/routes/component-data/BottomNavItem.json +12 -0
  233. package/src/routes/component-data/Breadcrumb.json +11 -0
  234. package/src/routes/component-data/BreadcrumbItem.json +12 -0
  235. package/src/routes/component-data/Button.json +14 -0
  236. package/src/routes/component-data/ButtonGroup.json +9 -0
  237. package/src/routes/component-data/Calender.json +1 -0
  238. package/src/routes/component-data/Card.json +13 -0
  239. package/src/routes/component-data/CardPlaceholder.json +9 -0
  240. package/src/routes/component-data/Carousel.json +11 -0
  241. package/src/routes/component-data/Chart.json +1 -0
  242. package/src/routes/component-data/Checkbox.json +14 -0
  243. package/src/routes/component-data/CloseButton.json +1 -0
  244. package/src/routes/component-data/ControlButton.json +9 -0
  245. package/src/routes/component-data/Controls.json +1 -0
  246. package/src/routes/component-data/DarkMode.json +9 -0
  247. package/src/routes/component-data/Datepicker.json +14 -0
  248. package/src/routes/component-data/DefaultMockup.json +11 -0
  249. package/src/routes/component-data/DescriptionList.json +10 -0
  250. package/src/routes/component-data/DeviceMockup.json +50 -0
  251. package/src/routes/component-data/Drawer.json +23 -0
  252. package/src/routes/component-data/Dropdown.json +13 -0
  253. package/src/routes/component-data/DropdownDivider.json +1 -0
  254. package/src/routes/component-data/DropdownHeader.json +9 -0
  255. package/src/routes/component-data/DropdownItem.json +10 -0
  256. package/src/routes/component-data/Dropzone.json +10 -0
  257. package/src/routes/component-data/Fileupload.json +10 -0
  258. package/src/routes/component-data/FloatingLabelInput.json +14 -0
  259. package/src/routes/component-data/Footer.json +1 -0
  260. package/src/routes/component-data/FooterBrand.json +15 -0
  261. package/src/routes/component-data/FooterCopyright.json +14 -0
  262. package/src/routes/component-data/FooterIcon.json +11 -0
  263. package/src/routes/component-data/FooterLink.json +11 -0
  264. package/src/routes/component-data/FooterLinkGroup.json +1 -0
  265. package/src/routes/component-data/Frame.json +18 -0
  266. package/src/routes/component-data/Gallery.json +9 -0
  267. package/src/routes/component-data/GradientButton.json +9 -0
  268. package/src/routes/component-data/Group.json +11 -0
  269. package/src/routes/component-data/GroupItem.json +13 -0
  270. package/src/routes/component-data/Heading.json +10 -0
  271. package/src/routes/component-data/Heart.json +14 -0
  272. package/src/routes/component-data/Helper.json +9 -0
  273. package/src/routes/component-data/Hr.json +13 -0
  274. package/src/routes/component-data/ImagePlaceholder.json +9 -0
  275. package/src/routes/component-data/Img.json +17 -0
  276. package/src/routes/component-data/Indicator.json +13 -0
  277. package/src/routes/component-data/Indicators.json +9 -0
  278. package/src/routes/component-data/Input.json +13 -0
  279. package/src/routes/component-data/InputAddon.json +1 -0
  280. package/src/routes/component-data/Ios.json +11 -0
  281. package/src/routes/component-data/Kbd.json +1 -0
  282. package/src/routes/component-data/Label.json +10 -0
  283. package/src/routes/component-data/Layout.json +10 -0
  284. package/src/routes/component-data/Li.json +9 -0
  285. package/src/routes/component-data/List.json +10 -0
  286. package/src/routes/component-data/ListPlaceholder.json +1 -0
  287. package/src/routes/component-data/Listgroup.json +10 -0
  288. package/src/routes/component-data/ListgroupItem.json +17 -0
  289. package/src/routes/component-data/Mark.json +10 -0
  290. package/src/routes/component-data/MegaMenu.json +11 -0
  291. package/src/routes/component-data/Menu.json +11 -0
  292. package/src/routes/component-data/Modal.json +17 -0
  293. package/src/routes/component-data/MultiSelect.json +11 -0
  294. package/src/routes/component-data/NavBrand.json +1 -0
  295. package/src/routes/component-data/NavHamburger.json +9 -0
  296. package/src/routes/component-data/NavLi.json +10 -0
  297. package/src/routes/component-data/NavSidebarHamburger.json +9 -0
  298. package/src/routes/component-data/NavUl.json +14 -0
  299. package/src/routes/component-data/Navbar.json +10 -0
  300. package/src/routes/component-data/NumberInput.json +1 -0
  301. package/src/routes/component-data/P.json +19 -0
  302. package/src/routes/component-data/Pagination.json +13 -0
  303. package/src/routes/component-data/PaginationItem.json +12 -0
  304. package/src/routes/component-data/Placeholder.json +1 -0
  305. package/src/routes/component-data/Popover.json +9 -0
  306. package/src/routes/component-data/Popper.json +17 -0
  307. package/src/routes/component-data/Progressbar.json +14 -0
  308. package/src/routes/component-data/Radio.json +13 -0
  309. package/src/routes/component-data/RadioInline.json +1 -0
  310. package/src/routes/component-data/Range.json +9 -0
  311. package/src/routes/component-data/Rating.json +14 -0
  312. package/src/routes/component-data/RatingComment.json +10 -0
  313. package/src/routes/component-data/Review.json +13 -0
  314. package/src/routes/component-data/ScoreRating.json +13 -0
  315. package/src/routes/component-data/Search.json +10 -0
  316. package/src/routes/component-data/Secondary.json +9 -0
  317. package/src/routes/component-data/Select.json +14 -0
  318. package/src/routes/component-data/Sidebar.json +11 -0
  319. package/src/routes/component-data/SidebarBrand.json +11 -0
  320. package/src/routes/component-data/SidebarCta.json +11 -0
  321. package/src/routes/component-data/SidebarDropdownItem.json +12 -0
  322. package/src/routes/component-data/SidebarDropdownWrapper.json +14 -0
  323. package/src/routes/component-data/SidebarGroup.json +10 -0
  324. package/src/routes/component-data/SidebarItem.json +12 -0
  325. package/src/routes/component-data/SidebarMenu.json +11 -0
  326. package/src/routes/component-data/SidebarWrapper.json +1 -0
  327. package/src/routes/component-data/Skeleton.json +9 -0
  328. package/src/routes/component-data/Smartwatch.json +9 -0
  329. package/src/routes/component-data/Span.json +16 -0
  330. package/src/routes/component-data/SpeedDial.json +18 -0
  331. package/src/routes/component-data/SpeedDialButton.json +14 -0
  332. package/src/routes/component-data/Spinner.json +13 -0
  333. package/src/routes/component-data/Star.json +14 -0
  334. package/src/routes/component-data/StepIndicator.json +15 -0
  335. package/src/routes/component-data/TabItem.json +12 -0
  336. package/src/routes/component-data/Table.json +14 -0
  337. package/src/routes/component-data/TableBody.json +1 -0
  338. package/src/routes/component-data/TableBodyCell.json +1 -0
  339. package/src/routes/component-data/TableBodyRow.json +1 -0
  340. package/src/routes/component-data/TableHead.json +9 -0
  341. package/src/routes/component-data/TableHeadCell.json +1 -0
  342. package/src/routes/component-data/TableSearch.json +19 -0
  343. package/src/routes/component-data/Tablet.json +11 -0
  344. package/src/routes/component-data/Tabs.json +13 -0
  345. package/src/routes/component-data/TestimonialPlaceholder.json +1 -0
  346. package/src/routes/component-data/TextPlaceholder.json +9 -0
  347. package/src/routes/component-data/Textarea.json +11 -0
  348. package/src/routes/component-data/Thumbnail.json +10 -0
  349. package/src/routes/component-data/Thumbnails.json +9 -0
  350. package/src/routes/component-data/Thumbup.json +14 -0
  351. package/src/routes/component-data/Timeline.json +1 -0
  352. package/src/routes/component-data/TimelineHorizontal.json +1 -0
  353. package/src/routes/component-data/TimelineItem.json +10 -0
  354. package/src/routes/component-data/TimelineItemHorizontal.json +19 -0
  355. package/src/routes/component-data/TimelineItemVertical.json +13 -0
  356. package/src/routes/component-data/Toast.json +15 -0
  357. package/src/routes/component-data/Toggle.json +12 -0
  358. package/src/routes/component-data/Toolbar.json +9 -0
  359. package/src/routes/component-data/ToolbarButton.json +12 -0
  360. package/src/routes/component-data/ToolbarGroup.json +1 -0
  361. package/src/routes/component-data/Tooltip.json +9 -0
  362. package/src/routes/component-data/Video.json +12 -0
  363. package/src/routes/component-data/VideoPlaceholder.json +9 -0
  364. package/src/routes/component-data/VoiceSearch.json +16 -0
  365. package/src/routes/component-data/WidgetPlaceholder.json +1 -0
  366. package/src/routes/component-data/Wrapper.json +10 -0
  367. package/src/routes/component-data/backdrop.json +9 -0
  368. package/src/routes/component-data/clickOutside.json +1 -0
  369. package/src/routes/component-data/createEventDispatcher.json +1 -0
  370. package/src/routes/component-data/focusTrap.json +1 -0
  371. package/src/routes/component-data/generateId.json +1 -0
  372. package/src/routes/component-data/index.json +1 -0
  373. package/src/routes/component-data/types.json +1 -0
  374. package/src/routes/docs/+layout.js +10 -0
  375. package/src/routes/docs/+layout.svelte +74 -0
  376. package/src/routes/docs/components/[slug]/+page.js +13 -0
  377. package/src/routes/docs/components/[slug]/+page.svelte +6 -0
  378. package/src/routes/docs/components/accordion.md +315 -0
  379. package/src/routes/docs/components/alert.md +342 -0
  380. package/src/routes/docs/components/avatar.md +215 -0
  381. package/src/routes/docs/components/badge.md +269 -0
  382. package/src/routes/docs/components/banner.md +166 -0
  383. package/src/routes/docs/components/bottom-navigation.md +397 -0
  384. package/src/routes/docs/components/breadcrumb.md +112 -0
  385. package/src/routes/docs/components/button-group.md +198 -0
  386. package/src/routes/docs/components/button.md +314 -0
  387. package/src/routes/docs/components/card.md +423 -0
  388. package/src/routes/docs/components/carousel.md +242 -0
  389. package/src/routes/docs/components/darkmode.md +111 -0
  390. package/src/routes/docs/components/device-mockups.md +212 -0
  391. package/src/routes/docs/components/drawer.md +638 -0
  392. package/src/routes/docs/components/dropdown.md +748 -0
  393. package/src/routes/docs/components/footer.md +268 -0
  394. package/src/routes/docs/components/forms.md +254 -0
  395. package/src/routes/docs/components/gallery.md +230 -0
  396. package/src/routes/docs/components/imageData/+server.js +43 -0
  397. package/src/routes/docs/components/indicators.md +273 -0
  398. package/src/routes/docs/components/kbd.md +248 -0
  399. package/src/routes/docs/components/list-group.md +157 -0
  400. package/src/routes/docs/components/mega-menu.md +298 -0
  401. package/src/routes/docs/components/modal.md +413 -0
  402. package/src/routes/docs/components/navbar.md +342 -0
  403. package/src/routes/docs/components/pagination.md +350 -0
  404. package/src/routes/docs/components/popover.md +388 -0
  405. package/src/routes/docs/components/progress.md +170 -0
  406. package/src/routes/docs/components/rating.md +326 -0
  407. package/src/routes/docs/components/sidebar.md +568 -0
  408. package/src/routes/docs/components/skeleton.md +165 -0
  409. package/src/routes/docs/components/speed-dial.md +523 -0
  410. package/src/routes/docs/components/spinner.md +117 -0
  411. package/src/routes/docs/components/tab.md +341 -0
  412. package/src/routes/docs/components/table.md +871 -0
  413. package/src/routes/docs/components/timeline.md +267 -0
  414. package/src/routes/docs/components/toast.md +362 -0
  415. package/src/routes/docs/components/tooltip.md +156 -0
  416. package/src/routes/docs/components/typography.md +158 -0
  417. package/src/routes/docs/components/video.md +125 -0
  418. package/src/routes/docs/examples/[slug]/+page.js +13 -0
  419. package/src/routes/docs/examples/[slug]/+page.svelte +6 -0
  420. package/src/routes/docs/examples/sidebar-layout.md +20 -0
  421. package/src/routes/docs/examples/snapshot.md +59 -0
  422. package/src/routes/docs/examples/testsnap.svelte +49 -0
  423. package/src/routes/docs/experimental/[slug]/+page.js +13 -0
  424. package/src/routes/docs/experimental/[slug]/+page.svelte +6 -0
  425. package/src/routes/docs/experimental/datepicker.md +131 -0
  426. package/src/routes/docs/extend/CheckCircle.svelte +3 -0
  427. package/src/routes/docs/extend/[slug]/+page.js +13 -0
  428. package/src/routes/docs/extend/[slug]/+page.svelte +6 -0
  429. package/src/routes/docs/extend/flowbite-svelte-blocks.md +28 -0
  430. package/src/routes/docs/extend/flowbite-svelte-starter.md +34 -0
  431. package/src/routes/docs/extend/icons.md +204 -0
  432. package/src/routes/docs/extend/step-indicator.md +162 -0
  433. package/src/routes/docs/forms/[slug]/+page.js +13 -0
  434. package/src/routes/docs/forms/[slug]/+page.svelte +6 -0
  435. package/src/routes/docs/forms/checkbox.md +329 -0
  436. package/src/routes/docs/forms/file-input.md +171 -0
  437. package/src/routes/docs/forms/floating-label.md +176 -0
  438. package/src/routes/docs/forms/input-field.md +398 -0
  439. package/src/routes/docs/forms/radio.md +303 -0
  440. package/src/routes/docs/forms/range.md +110 -0
  441. package/src/routes/docs/forms/search-input.md +133 -0
  442. package/src/routes/docs/forms/select.md +280 -0
  443. package/src/routes/docs/forms/textarea.md +142 -0
  444. package/src/routes/docs/forms/toggle.md +86 -0
  445. package/src/routes/docs/pages/[slug]/+page.js +13 -0
  446. package/src/routes/docs/pages/[slug]/+page.svelte +6 -0
  447. package/src/routes/docs/pages/colors.md +152 -0
  448. package/src/routes/docs/pages/compiler-speed.md +116 -0
  449. package/src/routes/docs/pages/customization.md +103 -0
  450. package/src/routes/docs/pages/how-to-contribute.md +138 -0
  451. package/src/routes/docs/pages/ide-support.md +19 -0
  452. package/src/routes/docs/pages/introduction.md +131 -0
  453. package/src/routes/docs/pages/license.md +22 -0
  454. package/src/routes/docs/pages/quickstart.md +128 -0
  455. package/src/routes/docs/pages/typescript.md +25 -0
  456. package/src/routes/docs/plugins/[slug]/+page.js +13 -0
  457. package/src/routes/docs/plugins/[slug]/+page.svelte +6 -0
  458. package/src/routes/docs/plugins/charts.md +990 -0
  459. package/src/routes/docs/typography/[slug]/+page.js +13 -0
  460. package/src/routes/docs/typography/[slug]/+page.svelte +6 -0
  461. package/src/routes/docs/typography/blockquote.md +214 -0
  462. package/src/routes/docs/typography/heading.md +270 -0
  463. package/src/routes/docs/typography/hr.md +115 -0
  464. package/src/routes/docs/typography/image.md +244 -0
  465. package/src/routes/docs/typography/link.md +147 -0
  466. package/src/routes/docs/typography/list.md +358 -0
  467. package/src/routes/docs/typography/paragraph.md +265 -0
  468. package/src/routes/docs/typography/text.md +340 -0
  469. package/src/routes/docs/utilities/[slug]/+page.js +13 -0
  470. package/src/routes/docs/utilities/[slug]/+page.svelte +6 -0
  471. package/src/routes/docs/utilities/close-button.md +42 -0
  472. package/src/routes/docs/utilities/label.md +41 -0
  473. package/src/routes/docs/utilities/toolbar.md +157 -0
  474. package/src/routes/landing/CTA.svelte +98 -0
  475. package/src/routes/landing/Components.svelte +42 -0
  476. package/src/routes/landing/Contributors.svelte +55 -0
  477. package/src/routes/landing/DesignFigma.svelte +39 -0
  478. package/src/routes/landing/Featured.svelte +33 -0
  479. package/src/routes/landing/GetStarted.svelte +23 -0
  480. package/src/routes/landing/Hero.svelte +38 -0
  481. package/src/routes/landing/SocialProof.svelte +80 -0
  482. package/src/routes/landing/utils/A.svelte +5 -0
  483. package/src/routes/landing/utils/H2.svelte +1 -0
  484. package/src/routes/landing/utils/Row.svelte +16 -0
  485. package/src/routes/landing/utils/Section.svelte +9 -0
  486. package/src/routes/layouts/component/+page.svelte +44 -0
  487. package/src/routes/layouts/component/Anchor.svelte +29 -0
  488. package/src/routes/layouts/component/code.svelte +1 -0
  489. package/src/routes/layouts/component/h1.svelte +0 -0
  490. package/src/routes/layouts/component/h2.svelte +5 -0
  491. package/src/routes/layouts/component/h3.svelte +5 -0
  492. package/src/routes/layouts/testLayout/+page.svelte +5 -0
  493. package/src/routes/utils/AlgoliaSearch.svelte +22 -0
  494. package/src/routes/utils/CompoAttributesViewer.svelte +78 -0
  495. package/src/routes/utils/CompoCard.svelte +36 -0
  496. package/src/routes/utils/CompoDescription.svelte +7 -0
  497. package/src/routes/utils/CopyCliboardInput.svelte +45 -0
  498. package/src/routes/utils/DocBadge.svelte +7 -0
  499. package/src/routes/utils/DocBadgeList.svelte +10 -0
  500. package/src/routes/utils/ExampleDarkMode.svelte +16 -0
  501. package/src/routes/utils/ExampleWrapper.svelte +143 -0
  502. package/src/routes/utils/Footer.svelte +64 -0
  503. package/src/routes/utils/GitHubSource.svelte +13 -0
  504. package/src/routes/utils/GitHubSourceList.svelte +21 -0
  505. package/src/routes/utils/MetaTag.svelte +42 -0
  506. package/src/routes/utils/Newsletter.svelte +52 -0
  507. package/src/routes/utils/PageHeadSection.svelte +20 -0
  508. package/src/routes/utils/Paging.svelte +60 -0
  509. package/src/routes/utils/TableDefaultRow.svelte +81 -0
  510. package/src/routes/utils/TableProp.svelte +41 -0
  511. package/src/routes/utils/Toc.svelte +55 -0
  512. package/src/routes/utils/ToolbarLink.svelte +12 -0
  513. package/src/routes/utils/data.json +48 -0
  514. package/src/routes/utils/icons/Angular.svelte +3 -0
  515. package/src/routes/utils/icons/ArrowLeft.svelte +3 -0
  516. package/src/routes/utils/icons/ArrowRight.svelte +3 -0
  517. package/src/routes/utils/icons/Check.svelte +3 -0
  518. package/src/routes/utils/icons/China.svelte +9 -0
  519. package/src/routes/utils/icons/Clipboard.svelte +3 -0
  520. package/src/routes/utils/icons/CoinbaseWallet.svelte +4 -0
  521. package/src/routes/utils/icons/Combinator.svelte +35 -0
  522. package/src/routes/utils/icons/Community.svelte +5 -0
  523. package/src/routes/utils/icons/Dev.svelte +9 -0
  524. package/src/routes/utils/icons/Discord.svelte +5 -0
  525. package/src/routes/utils/icons/Dribble.svelte +3 -0
  526. package/src/routes/utils/icons/Figma.svelte +14 -0
  527. package/src/routes/utils/icons/FlowbiteLogo.svelte +49 -0
  528. package/src/routes/utils/icons/Fortmatic.svelte +4 -0
  529. package/src/routes/utils/icons/Germany.svelte +5 -0
  530. package/src/routes/utils/icons/GitHub.svelte +13 -0
  531. package/src/routes/utils/icons/Hunt.svelte +17 -0
  532. package/src/routes/utils/icons/Italy.svelte +7 -0
  533. package/src/routes/utils/icons/Mail.svelte +4 -0
  534. package/src/routes/utils/icons/MetaMask.svelte +31 -0
  535. package/src/routes/utils/icons/Moon.svelte +3 -0
  536. package/src/routes/utils/icons/Npm.svelte +3 -0
  537. package/src/routes/utils/icons/OperaWallet.svelte +17 -0
  538. package/src/routes/utils/icons/Quote.svelte +3 -0
  539. package/src/routes/utils/icons/React.svelte +4 -0
  540. package/src/routes/utils/icons/Reddit.svelte +23 -0
  541. package/src/routes/utils/icons/Sun.svelte +7 -0
  542. package/src/routes/utils/icons/Usa.svelte +31 -0
  543. package/src/routes/utils/icons/Vue.svelte +3 -0
  544. package/src/routes/utils/icons/WalletConnect.svelte +18 -0
  545. package/src/routes/utils/icons/YouTube.svelte +3 -0
  546. package/src/routes/utils/icons/YouTubeFull.svelte +17 -0
  547. package/src/routes/utils/index.ts +146 -0
  548. package/src/routes/utils/mdsvex.d.ts +8 -0
  549. package/static/images/alert-prop.png +0 -0
  550. package/static/images/carousel/cosmic-timetraveler-pYyOZ8q7AII-unsplash.webp +0 -0
  551. package/static/images/carousel/cristina-gottardi-CSpjU6hYo_0-unsplash.webp +0 -0
  552. package/static/images/carousel/johannes-plenio-RwHv7LgeC7s-unsplash.webp +0 -0
  553. package/static/images/carousel/jonatan-pie-3l3RwQdHRHg-unsplash.webp +0 -0
  554. package/static/images/carousel/mark-harpur-K2s_YE031CA-unsplash.webp +0 -0
  555. package/static/images/carousel/pietro-de-grandi-T7K4aEPoGGk-unsplash.webp +0 -0
  556. package/static/images/carousel/sergey-pesterev-tMvuB9se2uQ-unsplash.webp +0 -0
  557. package/static/images/carousel/solotravelgoals-7kLufxYoqWk-unsplash.webp +0 -0
  558. package/static/images/carousel-1.svg +4 -0
  559. package/static/images/carousel-2.svg +4 -0
  560. package/static/images/carousel-3.svg +4 -0
  561. package/static/images/carousel-4.svg +4 -0
  562. package/static/images/carousel-5.svg +4 -0
  563. package/static/images/code-example-dark.png +0 -0
  564. package/static/images/code-example.png +0 -0
  565. package/static/images/colors.webp +0 -0
  566. package/static/images/components/accordion-dark.svg +40 -0
  567. package/static/images/components/accordion.svg +40 -0
  568. package/static/images/components/alert-dark.svg +11 -0
  569. package/static/images/components/alert.svg +11 -0
  570. package/static/images/components/avatar-dark.svg +117 -0
  571. package/static/images/components/avatar.svg +117 -0
  572. package/static/images/components/badge-dark.svg +5 -0
  573. package/static/images/components/badge.svg +5 -0
  574. package/static/images/components/banner-dark.svg +34 -0
  575. package/static/images/components/banner.svg +33 -0
  576. package/static/images/components/bottom-navigation-dark.svg +44 -0
  577. package/static/images/components/bottom-navigation.svg +43 -0
  578. package/static/images/components/breadcrumb-dark.svg +7 -0
  579. package/static/images/components/breadcrumb.svg +7 -0
  580. package/static/images/components/button-dark.svg +10 -0
  581. package/static/images/components/button-group-dark.svg +10 -0
  582. package/static/images/components/button-group.svg +10 -0
  583. package/static/images/components/button.svg +10 -0
  584. package/static/images/components/card-dark.svg +31 -0
  585. package/static/images/components/card.svg +32 -0
  586. package/static/images/components/carousel-dark.svg +13 -0
  587. package/static/images/components/carousel.svg +13 -0
  588. package/static/images/components/charts-dark.svg +29 -0
  589. package/static/images/components/charts.svg +29 -0
  590. package/static/images/components/darkmode-dark.svg +7 -0
  591. package/static/images/components/darkmode.svg +3 -0
  592. package/static/images/components/device-mockups-dark.svg +17 -0
  593. package/static/images/components/device-mockups.svg +17 -0
  594. package/static/images/components/drawer-dark.svg +32 -0
  595. package/static/images/components/drawer.svg +32 -0
  596. package/static/images/components/dropdown-dark.svg +35 -0
  597. package/static/images/components/dropdown.svg +35 -0
  598. package/static/images/components/footer-dark.svg +52 -0
  599. package/static/images/components/footer.svg +50 -0
  600. package/static/images/components/forms-dark.svg +64 -0
  601. package/static/images/components/forms.svg +64 -0
  602. package/static/images/components/gallery-dark.svg +14 -0
  603. package/static/images/components/gallery.svg +14 -0
  604. package/static/images/components/indicators-dark.svg +38 -0
  605. package/static/images/components/indicators.svg +38 -0
  606. package/static/images/components/jumbotron-dark.svg +13 -0
  607. package/static/images/components/jumbotron.svg +13 -0
  608. package/static/images/components/kbd-dark.svg +460 -0
  609. package/static/images/components/kbd.svg +462 -0
  610. package/static/images/components/list-group-dark.svg +58 -0
  611. package/static/images/components/list-group.svg +58 -0
  612. package/static/images/components/mega-menu-dark.svg +71 -0
  613. package/static/images/components/mega-menu.svg +71 -0
  614. package/static/images/components/modal-dark.svg +32 -0
  615. package/static/images/components/modal.svg +33 -0
  616. package/static/images/components/navbar-dark.svg +78 -0
  617. package/static/images/components/navbar.svg +78 -0
  618. package/static/images/components/pagination-dark.svg +50 -0
  619. package/static/images/components/pagination.svg +50 -0
  620. package/static/images/components/popover-dark.svg +18 -0
  621. package/static/images/components/popover.svg +17 -0
  622. package/static/images/components/progress-dark.svg +10 -0
  623. package/static/images/components/progress.svg +10 -0
  624. package/static/images/components/rating-dark.svg +29 -0
  625. package/static/images/components/rating.svg +29 -0
  626. package/static/images/components/sidebar-dark.svg +17 -0
  627. package/static/images/components/sidebar.svg +18 -0
  628. package/static/images/components/skeleton-dark.svg +10 -0
  629. package/static/images/components/skeleton.svg +10 -0
  630. package/static/images/components/speed-dial-dark.svg +69 -0
  631. package/static/images/components/speed-dial.svg +69 -0
  632. package/static/images/components/spinner-dark.svg +6 -0
  633. package/static/images/components/spinner.svg +6 -0
  634. package/static/images/components/stepper-dark.svg +11 -0
  635. package/static/images/components/stepper.svg +10 -0
  636. package/static/images/components/tab-dark.svg +10 -0
  637. package/static/images/components/tab.svg +10 -0
  638. package/static/images/components/table-dark.svg +47 -0
  639. package/static/images/components/table.svg +47 -0
  640. package/static/images/components/timeline-dark.svg +20 -0
  641. package/static/images/components/timeline.svg +20 -0
  642. package/static/images/components/toast-dark.svg +49 -0
  643. package/static/images/components/toast.svg +49 -0
  644. package/static/images/components/tooltip-dark.svg +7 -0
  645. package/static/images/components/tooltip.svg +7 -0
  646. package/static/images/components/typography-dark.svg +13 -0
  647. package/static/images/components/typography.svg +13 -0
  648. package/static/images/components/video-dark.svg +4 -0
  649. package/static/images/components/video.svg +4 -0
  650. package/static/images/eugene.jpg +0 -0
  651. package/static/images/examples/content-gallery-3.png +0 -0
  652. package/static/images/examples/image-1.jpg +0 -0
  653. package/static/images/examples/image-1@2x.jpg +0 -0
  654. package/static/images/examples/image-2@2x.jpg +0 -0
  655. package/static/images/examples/image-3@2x.jpg +0 -0
  656. package/static/images/examples/image-4@2x.jpg +0 -0
  657. package/static/images/experimental/datepicker-dark.svg +67 -0
  658. package/static/images/experimental/datepicker.svg +67 -0
  659. package/static/images/favicon.png +0 -0
  660. package/static/images/favicon.svg +49 -0
  661. package/static/images/figma-dark.png +0 -0
  662. package/static/images/figma.png +0 -0
  663. package/static/images/flowbite-svelte-blocks-optimized.png +0 -0
  664. package/static/images/flowbite-svelte-icon-logo.svg +49 -0
  665. package/static/images/flowbite-svelte-icon.svg +49 -0
  666. package/static/images/flowbite-svelte-og-image.png +0 -0
  667. package/static/images/flowbite-svelte.png +0 -0
  668. package/static/images/forms/checkbox-dark.svg +14 -0
  669. package/static/images/forms/checkbox.svg +14 -0
  670. package/static/images/forms/file-input-dark.svg +59 -0
  671. package/static/images/forms/file-input.svg +46 -0
  672. package/static/images/forms/floating-label-dark.svg +11 -0
  673. package/static/images/forms/floating-label.svg +11 -0
  674. package/static/images/forms/input-field-dark.svg +65 -0
  675. package/static/images/forms/input-field.svg +66 -0
  676. package/static/images/forms/radio-dark.svg +14 -0
  677. package/static/images/forms/radio.svg +12 -0
  678. package/static/images/forms/range-dark.svg +38 -0
  679. package/static/images/forms/range.svg +38 -0
  680. package/static/images/forms/search-input-dark.svg +82 -0
  681. package/static/images/forms/search-input.svg +82 -0
  682. package/static/images/forms/select-dark.svg +64 -0
  683. package/static/images/forms/select.svg +64 -0
  684. package/static/images/forms/textarea-dark.svg +16 -0
  685. package/static/images/forms/textarea.svg +16 -0
  686. package/static/images/forms/toggle-dark.svg +12 -0
  687. package/static/images/forms/toggle.svg +12 -0
  688. package/static/images/gallery-dark.png +0 -0
  689. package/static/images/gallery.png +0 -0
  690. package/static/images/graphs-dark.png +0 -0
  691. package/static/images/graphs.png +0 -0
  692. package/static/images/image-1.jpeg +0 -0
  693. package/static/images/image-1.png +0 -0
  694. package/static/images/image-1.webp +0 -0
  695. package/static/images/image-2.jpeg +0 -0
  696. package/static/images/image-2.png +0 -0
  697. package/static/images/image-2.webp +0 -0
  698. package/static/images/image-4.jpeg +0 -0
  699. package/static/images/image-4.png +0 -0
  700. package/static/images/image-4.webp +0 -0
  701. package/static/images/italy.png +0 -0
  702. package/static/images/nature-1.jpeg +0 -0
  703. package/static/images/office1.webp +0 -0
  704. package/static/images/product-1.webp +0 -0
  705. package/static/images/profile-picture-1.webp +0 -0
  706. package/static/images/profile-picture-2.webp +0 -0
  707. package/static/images/profile-picture-3.webp +0 -0
  708. package/static/images/profile-picture-4.webp +0 -0
  709. package/static/images/profile-picture-5.webp +0 -0
  710. package/static/images/sveltekit-sidebar-layout-optimized.png +0 -0
  711. package/static/images/tailwind-code-dark.png +0 -0
  712. package/static/images/tailwind-code.png +0 -0
  713. package/static/images/typography/blockquote-dark.svg +8 -0
  714. package/static/images/typography/blockquote.svg +8 -0
  715. package/static/images/typography/heading-dark.svg +5 -0
  716. package/static/images/typography/heading.svg +5 -0
  717. package/static/images/typography/hr-dark.svg +7 -0
  718. package/static/images/typography/hr.svg +7 -0
  719. package/static/images/typography/image-dark.svg +6 -0
  720. package/static/images/typography/image.svg +6 -0
  721. package/static/images/typography/link-dark.svg +4 -0
  722. package/static/images/typography/link.svg +4 -0
  723. package/static/images/typography/list-dark.svg +26 -0
  724. package/static/images/typography/list.svg +26 -0
  725. package/static/images/typography/paragraph-dark.svg +13 -0
  726. package/static/images/typography/paragraph.svg +13 -0
  727. package/static/images/typography/text-dark.svg +11 -0
  728. package/static/images/typography/text.svg +11 -0
  729. package/static/site.webmanifest +12 -0
  730. package/static/styles/docs.css +537 -0
  731. package/static/videos/compo-doc.gif +0 -0
  732. package/static/videos/flowbite.mp4 +0 -0
  733. package/svelte.config.js +28 -0
  734. package/tailwind.config.cjs +89 -0
  735. package/tests/components.spec.ts +199 -0
  736. package/tests/examples.spec.ts +11 -0
  737. package/tests/extend.spec.ts +19 -0
  738. package/tests/forms.spec.ts +62 -0
  739. package/tests/page.spec.ts +46 -0
  740. package/tests/plugins.spec.ts +7 -0
  741. package/tests/redirect.spec.ts +175 -0
  742. package/tests/typography.spec.ts +52 -0
  743. package/tests/utilities.spec.ts +22 -0
  744. package/tsconfig.json +19 -0
  745. package/vite.config.ts +22 -0
  746. package/vite.config.ts.timestamp-1692816833518-844de2c3e2008.mjs +22 -0
  747. package/dist/carousels/Caption.svelte +0 -17
  748. package/dist/carousels/Caption.svelte.d.ts +0 -26
  749. package/dist/carousels/Caption.svelte.d.ts.map +0 -1
  750. package/dist/carousels/CarouselTransition.svelte +0 -174
  751. package/dist/carousels/CarouselTransition.svelte.d.ts +0 -68
  752. package/dist/carousels/CarouselTransition.svelte.d.ts.map +0 -1
  753. package/dist/carousels/Indicator.svelte +0 -20
  754. package/dist/carousels/Indicator.svelte.d.ts +0 -28
  755. package/dist/carousels/Indicator.svelte.d.ts.map +0 -1
  756. package/dist/carousels/Slide.svelte +0 -23
  757. package/dist/carousels/Slide.svelte.d.ts +0 -30
  758. package/dist/carousels/Slide.svelte.d.ts.map +0 -1
@@ -0,0 +1,51 @@
1
+ <script lang="ts">
2
+ import { twMerge } from 'tailwind-merge';
3
+ export let home: boolean = false;
4
+ export let href: string | undefined = undefined;
5
+ export let linkClass: string = 'ml-1 text-sm font-medium text-gray-700 hover:text-gray-900 md:ml-2 dark:text-gray-400 dark:hover:text-white';
6
+ export let spanClass: string = 'ml-1 text-sm font-medium text-gray-500 md:ml-2 dark:text-gray-400';
7
+ export let homeClass: string = 'inline-flex items-center text-sm font-medium text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white';
8
+ </script>
9
+
10
+ <li class={twMerge('inline-flex items-center', $$props.class)} {...$$restProps}>
11
+ {#if home}
12
+ <a class={twMerge(homeClass, $$props.classHome)} {href}>
13
+ {#if $$slots.icon}
14
+ <slot name="icon" />
15
+ {:else}
16
+ <svg class="w-4 h-4 mr-2" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
17
+ <path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z" />
18
+ </svg>
19
+ {/if}
20
+ <slot />
21
+ </a>
22
+ {:else}
23
+ {#if $$slots.icon}
24
+ <slot name="icon" />
25
+ {:else}
26
+ <svg class="w-6 h-6 text-gray-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
27
+ <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
28
+ </svg>
29
+ {/if}
30
+ {#if href}
31
+ <a class={twMerge(linkClass, $$props.classLink)} {href}>
32
+ <slot />
33
+ </a>
34
+ {:else}
35
+ <span class={twMerge(spanClass, $$props.classSpan)}>
36
+ <slot />
37
+ </span>
38
+ {/if}
39
+ {/if}
40
+ </li>
41
+
42
+ <!--
43
+ @component
44
+ [Go to docs](https://flowbite-svelte.com/)
45
+ ## Props
46
+ @prop export let home: boolean = false;
47
+ @prop export let href: string | undefined = undefined;
48
+ @prop export let linkClass: string = 'ml-1 text-sm font-medium text-gray-700 hover:text-gray-900 md:ml-2 dark:text-gray-400 dark:hover:text-white';
49
+ @prop export let spanClass: string = 'ml-1 text-sm font-medium text-gray-500 md:ml-2 dark:text-gray-400';
50
+ @prop export let homeClass: string = 'inline-flex items-center text-sm font-medium text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white';
51
+ -->
@@ -0,0 +1,22 @@
1
+ <script lang="ts">
2
+ import { setContext } from 'svelte';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import type { SizeType } from '$lib/types';
5
+
6
+ export let size: SizeType = 'md';
7
+ export let divClass: string = 'inline-flex rounded-lg shadow-sm';
8
+
9
+ setContext('group', { size });
10
+ </script>
11
+
12
+ <div {...$$restProps} class={twMerge(divClass, $$props.class)} role="group">
13
+ <slot />
14
+ </div>
15
+
16
+ <!--
17
+ @component
18
+ [Go to docs](https://flowbite-svelte.com/)
19
+ ## Props
20
+ @prop export let size: SizeType = 'md';
21
+ @prop export let divClass: string = 'inline-flex rounded-lg shadow-sm';
22
+ -->
@@ -0,0 +1,100 @@
1
+ <script lang="ts">
2
+ import { twMerge } from 'tailwind-merge';
3
+ import { getContext } from 'svelte';
4
+ import type { ButtonType } from '../types';
5
+ import type { SizeType } from '$lib/types';
6
+
7
+ type ButtonColor = keyof typeof colorClasses;
8
+
9
+ const group: SizeType = getContext('group');
10
+
11
+ export let pill: boolean = false;
12
+ export let outline: boolean = false;
13
+ export let size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = group ? 'sm' : 'md';
14
+ export let href: string | undefined = undefined;
15
+ export let type: ButtonType = 'button';
16
+ export let color: ButtonColor = group ? (outline ? 'dark' : 'alternative') : 'primary';
17
+ export let shadow: boolean = false;
18
+
19
+ const colorClasses = {
20
+ alternative: 'text-gray-900 bg-white border border-gray-200 hover:bg-gray-100 dark:bg-gray-800 dark:text-gray-400 hover:text-primary-700 focus:text-primary-700 dark:focus:text-white dark:hover:text-white',
21
+ blue: 'text-white bg-blue-700 hover:bg-blue-800 dark:bg-blue-600 dark:hover:bg-blue-700',
22
+ dark: 'text-white bg-gray-800 hover:bg-gray-900 dark:bg-gray-800 dark:hover:bg-gray-700',
23
+ green: 'text-white bg-green-700 hover:bg-green-800 dark:bg-green-600 dark:hover:bg-green-700',
24
+ light: 'text-gray-900 bg-white border border-gray-300 hover:bg-gray-100 dark:bg-gray-800 dark:text-white dark:border-gray-600 dark:hover:bg-gray-700 dark:hover:border-gray-600',
25
+ primary: 'text-white bg-primary-700 hover:bg-primary-800 dark:bg-primary-600 dark:hover:bg-primary-700',
26
+ purple: 'text-white bg-purple-700 hover:bg-purple-800 dark:bg-purple-600 dark:hover:bg-purple-700',
27
+ red: 'text-white bg-red-700 hover:bg-red-800 dark:bg-red-600 dark:hover:bg-red-700',
28
+ yellow: 'text-white bg-yellow-400 hover:bg-yellow-500 ',
29
+ none: ''
30
+ };
31
+
32
+ const coloredFocusClasses = {
33
+ alternative: 'focus:ring-gray-200 dark:focus:ring-gray-700',
34
+ blue: 'focus:ring-blue-300 dark:focus:ring-blue-800',
35
+ dark: 'focus:ring-gray-300 dark:focus:ring-gray-700',
36
+ green: 'focus:ring-green-300 dark:focus:ring-green-800',
37
+ light: 'focus:ring-gray-200 dark:focus:ring-gray-700',
38
+ primary: 'focus:ring-primary-300 dark:focus:ring-primary-800',
39
+ purple: 'focus:ring-purple-300 dark:focus:ring-purple-900',
40
+ red: 'focus:ring-red-300 dark:focus:ring-red-900',
41
+ yellow: 'focus:ring-yellow-300 dark:focus:ring-yellow-900',
42
+ none: ''
43
+ };
44
+
45
+ const coloredShadowClasses = {
46
+ alternative: 'shadow-gray-500/50 dark:shadow-gray-800/80',
47
+ blue: 'shadow-blue-500/50 dark:shadow-blue-800/80',
48
+ dark: 'shadow-gray-500/50 dark:shadow-gray-800/80',
49
+ green: 'shadow-green-500/50 dark:shadow-green-800/80',
50
+ light: 'shadow-gray-500/50 dark:shadow-gray-800/80',
51
+ primary: 'shadow-primary-500/50 dark:shadow-primary-800/80',
52
+ purple: 'shadow-purple-500/50 dark:shadow-purple-800/80',
53
+ red: 'shadow-red-500/50 dark:shadow-red-800/80 ',
54
+ yellow: 'shadow-yellow-500/50 dark:shadow-yellow-800/80 ',
55
+ none: ''
56
+ };
57
+
58
+ const outlineClasses = {
59
+ alternative: 'text-gray-900 hover:text-white border border-gray-800 hover:bg-gray-900 focus:bg-gray-900 focus:text-white focus:ring-gray-300 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-800',
60
+ blue: 'text-blue-700 hover:text-white border border-blue-700 hover:bg-blue-800 dark:border-blue-500 dark:text-blue-500 dark:hover:text-white dark:hover:bg-blue-600',
61
+ dark: 'text-gray-900 hover:text-white border border-gray-800 hover:bg-gray-900 focus:bg-gray-900 focus:text-white dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-600',
62
+ green: 'text-green-700 hover:text-white border border-green-700 hover:bg-green-800 dark:border-green-500 dark:text-green-500 dark:hover:text-white dark:hover:bg-green-600',
63
+ light: 'text-gray-500 hover:text-gray-900 bg-white border border-gray-200 dark:border-gray-600 dark:hover:text-white dark:text-gray-400 hover:bg-gray-50 dark:bg-gray-700 dark:hover:bg-gray-600',
64
+ primary: 'text-primary-700 hover:text-white border border-primary-700 hover:bg-primary-700 dark:border-primary-500 dark:text-primary-500 dark:hover:text-white dark:hover:bg-primary-600',
65
+ purple: 'text-purple-700 hover:text-white border border-purple-700 hover:bg-purple-800 dark:border-purple-400 dark:text-purple-400 dark:hover:text-white dark:hover:bg-purple-500',
66
+ red: 'text-red-700 hover:text-white border border-red-700 hover:bg-red-800 dark:border-red-500 dark:text-red-500 dark:hover:text-white dark:hover:bg-red-600',
67
+ yellow: 'text-yellow-400 hover:text-white border border-yellow-400 hover:bg-yellow-500 dark:border-yellow-300 dark:text-yellow-300 dark:hover:text-white dark:hover:bg-yellow-400',
68
+ none: ''
69
+ };
70
+
71
+ const sizeClasses = {
72
+ xs: 'px-3 py-2 text-xs',
73
+ sm: 'px-4 py-2 text-sm',
74
+ md: 'px-5 py-2.5 text-sm',
75
+ lg: 'px-5 py-3 text-base',
76
+ xl: 'px-6 py-3.5 text-base'
77
+ };
78
+
79
+ const hasBorder = () => outline || color === 'alternative' || color === 'light';
80
+
81
+ let buttonClass: string;
82
+ $: buttonClass = twMerge('text-center font-medium', group ? 'focus:ring-2' : 'focus:ring-4', group && 'focus:z-10', group || 'focus:outline-none', 'inline-flex items-center justify-center ' + sizeClasses[size], outline ? outlineClasses[color] : colorClasses[color], color === 'alternative' && (group ? 'dark:bg-gray-700 dark:text-white dark:border-gray-700 dark:hover:border-gray-600 dark:hover:bg-gray-600' : 'dark:bg-transparent dark:border-gray-600 dark:hover:border-gray-700'), outline && color === 'dark' && (group ? 'dark:text-white dark:border-white' : 'dark:text-gray-400 dark:border-gray-700'), coloredFocusClasses[color], hasBorder() && group && 'border-l-0 first:border-l', group ? (pill && 'first:rounded-l-full last:rounded-r-full') || 'first:rounded-l-lg last:rounded-r-lg' : (pill && 'rounded-full') || 'rounded-lg', shadow && 'shadow-lg', shadow && coloredShadowClasses[color], $$props.disabled && 'cursor-not-allowed opacity-50', $$props.class);
83
+ </script>
84
+
85
+ <svelte:element this={href ? 'a' : 'button'} type={href ? undefined : type} {href} role={href ? 'link' : 'button'} {...$$restProps} class={buttonClass} on:click on:change on:keydown on:keyup on:touchstart on:touchend on:touchcancel on:mouseenter on:mouseleave>
86
+ <slot />
87
+ </svelte:element>
88
+
89
+ <!--
90
+ @component
91
+ [Go to docs](https://flowbite-svelte.com/)
92
+ ## Props
93
+ @prop export let pill: boolean = false;
94
+ @prop export let outline: boolean = false;
95
+ @prop export let size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = group ? 'sm' : 'md';
96
+ @prop export let href: string | undefined = undefined;
97
+ @prop export let type: ButtonType = 'button';
98
+ @prop export let color: ButtonColor = group ? (outline ? 'dark' : 'alternative') : 'primary';
99
+ @prop export let shadow: boolean = false;
100
+ -->
@@ -0,0 +1,79 @@
1
+ <script lang="ts">
2
+ import { twMerge } from 'tailwind-merge';
3
+ import Button from './Button.svelte';
4
+ import { getContext } from 'svelte';
5
+
6
+ const group = getContext('group');
7
+
8
+ export let color: keyof typeof gradientClasses = 'blue';
9
+ export let shadow: boolean = false;
10
+
11
+ const gradientClasses = {
12
+ blue: 'text-white bg-gradient-to-r from-blue-500 via-blue-600 to-blue-700 hover:bg-gradient-to-br focus:ring-blue-300 dark:focus:ring-blue-800 ',
13
+ green: 'text-white bg-gradient-to-r from-green-400 via-green-500 to-green-600 hover:bg-gradient-to-br focus:ring-green-300 dark:focus:ring-green-800',
14
+ cyan: 'text-white bg-gradient-to-r from-cyan-400 via-cyan-500 to-cyan-600 hover:bg-gradient-to-br focus:ring-cyan-300 dark:focus:ring-cyan-800',
15
+ teal: 'text-white bg-gradient-to-r from-teal-400 via-teal-500 to-teal-600 hover:bg-gradient-to-br focus:ring-teal-300 dark:focus:ring-teal-800',
16
+ lime: 'text-gray-900 bg-gradient-to-r from-lime-200 via-lime-400 to-lime-500 hover:bg-gradient-to-br focus:ring-lime-300 dark:focus:ring-lime-800',
17
+ red: 'text-white bg-gradient-to-r from-red-400 via-red-500 to-red-600 hover:bg-gradient-to-br focus:ring-red-300 dark:focus:ring-red-800',
18
+ pink: 'text-white bg-gradient-to-r from-pink-400 via-pink-500 to-pink-600 hover:bg-gradient-to-br focus:ring-pink-300 dark:focus:ring-pink-800',
19
+ purple: 'text-white bg-gradient-to-r from-purple-500 via-purple-600 to-purple-700 hover:bg-gradient-to-br focus:ring-purple-300 dark:focus:ring-purple-800',
20
+ purpleToBlue: 'text-white bg-gradient-to-br from-purple-600 to-blue-500 hover:bg-gradient-to-bl focus:ring-blue-300 dark:focus:ring-blue-800',
21
+ cyanToBlue: 'text-white bg-gradient-to-r from-cyan-500 to-blue-500 hover:bg-gradient-to-bl focus:ring-cyan-300 dark:focus:ring-cyan-800',
22
+ greenToBlue: 'text-white bg-gradient-to-br from-green-400 to-blue-600 hover:bg-gradient-to-bl focus:ring-green-200 dark:focus:ring-green-800',
23
+ purpleToPink: 'text-white bg-gradient-to-r from-purple-500 to-pink-500 hover:bg-gradient-to-l focus:ring-purple-200 dark:focus:ring-purple-800',
24
+ pinkToOrange: 'text-white bg-gradient-to-br from-pink-500 to-orange-400 hover:bg-gradient-to-bl focus:ring-pink-200 dark:focus:ring-pink-800',
25
+ tealToLime: 'text-gray-900 bg-gradient-to-r from-teal-200 to-lime-200 hover:bg-gradient-to-l focus:ring-lime-200 dark:focus:ring-teal-700',
26
+ redToYellow: 'text-gray-900 bg-gradient-to-r from-red-200 via-red-300 to-yellow-200 hover:bg-gradient-to-bl focus:ring-red-100 dark:focus:ring-red-400'
27
+ };
28
+
29
+ const coloredShadowClasses = {
30
+ blue: 'shadow-blue-500/50 dark:shadow-blue-800/80',
31
+ green: 'shadow-green-500/50 dark:shadow-green-800/80',
32
+ cyan: 'shadow-cyan-500/50 dark:shadow-cyan-800/80',
33
+ teal: 'shadow-teal-500/50 dark:shadow-teal-800/80 ',
34
+ lime: 'shadow-lime-500/50 dark:shadow-lime-800/80',
35
+ red: 'shadow-red-500/50 dark:shadow-red-800/80 ',
36
+ pink: 'shadow-pink-500/50 dark:shadow-pink-800/80',
37
+ purple: 'shadow-purple-500/50 dark:shadow-purple-800/80',
38
+ purpleToBlue: 'shadow-blue-500/50 dark:shadow-blue-800/80',
39
+ cyanToBlue: 'shadow-cyan-500/50 dark:shadow-cyan-800/80',
40
+ greenToBlue: 'shadow-green-500/50 dark:shadow-green-800/80',
41
+ purpleToPink: 'shadow-purple-500/50 dark:shadow-purple-800/80',
42
+ pinkToOrange: 'shadow-pink-500/50 dark:shadow-pink-800/80',
43
+ tealToLime: 'shadow-lime-500/50 dark:shadow-teal-800/80',
44
+ redToYellow: 'shadow-red-500/50 dark:shadow-red-800/80'
45
+ };
46
+
47
+ let gradientOutlineClass: string;
48
+ $: gradientOutlineClass = twMerge(
49
+ 'inline-flex items-center justify-center w-full !border-0',
50
+ $$props.pill || '!rounded-md',
51
+ 'bg-white !text-gray-900 dark:bg-gray-900 dark:!text-white', // this is limitation - no transparency
52
+ 'hover:bg-transparent hover:!text-inherit',
53
+ 'transition-all duration-75 ease-in group-hover:!bg-opacity-0 group-hover:!text-inherit'
54
+ );
55
+
56
+ let divClass: string;
57
+ $: divClass = twMerge($$props.outline && 'p-0.5', gradientClasses[color], shadow && 'shadow-lg', shadow && coloredShadowClasses[color], group ? ($$props.pill && 'first:rounded-l-full last:rounded-r-full') || 'first:rounded-l-lg last:rounded-r-lg' : ($$props.pill && 'rounded-full') || 'rounded-lg', $$props.class);
58
+ </script>
59
+
60
+ {#if $$props.outline}
61
+ <div class={divClass}>
62
+ <!-- Trick to prentend outline without using border
63
+ This has a limitation of no supporting transparency as
64
+ is set to bg-white dark:bg-gray-900 -->
65
+ <Button {...$$restProps} color="none" class={gradientOutlineClass} on:click on:change on:keydown on:keyup on:touchstart on:touchend on:touchcancel on:mouseenter on:mouseleave><slot /></Button>
66
+ </div>
67
+ {:else}
68
+ <Button {...$$restProps} color="none" class={divClass} on:click on:change on:keydown on:keyup on:touchstart on:touchend on:touchcancel on:mouseenter on:mouseleave>
69
+ <slot />
70
+ </Button>
71
+ {/if}
72
+
73
+ <!--
74
+ @component
75
+ [Go to docs](https://flowbite-svelte.com/)
76
+ ## Props
77
+ @prop export let color: keyof typeof gradientClasses = 'blue';
78
+ @prop export let shadow: boolean = false;
79
+ -->
@@ -0,0 +1,70 @@
1
+ <script lang="ts">
2
+ import type { SizeType } from '$lib/types';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import type { ComponentProps } from 'svelte';
5
+ import Frame from '../utils/Frame.svelte';
6
+
7
+ export let href: string | null | undefined = undefined;
8
+ export let horizontal: boolean = false;
9
+ export let reverse: boolean = false;
10
+ export let img: string | undefined = undefined;
11
+ export let padding: 'none' | 'sm' | 'md' | 'lg' | 'xl' = 'lg';
12
+ export let size: SizeType = 'sm';
13
+
14
+ // propagate props type from underlying Frame
15
+ interface $$Props extends ComponentProps<Frame> {
16
+ horizontal?: boolean;
17
+ reverse?: boolean;
18
+ img?: string;
19
+ padding?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
20
+ size?: SizeType;
21
+ }
22
+
23
+ const paddings = {
24
+ none: 'p-0',
25
+ sm: 'p-4 sm:p-6 md:p-8',
26
+ md: 'p-4 sm:p-5',
27
+ lg: 'p-4 sm:p-6',
28
+ xl: 'p-4 sm:p-8'
29
+ };
30
+
31
+ const sizes = {
32
+ xs: 'max-w-xs',
33
+ sm: 'max-w-sm',
34
+ md: 'max-w-lg',
35
+ lg: 'max-w-2xl',
36
+ xl: 'max-w-screen-xl'
37
+ };
38
+
39
+ let inneraPdding: string;
40
+ $: innerPadding = paddings[padding];
41
+
42
+ let cardClass: string;
43
+ $: cardClass = twMerge('flex', sizes[size], reverse ? 'flex-col-reverse' : 'flex-col', horizontal && (reverse ? 'md:flex-row-reverse md:max-w-xl' : 'md:flex-row md:max-w-xl'), href && 'hover:bg-gray-100 dark:hover:bg-gray-700', !img && innerPadding, $$props.class);
44
+
45
+ let imgClass: string;
46
+ $: imgClass = twMerge(reverse ? 'rounded-b-lg' : 'rounded-t-lg', horizontal && 'object-cover w-full h-96 md:h-auto md:w-48 md:rounded-none', horizontal && (reverse ? 'md:rounded-r-lg' : 'md:rounded-l-lg'));
47
+ </script>
48
+
49
+ <Frame tag={href ? 'a' : 'div'} rounded shadow border on:click on:focusin on:focusout on:mouseenter on:mouseleave {href} {...$$restProps} class={cardClass}>
50
+ {#if img}
51
+ <img class={imgClass} src={img} alt="" />
52
+ <div class={innerPadding}>
53
+ <slot />
54
+ </div>
55
+ {:else}
56
+ <slot />
57
+ {/if}
58
+ </Frame>
59
+
60
+ <!--
61
+ @component
62
+ [Go to docs](https://flowbite-svelte.com/)
63
+ ## Props
64
+ @prop export let href: string | null | undefined = undefined;
65
+ @prop export let horizontal: boolean = false;
66
+ @prop export let reverse: boolean = false;
67
+ @prop export let img: string | undefined = undefined;
68
+ @prop export let padding: 'none' | 'sm' | 'md' | 'lg' | 'xl' = 'lg';
69
+ @prop export let size: SizeType = 'sm';
70
+ -->
@@ -0,0 +1,166 @@
1
+ <script lang="ts" context="module">
2
+ export type State = {
3
+ images: HTMLImgAttributes[];
4
+ index: number;
5
+ };
6
+ </script>
7
+
8
+ <script lang="ts">
9
+ import { createEventDispatcher, onMount, setContext } from 'svelte';
10
+ import { quintOut } from 'svelte/easing';
11
+ import type { HTMLImgAttributes } from 'svelte/elements';
12
+ import { writable } from 'svelte/store';
13
+ import { fade, type TransitionConfig } from 'svelte/transition';
14
+ import { twMerge } from 'tailwind-merge';
15
+ import Controls from './Controls.svelte';
16
+ import Indicators from './Indicators.svelte';
17
+
18
+ type TransitionFunc = (node: HTMLElement, params: any) => TransitionConfig;
19
+
20
+ export let images: HTMLImgAttributes[];
21
+ export let index: number = 0;
22
+ export let transition: TransitionFunc = (x) => fade(x, { duration: 700, easing: quintOut });
23
+ export let duration: number = 0;
24
+
25
+ // Carousel
26
+ let divClass: string = 'overflow-hidden relative rounded-lg h-56 sm:h-64 xl:h-80 2xl:h-96';
27
+
28
+ const dispatch = createEventDispatcher();
29
+
30
+ const { set, subscribe, update } = writable<State>({ images, index });
31
+
32
+ const state = { set: (s: State) => set({ index: ((s.index % images.length) + images.length) % images.length, images: s.images }), subscribe, update };
33
+
34
+ setContext('state', state);
35
+
36
+ subscribe((s) => {
37
+ index = s.index;
38
+ dispatch('change', images[index]);
39
+ });
40
+
41
+ onMount(() => dispatch('change', images[index]));
42
+
43
+ $: state.set({ images, index });
44
+
45
+ const nextSlide = () => (index += 1);
46
+ const prevSlide = () => (index -= 1);
47
+
48
+ const loop = (node: HTMLElement, duration: number) => {
49
+ carouselDiv = node; // used by DragStart
50
+
51
+ // loop timer
52
+ let intervalId: any;
53
+
54
+ if (duration > 0) intervalId = setInterval(nextSlide, duration);
55
+
56
+ return {
57
+ update: (duration: number) => {
58
+ clearInterval(intervalId);
59
+ if (duration > 0) intervalId = setInterval(nextSlide, duration);
60
+ },
61
+ destroy: () => clearInterval(intervalId)
62
+ };
63
+ };
64
+
65
+ type ActiveDragGesture = {
66
+ start: number;
67
+ position: number;
68
+ width: number;
69
+ timestamp: number;
70
+ };
71
+
72
+ let activeDragGesture: ActiveDragGesture | undefined;
73
+
74
+ let carouselDiv: HTMLElement;
75
+ let percentOffset: number = 0;
76
+ let touchEvent: MouseEvent | TouchEvent | null = null;
77
+
78
+ const getPositionFromEvent = (evt: MouseEvent | TouchEvent) => {
79
+ const mousePos = (evt as MouseEvent)?.clientX;
80
+ if (mousePos) return mousePos;
81
+
82
+ let touchEvt = evt as TouchEvent;
83
+ if (/^touch/.test(touchEvt?.type)) {
84
+ return touchEvt.touches[0].clientX;
85
+ }
86
+ };
87
+
88
+ const onDragStart = (evt: MouseEvent | TouchEvent) => {
89
+ touchEvent = evt;
90
+ evt.preventDefault();
91
+ const start = getPositionFromEvent(evt);
92
+ const width = carouselDiv.getBoundingClientRect().width;
93
+ if (start === undefined || width === undefined) return;
94
+ activeDragGesture = {
95
+ start,
96
+ position: start,
97
+ width,
98
+ timestamp: Date.now()
99
+ };
100
+ };
101
+
102
+ $: onDragMove =
103
+ activeDragGesture === undefined
104
+ ? undefined
105
+ : (evt: MouseEvent | TouchEvent) => {
106
+ const position = getPositionFromEvent(evt);
107
+ if (!activeDragGesture || position === undefined) return;
108
+ const { start, width } = activeDragGesture;
109
+ percentOffset = Math.min(100, Math.max(-100, ((position - start) / width) * 100));
110
+ activeDragGesture.position = position;
111
+ };
112
+
113
+ $: onDragStop =
114
+ activeDragGesture === undefined
115
+ ? undefined
116
+ : (evt: MouseEvent | TouchEvent) => {
117
+ // These might be exposed one day, keep them safely tucked away as constants.
118
+ const SWIPE_MAX_DURATION = 250;
119
+ const SWIPE_MIN_DISTANCE = 30;
120
+ const DRAG_MIN_PERCENT = 50;
121
+
122
+ if (activeDragGesture) {
123
+ const { timestamp, position, start } = activeDragGesture;
124
+ const duration = Date.now() - timestamp;
125
+ const distance = position - start;
126
+
127
+ if (Math.abs(distance) >= SWIPE_MIN_DISTANCE && duration <= SWIPE_MAX_DURATION && duration > 0) {
128
+ if (distance > 0) prevSlide();
129
+ else nextSlide();
130
+ } else if (percentOffset > DRAG_MIN_PERCENT) prevSlide();
131
+ else if (percentOffset < -DRAG_MIN_PERCENT) nextSlide();
132
+ else {
133
+ // The gesture is a tap not drag, so manually issue a click event to trigger tap click gestures lost via preventDefault
134
+ touchEvent?.target?.dispatchEvent(
135
+ new Event('click', {
136
+ bubbles: true
137
+ })
138
+ );
139
+ }
140
+ }
141
+ percentOffset = 0;
142
+ activeDragGesture = undefined;
143
+ touchEvent = null;
144
+ };
145
+ </script>
146
+
147
+ <!-- The move listeners go here, so things keep working if the touch strays out of the element. -->
148
+ <svelte:document on:mousemove={onDragMove} on:mouseup={onDragStop} on:touchmove={onDragMove} on:touchend={onDragStop} />
149
+ <div bind:this={carouselDiv} class="relative" on:mousedown={onDragStart} on:touchstart={onDragStart} role="button" aria-label="Draggable Carousel" tabindex="0">
150
+ <div style={`transform: translateX(${percentOffset}%)`} {...$$restProps} class={twMerge(divClass, activeDragGesture === undefined ? 'transition-transform' : '', $$props.class)} use:loop={duration}>
151
+ {#key images[index]}
152
+ <img alt="..." {...images[index]} transition:transition={{}} class="absolute block w-full -translate-x-1/2 -translate-y-1/2 top-1/2 left-1/2 object-cover" />
153
+ {/key}
154
+ </div>
155
+ <slot {index} {Controls} {Indicators} />
156
+ </div>
157
+
158
+ <!--
159
+ @component
160
+ [Go to docs](https://flowbite-svelte.com/)
161
+ ## Props
162
+ @prop export let images: HTMLImgAttributes[];
163
+ @prop export let index: number = 0;
164
+ @prop export let transition: TransitionFunc = (x) => fade(x, { duration: 700, easing: quintOut });
165
+ @prop export let duration: number = 0;
166
+ -->
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ export let forward: boolean;
5
+ export let name: string;
6
+
7
+ let buttonCls: string;
8
+ $: buttonCls = twMerge('flex absolute top-0 z-30 justify-center items-center px-4 h-full group focus:outline-none text-white dark:text-gray-300', forward ? 'right-0' : 'left-0', $$props.class);
9
+ </script>
10
+
11
+ <button on:click type="button" class={buttonCls}>
12
+ <slot>
13
+ <span class="inline-flex justify-center items-center w-8 h-8 rounded-full sm:w-10 sm:h-10 bg-white/30 dark:bg-gray-800/30 group-hover:bg-white/50 dark:group-hover:bg-gray-800/60 group-focus:ring-4 group-focus:ring-white dark:group-focus:ring-gray-800/70 group-focus:outline-none">
14
+ {#if forward}
15
+ <svg aria-hidden="true" class="w-5 h-5 sm:w-6 sm:h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
16
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
17
+ </svg>
18
+ {:else}
19
+ <svg aria-hidden="true" class="w-5 h-5 sm:w-6 sm:h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
20
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7" />
21
+ </svg>
22
+ {/if}
23
+ <span class="sr-only">{name}</span>
24
+ </span>
25
+ </slot>
26
+ </button>
27
+
28
+ <!--
29
+ @component
30
+ [Go to docs](https://flowbite-svelte.com/)
31
+ ## Props
32
+ @prop export let forward: boolean;
33
+ @prop export let name: string;
34
+ -->
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import { getContext } from 'svelte';
3
+ import type { Writable } from 'svelte/store';
4
+ import type { State } from './Carousel.svelte';
5
+ import ControlButton from './ControlButton.svelte';
6
+ import { twJoin } from 'tailwind-merge';
7
+
8
+ const state = getContext<Writable<State>>('state');
9
+
10
+ function changeSlide(forward: boolean) {
11
+ return function (ev: Event) {
12
+ if (ev.isTrusted) $state.index = forward ? $state.index + 1 : $state.index - 1;
13
+ };
14
+ }
15
+ </script>
16
+
17
+ <!-- Slider controls -->
18
+ <slot {ControlButton} {changeSlide}>
19
+ <ControlButton name="Previous" forward={false} on:click={changeSlide(false)} class={twJoin($$props.class)} />
20
+ <ControlButton name="Next" forward={true} on:click={changeSlide(true)} class={twJoin($$props.class)} />
21
+ </slot>
@@ -0,0 +1,31 @@
1
+ <script lang="ts">
2
+ import Indicator from '$lib/indicators/Indicator.svelte';
3
+ import { getContext } from 'svelte';
4
+ import type { Writable } from 'svelte/store';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import type { State } from './Carousel.svelte';
7
+
8
+ export let activeClass = 'opacity-100';
9
+ export let inactiveClass = 'opacity-60';
10
+
11
+ const state = getContext<Writable<State>>('state');
12
+ </script>
13
+
14
+ <div class={twMerge('flex absolute bottom-5 left-1/2 z-30 space-x-3 -translate-x-1/2', $$props.class)}>
15
+ {#each $state.images as _, idx}
16
+ {@const selected = $state.index === idx}
17
+ <button on:click={() => ($state.index = idx)}>
18
+ <slot {Indicator} {selected} index={idx}>
19
+ <Indicator class={twMerge('bg-gray-100 hover:bg-gray-300', selected ? activeClass : inactiveClass)} />
20
+ </slot>
21
+ </button>
22
+ {/each}
23
+ </div>
24
+
25
+ <!--
26
+ @component
27
+ [Go to docs](https://flowbite-svelte.com/)
28
+ ## Props
29
+ @prop export let activeClass = 'opacity-100';
30
+ @prop export let inactiveClass = 'opacity-60';
31
+ -->
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import type { HTMLImgAttributes } from 'svelte/elements';
3
+ import { twMerge } from 'tailwind-merge';
4
+
5
+ export let selected: boolean = false;
6
+
7
+ export let activeClass = 'opacity-100';
8
+ export let inactiveClass = 'opacity-60';
9
+ </script>
10
+
11
+ <img alt="..." {...$$restProps} class={twMerge(selected ? activeClass : inactiveClass, $$props.class)} />
12
+
13
+ <!--
14
+ @component
15
+ [Go to docs](https://flowbite-svelte.com/)
16
+ ## Props
17
+ @prop export let selected: boolean = false;
18
+ @prop export let activeClass = 'opacity-100';
19
+ @prop export let inactiveClass = 'opacity-60';
20
+ -->
@@ -0,0 +1,30 @@
1
+ <script lang="ts">
2
+ import type { HTMLImgAttributes } from 'svelte/elements';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import Thumbnail from './Thumbnail.svelte';
5
+
6
+ export let images: HTMLImgAttributes[] = [];
7
+ export let index: number = 0;
8
+
9
+ $: index = (index + images.length) % images.length;
10
+ </script>
11
+
12
+ <div class={twMerge('flex flex-row justify-center bg-gray-100 w-full', $$props.class)}>
13
+ {#each images as image, idx}
14
+ {@const selected = index === idx}
15
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
16
+ <button on:click={() => (index = idx)} aria-label="Click to view image">
17
+ <slot {Thumbnail} {image} {selected}>
18
+ <Thumbnail {...image} {selected} />
19
+ </slot>
20
+ </button>
21
+ {/each}
22
+ </div>
23
+
24
+ <!--
25
+ @component
26
+ [Go to docs](https://flowbite-svelte.com/)
27
+ ## Props
28
+ @prop export let images: HTMLImgAttributes[] = [];
29
+ @prop export let index: number = 0;
30
+ -->