Customization - Flowbite Svelte

Learn how you can overwrite the default style with you own CSS

When working with components, you may want to customize their default or specific classes. Here’s a guide on how to achieve that. Starting from version 0.38.0, we have transitioned from using classnames to tailwind-merge, which allows us to easily overwrite classes and avoid style conflicts. This update brings enhanced flexibility and simplifies the process of customizing component styles.

Understanding Props #

Each component has a props section where you can find information on how to customize classes. For example, let’s refer to the Alert Props section.

alert prop

In this case, you can overwrite the defaultClass by adding the class prop. Here’s an example:

  • Svelte
<script>
  import { Alert } from '$lib';
</script>

<Alert class="text-xl">Add a class to overwrite the default class!</Alert>

Thanks to tailwind-merge, you can efficiently merge Tailwind CSS classes without style conflicts. One of its features is that the last conflicting class wins. Please read more details about Merging behavior

Importance of ! for Some Components #

In Tailwind CSS, you can make any utility class important by adding a ! character at the beginning of the class name. Certain components may require this approach to successfully overwrite styles. Here’s an example:

  • Svelte
<script>
  import { Button } from 'flowbite-svelte';
</script>

<Button class="!bg-blue-500">Blue Button</Button>
<Button class="!bg-green-500">Green Button</Button>

Overwriting Specific Classes #

While the class prop can be used for most components, some components with a complex structure may require multiple props. For instance, let’s consider the Banner component has two relevant props: classDiv for divClass and classInner for innerClass. To overwrite the divClass, you can use the classDiv prop:

  • Svelte
<script>
  import { Banner, Skeleton, ImagePlaceholder } from 'flowbite-svelte';
</script>

<Skeleton class="py-4" />
<ImagePlaceholder class="py-4" />

<Banner id="default-banner" position="absolute" classDiv="dark:bg-green-500 dark:border-green-400">
  <p class="flex items-center text-sm font-normal text-gray-500 dark:text-white">Overwriting divClass and innerClass</p>
</Banner>

You can test this by switching to dark mode and observing the background color change to green.

We hope these instructions help you confidently customize component classes. Feel free to reach out if you have any further questions!

Global customization #

To customize the Flowbite-Svelte component globally, follow these steps:

Start by creating your own component based on Flowbite-Svelte.

Create a new file for your button component in the lib directory:

// src/lib/MyButton.svelte
<script>
  import { Button } from 'flowbite-svelte'
</script>

<Button color="green" pill class="p-8">
  <slot />
</Button>

Once you have created your button component, you can use it in your project.

In your project, import your custom button component:

<script>
  import MyButton from "$lib/MyButton.svelte"
</script>

Use the custom button component in your project by adding the following code:

<MyButton>My New Button</MyButton>

With these steps, you can customize and use your own button component globally based on Flowbite-Svelte. Feel free to modify the styles and properties of the component according to your requirements.