flowbite-svelte 0.44.7 → 0.44.9
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.
- package/.env +2 -0
- package/.eslintrc.cjs +20 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +33 -0
- package/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
- package/.github/pull_request_template.md +71 -0
- package/.github/workflows/playwright-and-lint.yaml +47 -0
- package/.prettierignore +16 -0
- package/.prettierrc +9 -0
- package/CHANGELOG.md +3858 -0
- package/CONTRIBUTING.md +66 -0
- package/dist/bottom-nav/BottomNavItem.svelte +3 -1
- package/dist/bottom-nav/BottomNavItem.svelte.d.ts +2 -0
- package/dist/bottom-nav/BottomNavItem.svelte.d.ts.map +1 -1
- package/dist/carousels/Carousel.svelte +52 -153
- package/dist/carousels/Carousel.svelte.d.ts +22 -37
- package/dist/carousels/Carousel.svelte.d.ts.map +1 -1
- package/dist/carousels/ControlButton.svelte +31 -0
- package/dist/carousels/ControlButton.svelte.d.ts +29 -0
- package/dist/carousels/ControlButton.svelte.d.ts.map +1 -0
- package/dist/carousels/Controls.svelte +17 -0
- package/dist/carousels/Controls.svelte.d.ts +23 -0
- package/dist/carousels/Controls.svelte.d.ts.map +1 -0
- package/dist/carousels/Indicators.svelte +26 -0
- package/dist/carousels/Indicators.svelte.d.ts +32 -0
- package/dist/carousels/Indicators.svelte.d.ts.map +1 -0
- package/dist/carousels/Thumbnail.svelte +6 -23
- package/dist/carousels/Thumbnail.svelte.d.ts +5 -16
- package/dist/carousels/Thumbnail.svelte.d.ts.map +1 -1
- package/dist/carousels/Thumbnails.svelte +26 -0
- package/dist/carousels/Thumbnails.svelte.d.ts +33 -0
- package/dist/carousels/Thumbnails.svelte.d.ts.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/tables/TableSearch.svelte +2 -2
- package/dist/tables/TableSearch.svelte.d.ts +1 -1
- package/mdsvex.config.js +18 -0
- package/package.json +18 -80
- package/playwright.config.ts +12 -0
- package/postcss.config.cjs +12 -0
- package/src/app.css +45 -0
- package/src/app.d.ts +9 -0
- package/src/app.html +28 -0
- package/src/app.postcss +55 -0
- package/src/hooks.server.js +27 -0
- package/src/lib/accordion/Accordion.svelte +61 -0
- package/src/lib/accordion/AccordionItem.svelte +120 -0
- package/src/lib/alerts/Alert.svelte +60 -0
- package/src/lib/avatar/Avatar.svelte +56 -0
- package/src/lib/avatar/Placeholder.svelte +16 -0
- package/src/lib/badges/Badge.svelte +108 -0
- package/src/lib/banner/Banner.svelte +64 -0
- package/src/lib/bottom-nav/BottomNav.svelte +76 -0
- package/src/lib/bottom-nav/BottomNavHeader.svelte +19 -0
- package/src/lib/bottom-nav/BottomNavHeaderItem.svelte +23 -0
- package/src/lib/bottom-nav/BottomNavItem.svelte +76 -0
- package/src/lib/breadcrumbs/Breadcrumb.svelte +25 -0
- package/src/lib/breadcrumbs/BreadcrumbItem.svelte +51 -0
- package/src/lib/buttongroups/ButtonGroup.svelte +22 -0
- package/src/lib/buttons/Button.svelte +100 -0
- package/src/lib/buttons/GradientButton.svelte +79 -0
- package/src/lib/cards/Card.svelte +70 -0
- package/src/lib/carousels/Carousel.svelte +166 -0
- package/src/lib/carousels/ControlButton.svelte +34 -0
- package/src/lib/carousels/Controls.svelte +21 -0
- package/src/lib/carousels/Indicators.svelte +31 -0
- package/src/lib/carousels/Thumbnail.svelte +20 -0
- package/src/lib/carousels/Thumbnails.svelte +30 -0
- package/src/lib/charts/Chart.svelte +35 -0
- package/src/lib/darkmode/DarkMode.svelte +58 -0
- package/src/lib/datepicker/Calender.svelte +3 -0
- package/src/lib/datepicker/Datepicker.svelte +66 -0
- package/src/lib/device-mockup/Android.svelte +24 -0
- package/src/lib/device-mockup/DefaultMockup.svelte +21 -0
- package/src/lib/device-mockup/DeviceMockup.svelte +235 -0
- package/src/lib/device-mockup/Ios.svelte +21 -0
- package/src/lib/device-mockup/Smartwatch.svelte +15 -0
- package/src/lib/device-mockup/Tablet.svelte +21 -0
- package/src/lib/drawer/Drawer.svelte +87 -0
- package/src/lib/dropdowns/Dropdown.svelte +81 -0
- package/src/lib/dropdowns/DropdownDivider.svelte +13 -0
- package/src/lib/dropdowns/DropdownHeader.svelte +21 -0
- package/src/lib/dropdowns/DropdownItem.svelte +47 -0
- package/src/lib/footer/Footer.svelte +18 -0
- package/src/lib/footer/FooterBrand.svelte +39 -0
- package/src/lib/footer/FooterCopyright.svelte +38 -0
- package/src/lib/footer/FooterIcon.svelte +25 -0
- package/src/lib/footer/FooterLink.svelte +26 -0
- package/src/lib/footer/FooterLinkGroup.svelte +15 -0
- package/src/lib/forms/Checkbox.svelte +70 -0
- package/src/lib/forms/Dropzone.svelte +32 -0
- package/src/lib/forms/Fileupload.svelte +21 -0
- package/src/lib/forms/FloatingLabelInput.svelte +94 -0
- package/src/lib/forms/Helper.svelte +23 -0
- package/src/lib/forms/Input.svelte +83 -0
- package/src/lib/forms/InputAddon.svelte +47 -0
- package/src/lib/forms/Label.svelte +40 -0
- package/src/lib/forms/MultiSelect.svelte +126 -0
- package/src/lib/forms/NumberInput.svelte +16 -0
- package/src/lib/forms/Radio.svelte +53 -0
- package/src/lib/forms/RadioInline.svelte +9 -0
- package/src/lib/forms/Range.svelte +24 -0
- package/src/lib/forms/Search.svelte +44 -0
- package/src/lib/forms/Select.svelte +49 -0
- package/src/lib/forms/Textarea.svelte +51 -0
- package/src/lib/forms/Toggle.svelte +56 -0
- package/src/lib/forms/VoiceSearch.svelte +57 -0
- package/src/lib/gallery/Gallery.svelte +31 -0
- package/src/lib/index.ts +228 -0
- package/src/lib/indicators/Indicator.svelte +86 -0
- package/src/lib/kbd/ArrowKeyDown.svelte +15 -0
- package/src/lib/kbd/ArrowKeyLeft.svelte +15 -0
- package/src/lib/kbd/ArrowKeyRight.svelte +15 -0
- package/src/lib/kbd/ArrowKeyUp.svelte +15 -0
- package/src/lib/kbd/Kbd.svelte +15 -0
- package/src/lib/list-group/Listgroup.svelte +45 -0
- package/src/lib/list-group/ListgroupItem.svelte +57 -0
- package/src/lib/megamenu/MegaMenu.svelte +52 -0
- package/src/lib/modals/Modal.svelte +162 -0
- package/src/lib/navbar/Menu.svelte +38 -0
- package/src/lib/navbar/NavBrand.svelte +15 -0
- package/src/lib/navbar/NavHamburger.svelte +20 -0
- package/src/lib/navbar/NavLi.svelte +37 -0
- package/src/lib/navbar/NavSidebarHamburger.svelte +20 -0
- package/src/lib/navbar/NavUl.svelte +68 -0
- package/src/lib/navbar/Navbar.svelte +42 -0
- package/src/lib/navbar/SidebarMenu.svelte +37 -0
- package/src/lib/paginations/Pagination.svelte +59 -0
- package/src/lib/paginations/PaginationItem.svelte +40 -0
- package/src/lib/popover/Popover.svelte +34 -0
- package/src/lib/progressbars/Progressbar.svelte +52 -0
- package/src/lib/ratings/AdvancedRating.svelte +45 -0
- package/src/lib/ratings/Heart.svelte +39 -0
- package/src/lib/ratings/Rating.svelte +57 -0
- package/src/lib/ratings/RatingComment.svelte +85 -0
- package/src/lib/ratings/Review.svelte +78 -0
- package/src/lib/ratings/ScoreRating.svelte +76 -0
- package/src/lib/ratings/Star.svelte +47 -0
- package/src/lib/ratings/Thumbup.svelte +39 -0
- package/src/lib/sidebars/Sidebar.svelte +40 -0
- package/src/lib/sidebars/SidebarBrand.svelte +24 -0
- package/src/lib/sidebars/SidebarCta.svelte +28 -0
- package/src/lib/sidebars/SidebarDropdownItem.svelte +26 -0
- package/src/lib/sidebars/SidebarDropdownWrapper.svelte +71 -0
- package/src/lib/sidebars/SidebarGroup.svelte +24 -0
- package/src/lib/sidebars/SidebarItem.svelte +49 -0
- package/src/lib/sidebars/SidebarWrapper.svelte +16 -0
- package/src/lib/skeleton/CardPlaceholder.svelte +48 -0
- package/src/lib/skeleton/ImagePlaceholder.svelte +31 -0
- package/src/lib/skeleton/ListPlaceholder.svelte +50 -0
- package/src/lib/skeleton/Skeleton.svelte +38 -0
- package/src/lib/skeleton/TestimonialPlaceholder.svelte +24 -0
- package/src/lib/skeleton/TextPlaceholder.svelte +60 -0
- package/src/lib/skeleton/VideoPlaceholder.svelte +33 -0
- package/src/lib/skeleton/WidgetPlaceholder.svelte +26 -0
- package/src/lib/speed-dial/SpeedDial.svelte +80 -0
- package/src/lib/speed-dial/SpeedDialButton.svelte +49 -0
- package/src/lib/spinners/Spinner.svelte +49 -0
- package/src/lib/steps/StepIndicator.svelte +75 -0
- package/src/lib/tables/Table.svelte +49 -0
- package/src/lib/tables/TableBody.svelte +14 -0
- package/src/lib/tables/TableBodyCell.svelte +22 -0
- package/src/lib/tables/TableBodyRow.svelte +50 -0
- package/src/lib/tables/TableHead.svelte +45 -0
- package/src/lib/tables/TableHeadCell.svelte +15 -0
- package/src/lib/tables/TableSearch.svelte +73 -0
- package/src/lib/tabs/TabItem.svelte +61 -0
- package/src/lib/tabs/Tabs.svelte +78 -0
- package/src/lib/timeline/Activity.svelte +16 -0
- package/src/lib/timeline/ActivityItem.svelte +59 -0
- package/src/lib/timeline/Group.svelte +27 -0
- package/src/lib/timeline/GroupItem.svelte +59 -0
- package/src/lib/timeline/Timeline.svelte +25 -0
- package/src/lib/timeline/TimelineHorizontal.svelte +17 -0
- package/src/lib/timeline/TimelineItem.svelte +116 -0
- package/src/lib/timeline/TimelineItemHorizontal.svelte +72 -0
- package/src/lib/timeline/TimelineItemVertical.svelte +44 -0
- package/src/lib/toasts/Toast.svelte +99 -0
- package/src/lib/toolbar/Toolbar.svelte +52 -0
- package/src/lib/toolbar/ToolbarButton.svelte +67 -0
- package/src/lib/toolbar/ToolbarGroup.svelte +20 -0
- package/src/lib/tooltips/Tooltip.svelte +42 -0
- package/src/lib/types.ts +163 -0
- package/src/lib/typography/A.svelte +20 -0
- package/src/lib/typography/Blockquote.svelte +51 -0
- package/src/lib/typography/DescriptionList.svelte +22 -0
- package/src/lib/typography/Heading.svelte +28 -0
- package/src/lib/typography/Hr.svelte +37 -0
- package/src/lib/typography/Img.svelte +39 -0
- package/src/lib/typography/Layout.svelte +21 -0
- package/src/lib/typography/Li.svelte +19 -0
- package/src/lib/typography/List.svelte +33 -0
- package/src/lib/typography/Mark.svelte +20 -0
- package/src/lib/typography/P.svelte +102 -0
- package/src/lib/typography/Secondary.svelte +18 -0
- package/src/lib/typography/Span.svelte +35 -0
- package/src/lib/utils/CloseButton.svelte +19 -0
- package/src/lib/utils/Frame.svelte +142 -0
- package/src/lib/utils/Popper.svelte +206 -0
- package/src/lib/utils/Wrapper.svelte +22 -0
- package/src/lib/utils/backdrop.ts +101 -0
- package/src/lib/utils/clickOutside.ts +16 -0
- package/src/lib/utils/createEventDispatcher.ts +24 -0
- package/src/lib/utils/focusTrap.js +42 -0
- package/src/lib/utils/generateId.js +5 -0
- package/src/lib/video/Video.svelte +29 -0
- package/src/routes/+error.svelte +5 -0
- package/src/routes/+layout.svelte +98 -0
- package/src/routes/+page.server.ts +18 -0
- package/src/routes/+page.svelte +55 -0
- package/src/routes/api/posts/+server.js +7 -0
- package/src/routes/component-data/A.json +10 -0
- package/src/routes/component-data/Accordion.json +12 -0
- package/src/routes/component-data/AccordionItem.json +23 -0
- package/src/routes/component-data/Activity.json +1 -0
- package/src/routes/component-data/ActivityItem.json +16 -0
- package/src/routes/component-data/AdvancedRating.json +13 -0
- package/src/routes/component-data/Alert.json +9 -0
- package/src/routes/component-data/Android.json +12 -0
- package/src/routes/component-data/ArrowKeyDown.json +1 -0
- package/src/routes/component-data/ArrowKeyLeft.json +1 -0
- package/src/routes/component-data/ArrowKeyRight.json +1 -0
- package/src/routes/component-data/ArrowKeyUp.json +1 -0
- package/src/routes/component-data/Avatar.json +15 -0
- package/src/routes/component-data/Badge.json +10 -0
- package/src/routes/component-data/Banner.json +12 -0
- package/src/routes/component-data/Blockquote.json +15 -0
- package/src/routes/component-data/BottomNav.json +13 -0
- package/src/routes/component-data/BottomNavHeader.json +9 -0
- package/src/routes/component-data/BottomNavHeaderItem.json +11 -0
- package/src/routes/component-data/BottomNavItem.json +12 -0
- package/src/routes/component-data/Breadcrumb.json +11 -0
- package/src/routes/component-data/BreadcrumbItem.json +12 -0
- package/src/routes/component-data/Button.json +14 -0
- package/src/routes/component-data/ButtonGroup.json +9 -0
- package/src/routes/component-data/Calender.json +1 -0
- package/src/routes/component-data/Card.json +13 -0
- package/src/routes/component-data/CardPlaceholder.json +9 -0
- package/src/routes/component-data/Carousel.json +11 -0
- package/src/routes/component-data/Chart.json +1 -0
- package/src/routes/component-data/Checkbox.json +14 -0
- package/src/routes/component-data/CloseButton.json +1 -0
- package/src/routes/component-data/ControlButton.json +9 -0
- package/src/routes/component-data/Controls.json +1 -0
- package/src/routes/component-data/DarkMode.json +9 -0
- package/src/routes/component-data/Datepicker.json +14 -0
- package/src/routes/component-data/DefaultMockup.json +11 -0
- package/src/routes/component-data/DescriptionList.json +10 -0
- package/src/routes/component-data/DeviceMockup.json +50 -0
- package/src/routes/component-data/Drawer.json +23 -0
- package/src/routes/component-data/Dropdown.json +13 -0
- package/src/routes/component-data/DropdownDivider.json +1 -0
- package/src/routes/component-data/DropdownHeader.json +9 -0
- package/src/routes/component-data/DropdownItem.json +10 -0
- package/src/routes/component-data/Dropzone.json +10 -0
- package/src/routes/component-data/Fileupload.json +10 -0
- package/src/routes/component-data/FloatingLabelInput.json +14 -0
- package/src/routes/component-data/Footer.json +1 -0
- package/src/routes/component-data/FooterBrand.json +15 -0
- package/src/routes/component-data/FooterCopyright.json +14 -0
- package/src/routes/component-data/FooterIcon.json +11 -0
- package/src/routes/component-data/FooterLink.json +11 -0
- package/src/routes/component-data/FooterLinkGroup.json +1 -0
- package/src/routes/component-data/Frame.json +18 -0
- package/src/routes/component-data/Gallery.json +9 -0
- package/src/routes/component-data/GradientButton.json +9 -0
- package/src/routes/component-data/Group.json +11 -0
- package/src/routes/component-data/GroupItem.json +13 -0
- package/src/routes/component-data/Heading.json +10 -0
- package/src/routes/component-data/Heart.json +14 -0
- package/src/routes/component-data/Helper.json +9 -0
- package/src/routes/component-data/Hr.json +13 -0
- package/src/routes/component-data/ImagePlaceholder.json +9 -0
- package/src/routes/component-data/Img.json +17 -0
- package/src/routes/component-data/Indicator.json +13 -0
- package/src/routes/component-data/Indicators.json +9 -0
- package/src/routes/component-data/Input.json +13 -0
- package/src/routes/component-data/InputAddon.json +1 -0
- package/src/routes/component-data/Ios.json +11 -0
- package/src/routes/component-data/Kbd.json +1 -0
- package/src/routes/component-data/Label.json +10 -0
- package/src/routes/component-data/Layout.json +10 -0
- package/src/routes/component-data/Li.json +9 -0
- package/src/routes/component-data/List.json +10 -0
- package/src/routes/component-data/ListPlaceholder.json +1 -0
- package/src/routes/component-data/Listgroup.json +10 -0
- package/src/routes/component-data/ListgroupItem.json +17 -0
- package/src/routes/component-data/Mark.json +10 -0
- package/src/routes/component-data/MegaMenu.json +11 -0
- package/src/routes/component-data/Menu.json +11 -0
- package/src/routes/component-data/Modal.json +17 -0
- package/src/routes/component-data/MultiSelect.json +11 -0
- package/src/routes/component-data/NavBrand.json +1 -0
- package/src/routes/component-data/NavHamburger.json +9 -0
- package/src/routes/component-data/NavLi.json +10 -0
- package/src/routes/component-data/NavSidebarHamburger.json +9 -0
- package/src/routes/component-data/NavUl.json +14 -0
- package/src/routes/component-data/Navbar.json +10 -0
- package/src/routes/component-data/NumberInput.json +1 -0
- package/src/routes/component-data/P.json +19 -0
- package/src/routes/component-data/Pagination.json +13 -0
- package/src/routes/component-data/PaginationItem.json +12 -0
- package/src/routes/component-data/Placeholder.json +1 -0
- package/src/routes/component-data/Popover.json +9 -0
- package/src/routes/component-data/Popper.json +17 -0
- package/src/routes/component-data/Progressbar.json +14 -0
- package/src/routes/component-data/Radio.json +13 -0
- package/src/routes/component-data/RadioInline.json +1 -0
- package/src/routes/component-data/Range.json +9 -0
- package/src/routes/component-data/Rating.json +14 -0
- package/src/routes/component-data/RatingComment.json +10 -0
- package/src/routes/component-data/Review.json +13 -0
- package/src/routes/component-data/ScoreRating.json +13 -0
- package/src/routes/component-data/Search.json +10 -0
- package/src/routes/component-data/Secondary.json +9 -0
- package/src/routes/component-data/Select.json +14 -0
- package/src/routes/component-data/Sidebar.json +11 -0
- package/src/routes/component-data/SidebarBrand.json +11 -0
- package/src/routes/component-data/SidebarCta.json +11 -0
- package/src/routes/component-data/SidebarDropdownItem.json +12 -0
- package/src/routes/component-data/SidebarDropdownWrapper.json +14 -0
- package/src/routes/component-data/SidebarGroup.json +10 -0
- package/src/routes/component-data/SidebarItem.json +12 -0
- package/src/routes/component-data/SidebarMenu.json +11 -0
- package/src/routes/component-data/SidebarWrapper.json +1 -0
- package/src/routes/component-data/Skeleton.json +9 -0
- package/src/routes/component-data/Smartwatch.json +9 -0
- package/src/routes/component-data/Span.json +16 -0
- package/src/routes/component-data/SpeedDial.json +18 -0
- package/src/routes/component-data/SpeedDialButton.json +14 -0
- package/src/routes/component-data/Spinner.json +13 -0
- package/src/routes/component-data/Star.json +14 -0
- package/src/routes/component-data/StepIndicator.json +15 -0
- package/src/routes/component-data/TabItem.json +12 -0
- package/src/routes/component-data/Table.json +14 -0
- package/src/routes/component-data/TableBody.json +1 -0
- package/src/routes/component-data/TableBodyCell.json +1 -0
- package/src/routes/component-data/TableBodyRow.json +1 -0
- package/src/routes/component-data/TableHead.json +9 -0
- package/src/routes/component-data/TableHeadCell.json +1 -0
- package/src/routes/component-data/TableSearch.json +19 -0
- package/src/routes/component-data/Tablet.json +11 -0
- package/src/routes/component-data/Tabs.json +13 -0
- package/src/routes/component-data/TestimonialPlaceholder.json +1 -0
- package/src/routes/component-data/TextPlaceholder.json +9 -0
- package/src/routes/component-data/Textarea.json +11 -0
- package/src/routes/component-data/Thumbnail.json +10 -0
- package/src/routes/component-data/Thumbnails.json +9 -0
- package/src/routes/component-data/Thumbup.json +14 -0
- package/src/routes/component-data/Timeline.json +1 -0
- package/src/routes/component-data/TimelineHorizontal.json +1 -0
- package/src/routes/component-data/TimelineItem.json +10 -0
- package/src/routes/component-data/TimelineItemHorizontal.json +19 -0
- package/src/routes/component-data/TimelineItemVertical.json +13 -0
- package/src/routes/component-data/Toast.json +15 -0
- package/src/routes/component-data/Toggle.json +12 -0
- package/src/routes/component-data/Toolbar.json +9 -0
- package/src/routes/component-data/ToolbarButton.json +12 -0
- package/src/routes/component-data/ToolbarGroup.json +1 -0
- package/src/routes/component-data/Tooltip.json +9 -0
- package/src/routes/component-data/Video.json +12 -0
- package/src/routes/component-data/VideoPlaceholder.json +9 -0
- package/src/routes/component-data/VoiceSearch.json +16 -0
- package/src/routes/component-data/WidgetPlaceholder.json +1 -0
- package/src/routes/component-data/Wrapper.json +10 -0
- package/src/routes/component-data/backdrop.json +9 -0
- package/src/routes/component-data/clickOutside.json +1 -0
- package/src/routes/component-data/createEventDispatcher.json +1 -0
- package/src/routes/component-data/focusTrap.json +1 -0
- package/src/routes/component-data/generateId.json +1 -0
- package/src/routes/component-data/index.json +1 -0
- package/src/routes/component-data/types.json +1 -0
- package/src/routes/docs/+layout.js +10 -0
- package/src/routes/docs/+layout.svelte +74 -0
- package/src/routes/docs/components/[slug]/+page.js +13 -0
- package/src/routes/docs/components/[slug]/+page.svelte +6 -0
- package/src/routes/docs/components/accordion.md +315 -0
- package/src/routes/docs/components/alert.md +342 -0
- package/src/routes/docs/components/avatar.md +215 -0
- package/src/routes/docs/components/badge.md +269 -0
- package/src/routes/docs/components/banner.md +166 -0
- package/src/routes/docs/components/bottom-navigation.md +397 -0
- package/src/routes/docs/components/breadcrumb.md +112 -0
- package/src/routes/docs/components/button-group.md +198 -0
- package/src/routes/docs/components/button.md +314 -0
- package/src/routes/docs/components/card.md +423 -0
- package/src/routes/docs/components/carousel.md +242 -0
- package/src/routes/docs/components/darkmode.md +111 -0
- package/src/routes/docs/components/device-mockups.md +212 -0
- package/src/routes/docs/components/drawer.md +638 -0
- package/src/routes/docs/components/dropdown.md +748 -0
- package/src/routes/docs/components/footer.md +268 -0
- package/src/routes/docs/components/forms.md +254 -0
- package/src/routes/docs/components/gallery.md +230 -0
- package/src/routes/docs/components/imageData/+server.js +43 -0
- package/src/routes/docs/components/indicators.md +273 -0
- package/src/routes/docs/components/kbd.md +248 -0
- package/src/routes/docs/components/list-group.md +157 -0
- package/src/routes/docs/components/mega-menu.md +298 -0
- package/src/routes/docs/components/modal.md +413 -0
- package/src/routes/docs/components/navbar.md +342 -0
- package/src/routes/docs/components/pagination.md +350 -0
- package/src/routes/docs/components/popover.md +388 -0
- package/src/routes/docs/components/progress.md +170 -0
- package/src/routes/docs/components/rating.md +326 -0
- package/src/routes/docs/components/sidebar.md +568 -0
- package/src/routes/docs/components/skeleton.md +165 -0
- package/src/routes/docs/components/speed-dial.md +523 -0
- package/src/routes/docs/components/spinner.md +117 -0
- package/src/routes/docs/components/tab.md +341 -0
- package/src/routes/docs/components/table.md +871 -0
- package/src/routes/docs/components/timeline.md +267 -0
- package/src/routes/docs/components/toast.md +362 -0
- package/src/routes/docs/components/tooltip.md +156 -0
- package/src/routes/docs/components/typography.md +158 -0
- package/src/routes/docs/components/video.md +125 -0
- package/src/routes/docs/examples/[slug]/+page.js +13 -0
- package/src/routes/docs/examples/[slug]/+page.svelte +6 -0
- package/src/routes/docs/examples/sidebar-layout.md +20 -0
- package/src/routes/docs/examples/snapshot.md +59 -0
- package/src/routes/docs/examples/testsnap.svelte +49 -0
- package/src/routes/docs/experimental/[slug]/+page.js +13 -0
- package/src/routes/docs/experimental/[slug]/+page.svelte +6 -0
- package/src/routes/docs/experimental/datepicker.md +131 -0
- package/src/routes/docs/extend/CheckCircle.svelte +3 -0
- package/src/routes/docs/extend/[slug]/+page.js +13 -0
- package/src/routes/docs/extend/[slug]/+page.svelte +6 -0
- package/src/routes/docs/extend/flowbite-svelte-blocks.md +28 -0
- package/src/routes/docs/extend/flowbite-svelte-starter.md +34 -0
- package/src/routes/docs/extend/icons.md +204 -0
- package/src/routes/docs/extend/step-indicator.md +162 -0
- package/src/routes/docs/forms/[slug]/+page.js +13 -0
- package/src/routes/docs/forms/[slug]/+page.svelte +6 -0
- package/src/routes/docs/forms/checkbox.md +329 -0
- package/src/routes/docs/forms/file-input.md +171 -0
- package/src/routes/docs/forms/floating-label.md +176 -0
- package/src/routes/docs/forms/input-field.md +398 -0
- package/src/routes/docs/forms/radio.md +303 -0
- package/src/routes/docs/forms/range.md +110 -0
- package/src/routes/docs/forms/search-input.md +133 -0
- package/src/routes/docs/forms/select.md +280 -0
- package/src/routes/docs/forms/textarea.md +142 -0
- package/src/routes/docs/forms/toggle.md +86 -0
- package/src/routes/docs/pages/[slug]/+page.js +13 -0
- package/src/routes/docs/pages/[slug]/+page.svelte +6 -0
- package/src/routes/docs/pages/colors.md +152 -0
- package/src/routes/docs/pages/compiler-speed.md +116 -0
- package/src/routes/docs/pages/customization.md +103 -0
- package/src/routes/docs/pages/how-to-contribute.md +138 -0
- package/src/routes/docs/pages/ide-support.md +19 -0
- package/src/routes/docs/pages/introduction.md +131 -0
- package/src/routes/docs/pages/license.md +22 -0
- package/src/routes/docs/pages/quickstart.md +128 -0
- package/src/routes/docs/pages/typescript.md +25 -0
- package/src/routes/docs/plugins/[slug]/+page.js +13 -0
- package/src/routes/docs/plugins/[slug]/+page.svelte +6 -0
- package/src/routes/docs/plugins/charts.md +990 -0
- package/src/routes/docs/typography/[slug]/+page.js +13 -0
- package/src/routes/docs/typography/[slug]/+page.svelte +6 -0
- package/src/routes/docs/typography/blockquote.md +214 -0
- package/src/routes/docs/typography/heading.md +270 -0
- package/src/routes/docs/typography/hr.md +115 -0
- package/src/routes/docs/typography/image.md +244 -0
- package/src/routes/docs/typography/link.md +147 -0
- package/src/routes/docs/typography/list.md +358 -0
- package/src/routes/docs/typography/paragraph.md +265 -0
- package/src/routes/docs/typography/text.md +340 -0
- package/src/routes/docs/utilities/[slug]/+page.js +13 -0
- package/src/routes/docs/utilities/[slug]/+page.svelte +6 -0
- package/src/routes/docs/utilities/close-button.md +42 -0
- package/src/routes/docs/utilities/label.md +41 -0
- package/src/routes/docs/utilities/toolbar.md +157 -0
- package/src/routes/landing/CTA.svelte +98 -0
- package/src/routes/landing/Components.svelte +42 -0
- package/src/routes/landing/Contributors.svelte +55 -0
- package/src/routes/landing/DesignFigma.svelte +39 -0
- package/src/routes/landing/Featured.svelte +33 -0
- package/src/routes/landing/GetStarted.svelte +23 -0
- package/src/routes/landing/Hero.svelte +38 -0
- package/src/routes/landing/SocialProof.svelte +80 -0
- package/src/routes/landing/utils/A.svelte +5 -0
- package/src/routes/landing/utils/H2.svelte +1 -0
- package/src/routes/landing/utils/Row.svelte +16 -0
- package/src/routes/landing/utils/Section.svelte +9 -0
- package/src/routes/layouts/component/+page.svelte +44 -0
- package/src/routes/layouts/component/Anchor.svelte +29 -0
- package/src/routes/layouts/component/code.svelte +1 -0
- package/src/routes/layouts/component/h1.svelte +0 -0
- package/src/routes/layouts/component/h2.svelte +5 -0
- package/src/routes/layouts/component/h3.svelte +5 -0
- package/src/routes/layouts/testLayout/+page.svelte +5 -0
- package/src/routes/utils/AlgoliaSearch.svelte +22 -0
- package/src/routes/utils/CompoAttributesViewer.svelte +78 -0
- package/src/routes/utils/CompoCard.svelte +36 -0
- package/src/routes/utils/CompoDescription.svelte +7 -0
- package/src/routes/utils/CopyCliboardInput.svelte +45 -0
- package/src/routes/utils/DocBadge.svelte +7 -0
- package/src/routes/utils/DocBadgeList.svelte +10 -0
- package/src/routes/utils/ExampleDarkMode.svelte +16 -0
- package/src/routes/utils/ExampleWrapper.svelte +143 -0
- package/src/routes/utils/Footer.svelte +64 -0
- package/src/routes/utils/GitHubSource.svelte +13 -0
- package/src/routes/utils/GitHubSourceList.svelte +21 -0
- package/src/routes/utils/MetaTag.svelte +42 -0
- package/src/routes/utils/Newsletter.svelte +52 -0
- package/src/routes/utils/PageHeadSection.svelte +20 -0
- package/src/routes/utils/Paging.svelte +60 -0
- package/src/routes/utils/TableDefaultRow.svelte +81 -0
- package/src/routes/utils/TableProp.svelte +41 -0
- package/src/routes/utils/Toc.svelte +55 -0
- package/src/routes/utils/ToolbarLink.svelte +12 -0
- package/src/routes/utils/data.json +48 -0
- package/src/routes/utils/icons/Angular.svelte +3 -0
- package/src/routes/utils/icons/ArrowLeft.svelte +3 -0
- package/src/routes/utils/icons/ArrowRight.svelte +3 -0
- package/src/routes/utils/icons/Check.svelte +3 -0
- package/src/routes/utils/icons/China.svelte +9 -0
- package/src/routes/utils/icons/Clipboard.svelte +3 -0
- package/src/routes/utils/icons/CoinbaseWallet.svelte +4 -0
- package/src/routes/utils/icons/Combinator.svelte +35 -0
- package/src/routes/utils/icons/Community.svelte +5 -0
- package/src/routes/utils/icons/Dev.svelte +9 -0
- package/src/routes/utils/icons/Discord.svelte +5 -0
- package/src/routes/utils/icons/Dribble.svelte +3 -0
- package/src/routes/utils/icons/Figma.svelte +14 -0
- package/src/routes/utils/icons/FlowbiteLogo.svelte +49 -0
- package/src/routes/utils/icons/Fortmatic.svelte +4 -0
- package/src/routes/utils/icons/Germany.svelte +5 -0
- package/src/routes/utils/icons/GitHub.svelte +13 -0
- package/src/routes/utils/icons/Hunt.svelte +17 -0
- package/src/routes/utils/icons/Italy.svelte +7 -0
- package/src/routes/utils/icons/Mail.svelte +4 -0
- package/src/routes/utils/icons/MetaMask.svelte +31 -0
- package/src/routes/utils/icons/Moon.svelte +3 -0
- package/src/routes/utils/icons/Npm.svelte +3 -0
- package/src/routes/utils/icons/OperaWallet.svelte +17 -0
- package/src/routes/utils/icons/Quote.svelte +3 -0
- package/src/routes/utils/icons/React.svelte +4 -0
- package/src/routes/utils/icons/Reddit.svelte +23 -0
- package/src/routes/utils/icons/Sun.svelte +7 -0
- package/src/routes/utils/icons/Usa.svelte +31 -0
- package/src/routes/utils/icons/Vue.svelte +3 -0
- package/src/routes/utils/icons/WalletConnect.svelte +18 -0
- package/src/routes/utils/icons/YouTube.svelte +3 -0
- package/src/routes/utils/icons/YouTubeFull.svelte +17 -0
- package/src/routes/utils/index.ts +146 -0
- package/src/routes/utils/mdsvex.d.ts +8 -0
- package/static/images/alert-prop.png +0 -0
- package/static/images/carousel/cosmic-timetraveler-pYyOZ8q7AII-unsplash.webp +0 -0
- package/static/images/carousel/cristina-gottardi-CSpjU6hYo_0-unsplash.webp +0 -0
- package/static/images/carousel/johannes-plenio-RwHv7LgeC7s-unsplash.webp +0 -0
- package/static/images/carousel/jonatan-pie-3l3RwQdHRHg-unsplash.webp +0 -0
- package/static/images/carousel/mark-harpur-K2s_YE031CA-unsplash.webp +0 -0
- package/static/images/carousel/pietro-de-grandi-T7K4aEPoGGk-unsplash.webp +0 -0
- package/static/images/carousel/sergey-pesterev-tMvuB9se2uQ-unsplash.webp +0 -0
- package/static/images/carousel/solotravelgoals-7kLufxYoqWk-unsplash.webp +0 -0
- package/static/images/carousel-1.svg +4 -0
- package/static/images/carousel-2.svg +4 -0
- package/static/images/carousel-3.svg +4 -0
- package/static/images/carousel-4.svg +4 -0
- package/static/images/carousel-5.svg +4 -0
- package/static/images/code-example-dark.png +0 -0
- package/static/images/code-example.png +0 -0
- package/static/images/colors.webp +0 -0
- package/static/images/components/accordion-dark.svg +40 -0
- package/static/images/components/accordion.svg +40 -0
- package/static/images/components/alert-dark.svg +11 -0
- package/static/images/components/alert.svg +11 -0
- package/static/images/components/avatar-dark.svg +117 -0
- package/static/images/components/avatar.svg +117 -0
- package/static/images/components/badge-dark.svg +5 -0
- package/static/images/components/badge.svg +5 -0
- package/static/images/components/banner-dark.svg +34 -0
- package/static/images/components/banner.svg +33 -0
- package/static/images/components/bottom-navigation-dark.svg +44 -0
- package/static/images/components/bottom-navigation.svg +43 -0
- package/static/images/components/breadcrumb-dark.svg +7 -0
- package/static/images/components/breadcrumb.svg +7 -0
- package/static/images/components/button-dark.svg +10 -0
- package/static/images/components/button-group-dark.svg +10 -0
- package/static/images/components/button-group.svg +10 -0
- package/static/images/components/button.svg +10 -0
- package/static/images/components/card-dark.svg +31 -0
- package/static/images/components/card.svg +32 -0
- package/static/images/components/carousel-dark.svg +13 -0
- package/static/images/components/carousel.svg +13 -0
- package/static/images/components/charts-dark.svg +29 -0
- package/static/images/components/charts.svg +29 -0
- package/static/images/components/darkmode-dark.svg +7 -0
- package/static/images/components/darkmode.svg +3 -0
- package/static/images/components/device-mockups-dark.svg +17 -0
- package/static/images/components/device-mockups.svg +17 -0
- package/static/images/components/drawer-dark.svg +32 -0
- package/static/images/components/drawer.svg +32 -0
- package/static/images/components/dropdown-dark.svg +35 -0
- package/static/images/components/dropdown.svg +35 -0
- package/static/images/components/footer-dark.svg +52 -0
- package/static/images/components/footer.svg +50 -0
- package/static/images/components/forms-dark.svg +64 -0
- package/static/images/components/forms.svg +64 -0
- package/static/images/components/gallery-dark.svg +14 -0
- package/static/images/components/gallery.svg +14 -0
- package/static/images/components/indicators-dark.svg +38 -0
- package/static/images/components/indicators.svg +38 -0
- package/static/images/components/jumbotron-dark.svg +13 -0
- package/static/images/components/jumbotron.svg +13 -0
- package/static/images/components/kbd-dark.svg +460 -0
- package/static/images/components/kbd.svg +462 -0
- package/static/images/components/list-group-dark.svg +58 -0
- package/static/images/components/list-group.svg +58 -0
- package/static/images/components/mega-menu-dark.svg +71 -0
- package/static/images/components/mega-menu.svg +71 -0
- package/static/images/components/modal-dark.svg +32 -0
- package/static/images/components/modal.svg +33 -0
- package/static/images/components/navbar-dark.svg +78 -0
- package/static/images/components/navbar.svg +78 -0
- package/static/images/components/pagination-dark.svg +50 -0
- package/static/images/components/pagination.svg +50 -0
- package/static/images/components/popover-dark.svg +18 -0
- package/static/images/components/popover.svg +17 -0
- package/static/images/components/progress-dark.svg +10 -0
- package/static/images/components/progress.svg +10 -0
- package/static/images/components/rating-dark.svg +29 -0
- package/static/images/components/rating.svg +29 -0
- package/static/images/components/sidebar-dark.svg +17 -0
- package/static/images/components/sidebar.svg +18 -0
- package/static/images/components/skeleton-dark.svg +10 -0
- package/static/images/components/skeleton.svg +10 -0
- package/static/images/components/speed-dial-dark.svg +69 -0
- package/static/images/components/speed-dial.svg +69 -0
- package/static/images/components/spinner-dark.svg +6 -0
- package/static/images/components/spinner.svg +6 -0
- package/static/images/components/stepper-dark.svg +11 -0
- package/static/images/components/stepper.svg +10 -0
- package/static/images/components/tab-dark.svg +10 -0
- package/static/images/components/tab.svg +10 -0
- package/static/images/components/table-dark.svg +47 -0
- package/static/images/components/table.svg +47 -0
- package/static/images/components/timeline-dark.svg +20 -0
- package/static/images/components/timeline.svg +20 -0
- package/static/images/components/toast-dark.svg +49 -0
- package/static/images/components/toast.svg +49 -0
- package/static/images/components/tooltip-dark.svg +7 -0
- package/static/images/components/tooltip.svg +7 -0
- package/static/images/components/typography-dark.svg +13 -0
- package/static/images/components/typography.svg +13 -0
- package/static/images/components/video-dark.svg +4 -0
- package/static/images/components/video.svg +4 -0
- package/static/images/eugene.jpg +0 -0
- package/static/images/examples/content-gallery-3.png +0 -0
- package/static/images/examples/image-1.jpg +0 -0
- package/static/images/examples/image-1@2x.jpg +0 -0
- package/static/images/examples/image-2@2x.jpg +0 -0
- package/static/images/examples/image-3@2x.jpg +0 -0
- package/static/images/examples/image-4@2x.jpg +0 -0
- package/static/images/experimental/datepicker-dark.svg +67 -0
- package/static/images/experimental/datepicker.svg +67 -0
- package/static/images/favicon.png +0 -0
- package/static/images/favicon.svg +49 -0
- package/static/images/figma-dark.png +0 -0
- package/static/images/figma.png +0 -0
- package/static/images/flowbite-svelte-blocks-optimized.png +0 -0
- package/static/images/flowbite-svelte-icon-logo.svg +49 -0
- package/static/images/flowbite-svelte-icon.svg +49 -0
- package/static/images/flowbite-svelte-og-image.png +0 -0
- package/static/images/flowbite-svelte.png +0 -0
- package/static/images/forms/checkbox-dark.svg +14 -0
- package/static/images/forms/checkbox.svg +14 -0
- package/static/images/forms/file-input-dark.svg +59 -0
- package/static/images/forms/file-input.svg +46 -0
- package/static/images/forms/floating-label-dark.svg +11 -0
- package/static/images/forms/floating-label.svg +11 -0
- package/static/images/forms/input-field-dark.svg +65 -0
- package/static/images/forms/input-field.svg +66 -0
- package/static/images/forms/radio-dark.svg +14 -0
- package/static/images/forms/radio.svg +12 -0
- package/static/images/forms/range-dark.svg +38 -0
- package/static/images/forms/range.svg +38 -0
- package/static/images/forms/search-input-dark.svg +82 -0
- package/static/images/forms/search-input.svg +82 -0
- package/static/images/forms/select-dark.svg +64 -0
- package/static/images/forms/select.svg +64 -0
- package/static/images/forms/textarea-dark.svg +16 -0
- package/static/images/forms/textarea.svg +16 -0
- package/static/images/forms/toggle-dark.svg +12 -0
- package/static/images/forms/toggle.svg +12 -0
- package/static/images/gallery-dark.png +0 -0
- package/static/images/gallery.png +0 -0
- package/static/images/graphs-dark.png +0 -0
- package/static/images/graphs.png +0 -0
- package/static/images/image-1.jpeg +0 -0
- package/static/images/image-1.png +0 -0
- package/static/images/image-1.webp +0 -0
- package/static/images/image-2.jpeg +0 -0
- package/static/images/image-2.png +0 -0
- package/static/images/image-2.webp +0 -0
- package/static/images/image-4.jpeg +0 -0
- package/static/images/image-4.png +0 -0
- package/static/images/image-4.webp +0 -0
- package/static/images/italy.png +0 -0
- package/static/images/nature-1.jpeg +0 -0
- package/static/images/office1.webp +0 -0
- package/static/images/product-1.webp +0 -0
- package/static/images/profile-picture-1.webp +0 -0
- package/static/images/profile-picture-2.webp +0 -0
- package/static/images/profile-picture-3.webp +0 -0
- package/static/images/profile-picture-4.webp +0 -0
- package/static/images/profile-picture-5.webp +0 -0
- package/static/images/sveltekit-sidebar-layout-optimized.png +0 -0
- package/static/images/tailwind-code-dark.png +0 -0
- package/static/images/tailwind-code.png +0 -0
- package/static/images/typography/blockquote-dark.svg +8 -0
- package/static/images/typography/blockquote.svg +8 -0
- package/static/images/typography/heading-dark.svg +5 -0
- package/static/images/typography/heading.svg +5 -0
- package/static/images/typography/hr-dark.svg +7 -0
- package/static/images/typography/hr.svg +7 -0
- package/static/images/typography/image-dark.svg +6 -0
- package/static/images/typography/image.svg +6 -0
- package/static/images/typography/link-dark.svg +4 -0
- package/static/images/typography/link.svg +4 -0
- package/static/images/typography/list-dark.svg +26 -0
- package/static/images/typography/list.svg +26 -0
- package/static/images/typography/paragraph-dark.svg +13 -0
- package/static/images/typography/paragraph.svg +13 -0
- package/static/images/typography/text-dark.svg +11 -0
- package/static/images/typography/text.svg +11 -0
- package/static/site.webmanifest +12 -0
- package/static/styles/docs.css +537 -0
- package/static/videos/compo-doc.gif +0 -0
- package/static/videos/flowbite.mp4 +0 -0
- package/svelte.config.js +28 -0
- package/tailwind.config.cjs +89 -0
- package/tests/components.spec.ts +199 -0
- package/tests/examples.spec.ts +11 -0
- package/tests/extend.spec.ts +19 -0
- package/tests/forms.spec.ts +62 -0
- package/tests/page.spec.ts +46 -0
- package/tests/plugins.spec.ts +7 -0
- package/tests/redirect.spec.ts +175 -0
- package/tests/typography.spec.ts +52 -0
- package/tests/utilities.spec.ts +22 -0
- package/tsconfig.json +21 -0
- package/vite.config.ts +22 -0
- package/vite.config.ts.timestamp-1692816833518-844de2c3e2008.mjs +22 -0
- package/dist/carousels/Caption.svelte +0 -17
- package/dist/carousels/Caption.svelte.d.ts +0 -26
- package/dist/carousels/Caption.svelte.d.ts.map +0 -1
- package/dist/carousels/CarouselTransition.svelte +0 -174
- package/dist/carousels/CarouselTransition.svelte.d.ts +0 -68
- package/dist/carousels/CarouselTransition.svelte.d.ts.map +0 -1
- package/dist/carousels/Indicator.svelte +0 -20
- package/dist/carousels/Indicator.svelte.d.ts +0 -28
- package/dist/carousels/Indicator.svelte.d.ts.map +0 -1
- package/dist/carousels/Slide.svelte +0 -23
- package/dist/carousels/Slide.svelte.d.ts +0 -30
- package/dist/carousels/Slide.svelte.d.ts.map +0 -1
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
|
+
import Frame from '../utils/Frame.svelte';
|
|
4
|
+
import { createEventDispatcher, type ComponentProps } from 'svelte';
|
|
5
|
+
import CloseButton from '../utils/CloseButton.svelte';
|
|
6
|
+
import focusTrap from '../utils/focusTrap';
|
|
7
|
+
import type { Dismissable, SizeType } from '$lib/types';
|
|
8
|
+
import type { ModalPlacementType } from '../types';
|
|
9
|
+
|
|
10
|
+
// propagate props type from underlying Frame
|
|
11
|
+
interface $$Props extends ComponentProps<Frame>, Dismissable {
|
|
12
|
+
open?: boolean;
|
|
13
|
+
title?: string;
|
|
14
|
+
size?: SizeType;
|
|
15
|
+
placement?: 'top-left' | 'top-center' | 'top-right' | 'center-left' | 'center' | 'center-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
16
|
+
autoclose?: boolean;
|
|
17
|
+
backdropClass?: string;
|
|
18
|
+
defaultClass?: string;
|
|
19
|
+
outsideclose?: boolean;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export let open: boolean = false;
|
|
23
|
+
export let title: string = '';
|
|
24
|
+
export let size: SizeType = 'md';
|
|
25
|
+
export let placement: ModalPlacementType = 'center';
|
|
26
|
+
export let autoclose: boolean = false;
|
|
27
|
+
export let dismissable: boolean = true;
|
|
28
|
+
export let backdropClass: string = 'fixed inset-0 z-40 bg-gray-900 bg-opacity-50 dark:bg-opacity-80';
|
|
29
|
+
export let defaultClass: string = 'relative flex flex-col mx-auto';
|
|
30
|
+
export let outsideclose: boolean = false;
|
|
31
|
+
export let dialogClass: string = 'fixed top-0 left-0 right-0 h-modal md:inset-0 md:h-full z-50 w-full p-4 flex';
|
|
32
|
+
|
|
33
|
+
const dispatch = createEventDispatcher();
|
|
34
|
+
$: dispatch(open ? 'open' : 'close');
|
|
35
|
+
|
|
36
|
+
function prepareFocus(node: HTMLElement) {
|
|
37
|
+
const walker = document.createTreeWalker(node, NodeFilter.SHOW_ELEMENT);
|
|
38
|
+
let n: Node | null;
|
|
39
|
+
while ((n = walker.nextNode())) {
|
|
40
|
+
if (n instanceof HTMLElement) {
|
|
41
|
+
const el = n as HTMLElement;
|
|
42
|
+
const [x, y] = isScrollable(el);
|
|
43
|
+
if (x || y) el.tabIndex = 0;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
node.focus();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const getPlacementClasses = () => {
|
|
50
|
+
switch (placement) {
|
|
51
|
+
// top
|
|
52
|
+
case 'top-left':
|
|
53
|
+
return ['justify-start', 'items-start'];
|
|
54
|
+
case 'top-center':
|
|
55
|
+
return ['justify-center', 'items-start'];
|
|
56
|
+
case 'top-right':
|
|
57
|
+
return ['justify-end', 'items-start'];
|
|
58
|
+
|
|
59
|
+
// center
|
|
60
|
+
case 'center-left':
|
|
61
|
+
return ['justify-start', 'items-center'];
|
|
62
|
+
case 'center':
|
|
63
|
+
return ['justify-center', 'items-center'];
|
|
64
|
+
case 'center-right':
|
|
65
|
+
return ['justify-end', 'items-center'];
|
|
66
|
+
|
|
67
|
+
// bottom
|
|
68
|
+
case 'bottom-left':
|
|
69
|
+
return ['justify-start', 'items-end'];
|
|
70
|
+
case 'bottom-center':
|
|
71
|
+
return ['justify-center', 'items-end'];
|
|
72
|
+
case 'bottom-right':
|
|
73
|
+
return ['justify-end', 'items-end'];
|
|
74
|
+
|
|
75
|
+
default:
|
|
76
|
+
return ['justify-center', 'items-center'];
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const sizes = {
|
|
81
|
+
xs: 'max-w-md',
|
|
82
|
+
sm: 'max-w-lg',
|
|
83
|
+
md: 'max-w-2xl',
|
|
84
|
+
lg: 'max-w-4xl',
|
|
85
|
+
xl: 'max-w-7xl'
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const onAutoClose = (e: MouseEvent) => {
|
|
89
|
+
const target: Element = e.target as Element;
|
|
90
|
+
if (autoclose && target?.tagName === 'BUTTON') hide(e); // close on any button click
|
|
91
|
+
if (outsideclose && target === e.currentTarget) hide(e); // close on click outside
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const hide = (e: Event) => {
|
|
95
|
+
e.preventDefault();
|
|
96
|
+
open = false;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
let frameClass: string;
|
|
100
|
+
$: frameClass = twMerge(defaultClass, 'w-full', $$props.class);
|
|
101
|
+
|
|
102
|
+
const isScrollable = (e: HTMLElement): boolean[] => [e.scrollWidth > e.clientWidth && ['scroll', 'auto'].indexOf(getComputedStyle(e).overflowX) >= 0, e.scrollHeight > e.clientHeight && ['scroll', 'auto'].indexOf(getComputedStyle(e).overflowY) >= 0];
|
|
103
|
+
|
|
104
|
+
let backdropCls: string = twMerge(backdropClass, $$props.classBackdrop);
|
|
105
|
+
|
|
106
|
+
function handleKeys(e: KeyboardEvent) {
|
|
107
|
+
if (e.key === 'Escape' && dismissable) return hide(e);
|
|
108
|
+
}
|
|
109
|
+
</script>
|
|
110
|
+
|
|
111
|
+
{#if open}
|
|
112
|
+
<!-- backdrop -->
|
|
113
|
+
<div class={backdropCls} />
|
|
114
|
+
<!-- dialog -->
|
|
115
|
+
<!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
|
|
116
|
+
<div on:keydown={handleKeys} on:wheel|preventDefault|nonpassive use:prepareFocus use:focusTrap on:click={onAutoClose} class={twMerge(dialogClass, $$props.classDialog, ...getPlacementClasses())} tabindex="-1" aria-modal="true" role="dialog">
|
|
117
|
+
<div class="flex relative {sizes[size]} w-full max-h-full">
|
|
118
|
+
<!-- Modal content -->
|
|
119
|
+
<Frame rounded shadow {...$$restProps} class={frameClass}>
|
|
120
|
+
<!-- Modal header -->
|
|
121
|
+
{#if $$slots.header || title}
|
|
122
|
+
<Frame color={$$restProps.color} class="flex justify-between items-center p-4 rounded-t border-b">
|
|
123
|
+
<slot name="header">
|
|
124
|
+
<h3 class="text-xl font-semibold {$$restProps.color ? '' : 'text-gray-900 dark:text-white'} p-0">
|
|
125
|
+
{title}
|
|
126
|
+
</h3>
|
|
127
|
+
</slot>
|
|
128
|
+
{#if dismissable}<CloseButton name="Close modal" on:click={hide} color={$$restProps.color} />{/if}
|
|
129
|
+
</Frame>
|
|
130
|
+
{:else if dismissable}
|
|
131
|
+
<CloseButton name="Close modal" class="absolute top-3 right-2.5" on:click={hide} color={$$restProps.color} />
|
|
132
|
+
{/if}
|
|
133
|
+
<!-- Modal body -->
|
|
134
|
+
<div class={twMerge('p-6 space-y-6 flex-1 overflow-y-auto overscroll-contain', $$props.bodyClass)} on:keydown|stopPropagation={handleKeys} role="document" on:wheel|stopPropagation|passive>
|
|
135
|
+
<slot />
|
|
136
|
+
</div>
|
|
137
|
+
<!-- Modal footer -->
|
|
138
|
+
{#if $$slots.footer}
|
|
139
|
+
<Frame color={$$restProps.color} class="flex items-center p-6 space-x-2 rounded-b border-t">
|
|
140
|
+
<slot name="footer" />
|
|
141
|
+
</Frame>
|
|
142
|
+
{/if}
|
|
143
|
+
</Frame>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
{/if}
|
|
147
|
+
|
|
148
|
+
<!--
|
|
149
|
+
@component
|
|
150
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
151
|
+
## Props
|
|
152
|
+
@prop export let open: boolean = false;
|
|
153
|
+
@prop export let title: string = '';
|
|
154
|
+
@prop export let size: SizeType = 'md';
|
|
155
|
+
@prop export let placement: ModalPlacementType = 'center';
|
|
156
|
+
@prop export let autoclose: boolean = false;
|
|
157
|
+
@prop export let dismissable: boolean = true;
|
|
158
|
+
@prop export let backdropClass: string = 'fixed inset-0 z-40 bg-gray-900 bg-opacity-50 dark:bg-opacity-80';
|
|
159
|
+
@prop export let defaultClass: string = 'relative flex flex-col mx-auto';
|
|
160
|
+
@prop export let outsideclose: boolean = false;
|
|
161
|
+
@prop export let dialogClass: string = 'fixed top-0 left-0 right-0 h-modal md:inset-0 md:h-full z-50 w-full p-4 flex';
|
|
162
|
+
-->
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
export let size = '24';
|
|
3
|
+
export let color = 'currentColor';
|
|
4
|
+
export let variation: 'solid' | 'outline' = 'outline';
|
|
5
|
+
export let ariaLabel = 'bars 3';
|
|
6
|
+
|
|
7
|
+
let viewBox: string;
|
|
8
|
+
let svgpath: string;
|
|
9
|
+
let svgoutline = `<path stroke="${color}" stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"></path> `;
|
|
10
|
+
let svgsolid = `<path fill="${color}" clip-rule="evenodd" fill-rule="evenodd" d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z"></path> `;
|
|
11
|
+
$: switch (variation) {
|
|
12
|
+
case 'outline':
|
|
13
|
+
svgpath = svgoutline;
|
|
14
|
+
viewBox = '0 0 24 24';
|
|
15
|
+
break;
|
|
16
|
+
case 'solid':
|
|
17
|
+
svgpath = svgsolid;
|
|
18
|
+
viewBox = '0 0 24 24';
|
|
19
|
+
break;
|
|
20
|
+
default:
|
|
21
|
+
svgpath = svgoutline;
|
|
22
|
+
viewBox = '0 0 24 24';
|
|
23
|
+
}
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<svg xmlns="http://www.w3.org/2000/svg" role="button" tabindex="0" width={size} height={size} class={$$props.class} {...$$restProps} aria-label={ariaLabel} fill="none" {viewBox} stroke-width="2" on:click>
|
|
27
|
+
{@html svgpath}
|
|
28
|
+
</svg>
|
|
29
|
+
|
|
30
|
+
<!--
|
|
31
|
+
@component
|
|
32
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
33
|
+
## Props
|
|
34
|
+
@prop export let size = '24';
|
|
35
|
+
@prop export let color = 'currentColor';
|
|
36
|
+
@prop export let variation: 'solid' | 'outline' = 'outline';
|
|
37
|
+
@prop export let ariaLabel = 'bars 3';
|
|
38
|
+
-->
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
|
+
export let href: string = '';
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<a {href} {...$$restProps} class={twMerge('flex items-center', $$props.class)}>
|
|
7
|
+
<slot />
|
|
8
|
+
</a>
|
|
9
|
+
|
|
10
|
+
<!--
|
|
11
|
+
@component
|
|
12
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
13
|
+
## Props
|
|
14
|
+
@prop export let href: string = '';
|
|
15
|
+
-->
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import ToolbarButton from '../toolbar/ToolbarButton.svelte';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
|
+
import Menu from './Menu.svelte';
|
|
5
|
+
|
|
6
|
+
export let btnClass: string = 'ml-3 md:hidden';
|
|
7
|
+
export let menuClass: string = 'h-6 w-6 shrink-0';
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<ToolbarButton name="Open main menu" on:click {...$$restProps} class={twMerge(btnClass, $$props.class)}>
|
|
11
|
+
<Menu class={twMerge(menuClass, $$props.classMenu)} />
|
|
12
|
+
</ToolbarButton>
|
|
13
|
+
|
|
14
|
+
<!--
|
|
15
|
+
@component
|
|
16
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
17
|
+
## Props
|
|
18
|
+
@prop export let btnClass: string = 'ml-3 md:hidden';
|
|
19
|
+
@prop export let menuClass: string = 'h-6 w-6 shrink-0';
|
|
20
|
+
-->
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { getContext } from 'svelte';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
|
+
import type { NavbarLiType } from './NavUl.svelte';
|
|
5
|
+
|
|
6
|
+
export let href: string = '';
|
|
7
|
+
export let activeClass: string | undefined = undefined;
|
|
8
|
+
export let nonActiveClass: string | undefined = undefined;
|
|
9
|
+
|
|
10
|
+
const context = getContext<NavbarLiType>('navbarContext') ?? {};
|
|
11
|
+
const activeUrlStore = getContext('activeUrl') as { subscribe: (callback: (value: string) => void) => void };
|
|
12
|
+
|
|
13
|
+
let navUrl = '';
|
|
14
|
+
activeUrlStore.subscribe((value) => {
|
|
15
|
+
navUrl = value;
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
$: active = navUrl ? href === navUrl : false;
|
|
19
|
+
|
|
20
|
+
$: liClass = twMerge('block py-2 pr-4 pl-3 md:p-0 rounded md:border-0', active ? activeClass ?? context.activeClass : nonActiveClass ?? context.nonActiveClass, $$props.class);
|
|
21
|
+
// $: console.log()
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<li>
|
|
25
|
+
<svelte:element this={href ? 'a' : 'div'} role={href ? undefined : 'link'} {href} {...$$restProps} on:blur on:change on:click on:focus on:keydown on:keypress on:keyup on:mouseenter on:mouseleave on:mouseover class={liClass}>
|
|
26
|
+
<slot />
|
|
27
|
+
</svelte:element>
|
|
28
|
+
</li>
|
|
29
|
+
|
|
30
|
+
<!--
|
|
31
|
+
@component
|
|
32
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
33
|
+
## Props
|
|
34
|
+
@prop export let href: string = '';
|
|
35
|
+
@prop export let activeClass: string | undefined = undefined;
|
|
36
|
+
@prop export let nonActiveClass: string | undefined = undefined;
|
|
37
|
+
-->
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import ToolbarButton from '../toolbar/ToolbarButton.svelte';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
|
+
import SidebarMenu from './SidebarMenu.svelte';
|
|
5
|
+
|
|
6
|
+
export let btnClass: string = 'ml-3 md:hidden';
|
|
7
|
+
export let sideMenuClass: string = 'h-6 w-6 shrink-0';
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<ToolbarButton name="Open main menu" on:click {...$$restProps} class={twMerge(btnClass, $$props.class)}>
|
|
11
|
+
<SidebarMenu class={twMerge(sideMenuClass, $$props.classSideMenu)} variation="solid" />
|
|
12
|
+
</ToolbarButton>
|
|
13
|
+
|
|
14
|
+
<!--
|
|
15
|
+
@component
|
|
16
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
17
|
+
## Props
|
|
18
|
+
@prop export let btnClass: string = 'ml-3 md:hidden';
|
|
19
|
+
@prop export let sideMenuClass: string = 'h-6 w-6 shrink-0';
|
|
20
|
+
-->
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<script lang="ts" context="module">
|
|
2
|
+
export type NavbarLiType = {
|
|
3
|
+
activeClass: string;
|
|
4
|
+
nonActiveClass: string;
|
|
5
|
+
};
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<script lang="ts">
|
|
9
|
+
import { twMerge } from 'tailwind-merge';
|
|
10
|
+
import { slide, type SlideParams } from 'svelte/transition';
|
|
11
|
+
import { quintOut } from 'svelte/easing';
|
|
12
|
+
import Frame from '../utils/Frame.svelte';
|
|
13
|
+
import { setContext } from 'svelte';
|
|
14
|
+
import { writable } from 'svelte/store';
|
|
15
|
+
|
|
16
|
+
const activeUrlStore = writable('');
|
|
17
|
+
|
|
18
|
+
export let activeUrl: string = '';
|
|
19
|
+
export let divClass: string = 'w-full md:block md:w-auto';
|
|
20
|
+
export let ulClass: string = 'flex flex-col p-4 mt-4 md:flex-row md:space-x-8 md:mt-0 md:text-sm md:font-medium';
|
|
21
|
+
export let hidden: boolean = true;
|
|
22
|
+
export let slideParams: SlideParams = { delay: 250, duration: 500, easing: quintOut };
|
|
23
|
+
export let activeClass: string = 'text-white bg-primary-700 md:bg-transparent md:text-primary-700 md:dark:text-white dark:bg-primary-600 md:dark:bg-transparent';
|
|
24
|
+
export let nonActiveClass: string = 'text-gray-700 hover:bg-gray-100 md:hover:bg-transparent md:border-0 md:hover:text-primary-700 dark:text-gray-400 md:dark:hover:text-white dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent';
|
|
25
|
+
|
|
26
|
+
setContext<NavbarLiType>('navbarContext', { activeClass, nonActiveClass });
|
|
27
|
+
$: {
|
|
28
|
+
activeUrlStore.set(activeUrl);
|
|
29
|
+
}
|
|
30
|
+
setContext('activeUrl', activeUrlStore);
|
|
31
|
+
|
|
32
|
+
let _divClass: string;
|
|
33
|
+
$: _divClass = twMerge(divClass, $$props.class);
|
|
34
|
+
|
|
35
|
+
let _ulClass: string;
|
|
36
|
+
$: _ulClass = twMerge(
|
|
37
|
+
ulClass,
|
|
38
|
+
// 'divide-y md:divide-y-0 divide-gray-100 dark:divide-gray-700',
|
|
39
|
+
$$props.classUl
|
|
40
|
+
);
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
{#if !hidden}
|
|
44
|
+
<div {...$$restProps} class={_divClass} transition:slide={slideParams} on:click role="button" tabindex="0">
|
|
45
|
+
<Frame tag="ul" border rounded color="navbarUl" class={_ulClass}>
|
|
46
|
+
<slot />
|
|
47
|
+
</Frame>
|
|
48
|
+
</div>
|
|
49
|
+
{:else}
|
|
50
|
+
<div {...$$restProps} class={_divClass} {hidden}>
|
|
51
|
+
<ul class={_ulClass}>
|
|
52
|
+
<slot />
|
|
53
|
+
</ul>
|
|
54
|
+
</div>
|
|
55
|
+
{/if}
|
|
56
|
+
|
|
57
|
+
<!--
|
|
58
|
+
@component
|
|
59
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
60
|
+
## Props
|
|
61
|
+
@prop export let activeUrl: string = '';
|
|
62
|
+
@prop export let divClass: string = 'w-full md:block md:w-auto';
|
|
63
|
+
@prop export let ulClass: string = 'flex flex-col p-4 mt-4 md:flex-row md:space-x-8 md:mt-0 md:text-sm md:font-medium';
|
|
64
|
+
@prop export let hidden: boolean = true;
|
|
65
|
+
@prop export let slideParams: SlideParams = { delay: 250, duration: 500, easing: quintOut };
|
|
66
|
+
@prop export let activeClass: string = 'text-white bg-primary-700 md:bg-transparent md:text-primary-700 md:dark:text-white dark:bg-primary-600 md:dark:bg-transparent';
|
|
67
|
+
@prop export let nonActiveClass: string = 'text-gray-700 hover:bg-gray-100 md:hover:bg-transparent md:border-0 md:hover:text-primary-700 dark:text-gray-400 md:dark:hover:text-white dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent';
|
|
68
|
+
-->
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ComponentProps } from 'svelte';
|
|
3
|
+
import Frame from '../utils/Frame.svelte';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
|
|
6
|
+
// propagate props type from underlying Frame
|
|
7
|
+
interface $$Props extends ComponentProps<Frame> {
|
|
8
|
+
navClass?: string;
|
|
9
|
+
navDivClass?: string;
|
|
10
|
+
fluid?: boolean;
|
|
11
|
+
classNavDiv?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export let navClass: string = 'px-2 sm:px-4 py-2.5 w-full';
|
|
15
|
+
export let navDivClass: string = 'mx-auto flex flex-wrap justify-between items-center ';
|
|
16
|
+
export let fluid: boolean = false;
|
|
17
|
+
|
|
18
|
+
$: {
|
|
19
|
+
// override default Frame value
|
|
20
|
+
$$restProps.color = $$restProps.color ?? 'navbar';
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let hidden = true;
|
|
24
|
+
let toggle = () => {
|
|
25
|
+
hidden = !hidden;
|
|
26
|
+
};
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<Frame tag="nav" {...$$restProps} class={twMerge(navClass, $$props.class)}>
|
|
30
|
+
<div class={twMerge(navDivClass, $$props.classNavDiv, (fluid && 'w-full') || 'container')}>
|
|
31
|
+
<slot {hidden} {toggle} />
|
|
32
|
+
</div>
|
|
33
|
+
</Frame>
|
|
34
|
+
|
|
35
|
+
<!--
|
|
36
|
+
@component
|
|
37
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
38
|
+
## Props
|
|
39
|
+
@prop export let navClass: string = 'px-2 sm:px-4 py-2.5 w-full';
|
|
40
|
+
@prop export let navDivClass: string = 'mx-auto flex flex-wrap justify-between items-center ';
|
|
41
|
+
@prop export let fluid: boolean = false;
|
|
42
|
+
-->
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
export let size = '20';
|
|
3
|
+
export let color = 'currentColor';
|
|
4
|
+
export let variation: 'solid' | 'outline' = 'outline';
|
|
5
|
+
let viewBox: string;
|
|
6
|
+
let svgpath: string;
|
|
7
|
+
let svgoutline = `<path stroke="${color}" clip-rule="evenodd" fill-rule="evenodd" d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h6a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z"></path> `;
|
|
8
|
+
let svgsolid = `<path fill="${color}" clip-rule="evenodd" fill-rule="evenodd" d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h6a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z"></path> `;
|
|
9
|
+
$: switch (variation) {
|
|
10
|
+
case 'outline':
|
|
11
|
+
svgpath = svgoutline;
|
|
12
|
+
viewBox = '0 0 20 20';
|
|
13
|
+
break;
|
|
14
|
+
case 'solid':
|
|
15
|
+
svgpath = svgsolid;
|
|
16
|
+
viewBox = '0 0 20 20';
|
|
17
|
+
break;
|
|
18
|
+
default:
|
|
19
|
+
svgpath = svgoutline;
|
|
20
|
+
viewBox = '0 0 20 20';
|
|
21
|
+
}
|
|
22
|
+
export let ariaLabel = 'bars 3';
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<svg xmlns="http://www.w3.org/2000/svg" width={size} height={size} {...$$restProps} class={$$props.class} aria-label={ariaLabel} fill="none" {viewBox} stroke-width="2" on:click role="button" tabindex="-1">
|
|
26
|
+
{@html svgpath}
|
|
27
|
+
</svg>
|
|
28
|
+
|
|
29
|
+
<!--
|
|
30
|
+
@component
|
|
31
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
32
|
+
## Props
|
|
33
|
+
@prop export let size = '20';
|
|
34
|
+
@prop export let color = 'currentColor';
|
|
35
|
+
@prop export let variation: 'solid' | 'outline' = 'outline';
|
|
36
|
+
@prop export let ariaLabel = 'bars 3';
|
|
37
|
+
-->
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { twMerge, twJoin } from 'tailwind-merge';
|
|
3
|
+
import { createEventDispatcher, setContext } from 'svelte';
|
|
4
|
+
import type { LinkType } from '../types';
|
|
5
|
+
import PaginationItem from './PaginationItem.svelte';
|
|
6
|
+
|
|
7
|
+
export let pages: LinkType[] = [];
|
|
8
|
+
export let activeClass: string = 'text-blue-600 border border-gray-300 bg-blue-50 hover:bg-blue-100 hover:text-blue-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white';
|
|
9
|
+
export let normalClass: string = 'text-gray-500 bg-white hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white';
|
|
10
|
+
export let ulClass: string = 'inline-flex -space-x-px items-center';
|
|
11
|
+
export let table: boolean = false;
|
|
12
|
+
export let large: boolean = false;
|
|
13
|
+
|
|
14
|
+
const dispatch = createEventDispatcher();
|
|
15
|
+
|
|
16
|
+
setContext<boolean>('group', true);
|
|
17
|
+
setContext<boolean>('table', table);
|
|
18
|
+
|
|
19
|
+
const previous = () => {
|
|
20
|
+
dispatch('previous');
|
|
21
|
+
};
|
|
22
|
+
const next = () => {
|
|
23
|
+
dispatch('next');
|
|
24
|
+
};
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<nav aria-label="Page navigation">
|
|
28
|
+
<ul class={twMerge(ulClass, table && 'divide-x dark divide-gray-700 dark:divide-gray-700', $$props.class)}>
|
|
29
|
+
<li>
|
|
30
|
+
<PaginationItem {large} on:click={previous} {normalClass} class={table ? 'rounded-l' : 'rounded-l-lg'}>
|
|
31
|
+
<slot name="prev">Previous</slot>
|
|
32
|
+
</PaginationItem>
|
|
33
|
+
</li>
|
|
34
|
+
{#each pages as { name, href, active }}
|
|
35
|
+
<li>
|
|
36
|
+
<PaginationItem {large} {active} {activeClass} {normalClass} {href} on:blur on:change on:click on:focus on:keydown on:keypress on:keyup on:mouseenter on:mouseleave on:mouseover>
|
|
37
|
+
{name}
|
|
38
|
+
</PaginationItem>
|
|
39
|
+
</li>
|
|
40
|
+
{/each}
|
|
41
|
+
<li>
|
|
42
|
+
<PaginationItem {large} on:click={next} {normalClass} class={table ? 'rounded-r' : 'rounded-r-lg'}>
|
|
43
|
+
<slot name="next">Next</slot>
|
|
44
|
+
</PaginationItem>
|
|
45
|
+
</li>
|
|
46
|
+
</ul>
|
|
47
|
+
</nav>
|
|
48
|
+
|
|
49
|
+
<!--
|
|
50
|
+
@component
|
|
51
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
52
|
+
## Props
|
|
53
|
+
@prop export let pages: LinkType[] = [];
|
|
54
|
+
@prop export let activeClass: string = 'text-blue-600 border border-gray-300 bg-blue-50 hover:bg-blue-100 hover:text-blue-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white';
|
|
55
|
+
@prop export let normalClass: string = 'text-gray-500 bg-white hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white';
|
|
56
|
+
@prop export let ulClass: string = 'inline-flex -space-x-px items-center';
|
|
57
|
+
@prop export let table: boolean = false;
|
|
58
|
+
@prop export let large: boolean = false;
|
|
59
|
+
-->
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
|
+
import { getContext } from 'svelte';
|
|
4
|
+
|
|
5
|
+
export let href: string | undefined = undefined;
|
|
6
|
+
export let active: boolean = false;
|
|
7
|
+
export let activeClass: string = 'text-blue-600 border border-gray-300 bg-blue-50 hover:bg-blue-100 hover:text-blue-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white';
|
|
8
|
+
export let normalClass: string = 'text-gray-500 bg-white hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white';
|
|
9
|
+
export let large: boolean = false;
|
|
10
|
+
|
|
11
|
+
const group = getContext<boolean>('group');
|
|
12
|
+
const table = getContext<boolean>('table');
|
|
13
|
+
|
|
14
|
+
let defaultClass: string;
|
|
15
|
+
$: defaultClass = twMerge(
|
|
16
|
+
'flex items-center font-medium',
|
|
17
|
+
large ? 'h-10 px-4 text-base' : 'h-8 px-3 text-sm',
|
|
18
|
+
group ? '' : table ? 'rounded' : 'rounded-lg',
|
|
19
|
+
// table || 'border border-gray-300 dark:border-gray-700 dark:bg-gray-800',
|
|
20
|
+
table ? '' : 'border',
|
|
21
|
+
active ? activeClass : normalClass,
|
|
22
|
+
$$props.class
|
|
23
|
+
);
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
27
|
+
<svelte:element this={href ? 'a' : 'button'} {href} class={defaultClass} on:blur on:change on:click on:focus on:keydown on:keypress on:keyup on:mouseenter on:mouseleave on:mouseover role={href ? 'button' : undefined}>
|
|
28
|
+
<slot />
|
|
29
|
+
</svelte:element>
|
|
30
|
+
|
|
31
|
+
<!--
|
|
32
|
+
@component
|
|
33
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
34
|
+
## Props
|
|
35
|
+
@prop export let href: string | undefined = undefined;
|
|
36
|
+
@prop export let active: boolean = false;
|
|
37
|
+
@prop export let activeClass: string = 'text-blue-600 border border-gray-300 bg-blue-50 hover:bg-blue-100 hover:text-blue-700 dark:border-gray-700 dark:bg-gray-700 dark:text-white';
|
|
38
|
+
@prop export let normalClass: string = 'text-gray-500 bg-white hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white';
|
|
39
|
+
@prop export let large: boolean = false;
|
|
40
|
+
-->
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ComponentProps } from 'svelte';
|
|
3
|
+
import Popper from '../utils/Popper.svelte';
|
|
4
|
+
|
|
5
|
+
// propagate props type from underlying Frame
|
|
6
|
+
interface $$Props extends ComponentProps<Popper> {
|
|
7
|
+
title?: string;
|
|
8
|
+
defaultClass?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export let title: string = '';
|
|
12
|
+
export let defaultClass: string = 'py-2 px-3';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<Popper activeContent border shadow rounded {...$$restProps} class="dark:!border-gray-600 {$$props.class}" on:show>
|
|
16
|
+
{#if $$slots.title || title}
|
|
17
|
+
<div class="py-2 px-3 bg-gray-100 rounded-t-md border-b border-gray-200 dark:border-gray-600 dark:bg-gray-700">
|
|
18
|
+
<slot name="title">
|
|
19
|
+
<h3 class="font-semibold text-gray-900 dark:text-white">{title}</h3>
|
|
20
|
+
</slot>
|
|
21
|
+
</div>
|
|
22
|
+
{/if}
|
|
23
|
+
<div class={defaultClass}>
|
|
24
|
+
<slot />
|
|
25
|
+
</div>
|
|
26
|
+
</Popper>
|
|
27
|
+
|
|
28
|
+
<!--
|
|
29
|
+
@component
|
|
30
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
31
|
+
## Props
|
|
32
|
+
@prop export let title: string = '';
|
|
33
|
+
@prop export let defaultClass: string = 'py-2 px-3';
|
|
34
|
+
-->
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { twMerge, twJoin } from 'tailwind-merge';
|
|
3
|
+
|
|
4
|
+
export let progress: string = '45';
|
|
5
|
+
export let size: string = 'h-2.5';
|
|
6
|
+
export let labelInside: boolean = false;
|
|
7
|
+
export let labelOutside: string = '';
|
|
8
|
+
export let color: 'primary' | 'blue' | 'gray' | 'red' | 'green' | 'yellow' | 'purple' | 'indigo' = 'primary';
|
|
9
|
+
export let labelInsideClass: string = 'text-primary-100 text-xs font-medium text-center p-0.5 leading-none rounded-full';
|
|
10
|
+
export let divClass: string = 'w-full bg-gray-200 rounded-full dark:bg-gray-700';
|
|
11
|
+
|
|
12
|
+
// let barColor: string;
|
|
13
|
+
const barColors = {
|
|
14
|
+
primary: 'bg-primary-600',
|
|
15
|
+
blue: 'bg-blue-600',
|
|
16
|
+
gray: 'bg-gray-600 dark:bg-gray-300',
|
|
17
|
+
red: 'bg-red-600 dark:bg-red-500',
|
|
18
|
+
green: 'bg-green-600 dark:bg-green-500',
|
|
19
|
+
yellow: 'bg-yellow-400',
|
|
20
|
+
purple: 'bg-purple-600 dark:bg-purple-500',
|
|
21
|
+
indigo: 'bg-indigo-600 dark:bg-indigo-500'
|
|
22
|
+
};
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
{#if labelOutside}
|
|
26
|
+
<div {...$$restProps} class={twMerge('flex justify-between mb-1', $$props.classLabelOutside)}>
|
|
27
|
+
<span class="text-base font-medium text-blue-700 dark:text-white">{labelOutside}</span>
|
|
28
|
+
<span class="text-sm font-medium text-blue-700 dark:text-white">{progress}%</span>
|
|
29
|
+
</div>
|
|
30
|
+
{/if}
|
|
31
|
+
<div class={twMerge(divClass, size, $$props.class)}>
|
|
32
|
+
{#if labelInside}
|
|
33
|
+
<div class={twJoin(labelInsideClass, barColors[color])} style="width: {progress}%">
|
|
34
|
+
{progress}%
|
|
35
|
+
</div>
|
|
36
|
+
{:else}
|
|
37
|
+
<div class={twJoin(barColors[color], size, 'rounded-full')} style="width: {progress}%" />
|
|
38
|
+
{/if}
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<!--
|
|
42
|
+
@component
|
|
43
|
+
[Go to docs](https://flowbite-svelte.com/)
|
|
44
|
+
## Props
|
|
45
|
+
@prop export let progress: string = '45';
|
|
46
|
+
@prop export let size: string = 'h-2.5';
|
|
47
|
+
@prop export let labelInside: boolean = false;
|
|
48
|
+
@prop export let labelOutside: string = '';
|
|
49
|
+
@prop export let color: 'primary' | 'blue' | 'gray' | 'red' | 'green' | 'yellow' | 'purple' | 'indigo' = 'primary';
|
|
50
|
+
@prop export let labelInsideClass: string = 'text-primary-100 text-xs font-medium text-center p-0.5 leading-none rounded-full';
|
|
51
|
+
@prop export let divClass: string = 'w-full bg-gray-200 rounded-full dark:bg-gray-700';
|
|
52
|
+
-->
|