Styling
Findkit UI uses following techniques for the CSS it provides:
- CSS class names are prefixed with
findkit-- - The HTML elements are rendered into a Shadow DOM
- The CSS is added into a CSS Layer
findkit
Shadow DOM
Shadow DOM prevents the page styles intefering with the elements created by Findkit UI. This means you cannot directly target Findkit UI elements with your CSS stylesheets. You must add the styles inside the Shadow DOM or disable the Shadow DOM creation.
Adding Styles inside the Shadow DOM
Just pass the custom CSS in the css option.
import { FindkitUI, css } from "@findkit/ui";
const ui = new FindkitUI({
publicToken: "<TOKEN>",
css: css`
/* Reveal the backdrop */
.findkit--modal {
position: fixed;
width: initial;
inset: 1rem;
}
`,
});
Disabling Shadow DOM
If you want to use your existing stylesheets you can just disable the Shadow DOM
creation in FindkitUI with shadowDom: false option:
import { FindkitUI } from "@findkit/ui";
const ui = new FindkitUI({
publicToken: "<TOKEN>",
shadowDom: false,
});
But do note that this can cause unexpected styles to leak in the FindkitUI if
you have used plain element selectors like h1 { ... } in your website styles.
CSS Layers
New in v0.13.0
The build-in styles are added to a nested findkit.core CSS Layer and any
custom styles passed to the css option are added to a findkit.user layer
which becomes after core layer. If you cannot work with CSS Layers you can
disable them with the cssLayers: false option.
If you use CSS Layers in your own code you should order the layers in a way
that your CSS layer comes after the findkit layer so it can override the
Findkit UI Styles:
@layer findkit, mystyles;
CSS Layers tl;dr
They help with CSS selector specicifity. Any CSS that is not in a CSS Layer or is in a latter layer is automatically more specific than the CSS in former layers regardless of any specicifity rules. Read more on MDN.
CSS Variables
FindkitUI uses native CSS variables for styling. The variables are also
prefixed with findkit--.
Here's an example of the most important customization you'll want to do: Set the brand color to match your site:
import { FindkitUI, css } from "@findkit/ui";
const ui = new FindkitUI({
publicToken: "<TOKEN>",
css: css`
.findkit--container {
--findkit--brand-color: olive;
}
`,
});
The findkit--container class was added in v0.7.0 otherwise you can use :root, :host {} instead.
For all available CSS Variables see
global.css
in the FindkitUI source code.