Bitrix24 UI
Vue component library built on Reka UI + Tailwind CSS + Tailwind Variants. Works with Nuxt, Vue (Vite), Laravel (Vite + Inertia), and AdonisJS (Vite + Inertia).
LLMs.txt
When you need to know what a component accepts or how its API works — props, slots, events, full documentation, examples — use the Bitrix24 UI documentation; if it is not already configured, add it. This skill teaches you when to use which component and how to build well.
Core rules (always apply)
- Always wrap the app in
B24App — required for toasts, tooltips, and programmatic overlays. Accepts a locale prop for i18n.
- Always use semantic colors —
text-description, bg-elevated, border-muted, etc. Never use raw Tailwind palette colors like text-gray-500.
- Read generated theme files for slot names — Nuxt:
.nuxt/b24ui/<component>.ts, Vue: node_modules/.b24ui-nuxt/b24ui/<component>.ts. These show every slot, variant, and default class for any component.
- Override priority (highest wins):
b24ui prop / class prop → global config → theme defaults.
- Find icons through the icons guideline — it maps a plain-language request to the right import.
How to use this skill
Based on the task, load the relevant reference files before writing any code. Don't load everything — only what's needed.
Reference files
Guidelines — design decisions and conventions:
- design-system — semantic colors, theming, brand customization, variants, the
b24ui prop
- component-selection — decision matrices: when to use Modal vs Slideover, Select vs SelectMenu, Toast vs Alert, etc.
- conventions — coding patterns, slot naming, items arrays, composables, keyboard shortcuts
- forms — form validation, field layout, error handling, Standard Schema
- icons — import icon and use it
Layouts — full page structure patterns:
- landing — landing pages
- dashboard — admin UI with sidebar and panels
Recipes — complete patterns for common tasks:
- data-tables — tables with filters, pagination, sorting, selection
- overlays — modals, slideovers, drawers, command palette, info popovers
- navigation — headers, sidebars, breadcrumbs, tabs
- card-pickers — icon-and-description card grids for picking a setting variant or toggling capabilities (
B24PageCardGroup)
- settings — settings layouts: when to use Switch vs Radio vs Checkbox vs PageCardGroup, plus the rich
card variant recipe with preview image, description and "Learn more" link
- detail-panel — entity info sidebars: metadata, togglable settings and grouped content sections beside a main view
- task-form — a single-column task/issue form combining
B24Editor, assignee fields, a date picker and a wrap row of secondary actions
Quick reference:
- components — categorized component index for finding the right component name
Routing table
| Task |
Load these references |
| Build application for Bitrix24 / a dashboard / admin UI |
conventions, component-selection, dashboard |
| Build a landing page |
design-system, conventions, landing |
| Add a settings page |
conventions, forms, settings |
| Pick one option / toggle several where each option deserves a preview image, multi-line description and an inline "Learn more" link — layout chooser, plan picker with screenshots |
conventions, settings |
| Create a login / signup form |
conventions, forms, component-selection |
| Display data in a table |
conventions, component-selection, data-tables |
| Add a chat interface |
conventions, components (§ Chat) |
| Add a modal, slideover, or drawer |
conventions, component-selection, overlays |
| Build site navigation |
conventions, component-selection, navigation |
| Render markdown |
component-selection, components (§ Prose and § Content) |
| Pick one option (or toggle several) from a small set where each option needs an icon and a sentence — settings variants, capability flags, "what do you want to build?" wizard step |
conventions, component-selection, card-pickers |
| Add a rich text editor |
conventions, components (§ Editor) |
| Build a task / issue form with a rich-text description, assignees and a due date |
conventions, forms, task-form |
| Build an entity info sidebar — channel info, CRM record detail, "about this item" |
conventions, component-selection, detail-panel |
| Find an icon for a button, item or empty state |
icons |
| General UI work |
conventions, component-selection |
Installation
Nuxt
pnpm add @bitrix24/b24ui-nuxt @bitrix24/b24icons-vue tailwindcss
// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@bitrix24/b24ui-nuxt'],
css: ['~/assets/css/main.css']
})
/* app/assets/css/main.css */
@import "tailwindcss";
@import "@bitrix24/b24ui-nuxt";
<!-- app.vue -->
<template>
<B24App>
<NuxtPage />
</B24App>
</template>
Vue (Vite)
pnpm add @bitrix24/b24ui-nuxt @bitrix24/b24icons-vue tailwindcss
// vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import bitrix24UIPluginVite from '@bitrix24/b24ui-nuxt/vite'
export default defineConfig({
plugins: [
vue(),
bitrix24UIPluginVite()
]
})
// src/main.ts
import './assets/main.css'
import { createApp } from 'vue'
import { createRouter, createWebHistory } from 'vue-router'
import b24UiPlugin from '@bitrix24/b24ui-nuxt/vue-plugin'
import App from './App.vue'
const app = createApp(App)
const router = createRouter({
routes: [],
history: createWebHistory()
})
app.use(router)
app.use(b24UiPlugin)
app.mount('#app')
/* src/assets/css/main.css */
@import "tailwindcss";
@import "@bitrix24/b24ui-nuxt";
<!-- src/App.vue -->
<template>
<B24App>
<RouterView />
</B24App>
</template>
Add class="isolate" to your root <div id="app"> in index.html.
For Inertia: use b24ui({ router: 'inertia' }) in vite.config.ts.
1---2name: b24-ui-nuxt3description: Build UIs with @bitrix24/b24ui-nuxt v2 — 130+ accessible Vue components with Tailwind CSS theming. Use when creating interfaces, building forms, or composing layouts for a Bitrix24 application.4---56# Bitrix24 UI78Vue component library built on [Reka UI](https://reka-ui.com/) + [Tailwind CSS](https://tailwindcss.com/) + [Tailwind Variants](https://www.tailwind-variants.org/). Works with Nuxt, Vue (Vite), Laravel (Vite + Inertia), and AdonisJS (Vite + Inertia).910## LLMs.txt1112When you need to know **what a component accepts** or **how its API works** — props, slots, events, full documentation, examples — use the [Bitrix24 UI documentation](https://bitrix24.github.io/b24ui/llms.txt); if it is not already configured, add it. This skill teaches you **when to use which component** and **how to build well**.1314## Core rules (always apply)15161. **Always wrap the app in `B24App`** — required for toasts, tooltips, and programmatic overlays. Accepts a `locale` prop for i18n.172. **Always use semantic colors** — `text-description`, `bg-elevated`, `border-muted`, etc. Never use raw Tailwind palette colors like `text-gray-500`.183. **Read generated theme files for slot names** — Nuxt: `.nuxt/b24ui/<component>.ts`, Vue: `node_modules/.b24ui-nuxt/b24ui/<component>.ts`. These show every slot, variant, and default class for any component.194. **Override priority** (highest wins): `b24ui` prop / `class` prop → global config → theme defaults.205. **Find icons through the [icons guideline](references/guidelines/icons.md)** — it maps a plain-language request to the right import.2122## How to use this skill2324Based on the task, load the relevant reference files **before writing any code**. Don't load everything — only what's needed.2526### Reference files2728**Guidelines** — design decisions and conventions:29- [design-system](references/guidelines/design-system.md) — semantic colors, theming, brand customization, variants, the `b24ui` prop30- [component-selection](references/guidelines/component-selection.md) — decision matrices: when to use Modal vs Slideover, Select vs SelectMenu, Toast vs Alert, etc.31- [conventions](references/guidelines/conventions.md) — coding patterns, slot naming, items arrays, composables, keyboard shortcuts32- [forms](references/guidelines/forms.md) — form validation, field layout, error handling, Standard Schema33- [icons](references/guidelines/icons.md) — import icon and use it3435**Layouts** — full page structure patterns:36- [landing](references/layouts/landing.md) — landing pages37- [dashboard](references/layouts/dashboard.md) — admin UI with sidebar and panels3839**Recipes** — complete patterns for common tasks:40- [data-tables](references/recipes/data-tables.md) — tables with filters, pagination, sorting, selection41- [overlays](references/recipes/overlays.md) — modals, slideovers, drawers, command palette, info popovers42- [navigation](references/recipes/navigation.md) — headers, sidebars, breadcrumbs, tabs43- [card-pickers](references/recipes/card-pickers.md) — icon-and-description card grids for picking a setting variant or toggling capabilities (`B24PageCardGroup`)44- [settings](references/recipes/settings.md) — settings layouts: when to use Switch vs Radio vs Checkbox vs PageCardGroup, plus the rich `card` variant recipe with preview image, description and "Learn more" link45- [detail-panel](references/recipes/detail-panel.md) — entity info sidebars: metadata, togglable settings and grouped content sections beside a main view46- [task-form](references/recipes/task-form.md) — a single-column task/issue form combining `B24Editor`, assignee fields, a date picker and a wrap row of secondary actions4748**Quick reference:**49- [components](references/components.md) — categorized component index for finding the right component name5051### Routing table5253| Task | Load these references |54|---|---|55| Build application for Bitrix24 / a dashboard / admin UI | conventions, component-selection, dashboard |56| Build a landing page | design-system, conventions, landing |57| Add a settings page | conventions, forms, settings |58| Pick one option / toggle several where each option deserves a preview image, multi-line description and an inline "Learn more" link — layout chooser, plan picker with screenshots | conventions, settings |59| Create a login / signup form | conventions, forms, component-selection |60| Display data in a table | conventions, component-selection, data-tables |61| Add a chat interface | conventions, components (§ Chat) |62| Add a modal, slideover, or drawer | conventions, component-selection, overlays |63| Build site navigation | conventions, component-selection, navigation |64| Render markdown | component-selection, components (§ Prose and § Content) |65| Pick one option (or toggle several) from a small set where each option needs an icon and a sentence — settings variants, capability flags, "what do you want to build?" wizard step | conventions, component-selection, card-pickers |66| Add a rich text editor | conventions, components (§ Editor) |67| Build a task / issue form with a rich-text description, assignees and a due date | conventions, forms, task-form |68| Build an entity info sidebar — channel info, CRM record detail, "about this item" | conventions, component-selection, detail-panel |69| Find an icon for a button, item or empty state | icons |70| General UI work | conventions, component-selection |7172## Installation7374### Nuxt7576```bash77pnpm add @bitrix24/b24ui-nuxt @bitrix24/b24icons-vue tailwindcss78```7980```ts81// nuxt.config.ts82export default defineNuxtConfig({83 modules: ['@bitrix24/b24ui-nuxt'],84 css: ['~/assets/css/main.css']85})86```8788```css89/* app/assets/css/main.css */90@import "tailwindcss";91@import "@bitrix24/b24ui-nuxt";92```9394```vue95<!-- app.vue -->96<template>97 <B24App>98 <NuxtPage />99 </B24App>100</template>101```102103### Vue (Vite)104105```bash106pnpm add @bitrix24/b24ui-nuxt @bitrix24/b24icons-vue tailwindcss107```108109```ts110// vite.config.ts111import { defineConfig } from 'vite'112import vue from '@vitejs/plugin-vue'113import bitrix24UIPluginVite from '@bitrix24/b24ui-nuxt/vite'114115export default defineConfig({116 plugins: [117 vue(),118 bitrix24UIPluginVite()119 ]120})121```122123```ts124// src/main.ts125import './assets/main.css'126import { createApp } from 'vue'127import { createRouter, createWebHistory } from 'vue-router'128import b24UiPlugin from '@bitrix24/b24ui-nuxt/vue-plugin'129import App from './App.vue'130131const app = createApp(App)132const router = createRouter({133 routes: [],134 history: createWebHistory()135})136137app.use(router)138app.use(b24UiPlugin)139app.mount('#app')140```141142```css143/* src/assets/css/main.css */144@import "tailwindcss";145@import "@bitrix24/b24ui-nuxt";146```147148```vue149<!-- src/App.vue -->150<template>151 <B24App>152 <RouterView />153 </B24App>154</template>155```156157> Add `class="isolate"` to your root `<div id="app">` in `index.html`.158> For Inertia: use `b24ui({ router: 'inertia' })` in `vite.config.ts`.