Обзор
Компоненты
- Accordion
- Alert
- Alert Dialog
- Autocomplete
- Auth Surface
- Avatar
- Badge
- Browse Catalog Dialog
- Button
- Card
- Checkbox
- Checkbox Group
- Collapsible
- Combobox
- Command
- Connector Setup Dialog
- Cookie Banner
- Dialog
- Directory Card
- Directory Detail
- Directory Skeleton
- DrawerНовое
- Token Parts Input
- Empty
- Field
- Fieldset
- File Preview Modal
- File Preview Skeleton
- Form
- Frame
- Group
- Icon
- Input
- Input Group
- Kbd
- Label
- Legal Shell
- Menu
- Mermaid Diagram
- Mind Map Diagram
- Not Found Screen
- Onboarding Frame
- Popover
- PDF Thumbnail
- Personalization Landing
- Preview Card
- Pricing Page
- Progress
- Radio Group
- Ring Spinner
- Scroll Area
- Select
- Separator
- Settings Page
- Settings Skills
- Settings Connectors
- Settings Capabilities
- Settings Usage
- Settings Account
- Settings Billing
- Sheet
- Sidebar
- Skeleton
- Skill Create Dialog
- Slider
- Spinner
- Stat
- Switch
- Table
- Tabs
- Textarea
- Toast
- Toggle
- Tooltip
AI-компоненты
- Компоненты AI
- Chat Conversation
- Chat Message
- Chat Response
- Chat Suggestion
- Chat Prompt Input
- Slash Highlighted Textarea
- Chat Search Dialog
- Chat Skill Doc
- Chat Connector Detail
- Chat Attachments
- Chat File Card
- Chat Token Chip
- Chat Code Block
- Chat Image
- Chat Inline Citation
- Chat Sources
- Chat Web Search
- Chat Research
- Chat Source
- Chat Actions
- Chat Context
- Chat Loader
- Chat Compaction
- Chat Timeline
- Chat Snippet
- Chat Terminal
- Chat Stack Trace
- Chat Test Results
- Chat File Tree
- Chat Environment Variables
- Chat Audio Player
- Chat Transcription
- Chat Speech Input
- Chat Mic Selector
- Chat Voice Selector
- Chat Agent
- Chat Persona
- Chat Connection
- Chat Connector Suggestion
- Chat Queue
- Chat Checkpoint
- Chat Confirmation
- Chat Artifact
- Chat JSX Preview
- Chat Schema Display
- Chat Package Info
- Chat Commit
- Chat Plan
- Chat Open In Chat
- Chat Sandbox
- Chat Model Selector
- Chat Canvas
- Chat Node
- Chat Edge
Ресурсы
Button
Кнопка или компонент, который выглядит как кнопка.
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button>Кнопка</Button>;
}
Установка
pnpm dlx shadcn@latest add @oracul/button
Использование
import { Button } from "@/components/ui/button"<Button>Button</Button>Ссылка
Вы можете использовать свойство render, чтобы заставить другой компонент выглядеть как кнопка. Вот пример ссылки, которая выглядит как кнопка.
import Link from "next/link"
import { Button } from "@/components/ui/button"
export function LinkAsButton() {
return <Button render={<Link href="/login" />}>Login</Button>
}Справочник API
Это пользовательский компонент, использующий хук useRender из Base UI, а не прямую обёртку Base UI.
Button
Компонент кнопки с поддержкой вариантов, размеров и состояний загрузки.
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
variant | "default" | "destructive" | "destructive-outline" | "ghost" | "link" | "outline" | "secondary" | "default" | Управляет стилизацией кнопки |
size | "default" | "icon" | "icon-lg" | "icon-sm" | "icon-xl" | "icon-xs" | "lg" | "sm" | "xl" | "xs" | "default" | Управляет размером кнопки |
loading | boolean | false | Показывает спиннер и принудительно делает кнопку неактивной во время загрузки |
render | React.ReactElement | - | Рендерит как другой элемент (например, Link) |
Когда loading равно true, компонент:
- Отрисовывает спиннер (
data-slot="button-loading-indicator") - Добавляет
data-loadingна корневой элемент кнопки - Принудительно устанавливает нативный атрибут
disabled - Устанавливает
aria-disabled="true" - Сохраняет ширину кнопки, визуально скрывая содержимое вместо его размонтирования
Примеры
По умолчанию
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button>Кнопка</Button>;
}
Контурная
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button variant="outline">Контурная</Button>;
}
Вторичная
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button variant="secondary">Вторичная</Button>;
}
Деструктивная
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button variant="destructive">Удалить</Button>;
}
Деструктивная контурная
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button variant="destructive-outline">Удалить</Button>;
}
Призрачная
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button variant="ghost">Кнопка</Button>;
}
Ссылка
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button variant="link">Ссылка</Button>;
}
Очень маленький размер
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button size="xs">Кнопка</Button>;
}
Маленький размер
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button size="sm">Кнопка</Button>;
}
Большой размер
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button size="lg">Кнопка</Button>;
}
Очень большой размер
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button size="xl">Кнопка</Button>;
}
Неактивная
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button disabled>Кнопка</Button>;
}
Иконка
import { IconPlus } from "@tabler/icons-react";
import { Button } from "@/components/ui/button";
export default function Particle() {
return (
<Button aria-label="Добавить" size="icon">
<IconPlus aria-hidden="true" stroke={1.5} />
</Button>
);
}
Иконка маленького размера
import { IconPlus } from "@tabler/icons-react";
import { Button } from "@/components/ui/button";
export default function Particle() {
return (
<Button aria-label="Добавить" size="icon-sm">
<IconPlus aria-hidden="true" stroke={1.5} />
</Button>
);
}
Иконка большого размера
import { IconPlus } from "@tabler/icons-react";
import { Button } from "@/components/ui/button";
export default function Particle() {
return (
<Button aria-label="Добавить" size="icon-lg">
<IconPlus aria-hidden="true" stroke={1.5} />
</Button>
);
}
С иконкой
import { IconDownload } from "@tabler/icons-react";
import { Button } from "@/components/ui/button";
export default function Particle() {
return (
<Button>
<IconDownload aria-hidden="true" stroke={1.5} />
Скачать
</Button>
);
}
Со ссылкой
import Link from "next/link";
import { Button } from "@/components/ui/button";
export default function Particle() {
return <Button render={<Link href="/" />}>Ссылка</Button>;
}
Загрузка (встроенное свойство)
"use client";
import { useState } from "react";
import { Button } from "@/components/ui/button";
export default function Particle() {
const [isLoading, setIsLoading] = useState(false);
const handleClick = () => {
setIsLoading(true);
window.setTimeout(() => {
setIsLoading(false);
}, 1000);
};
return (
<Button loading={isLoading} onClick={handleClick}>
Отправить
</Button>
);
}
Загрузка (пользовательская композиция)
import { Button } from "@/components/ui/button";
import { Spinner } from "@/components/ui/spinner";
export default function Particle() {
return (
<Button disabled>
<Spinner />
Загрузка...
</Button>
);
}
Кнопка «Назад»
Единая кнопка «Назад» с иконкой — отдельный компонент @oracul/back-button,
используется в деталках каталога, на правовых страницах и экране авторизации.
Цвет — токен text-foreground (читается в обеих темах), на ховере слегка
притухает. Текст можно заменить через children.
pnpm dlx shadcn@latest add @oracul/back-button
import { BackButton } from "@/components/ui/back-button";
export default function Particle() {
return <BackButton />;
}
На этой странице
УстановкаИспользованиеСсылкаСправочник APIButtonПримерыПо умолчаниюКонтурнаяВторичнаяДеструктивнаяДеструктивная контурнаяПризрачнаяСсылкаОчень маленький размерМаленький размерБольшой размерОчень большой размерНеактивнаяИконкаИконка маленького размераИконка большого размераС иконкойСо ссылкойЗагрузка (встроенное свойство)Загрузка (пользовательская композиция)Кнопка «Назад»