Przejdź do treści

Separator

Pozioma lub pionowa linia dzieląca menu, paski narzędzi i listy — narysowana w tym samym jednolitym kolorze obramowania, co ramki w stylu neobrutalistycznym.

import { Separator } from "@/components/ui/separator"

export function SeparatorDemo() {

Separator rysuje cienką poziomą lub pionową linię między blokami treści. Zbudowany na komponencie Base UI Separator i celowo utrzymany w minimalistycznej formie: pojedyncza linia w kolorze border motywu — ta sama jednolita kreska, która obrysowuje każdą neobrutalistyczną ramkę.

Sięgnij po to rozwiązanie, gdy:

  • Sekcje menu i pasków narzędzi — rozdzielanie grup akcji w menu rozwijanych, paskach bocznych i paskach poleceń.
  • Listy ułożone w pion — oddzielanie wierszy na stronach ustawień, w feedach i panelach powiadomień.
  • Metadane w jednym wierszu — pionowe kreski między statystykami, takimi jak wyświetlenia, gwiazdki i data ostatniej aktualizacji.

Instalacja

pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/separator.json
npx shadcn@latest add https://neobrutalism.com/r/base/separator.json
yarn dlx shadcn@latest add https://neobrutalism.com/r/base/separator.json
bunx --bun shadcn@latest add https://neobrutalism.com/r/base/separator.json

Zainstaluj następujące zależności:

pnpm add @base-ui/react
npm install @base-ui/react
yarn add @base-ui/react
bun add @base-ui/react

Skopiuj i wklej poniższy kod do swojego projektu.

components/ui/separator.tsx
"use client"

import * as React from "react"
import { Separator as SeparatorPrimitive } from "radix-ui"

import { cn } from "@/lib/utils"

function Separator({
  className,
  orientation = "horizontal",
  decorative = true,
  ...props
}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {
  return (
    <SeparatorPrimitive.Root
      data-slot="separator"
      decorative={decorative}
      orientation={orientation}
      className={cn(
        "shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
        className
      )}
      {...props}
    />
  )
}

export { Separator }

Zaktualizuj ścieżki importu, aby pasowały do konfiguracji twojego projektu.

Użycie

import { Separator } from "@/components/ui/separator"
<Separator />

Przykłady

Pionowy

Użyj orientation="vertical" dla separatora pionowego.

import { Separator } from "@/components/ui/separator"

export function SeparatorVertical() {

Pionowe separatory między elementami menu z opisami.

import { Separator } from "@/components/ui/separator"

export function SeparatorMenu() {

Lista

Poziome separatory między elementami listy.

import { Separator } from "@/components/ui/separator"

export function SeparatorList() {

RTL

Aby włączyć obsługę RTL w Neobrutalism, zobacz przewodnik konfiguracji RTL.

"use client"

import * as React from "react"

Dostępność

Separator z Base UI zawsze renderuje role="separator" z aria-orientation odzwierciedlającym prop orientation, więc czytniki ekranu ogłaszają go jako semantyczny podział. Przy kreskach czysto dekoracyjnych — powiedzmy między statystykami w jednym wierszu — dodaj aria-hidden="true" (albo użyj zwykłego ostylowanego <div>), aby technologie asystujące nie ogłaszały podziałów, które nie niosą znaczenia. Zwróć uwagę, że to zachowanie różni się od wariantu Radix, który domyślnie jest dekoracyjny (role="none").

Referencja API

Zobacz dokumentację Base UI Separator.