# Bits UI
Flexible, unstyled, and accessible primitives that provide the foundation for building your own high-quality Svelte component library.
{
Bits UI is a collection of headless component primitives for Svelte that prioritizes developer experience, accessibility, and flexibility.
The goal is to empower developers to build high-quality, accessible user interfaces without sacrificing creative control or performance.
}
View Bits UI Docs
At minimum, we recommend you read the following documentation before you start this integration guide.
- [Getting Started](https://www.bits-ui.com/docs/getting-started)
- [Styling](https://www.bits-ui.com/docs/styling)
## Requirements
| Tooling | Minimum Supported |
| ------------------------------------ | ----------------- |
| [Svelte](https://svelte.dev/) | 5 |
| [Skeleton](https://skeleton.dev) | 3 |
| [Tailwind](https://tailwindcss.com/) | 4 |
| [Bits UI](https://www.bits-ui.com/) | 1 |
## Introduction
In this guide we'll implement the following Bits UI `` component. This will showcase the bare minimum requirements for integrating Skeleton with Bits UI.
Calendar Documentation
## Get Started
### Create a SvelteKit Project
To begin, we'll setup a new SvelteKit project, including Skeleton v3 and Tailwind v4.
Setup SvelteKit App
### Install Bits UI
Install the Bits UI package via your package manager of choice.
```console
npm install bits-ui
```
We'll also include the [Adobe International Date](https://react-spectrum.adobe.com/internationalized/date/index.html) package to assist with date/time formatting.
```console
npm i -D @internationalized/date
```
### Component Boilerplate
Create a new component in `/lib/components/Calendar/Calendar.svelte` and insert the following markup. This will generate an unstyled version of the component.
```svelte
{#snippet children({ months, weekdays })}
←→
{#each months as month}
{#each weekdays as day}
{day}
{/each}
{#each month.weeks as weekDates}
{#each weekDates as date}
{/each}
{/each}
{/each}
{/snippet}
```
### Add the Component
Finally, let's add our new component to the root `+page.svelte` so that we may preview it.
```svelte
```
## Styling
Each Bits UI component accepts a `class` attribute. Use this to provide Tailwind and Skeleton utility classes.
### Basic Styles
Styling the `` parent component.
```svelte
```
Styling the `` sub-component. You can clone these to `` too.
```svelte
←
```
Styling the `` sub-component.
```svelte
{date.day}
```
For the sake of time we won't cover every sub-component.
### Complete Example
Below is a complete example showing the entire component with all styles and basic configuration.
```svelte
{#snippet children({ months, weekdays })}
←→
{#each months as month, i (i)}
{#each weekdays as day}
{day.slice(0, 2)}
{/each}
{#each month.weeks as weekDates}
{#each weekDates as date}
{date.day}
{/each}
{/each}
{/each}
{/snippet}
```
## Going Further
If you wish to match Skeleton component conventions, view our [contributor component guidelines](/docs/resources/contribute/components).
## Attribution
Bits UI is created and maintained by [Huntabyte](https://github.com/huntabyte). Consider [sponsoring him](https://github.com/sponsors/huntabyte) to support this open source project.