├── .changeset ├── README.md └── config.json ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── CHANGELOG.md ├── README.md ├── e2e └── blocks.test.ts ├── eslint.config.js ├── mdsvex.config.js ├── package.json ├── playwright.config.ts ├── pnpm-lock.yaml ├── src ├── app.css ├── app.d.ts ├── app.html ├── demo.spec.ts ├── lib │ ├── Section.svelte │ ├── acount-recovery │ │ ├── ForgotPassword.svelte │ │ └── ForgotPasswordHeader.svelte │ ├── banner │ │ └── Banner.svelte │ ├── blog-template │ │ └── BlogTemplate.svelte │ ├── blog │ │ ├── ArticleAuthor.svelte │ │ ├── ArticleBody.svelte │ │ ├── ArticleHead.svelte │ │ ├── ArticleWrapper.svelte │ │ ├── BlogBodyWrapper.svelte │ │ └── BlogHead.svelte │ ├── comment │ │ ├── Comment.svelte │ │ └── CommentItem.svelte │ ├── contact │ │ └── Contact.svelte │ ├── content │ │ ├── Content.svelte │ │ └── ContentWithImage.svelte │ ├── cta │ │ └── Cta.svelte │ ├── faq │ │ ├── Faq.svelte │ │ └── FaqItem.svelte │ ├── feature │ │ ├── FeatureDefault.svelte │ │ └── FeatureItem.svelte │ ├── header │ │ └── Navigation.svelte │ ├── hero │ │ ├── HeroBody.svelte │ │ ├── HeroHeader.svelte │ │ └── News.svelte │ ├── index.ts │ ├── maintenance │ │ ├── Maintenance.svelte │ │ └── ToolsIcon.svelte │ ├── newsletter │ │ └── Newsletter.svelte │ ├── page404 │ │ └── Page404.svelte │ ├── page500 │ │ └── Page500.svelte │ ├── popup │ │ └── Popup.svelte │ ├── portfolio │ │ ├── Portfolio.svelte │ │ └── PortfolioItem.svelte │ ├── pricing │ │ ├── PricingBodyHead.svelte │ │ ├── PricingCard.svelte │ │ ├── PricingHead.svelte │ │ ├── PricingItem.svelte │ │ └── PricingItemWrapper.svelte │ ├── register │ │ └── Register.svelte │ ├── schedule │ │ ├── Schedule.svelte │ │ └── ScheduleItem.svelte │ ├── sidebar │ │ ├── SidebarBottomNav.svelte │ │ └── SidebarBottomNavItem.svelte │ ├── social │ │ └── Social.svelte │ ├── tableheader │ │ └── TableHeader.svelte │ ├── team │ │ ├── TeamBody.svelte │ │ ├── TeamHeader.svelte │ │ ├── TeamItem.svelte │ │ └── TeamWrapper.svelte │ ├── testimonial │ │ ├── Testimonial.svelte │ │ ├── TestimonialCard.svelte │ │ └── TestimonialCardItem.svelte │ ├── types.ts │ └── utils │ │ ├── Facebook.svelte │ │ ├── GitHub.svelte │ │ ├── Instagram.svelte │ │ ├── Quotes.svelte │ │ └── Twitter.svelte ├── routes │ ├── +layout.server.ts │ ├── +layout.svelte │ ├── +page.server.ts │ ├── +page.svelte │ ├── api │ │ └── +server.js │ ├── application │ │ ├── +page.md │ │ ├── [slug] │ │ │ ├── +page.svelte │ │ │ └── +page.ts │ │ ├── advanced-tables.md │ │ ├── crud-create-drawers.md │ │ ├── crud-create-forms.md │ │ ├── crud-create-modals.md │ │ ├── crud-delete-confirm.md │ │ ├── crud-read-drawers.md │ │ ├── crud-read-modals.md │ │ ├── crud-read-sections.md │ │ ├── crud-success-message.md │ │ ├── crud-update-drawers.md │ │ ├── crud-update-forms.md │ │ ├── crud-update-modals.md │ │ ├── dashboard-footer.md │ │ ├── faceted-search-drawers.md │ │ ├── faceted-search-modals.md │ │ ├── filter.md │ │ ├── navbar.md │ │ ├── sidenav.md │ │ ├── table-footers.md │ │ └── table-headers.md │ ├── component-data │ │ ├── ArticleAuthor.json │ │ ├── ArticleBody.json │ │ ├── ArticleHead.json │ │ ├── ArticleWrapper.json │ │ ├── Banner.json │ │ ├── BlogBodyWrapper.json │ │ ├── BlogHead.json │ │ ├── BlogTemplate.json │ │ ├── Comment.json │ │ ├── CommentItem.json │ │ ├── Contact.json │ │ ├── Content.json │ │ ├── ContentWithImage.json │ │ ├── Cta.json │ │ ├── Facebook.json │ │ ├── Faq.json │ │ ├── FaqItem.json │ │ ├── FeatureDefault.json │ │ ├── FeatureItem.json │ │ ├── ForgotPassword.json │ │ ├── ForgotPasswordHeader.json │ │ ├── Github.json │ │ ├── HeroBody.json │ │ ├── HeroHeader.json │ │ ├── Maintenance.json │ │ ├── Navigation.json │ │ ├── News.json │ │ ├── Newsletter.json │ │ ├── Page404.json │ │ ├── Page500.json │ │ ├── Popup.json │ │ ├── Portfolio.json │ │ ├── PortfolioItem.json │ │ ├── PricingBodyHead.json │ │ ├── PricingCard.json │ │ ├── PricingHead.json │ │ ├── PricingItem.json │ │ ├── PricingItemWrapper.json │ │ ├── Quotes.json │ │ ├── Register.json │ │ ├── Schedule.json │ │ ├── ScheduleItem.json │ │ ├── Section.json │ │ ├── SidebarBottomNav.json │ │ ├── SidebarBottomNavItem.json │ │ ├── Social.json │ │ ├── TableHeader.json │ │ ├── TeamBody.json │ │ ├── TeamHeader.json │ │ ├── TeamItem.json │ │ ├── TeamWrapper.json │ │ ├── Testimonial.json │ │ ├── TestimonialCard.json │ │ ├── TestimonialCardItem.json │ │ ├── ToolsIcon.json │ │ ├── Twitter.json │ │ ├── index.json │ │ └── types.json │ ├── compotests │ │ └── +page.svelte │ ├── example │ │ └── +page.md │ ├── layouts │ │ ├── +page.svelte │ │ ├── Anchor.svelte │ │ ├── code.svelte │ │ ├── h2.svelte │ │ └── h3.svelte │ ├── marketing │ │ ├── +page.md │ │ ├── 404.md │ │ ├── 500.md │ │ ├── [slug] │ │ │ ├── +page.js │ │ │ └── +page.svelte │ │ ├── account-recovery.md │ │ ├── banner.md │ │ ├── blog.md │ │ ├── contact.md │ │ ├── content.md │ │ ├── cookie.md │ │ ├── cta.md │ │ ├── customer-logos.md │ │ ├── event-schedule.md │ │ ├── faq.md │ │ ├── feature.md │ │ ├── footer.md │ │ ├── header.md │ │ ├── hero.md │ │ ├── login.md │ │ ├── maintenance.md │ │ ├── newsletter.md │ │ ├── popup.md │ │ ├── portfolio.md │ │ ├── pricing.md │ │ ├── register.md │ │ ├── reset-password.md │ │ ├── social-proof.md │ │ ├── team.md │ │ ├── testimonial.md │ │ └── user-onboarding.md │ ├── pages │ │ ├── [slug] │ │ │ ├── +page.js │ │ │ └── +page.svelte │ │ └── quickstart.md │ ├── publisher │ │ ├── +page.md │ │ ├── [slug] │ │ │ ├── +page.js │ │ │ └── +page.svelte │ │ ├── blog-example.json │ │ ├── blog-templates.md │ │ ├── comments.md │ │ └── related-articles.md │ ├── sitemap.xml │ │ └── +server.ts │ ├── testdir │ │ ├── +page.svelte │ │ └── blog-example.json │ └── utils │ │ ├── CompoAttributesViewer.svelte │ │ ├── CompoCard.svelte │ │ ├── CompoDescription.svelte │ │ ├── DocBadge.svelte │ │ ├── ExampleDarkMode.svelte │ │ ├── ExampleHelper.svelte │ │ ├── ExampleRTL.svelte │ │ ├── ExampleWrapper.svelte │ │ ├── Footer.svelte │ │ ├── GitHubSource.svelte │ │ ├── GitHubSourceList.svelte │ │ ├── MetaTag.svelte │ │ ├── Newsletter.svelte │ │ ├── PageHeadSection.svelte │ │ ├── Paging.svelte │ │ ├── Section.svelte │ │ ├── SectionHeader.svelte │ │ ├── Sectioncompo.svelte │ │ ├── TableDefaultRow.svelte │ │ ├── TableProp.svelte │ │ ├── Toc.svelte │ │ ├── ToolbarLink.svelte │ │ ├── advancedTable.json │ │ ├── data.json │ │ ├── fetchPost.ts │ │ ├── helpers.ts │ │ ├── icons │ │ ├── Airbnb.svelte │ │ ├── ArrowLeft.svelte │ │ ├── ArrowRight.svelte │ │ ├── Discord.svelte │ │ ├── Facebook.svelte │ │ ├── GitHub.svelte │ │ ├── GitHubHome.svelte │ │ ├── Google.svelte │ │ ├── Instagram.svelte │ │ ├── Mail.svelte │ │ ├── Mailchimp.svelte │ │ ├── Mashable.svelte │ │ ├── Microsoft.svelte │ │ ├── ProductHunt.svelte │ │ ├── Reddit.svelte │ │ ├── Spotify.svelte │ │ ├── Twitter.svelte │ │ ├── Youtube.svelte │ │ └── YoutubeHome.svelte │ │ ├── index.ts │ │ └── mdsvex.d.ts └── vite-env.d.ts ├── static ├── images │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── application │ │ ├── advanced-tables-dark.svg │ │ ├── advanced-tables.svg │ │ ├── crud-create-drawers-dark.svg │ │ ├── crud-create-drawers.svg │ │ ├── crud-create-forms-dark.svg │ │ ├── crud-create-forms.svg │ │ ├── crud-create-modals-dark.svg │ │ ├── crud-create-modals.svg │ │ ├── crud-delete-confirm-dark.svg │ │ ├── crud-delete-confirm.svg │ │ ├── crud-read-drawers-dark.svg │ │ ├── crud-read-drawers.svg │ │ ├── crud-read-modals-dark.svg │ │ ├── crud-read-modals.svg │ │ ├── crud-read-sections-dark.svg │ │ ├── crud-read-sections.svg │ │ ├── crud-success-message-dark.svg │ │ ├── crud-success-message.svg │ │ ├── crud-update-drawers-dark.svg │ │ ├── crud-update-drawers.svg │ │ ├── crud-update-forms-dark.svg │ │ ├── crud-update-forms.svg │ │ ├── crud-update-modals-dark.svg │ │ ├── crud-update-modals.svg │ │ ├── dashboard-footer-dark.svg │ │ ├── dashboard-footer.svg │ │ ├── faceted-search-drawers-dark.svg │ │ ├── faceted-search-drawers.svg │ │ ├── faceted-search-modals-dark.svg │ │ ├── faceted-search-modals.svg │ │ ├── filter-dark.svg │ │ ├── filter.svg │ │ ├── navbar-dark.svg │ │ ├── navbar.svg │ │ ├── sidenav-dark.svg │ │ ├── sidenav.svg │ │ ├── table-footers-dark.svg │ │ ├── table-footers.svg │ │ ├── table-headers-dark.svg │ │ └── table-headers.svg │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── favicon.png │ ├── favicon.svg │ ├── logo.svg │ ├── marketing │ │ ├── 404-dark.svg │ │ ├── 404.svg │ │ ├── 500-dark.svg │ │ ├── 500.svg │ │ ├── account-recovery-dark.svg │ │ ├── account-recovery.svg │ │ ├── banner-dark.svg │ │ ├── banner.svg │ │ ├── blog-dark.svg │ │ ├── blog.svg │ │ ├── contact-dark.svg │ │ ├── contact.svg │ │ ├── content-dark.svg │ │ ├── content.svg │ │ ├── cookie-dark.svg │ │ ├── cookie.svg │ │ ├── cta-dark.svg │ │ ├── cta.svg │ │ ├── customer-logos-dark.svg │ │ ├── customer-logos.svg │ │ ├── event-schedule-dark.svg │ │ ├── event-schedule.svg │ │ ├── faq-dark.svg │ │ ├── faq.svg │ │ ├── feature-dark.svg │ │ ├── feature.svg │ │ ├── footer-dark.svg │ │ ├── footer.svg │ │ ├── header-dark.svg │ │ ├── header.svg │ │ ├── hero-dark.svg │ │ ├── hero.svg │ │ ├── login-dark.svg │ │ ├── login.svg │ │ ├── maintenance-dark.svg │ │ ├── maintenance.svg │ │ ├── newsletter-dark.svg │ │ ├── newsletter.svg │ │ ├── popup-dark.svg │ │ ├── popup.svg │ │ ├── portfolio-dark.svg │ │ ├── portfolio.svg │ │ ├── pricing-dark.svg │ │ ├── pricing.svg │ │ ├── register-dark.svg │ │ ├── register.svg │ │ ├── reset-password-dark.svg │ │ ├── reset-password.svg │ │ ├── social-proof-dark.svg │ │ ├── social-proof.svg │ │ ├── team-dark.svg │ │ ├── team.svg │ │ ├── testimonial-dark.svg │ │ ├── testimonial.svg │ │ ├── user-onboarding-dark.svg │ │ └── user-onboarding.svg │ └── publisher │ │ ├── blog-templates-dark.svg │ │ ├── blog-templates.svg │ │ ├── comments-dark.svg │ │ ├── comments.svg │ │ ├── related-articles-dark.svg │ │ └── related-articles.svg ├── manifest.json ├── manifest.webmanifest └── styles │ └── docs.css ├── svelte.config.js ├── tsconfig.json ├── vite.config.ts └── vitest-setup-client.ts /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works with multi-package repos, or single-package repos to help you version and publish your code. You can find the full documentation for it [in our repository](https://github.com/changesets/changesets) 4 | 5 | We have a quick list of common questions to get you started engaging with this project in [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 6 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json", 3 | "changelog": ["@svitejs/changesets-changelog-github-compact", { "repo": "themesberg/flowbite-svelte-blocks" }], 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "public", 8 | "baseBranch": "main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | test-results 2 | node_modules 3 | 4 | # Output 5 | .output 6 | .vercel 7 | .netlify 8 | .wrangler 9 | /.svelte-kit 10 | /build 11 | /dist 12 | 13 | # OS 14 | .DS_Store 15 | Thumbs.db 16 | 17 | # Env 18 | .env 19 | .env.* 20 | !.env.example 21 | !.env.test 22 | 23 | # Vite 24 | vite.config.js.timestamp-* 25 | vite.config.ts.timestamp-* 26 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Package Managers 2 | package-lock.json 3 | pnpm-lock.yaml 4 | yarn.lock 5 | bun.lock 6 | bun.lockb 7 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 200, 6 | "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], 7 | "overrides": [ 8 | { 9 | "files": "*.svelte", 10 | "options": { 11 | "parser": "svelte" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # flowbite-svelte-blocks 2 | 3 | ## 2.0.0 4 | 5 | ### Major Changes 6 | 7 | - svelte 5 runes mode 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Svelte library 2 | 3 | Everything you need to build a Svelte library, powered by [`sv`](https://npmjs.com/package/sv). 4 | 5 | Read more about creating a library [in the docs](https://svelte.dev/docs/kit/packaging). 6 | 7 | ## Creating a project 8 | 9 | If you're seeing this, you've probably already done this step. Congrats! 10 | 11 | ```bash 12 | # create a new project in the current directory 13 | npx sv create 14 | 15 | # create a new project in my-app 16 | npx sv create my-app 17 | ``` 18 | 19 | ## Developing 20 | 21 | Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: 22 | 23 | ```bash 24 | npm run dev 25 | 26 | # or start the server and open the app in a new browser tab 27 | npm run dev -- --open 28 | ``` 29 | 30 | Everything inside `src/lib` is part of your library, everything inside `src/routes` can be used as a showcase or preview app. 31 | 32 | ## Building 33 | 34 | To build your library: 35 | 36 | ```bash 37 | npm run package 38 | ``` 39 | 40 | To create a production version of your showcase app: 41 | 42 | ```bash 43 | npm run build 44 | ``` 45 | 46 | You can preview the production build with `npm run preview`. 47 | 48 | > To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. 49 | 50 | ## Publishing 51 | 52 | Go into the `package.json` and give your package the desired name through the `"name"` option. Also consider adding a `"license"` field and point it to a `LICENSE` file which you can create from a template (one popular option is the [MIT license](https://opensource.org/license/mit/)). 53 | 54 | To publish your library to [npm](https://www.npmjs.com): 55 | 56 | ```bash 57 | npm publish 58 | ``` 59 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import prettier from 'eslint-config-prettier'; 2 | import js from '@eslint/js'; 3 | import { includeIgnoreFile } from '@eslint/compat'; 4 | import svelte from 'eslint-plugin-svelte'; 5 | import globals from 'globals'; 6 | import { fileURLToPath } from 'node:url'; 7 | import ts from 'typescript-eslint'; 8 | import svelteConfig from './svelte.config.js'; 9 | 10 | const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); 11 | 12 | export default ts.config( 13 | includeIgnoreFile(gitignorePath), 14 | js.configs.recommended, 15 | ...ts.configs.recommended, 16 | ...svelte.configs.recommended, 17 | prettier, 18 | ...svelte.configs.prettier, 19 | { 20 | languageOptions: { 21 | globals: { ...globals.browser, ...globals.node } 22 | }, 23 | rules: { 'no-undef': 'off' } 24 | }, 25 | { 26 | files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], 27 | ignores: ['eslint.config.js', 'svelte.config.js'], 28 | languageOptions: { 29 | parserOptions: { 30 | projectService: true, 31 | extraFileExtensions: ['.svelte'], 32 | parser: ts.parser, 33 | svelteConfig 34 | } 35 | } 36 | } 37 | ); 38 | -------------------------------------------------------------------------------- /mdsvex.config.js: -------------------------------------------------------------------------------- 1 | import { defineMDSveXConfig as defineConfig } from 'mdsvex'; 2 | import examples from 'mdsvexamples'; 3 | 4 | const config = defineConfig({ 5 | layout: { 6 | componentLayout: './src/routes/layouts/+page.svelte' 7 | // blockComponentLayout: './src/routes/blocks/layouts/Blocklayout.svelte' 8 | }, 9 | extensions: ['.svelte.md', '.md', '.svx'], 10 | 11 | smartypants: { 12 | dashes: 'oldschool' 13 | }, 14 | 15 | remarkPlugins: [[examples, { defaults: { Wrapper: '/src/routes/utils/ExampleWrapper.svelte' } }]], 16 | rehypePlugins: [] 17 | }); 18 | 19 | export default config; 20 | -------------------------------------------------------------------------------- /playwright.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from '@playwright/test'; 2 | 3 | export default defineConfig({ 4 | webServer: { 5 | command: 'npm run build && npm run preview', 6 | port: 4173 7 | }, 8 | testDir: 'e2e' 9 | }); 10 | -------------------------------------------------------------------------------- /src/app.css: -------------------------------------------------------------------------------- 1 | @import 'tailwindcss'; 2 | 3 | @custom-variant dark (&:where(.dark, .dark *)); 4 | 5 | @source './src/**/*.{html,js,svelte,ts,md}'; 6 | @source '../node_modules/flowbite-svelte/**/*.{html,js,svelte,ts}'; 7 | 8 | @plugin 'flowbite/plugin'; 9 | 10 | @theme { 11 | --z-index-100: 100; 12 | 13 | --color-primary-50: #fff5f2; 14 | --color-primary-100: #fff1ee; 15 | --color-primary-200: #ffe4de; 16 | --color-primary-300: #ffd5cc; 17 | --color-primary-400: #ffbcad; 18 | --color-primary-500: #fe795d; 19 | --color-primary-600: #ef562f; 20 | --color-primary-700: #eb4f27; 21 | --color-primary-800: #cc4522; 22 | --color-primary-900: #a5371b; 23 | 24 | --color-secondary-50: #f0f9ff; 25 | --color-secondary-100: #e0f2fe; 26 | --color-secondary-200: #bae6fd; 27 | --color-secondary-300: #7dd3fc; 28 | --color-secondary-400: #38bdf8; 29 | --color-secondary-500: #0ea5e9; 30 | --color-secondary-600: #0284c7; 31 | --color-secondary-700: #0369a1; 32 | --color-secondary-800: #075985; 33 | --color-secondary-900: #0c4a6e; 34 | } 35 | 36 | /* 37 | The default border color has changed to `currentColor` in Tailwind CSS v4, 38 | so we've added these compatibility styles to make sure everything still 39 | looks the same as it did with Tailwind CSS v3. 40 | 41 | If we ever want to remove these styles, we need to add an explicit border 42 | color utility to any element that depends on these defaults. 43 | */ 44 | @layer base { 45 | *, 46 | ::after, 47 | ::before, 48 | ::backdrop, 49 | ::file-selector-button { 50 | border-color: var(--color-gray-200, currentColor); 51 | } 52 | } 53 | 54 | @import '../static/styles/docs.css' layer(base); 55 | 56 | @layer base { 57 | html { 58 | -webkit-text-size-adjust: 100%; 59 | font-family: 60 | Inter, 61 | ui-sans-serif, 62 | system-ui, 63 | -apple-system, 64 | Segoe UI, 65 | Roboto, 66 | Helvetica Neue, 67 | Arial, 68 | Noto Sans, 69 | sans-serif, 70 | Apple Color Emoji, 71 | Segoe UI Emoji, 72 | Segoe UI Symbol, 73 | Noto Color Emoji; 74 | line-height: 1.5; 75 | -moz-tab-size: 4; 76 | tab-size: 4; 77 | } 78 | 79 | .related-components, 80 | .references { 81 | @apply flex w-full flex-wrap; 82 | } 83 | 84 | .related-components p, 85 | .references p { 86 | @apply w-full md:w-1/2 lg:w-1/3; 87 | } 88 | 89 | #mainContent > pre { 90 | @apply mx-auto my-4 w-full overflow-auto rounded-xl border border-gray-200 bg-gray-50 bg-linear-to-r p-2 text-sm text-gray-600 sm:p-6 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-400; 91 | } 92 | p { 93 | @apply dark:text-white; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://svelte.dev/docs/kit/types#app.d.ts 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface PageState {} 9 | // interface Platform {} 10 | } 11 | } 12 | 13 | export {}; 14 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | %sveltekit.head% 11 | 12 | 13 |
%sveltekit.body%
14 | 15 | 16 | -------------------------------------------------------------------------------- /src/demo.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | 3 | describe('sum test', () => { 4 | it('adds 1 + 2 to equal 3', () => { 5 | expect(1 + 2).toBe(3); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /src/lib/acount-recovery/ForgotPassword.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 | {@render children()} 16 |
17 | 18 | 26 | -------------------------------------------------------------------------------- /src/lib/acount-recovery/ForgotPasswordHeader.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 | 22 | 23 | {@render children()} 24 | 25 | 26 | 38 | -------------------------------------------------------------------------------- /src/lib/banner/Banner.svelte: -------------------------------------------------------------------------------- 1 | 16 | 17 |
18 | {@render children()} 19 |
20 | 21 | 29 | -------------------------------------------------------------------------------- /src/lib/blog/ArticleAuthor.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 |
18 | {#if author} 19 | {@render author()} 20 | {/if} 21 |
22 | {@render children()} 23 |
24 | 25 | 35 | -------------------------------------------------------------------------------- /src/lib/blog/ArticleBody.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | {#if h2} 16 |

17 | {@render h2()} 18 |

19 | {/if} 20 | {#if children} 21 | {@render children()} 22 | {/if} 23 | 24 | 33 | -------------------------------------------------------------------------------- /src/lib/blog/ArticleHead.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 | {@render children()} 15 |
16 | 17 | 25 | -------------------------------------------------------------------------------- /src/lib/blog/ArticleWrapper.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 | {@render children()} 15 |
16 | 17 | 25 | -------------------------------------------------------------------------------- /src/lib/blog/BlogBodyWrapper.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 | {@render children()} 15 |
16 | 17 | 25 | -------------------------------------------------------------------------------- /src/lib/blog/BlogHead.svelte: -------------------------------------------------------------------------------- 1 | 21 | 22 |
23 | {#if h2} 24 |

25 | {@render h2()} 26 |

27 | {/if} 28 | {#if children} 29 | {@render children()} 30 | {/if} 31 |
32 | 33 | 44 | -------------------------------------------------------------------------------- /src/lib/comment/Comment.svelte: -------------------------------------------------------------------------------- 1 | 19 | 20 |
21 |

{title}

22 |
23 | 24 | {@render children()} 25 | 26 | 36 | -------------------------------------------------------------------------------- /src/lib/contact/Contact.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | {#if h2} 17 |

18 | {@render h2()} 19 |

20 | {/if} 21 | {#if paragraph} 22 |

23 | {@render paragraph()} 24 |

25 | {/if} 26 | {@render children()} 27 | 28 | 38 | -------------------------------------------------------------------------------- /src/lib/content/Content.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 |
16 | {#if h2} 17 |

18 | {@render h2()} 19 |

20 | {/if} 21 | {@render children()} 22 |
23 | 24 | 33 | -------------------------------------------------------------------------------- /src/lib/content/ContentWithImage.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 |
19 | {#if h2} 20 |

21 | {@render h2()} 22 |

23 | {/if} 24 | {@render children()} 25 |
26 | {#if image} 27 |
28 | {@render image()} 29 |
30 | {/if} 31 | 32 | 43 | -------------------------------------------------------------------------------- /src/lib/cta/Cta.svelte: -------------------------------------------------------------------------------- 1 | 33 | 34 | {#if img} 35 | {@render img()} 36 | {/if} 37 |
38 | {#if h2} 39 |

40 | {@render h2()} 41 |

42 | {/if} 43 | {@render children()} 44 |
45 | 46 | 57 | -------------------------------------------------------------------------------- /src/lib/faq/Faq.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 | {@render children()} 14 |
15 | 16 | 23 | -------------------------------------------------------------------------------- /src/lib/faq/FaqItem.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 |

18 | 19 | {@render h3()} 20 |

21 | {@render children()} 22 |
23 | 24 | 33 | -------------------------------------------------------------------------------- /src/lib/feature/FeatureDefault.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 | {@render children()} 14 |
15 | 16 | 23 | -------------------------------------------------------------------------------- /src/lib/feature/FeatureItem.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 |
19 | {#if icon} 20 |
21 | {@render icon()} 22 |
23 | {/if} 24 | {#if h3} 25 |

26 | {@render h3()} 27 |

28 | {/if} 29 | {#if paragraph} 30 |

31 | {@render paragraph()} 32 |

33 | {/if} 34 |
35 | 36 | 47 | -------------------------------------------------------------------------------- /src/lib/header/Navigation.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 | 22 |
23 | 24 | 32 | -------------------------------------------------------------------------------- /src/lib/hero/HeroBody.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 |
20 | {#if head} 21 | 22 | {@render head()} 23 | 24 | {/if} 25 | {@render children()} 26 |
27 | 28 | 37 | -------------------------------------------------------------------------------- /src/lib/hero/HeroHeader.svelte: -------------------------------------------------------------------------------- 1 | 21 | 22 |
23 | {#if h1} 24 |

25 | {@render h1()} 26 |

27 | {/if} 28 | {#if h2} 29 |

30 | {@render h2()} 31 |

32 | {/if} 33 | {#if paragraph} 34 |

35 | {@render paragraph()} 36 |

37 | {/if} 38 | {#if children} 39 | {@render children()} 40 | {/if} 41 |
42 | 43 | 56 | -------------------------------------------------------------------------------- /src/lib/hero/News.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 | 22 | {@render children()} 23 | 24 | 25 | 26 | 35 | -------------------------------------------------------------------------------- /src/lib/maintenance/Maintenance.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | {#if h1} 22 |

23 | {@render h1()} 24 |

25 | {/if} 26 | {#if paragraph} 27 |

28 | {@render paragraph()} 29 |

30 | {/if} 31 | 32 | 42 | -------------------------------------------------------------------------------- /src/lib/maintenance/ToolsIcon.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /src/lib/newsletter/Newsletter.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 |
16 | {#if h2} 17 |

18 | {@render h2()} 19 |

20 | {/if} 21 | {@render children()} 22 |
23 | 24 | 33 | -------------------------------------------------------------------------------- /src/lib/page404/Page404.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 |
16 | {#if h1} 17 |

18 | {@render h1()} 19 |

20 | {/if} 21 | {#if paragraph} 22 | {@render paragraph()} 23 | {/if} 24 |
25 | 26 | 35 | -------------------------------------------------------------------------------- /src/lib/page500/Page500.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 |
16 | {#if h1} 17 |

18 | {@render h1()} 19 |

20 | {/if} 21 | {#if paragraph} 22 | {@render paragraph()} 23 | {/if} 24 |
25 | 26 | 35 | -------------------------------------------------------------------------------- /src/lib/popup/Popup.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 |
18 |
19 | {@render children()} 20 |
21 |
22 |
23 | 24 | 33 | -------------------------------------------------------------------------------- /src/lib/portfolio/Portfolio.svelte: -------------------------------------------------------------------------------- 1 | 22 | 23 |
24 |

25 | {title} 26 |

27 | {#if subtitle} 28 |

29 | {subtitle} 30 |

31 | {/if} 32 |
33 | 34 |
35 | {@render children()} 36 |
37 | 38 | 50 | -------------------------------------------------------------------------------- /src/lib/pricing/PricingBodyHead.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 | {#if h3} 19 |

20 | {@render h3()} 21 |

22 | {/if} 23 | {#if paragraph} 24 |

25 | {@render paragraph()} 26 |

27 | {/if} 28 | {#if price} 29 |
30 | {@render price()} 31 |
32 | {/if} 33 | 34 | 45 | -------------------------------------------------------------------------------- /src/lib/pricing/PricingCard.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 |
16 | {@render children()} 17 |
18 | 19 | 26 | -------------------------------------------------------------------------------- /src/lib/pricing/PricingHead.svelte: -------------------------------------------------------------------------------- 1 | 16 | 17 |
18 | {#if h2} 19 |

20 | {@render h2()} 21 |

22 | {/if} 23 | {#if paragraph} 24 |

25 | {@render paragraph()} 26 |

27 | {/if} 28 |
29 | 30 | 40 | -------------------------------------------------------------------------------- /src/lib/pricing/PricingItem.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 |
  • 16 | 17 | {@render children()} 18 |
  • 19 | 20 | 28 | -------------------------------------------------------------------------------- /src/lib/pricing/PricingItemWrapper.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 16 | {#if btn} 17 | {@render btn()} 18 | {/if} 19 | 20 | 28 | -------------------------------------------------------------------------------- /src/lib/register/Register.svelte: -------------------------------------------------------------------------------- 1 | 16 | 17 | {#if top} 18 | 19 | {@render top()} 20 | 21 | {/if} 22 |
    23 | {@render children()} 24 |
    25 | 26 | 36 | -------------------------------------------------------------------------------- /src/lib/schedule/Schedule.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 |
    22 |

    23 | {scheduleName} 24 |

    25 | {#if subtitle} 26 | {@render subtitle()} 27 | {/if} 28 |
    29 | 30 |
    31 |
    32 | {@render children()} 33 |
    34 |
    35 | 36 | 48 | -------------------------------------------------------------------------------- /src/lib/schedule/ScheduleItem.svelte: -------------------------------------------------------------------------------- 1 | 21 | 22 |
    23 | {#if item.time} 24 |

    25 | {item.time} 26 |

    27 | {/if} 28 |

    29 | {#if item.href} 30 | {item.title} 31 | {:else} 32 | {item.title} 33 | {/if} 34 |

    35 |
    36 | 37 | 47 | -------------------------------------------------------------------------------- /src/lib/sidebar/SidebarBottomNav.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
    13 | {@render children()} 14 |
    15 | 16 | 23 | -------------------------------------------------------------------------------- /src/lib/sidebar/SidebarBottomNavItem.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | {@render children()} 21 | 22 | {#if tooltip} 23 | {tooltip} 24 | {/if} 25 | 26 | 35 | -------------------------------------------------------------------------------- /src/lib/social/Social.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
    15 |
    16 | {@render children()} 17 |
    18 |
    19 | 20 | 28 | -------------------------------------------------------------------------------- /src/lib/tableheader/TableHeader.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 |
    22 | {#if headerType === 'search'} 23 |
    24 | {#if search} 25 | {@render search()} 26 | {/if} 27 |
    28 | {@render children()} 29 |
    30 |
    31 | {:else} 32 |
    33 | {@render children()} 34 |
    35 | {/if} 36 |
    37 | 38 | 48 | -------------------------------------------------------------------------------- /src/lib/team/TeamBody.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
    13 | {@render children()} 14 |
    15 | 16 | 23 | -------------------------------------------------------------------------------- /src/lib/team/TeamHeader.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 |
    16 |

    17 | {@render label()} 18 |

    19 | {@render children()} 20 |
    21 | 22 | 31 | -------------------------------------------------------------------------------- /src/lib/team/TeamItem.svelte: -------------------------------------------------------------------------------- 1 | 23 | 24 |
    25 | {#if href && src} 26 | 27 | 28 | 29 | {/if} 30 |
    31 | {#if href && name} 32 |

    33 | {name} 34 |

    35 | {/if} 36 | {#if jobTitle} 37 | {jobTitle} 38 | {/if} 39 | {@render children()} 40 |
      41 | {@render social()} 42 |
    43 |
    44 |
    45 | 46 | 62 | -------------------------------------------------------------------------------- /src/lib/team/TeamWrapper.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
    14 | {@render children()} 15 |
    16 | 17 | 24 | -------------------------------------------------------------------------------- /src/lib/testimonial/Testimonial.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 |
    19 | {#if Icon} 20 | 21 | {/if} 22 | {@render children()} 23 | {#if footer} 24 |
    25 | {@render footer()} 26 |
    27 | {/if} 28 |
    29 | 30 | 40 | -------------------------------------------------------------------------------- /src/lib/testimonial/TestimonialCard.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | {#if header} 16 |
    17 | {@render header()} 18 |
    19 | {/if} 20 | {#if children} 21 |
    22 | {@render children()} 23 |
    24 | {/if} 25 | 26 | 35 | -------------------------------------------------------------------------------- /src/lib/testimonial/TestimonialCardItem.svelte: -------------------------------------------------------------------------------- 1 | 19 | 20 |
    21 |
    22 | {#if h3} 23 |

    24 | {@render h3()} 25 |

    26 | {/if} 27 | {#if children} 28 | {@render children()} 29 | {/if} 30 |
    31 | {#if caption} 32 |
    33 | {@render caption()} 34 |
    35 | {/if} 36 |
    37 | 38 | 50 | -------------------------------------------------------------------------------- /src/lib/types.ts: -------------------------------------------------------------------------------- 1 | export type Comment = { 2 | id: string; 3 | commenter: { 4 | name: string; 5 | profilePicture?: string; 6 | }; 7 | date?: string; 8 | isoDate?: string; 9 | content: string; 10 | replies?: Comment[]; 11 | }; 12 | 13 | export interface LinkType { 14 | name: string; 15 | href?: string; 16 | rel?: string; 17 | active?: boolean; 18 | } 19 | -------------------------------------------------------------------------------- /src/lib/utils/Facebook.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 16 | 17 | 18 | 24 | -------------------------------------------------------------------------------- /src/lib/utils/GitHub.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 16 | 17 | 18 | 24 | -------------------------------------------------------------------------------- /src/lib/utils/Instagram.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | Instagram 15 | 16 | 24 | -------------------------------------------------------------------------------- /src/lib/utils/Quotes.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 16 | 17 | 18 | 24 | -------------------------------------------------------------------------------- /src/lib/utils/Twitter.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 14 | 15 | 16 | 22 | -------------------------------------------------------------------------------- /src/routes/+layout.server.ts: -------------------------------------------------------------------------------- 1 | import { ANALYTICS_ID_FLOWBITE } from '$env/static/private'; 2 | import type { LayoutServerLoad } from './$types'; 3 | 4 | export const load: LayoutServerLoad = async ({ fetch }) => { 5 | try { 6 | const response = await fetch('/api'); 7 | 8 | return { 9 | posts: await response.json(), 10 | ANALYTICS_ID_FLOWBITE 11 | }; 12 | } catch (error) { 13 | console.error(`Error in load function for /: ${error}`); 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /src/routes/+page.server.ts: -------------------------------------------------------------------------------- 1 | const json = (r: Response) => r.json(); 2 | import type { PageServerLoad } from './$types'; 3 | 4 | export const load: PageServerLoad = async ({ fetch }) => { 5 | try { 6 | const githubAPI = 'https://api.github.com/repos/themesberg/flowbite-svelte-blocks'; 7 | const posts = await fetch('/api').then(json); 8 | const github = await fetch(githubAPI).then(json); 9 | // const contributors = await fetch(githubAPI + '/contributors?per_page=21').then(json); 10 | const today = new Date().toISOString().slice(0, 10); 11 | const npm = await fetch(`https://api.npmjs.org/downloads/point/2020-01-01:${today}/flowbite-svelte-blocks`).then(json); 12 | const discord = await fetch('https://discord.com/api/v9/invites/4eeurUVvTy?with_counts=true&with_expiration=true').then(json); 13 | 14 | return { posts, github, npm, discord }; 15 | } catch (error) { 16 | console.error(`Error in load function for /: ${error}`); 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 | 39 | 40 |
    41 |
    42 |

    Flowbite Blocks in Svelte

    43 |

    44 | Get started with free UI components built with the utility classes from Tailwind CSS to upgrade your web development stack and customize the colors, fonts, and dark mode using the configurator. 45 |

    46 |
    47 |
    48 | 49 | 50 | -------------------------------------------------------------------------------- /src/routes/api/+server.js: -------------------------------------------------------------------------------- 1 | import { fetchMarkdownPosts } from '../utils/fetchPost'; 2 | import { json } from '@sveltejs/kit'; 3 | 4 | export const GET = async () => { 5 | const allPosts = await fetchMarkdownPosts(); 6 | return json(allPosts); 7 | }; 8 | -------------------------------------------------------------------------------- /src/routes/application/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Application UI - Flowbite Svelte Blocks 4 | breadcrumb_title: '' 5 | no_of_components: 0 6 | dir: application 7 | description: Get started with a collection of free Tailwind CSS UI components for admin dashboard layouts, sidebars, charts, widgets, kanban boards, and more. 8 | category: true 9 | --- 10 | 11 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/routes/application/[slug]/+page.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/routes/application/[slug]/+page.ts: -------------------------------------------------------------------------------- 1 | import type { PageLoad } from './$types'; 2 | 3 | export const load: PageLoad = async ({ params }) => { 4 | const post = await import(`../${params.slug}.md`); 5 | const { title, dir } = post.metadata; 6 | const content = post.default; 7 | 8 | return { 9 | content, 10 | title, 11 | dir 12 | }; 13 | }; 14 | -------------------------------------------------------------------------------- /src/routes/application/crud-delete-confirm.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Svelte Delete Confirm (CRUD) - Flowbite Svelte Blocks 4 | breadcrumb_title: CRUD Delete Confirm 5 | no_of_components: 1 free component 6 | dir: application 7 | description: Get started with a collection of delete confirmation modal components based on the CRUD layout to make sure the user is ready to remove a selected item. 8 | --- 9 | 10 | 14 | 15 | ## Default delete confirmation modal 16 | 17 | Use this free example of a modal component coded with Tailwind CSS to confirm with the user before deleting an item from the database. 18 | 19 | ```svelte example hideResponsiveButtons 20 | 31 | 32 |
    33 |
    34 | 35 |
    36 | 37 | 44 |

    Are you sure you want to delete this item?

    45 |
    46 | 47 | 48 |
    49 |
    50 |
    51 | ``` 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/routes/application/crud-success-message.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Svelte Success Message (CRUD) - Flowbite Svelte Blocks 4 | breadcrumb_title: CRUD Success Message 5 | no_of_components: 1 free component 6 | dir: application 7 | description: Use a collection of success message components based on Tailwind CSS to share feedback with your users based on their actions inside your application. 8 | --- 9 | 10 | ## Default success message 11 | 12 | Use this free example of a success message component inside a modal to share feedback with your user when an action has been completed. 13 | 14 | ```svelte example hideOutput 15 | COMING SOON 16 | ``` 17 | -------------------------------------------------------------------------------- /src/routes/application/crud-update-forms.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Svelte Update Forms (CRUD) - Flowbite Svelte Blocks 4 | breadcrumb_title: CRUD Update Forms 5 | no_of_components: 1 free component 6 | dir: application 7 | description: Get started with a collection of CRUD layouts based on the "update" action featuring form elements like input text fields, date pickers, file upload, and more. 8 | --- 9 | 10 | ## Default form 11 | 12 | Use this free example of a CRUD form layout to update existing data sets featuring text fields inputs, select boxes, and more. 13 | 14 | ```svelte example hideOutput 15 | COMING SOON 16 | ``` 17 | -------------------------------------------------------------------------------- /src/routes/application/filter.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Svelte Dropdown Filters - Flowbite Svelte Blocks 4 | breadcrumb_title: Dropdown Filters 5 | no_of_components: 1 free component 6 | dir: application 7 | description: Get started with a collection of dropdown filter components to allow users to query through search results by filtering categories, date ranges, keywords, and more. 8 | --- 9 | 10 | ## Default dropdown filter 11 | 12 | Use this free example of a filter component to allow your users to select which categories to filter in the search results using checkbox components. 13 | 14 | ```svelte example class="flex justify-center items-start h-[32rem]" 15 | 19 | 20 | 21 | 22 | 23 | Apple (56) 24 | 25 | 26 | Fitbit (56) 27 | 28 | 29 | Dell (56) 30 | 31 | 32 | Asus (97) 33 | 34 | 35 | Logitech (97) 36 | 37 | 38 | MSI (97) 39 | 40 | 41 | Bosch (176) 42 | 43 | 44 | Sony (234) 45 | 46 | 47 | Samsung (76) 48 | 49 | 50 | Canon (49) 51 | 52 | 53 | Microsoft (45) 54 | 55 | 56 | Razor (49) 57 | 58 | 59 | ``` 60 | -------------------------------------------------------------------------------- /src/routes/application/navbar.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Svelte Dashboard Navbars - Flowbite Svelte Blocks 4 | breadcrumb_title: Dashboard Navbars 5 | no_of_components: 0 component 6 | dir: application 7 | description: Get started with a free collection of responsive navigation bars built for application and dashboard user interfaces built with Tailwind CSS. 8 | --- 9 | 10 | ## Default navbar 11 | 12 | Use this navigation bar inside a dashboard interface to show a side nav toggle, logo, search bar, button CTA, notifications, app center, and user avatar dropdown. 13 | 14 | ```svelte example hideOutput 15 | COMING SOON 16 | ``` 17 | -------------------------------------------------------------------------------- /src/routes/application/table-footers.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Svelte Table Footers - Flowbite Svelte Blocks 4 | breadcrumb_title: Table Footers 5 | no_of_components: 0 component 6 | dir: application 7 | description: Get started with a collection of footer components that you can append to the end of a table element to indicate pagination, table actions, information and more. 8 | --- 9 | 10 | ## Default table footer with pagination 11 | 12 | Use this free example to add a footer section to a table component to show a pagination component and indicate the number of data items being showed on one page. 13 | 14 | ```svelte example hideOutput 15 | COMING SOON 16 | ``` 17 | -------------------------------------------------------------------------------- /src/routes/component-data/ArticleAuthor.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ArticleAuthor", 3 | "slots": ["author"], 4 | "events": [], 5 | "props": [ 6 | ["authorDiv", "string", "'flex justify-between items-center'"], 7 | ["authorImgDiv", "string", "'flex items-center space-x-4'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/ArticleBody.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ArticleBody", 3 | "slots": ["h2", "paragraph"], 4 | "events": [], 5 | "props": [["h2Class", "string", "'mb-2 text-2xl font-bold tracking-tight text-gray-900 dark:text-white'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/ArticleHead.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ArticleHead", 3 | "slots": [], 4 | "events": [], 5 | "props": [["divClass", "string", "'flex justify-between items-center mb-5 text-gray-500'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/ArticleWrapper.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ArticleWrapper", 3 | "slots": [], 4 | "events": [], 5 | "props": [["articleClass", "string", "'p-6 bg-white rounded-lg border border-gray-200 shadow-md dark:bg-gray-800 dark:border-gray-700'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/Banner.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Banner", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["id", "string", "'banner'"], 7 | ["divClass", "string", "'flex z-50 gap-8 justify-between items-start py-3 px-4 w-full bg-gray-50 border border-b border-gray-200 sm:items-center dark:border-gray-700 lg:py-4 dark:bg-gray-800'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/BlogBodyWrapper.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BlogBodyWrapper", 3 | "slots": [], 4 | "events": [], 5 | "props": [["divClass", "string", "'grid gap-8 lg:grid-cols-2'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/BlogHead.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BlogHead", 3 | "slots": ["h2", "paragraph"], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'mx-auto max-w-screen-sm text-center lg:mb-16 mb-8'"], 7 | ["h2Class", "string", "'mb-4 text-3xl lg:text-4xl tracking-tight font-extrabold text-gray-900 dark:text-white'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/BlogTemplate.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BlogTemplate", 3 | "slots": [], 4 | "events": [], 5 | "props": [["blog", "Blog", "@prop export let blog: Blog"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/Comment.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Comment", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["title", "string", "''"], 7 | ["titleDiv", "string", "'flex justify-between items-center mb-6'"], 8 | ["h2Class", "string", "'text-lg lg:text-2xl font-bold text-gray-900 dark:text-white'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/CommentItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CommentItem", 3 | "slots": ["dropdownMenu", "reply"], 4 | "events": [], 5 | "props": [ 6 | ["replyButton", "boolean", "true"], 7 | ["comment", "Comment", "@prop export let replyButton: boolean = true"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/Contact.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Contact", 3 | "slots": ["h2", "paragraph"], 4 | "events": [], 5 | "props": [ 6 | ["h2Class", "string", "'mb-4 text-4xl tracking-tight font-extrabold text-center text-gray-900 dark:text-white'"], 7 | ["pClass", "string", "'mb-8 lg:mb-16 font-light text-center text-gray-500 dark:text-gray-400 sm:text-xl'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/Content.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Content", 3 | "slots": ["h2"], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'max-w-screen-lg text-gray-500 sm:text-lg dark:text-gray-400'"], 7 | ["h2Class", "string", "'mb-4 text-4xl tracking-tight font-bold text-gray-900 dark:text-white'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/ContentWithImage.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ContentWithImage", 3 | "slots": ["h2", "image"], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'font-light text-gray-500 sm:text-lg dark:text-gray-400'"], 7 | ["h2Class", "string", "'mb-4 text-4xl tracking-tight font-extrabold text-gray-900 dark:text-white'"], 8 | ["imgDivClass", "string", "'grid grid-cols-2 gap-4 mt-8'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/Cta.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Cta", 3 | "slots": ["img", "h2"], 4 | "events": [], 5 | "props": [["ctatype", "'default' | 'image' | 'heading' | 'none'", "'default'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/Facebook.json: -------------------------------------------------------------------------------- 1 | { "name": "Facebook", "slots": [], "events": [], "props": [["href", "string", "''"]] } 2 | -------------------------------------------------------------------------------- /src/routes/component-data/Faq.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Faq", 3 | "slots": [], 4 | "events": [], 5 | "props": [["divClass", "string", "'grid pt-8 text-left border-t border-gray-200 md:gap-16 dark:border-gray-700 md:grid-cols-2'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/FaqItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FaqItem", 3 | "slots": ["h3"], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'mb-10'"], 7 | ["h3Class", "string", "'flex items-center mb-4 text-lg font-medium text-gray-900 dark:text-white'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/FeatureDefault.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FeatureDefault", 3 | "slots": [], 4 | "events": [], 5 | "props": [["divClass", "string", "'space-y-8 md:grid md:grid-cols-2 lg:grid-cols-3 md:gap-12 md:space-y-0'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/FeatureItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FeatureItem", 3 | "slots": ["icon", "h3", "paragraph"], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'flex justify-center items-center mb-4 w-10 h-10 rounded-full bg-primary-100 lg:h-12 lg:w-12 dark:bg-primary-900'"], 7 | ["h3Class", "string", "'mb-2 text-xl font-bold dark:text-white'"], 8 | ["pClass", "string", "'text-gray-500 dark:text-gray-400'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/ForgotPassword.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ForgotPassword", 3 | "slots": [], 4 | "events": [], 5 | "props": [["divClass", "string", "'w-full p-6 bg-white rounded-lg shadow dark:border md:mt-0 sm:max-w-md dark:bg-gray-800 dark:border-gray-700 sm:p-8'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/ForgotPasswordHeader.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ForgotPasswordHeader", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["aClass", "string", "'flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white'"], 7 | ["imgClass", "string", "'w-8 h-8 mr-2'"], 8 | ["src", "string", "''"], 9 | ["href", "string", "''"], 10 | ["alt", "string", "''"] 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/routes/component-data/Github.json: -------------------------------------------------------------------------------- 1 | { "name": "Github", "slots": [], "events": [], "props": [["href", "string", "''"]] } 2 | -------------------------------------------------------------------------------- /src/routes/component-data/HeroBody.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HeroBody", 3 | "slots": ["head"], 4 | "events": [], 5 | "props": [["hero", "'default' | 'visual'", "'default'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/HeroHeader.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HeroHeader", 3 | "slots": ["h1", "h2", "paragraph"], 4 | "events": [], 5 | "props": [ 6 | ["h1Class", "string", "'mb-4 text-4xl font-extrabold tracking-tight leading-none text-gray-900 md:text-5xl lg:text-6xl dark:text-white'"], 7 | ["h2Class", "string", "'mb-8 lg:mb-16 text-3xl font-extrabold tracking-tight leading-tight text-center text-gray-900 dark:text-white md:text-4xl'"], 8 | ["pClass", "string", "'mb-8 text-lg font-normal text-gray-500 lg:text-xl sm:px-16 xl:px-48 dark:text-gray-400'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/Maintenance.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Maintenance", 3 | "slots": ["h1", "paragraph"], 4 | "events": [], 5 | "props": [ 6 | ["Icon", "typeof SvelteComponent", "ToolsIcon"], 7 | ["h1Class", "string", "'mb-4 text-4xl font-bold tracking-tight leading-none text-gray-900 lg:mb-6 md:text-5xl xl:text-6xl dark:text-white'"], 8 | ["pClass", "string", "'font-light text-gray-500 md:text-lg xl:text-xl dark:text-gray-400'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/Navigation.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Navigation", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["navClass", "string", "'bg-white border-gray-200 px-4 lg:px-6 py-2.5 dark:bg-gray-800'"], 7 | ["divClass", "string", "'flex flex-wrap justify-between items-center mx-auto max-w-screen-xl'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/News.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "News", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["href", "string", "'/'"], 7 | ["classA", "string", "''"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/Newsletter.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Newsletter", 3 | "slots": ["h2"], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'mx-auto max-w-screen-md sm:text-center'"], 7 | ["h2Class", "string", "'mb-4 text-3xl tracking-tight font-extrabold text-gray-900 sm:text-4xl dark:text-white'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/Page404.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Page404", 3 | "slots": ["h1", "paragraph"], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'mx-auto max-w-screen-sm text-center'"], 7 | ["h1Class", "string", "'mb-4 text-7xl tracking-tight font-extrabold lg:text-9xl text-primary-600 dark:text-primary-500'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/Page500.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Page500", 3 | "slots": ["h1", "paragraph"], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'mx-auto max-w-screen-sm text-center'"], 7 | ["h1Class", "string", "'mb-4 text-7xl tracking-tight font-extrabold lg:text-9xl text-primary-600 dark:text-primary-500'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/Popup.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Popup", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["outerDivClass", "string", "'overflow-y-auto overflow-x-hidden z-50 md:inset-0 md:h-full'"], 7 | ["innerDivClass", "string", "'relative p-4 w-full max-w-lg h-full md:h-auto'"], 8 | ["contentDivClass", "string", "'relative p-4 bg-white rounded-lg shadow dark:bg-gray-800 md:p-8'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/Portfolio.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Portfolio", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["title", "string", "''"], 7 | ["subtitle", "string", "''"], 8 | ["headerDivClass", "string", "'max-w-2xl mx-auto text-center'"], 9 | ["h2Class", "string", "'text-3xl font-extrabold leading-tight tracking-tight text-gray-900 sm:text-4xl dark:text-white'"], 10 | ["subtitleClass", "string", "'mt-4 text-base font-normal text-gray-500 sm:text-xl dark:text-gray-400'"], 11 | ["bodyDivClasss", "string", "'grid grid-cols-1 mt-12 text-center sm:mt-16 gap-x-20 gap-y-12 sm:grid-cols-2 lg:grid-cols-3'"] 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /src/routes/component-data/PortfolioItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PortfolioItem", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'space-y-4'"], 7 | ["customerClass", "string", "'bg-gray-100 text-gray-900 text-xs font-medium inline-flex items-center px-2.5 py-0.5 rounded dark:bg-gray-700 dark:text-gray-300'"], 8 | ["titleClass", "string", "'text-2xl font-bold leading-tight text-gray-900 dark:text-white'"], 9 | ["descriptionClass", "string", "'text-lg font-normal text-gray-500 dark:text-gray-400'"], 10 | [ 11 | "linkClass", 12 | "string", 13 | "'text-white bg-primary-700 justify-center hover:bg-primary-800 inline-flex items-center focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800'" 14 | ], 15 | ["item", "string", "{"] 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /src/routes/component-data/PricingBodyHead.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PricingBodyHead", 3 | "slots": ["h3", "paragraph", "price"], 4 | "events": [], 5 | "props": [ 6 | ["h3Class", "string", "'mb-4 text-2xl font-semibold'"], 7 | ["pClass", "string", "'font-light text-gray-500 sm:text-lg dark:text-gray-400'"], 8 | ["priceClass", "string", "'flex justify-center items-baseline my-8'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/PricingCard.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PricingCard", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | [ 7 | "divClass", 8 | "string", 9 | "'flex flex-col p-6 mx-auto max-w-lg text-center text-gray-900 bg-white rounded-lg border border-gray-100 shadow dark:border-gray-600 xl:p-8 dark:bg-gray-800 dark:text-white'" 10 | ] 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/routes/component-data/PricingHead.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PricingHead", 3 | "slots": ["h2", "paragraph"], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'mx-auto max-w-screen-md text-center mb-8 lg:mb-12'"], 7 | ["h2Class", "string", "'mb-4 text-4xl tracking-tight font-extrabold text-gray-900 dark:text-white'"], 8 | ["pClass", "string", "'mb-5 font-light text-gray-500 sm:text-xl dark:text-gray-400'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/PricingItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PricingItem", 3 | "slots": [], 4 | "events": [], 5 | "props": [["liClass", "string", "'flex items-center space-x-3'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/PricingItemWrapper.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PricingItemWrapper", 3 | "slots": ["btn"], 4 | "events": [], 5 | "props": [["ulClass", "string", "'mb-8 space-y-4 text-left'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/Quotes.json: -------------------------------------------------------------------------------- 1 | { "name": "Quotes", "slots": [], "events": [], "props": [] } 2 | -------------------------------------------------------------------------------- /src/routes/component-data/Register.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Register", 3 | "slots": ["top"], 4 | "events": [], 5 | "props": [ 6 | ["href", "string", "''"], 7 | ["aClass", "string", "'flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white'"], 8 | ["divClass", "string", "'w-full bg-white rounded-lg shadow dark:border md:mt-0 sm:max-w-md xl:p-0 dark:bg-gray-800 dark:border-gray-700'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/Schedule.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Schedule", 3 | "slots": ["subtitle"], 4 | "events": [], 5 | "props": [["scheduleName", "string", "''"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/ScheduleItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ScheduleItem", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'flex flex-col gap-2 py-4 sm:gap-6 sm:flex-row sm:items-center'"], 7 | ["pClass", "string", "'w-32 text-lg font-normal text-gray-500 sm:text-right dark:text-gray-400 shrink-0'"], 8 | ["h3Class", "string", "'text-lg font-semibold text-gray-900 dark:text-white'"], 9 | ["aClass", "string", "'hover:underline'"], 10 | ["item", "string", "{"] 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/routes/component-data/Section.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Section", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["sectionClass", "string", "'relative py-6 sm:py-10'"], 7 | [ 8 | "name", 9 | "'blog' | 'comment' |'cta' | 'ctawithimg' | 'contact' | 'content' | 'contentwithimg' | 'crudcreatedrawer' | 'crudcreateform' | 'crudreadsection' | 'default' | 'faq' | 'feature' | 'forgotpassword' | 'headingwithctabutton' | 'heroDefault' | 'heroVisual' | 'login' | 'logos' | 'maintenance' | 'newsletter' | 'none' | 'page500' | 'page404' | 'portfolio' | 'pricing' | 'register' | 'reset' | 'schedule' | 'social' | 'tableheader' | 'team' | 'testimonial'", 10 | "'default'" 11 | ] 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /src/routes/component-data/SidebarBottomNav.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SidebarBottomNav", 3 | "slots": [], 4 | "events": [], 5 | "props": [["divClass", "string", "'hidden absolute bottom-0 left-0 justify-center p-4 space-x-4 w-full lg:flex bg-white dark:bg-gray-800 z-20'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/SidebarBottomNavItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SidebarBottomNavItem", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["href", "string", "''"], 7 | ["tooltip", "string", "''"], 8 | ["aClass", "string", "'inline-flex justify-center p-2 text-gray-500 rounded cursor-pointer dark:text-gray-400 hover:text-gray-900 dark:hover:text-white hover:bg-gray-100 dark:hover:bg-gray-600'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/Social.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Social", 3 | "slots": [], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'max-w-screen-xl px-4 py-8 mx-auto text-center lg:py-16 lg:px-6'"], 7 | ["dlClass", "string", "'grid max-w-screen-md gap-8 mx-auto text-gray-900 sm:grid-cols-3 dark:text-white'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/TableHeader.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TableHeader", 3 | "slots": ["search"], 4 | "events": [], 5 | "props": [ 6 | ["divOuterClass", "string", "'relative bg-white shadow-md dark:bg-gray-800 sm:rounded-lg'"], 7 | ["headerType", "'search' | 'textbtn' | 'custom'", "'search'"], 8 | ["divSlotClass", "string", "'flex flex-col items-stretch justify-end flex-shrink-0 w-full space-y-2 md:w-auto md:flex-row md:space-y-0 md:items-center md:space-x-3'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/TeamBody.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TeamBody", 3 | "slots": [], 4 | "events": [], 5 | "props": [["divClass", "string", "'grid gap-8 mb-6 lg:mb-16 md:grid-cols-2'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/TeamHeader.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TeamHeader", 3 | "slots": ["label"], 4 | "events": [], 5 | "props": [["divClass", "string", "'mx-auto max-w-screen-sm text-center mb-8 lg:mb-16'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/TeamItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TeamItem", 3 | "slots": ["social"], 4 | "events": [], 5 | "props": [ 6 | ["divClass", "string", "'items-center bg-gray-50 rounded-lg shadow sm:flex dark:bg-gray-800 dark:border-gray-700'"], 7 | ["imgClass", "string", "'w-full rounded-lg sm:rounded-none sm:rounded-l-lg'"], 8 | ["h3Class", "string", "'text-xl font-bold tracking-tight text-gray-900 dark:text-white'"], 9 | ["spanClass", "string", "'text-gray-500 dark:text-gray-400'"], 10 | ["href", "string", "''"], 11 | ["src", "string", "''"], 12 | ["alt", "string", "''"], 13 | ["name", "string", "''"], 14 | ["jobTitle", "string", "''"] 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /src/routes/component-data/TeamWrapper.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TeamWrapper", 3 | "slots": [], 4 | "events": [], 5 | "props": [["divClass", "string", "'py-8 px-4 mx-auto max-w-screen-xl lg:py-16 lg:px-6'"]] 6 | } 7 | -------------------------------------------------------------------------------- /src/routes/component-data/Testimonial.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Testimonial", 3 | "slots": ["footer"], 4 | "events": [], 5 | "props": [ 6 | ["icon", "typeof SvelteComponent | null", "null"], 7 | ["figureClass", "string", "'max-w-screen-md mx-auto'"], 8 | ["figureFooterClass", "string", "'flex items-center justify-center mt-6 space-x-3'"] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /src/routes/component-data/TestimonialCard.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TestimonialCard", 3 | "slots": ["header"], 4 | "events": [], 5 | "props": [ 6 | ["headerClass", "string", "'mx-auto max-w-screen-sm'"], 7 | ["divClass", "string", "'grid mb-8 lg:mb-12 lg:grid-cols-2'"] 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/routes/component-data/TestimonialCardItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TestimonialCardItem", 3 | "slots": ["h3", "caption"], 4 | "events": [], 5 | "props": [ 6 | ["figureClass", "string", "'flex flex-col justify-center items-center p-8 text-center bg-gray-50 border-b border-gray-200 md:p-12 lg:border-r dark:bg-gray-800 dark:border-gray-700'"], 7 | ["blockQuoteClass", "string", "'mx-auto mb-8 max-w-2xl text-gray-500 dark:text-gray-400'"], 8 | ["h3Class", "string", "'text-lg font-semibold text-gray-900 dark:text-white'"], 9 | ["footerBlockQuoteClass", "string", "'flex justify-center items-center space-x-3'"] 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/routes/component-data/ToolsIcon.json: -------------------------------------------------------------------------------- 1 | { "name": "ToolsIcon", "slots": [], "events": [], "props": [] } 2 | -------------------------------------------------------------------------------- /src/routes/component-data/Twitter.json: -------------------------------------------------------------------------------- 1 | { "name": "Twitter", "slots": [], "events": [], "props": [["href", "string", "''"]] } 2 | -------------------------------------------------------------------------------- /src/routes/component-data/index.json: -------------------------------------------------------------------------------- 1 | { "name": "index", "slots": [], "events": [], "props": [] } 2 | -------------------------------------------------------------------------------- /src/routes/component-data/types.json: -------------------------------------------------------------------------------- 1 | { "name": "types", "slots": [], "events": [], "props": [] } 2 | -------------------------------------------------------------------------------- /src/routes/compotests/+page.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
    7 | 8 |
    9 |

    10 | "Flowbite is just awesome. It contains tons of predesigned components and pages starting from login screen to complex dashboard. Perfect choice for your next SaaS application." 11 |

    12 |
    13 | {#snippet footer()} 14 | michael profile 15 |
    16 |
    Micheal Gough
    17 |
    CEO at Google
    18 |
    19 | {/snippet} 20 |
    21 |
    22 | -------------------------------------------------------------------------------- /src/routes/layouts/+page.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 28 | 29 | 30 | 31 |
    32 | 33 |
    34 | {@render children()} 35 | 36 |
    37 |
    38 | -------------------------------------------------------------------------------- /src/routes/layouts/Anchor.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 29 | 30 | 31 | 32 | 33 | # 34 | 35 | -------------------------------------------------------------------------------- /src/routes/layouts/code.svelte: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/routes/layouts/h2.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/layouts/h3.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/marketing/+page.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Marketing UI - Flowbite Svelte Blocks 4 | breadcrumb_title: '' 5 | no_of_components: 0 6 | dir: marketing 7 | description: Get started with a large collection of free UI components built with Tailwind CSS and the Flowbite library featuring hero sections, headers, contact forms, and more. 8 | category: true 9 | --- 10 | 11 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/routes/marketing/404.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Svelte 404 Pages - Flowbite Svelte Blocks 4 | breadcrumb_title: 404 Pages 5 | no_of_components: 1 free component 6 | dir: marketing 7 | description: Choose from a collection of 404 'not found' landing pages coded with Tailwind CSS to show your website visitors when a page is unavailable or doesn't exist. 8 | --- 9 | 10 | 16 | 17 | ## Default 404 page 18 | 19 | Use this free example of a 404 "not found" page coded with Tailwind CSS and Flowbite when a user visits a page that doesn't exist with a button back to the homepage. 20 | 21 | ```svelte example 22 | 26 | 27 |
    28 | 29 | {#snippet h1()} 30 | 404 31 | {/snippet} 32 | {#snippet paragraph()} 33 |

    Something's missing.

    34 |

    Sorry, we can't find that page. You'll find lots to explore on the home page.

    35 | 36 | {/snippet} 37 |
    38 |
    39 | ``` 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/routes/marketing/500.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Svelte 500 Pages - Flowbite Svelte Blocks 4 | breadcrumb_title: 500 Pages 5 | no_of_components: 1 free component 6 | dir: marketing 7 | description: Get started with a collection of 500 status code pages coded with Tailwind CSS to show when a server error is being triggered. 8 | --- 9 | 10 | 14 | 15 | ## Default 500 page 16 | 17 | Use this example of a page to show when an internal server error has happened and a 500 status code has to be shown. 18 | 19 | ```svelte example 20 | 23 | 24 |
    25 | 26 | {#snippet h1()}500{/snippet} 27 | {#snippet paragraph()} 28 |

    Internal Server Error.

    29 |

    We are already working to solve the problem.

    30 | {/snippet} 31 |
    32 |
    33 | ``` 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/routes/marketing/[slug]/+page.js: -------------------------------------------------------------------------------- 1 | /** @type {import('./$types').PageLoad} */ 2 | export async function load({ params }) { 3 | const post = await import(`../${params.slug}.md`); 4 | const { title, dir, no_of_components } = post.metadata; 5 | const content = post.default; 6 | 7 | return { 8 | content, 9 | title, 10 | dir, 11 | no_of_components 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /src/routes/marketing/[slug]/+page.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/routes/marketing/account-recovery.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Svelte Account Recovery Form - Flowbite Svelte Blocks 4 | breadcrumb_title: Account Recovery Forms 5 | no_of_components: 1 free component 6 | dir: marketing 7 | description: Get started with account recovery (aka. forgot password) pages to allow users to reset their password using an email based on multiple layouts and styles. 8 | --- 9 | 10 | 14 | 15 | ## Default forgot password page 16 | 17 | Use this example for users who forgot their password and send a recovery email to their address featuring the logo, email input, and submit button. 18 | 19 | ```svelte example 20 | 24 | 25 |
    26 | Flowbite 27 | 28 |

    Forgot your password?

    29 |

    Don't fret! Just type in your email and we will send you a code to reset your password!

    30 |
    31 |
    32 | 33 | 34 |
    35 |
    36 |
    37 | I accept the Terms and Conditions 38 |
    39 |
    40 | 41 |
    42 |
    43 |
    44 | ``` 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/routes/marketing/banner.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Svelte Banner - Flowbite Svelte Blocks 4 | breadcrumb_title: Banners 5 | no_of_components: 1 free component 6 | dir: marketing 7 | description: The banner component can be used to show extra information or enable interactions with the user without affecting the main content area of the website. 8 | --- 9 | 10 | 15 | 16 | ## Default banner 17 | 18 | Use this example of a dismissable banner component to show extra information relative to the main content area of the page based on a sticky positition. 19 | 20 | ```svelte example 21 | 27 | 28 | {#if visible} 29 | 30 |

    31 | Supercharge your hiring by taking advantage of our limited-time sale for Designer Search + 32 | Job Board. Unlimited access to over 190K top-ranked candidates and the #1 design job board. 33 |

    34 | (visible = false)} class="rounded-lg p-1.5 text-sm text-gray-400 hover:bg-gray-200 hover:text-gray-900 dark:hover:bg-gray-600 dark:hover:text-white" /> 35 |
    36 | {/if} 37 | ``` 38 | 39 | 40 | -------------------------------------------------------------------------------- /src/routes/marketing/contact.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: componentLayout 3 | title: Svelte Contact Form - Flowbite Svelte Blocks 4 | breadcrumb_title: Contact Forms 5 | no_of_components: 1 free component 6 | dir: marketing 7 | description: The contact section is an important part of your website where the user can reach out to your team by interacting with the form elements and submitting the data. 8 | --- 9 | 10 | 14 | 15 | ## Default contact form 16 | 17 | Use this example of a contact form coded with Tailwind CSS including the email, subject, and message that can be delivered by clicking on the form submission button. 18 | 19 | ```svelte example 20 | 24 | 25 |
    26 | 27 | {#snippet h2()}Contact Us{/snippet} 28 | {#snippet paragraph()}Got a technical issue? Want to send feedback about a beta feature? Need details about our Business plan? Let us know.{/snippet} 29 |
    30 |
    31 | 32 | 33 |
    34 |
    35 | 36 | 37 |
    38 |
    39 | 40 |