Kosmesis
Components

Separator

A horizontal or vertical divider, wrapping Morphos's Separator primitive.

Installation

npx kosmesis add separator
pnpm dlx kosmesis add separator
yarn dlx kosmesis add separator
bunx kosmesis add separator

Install the following dependencies:

npm install @morphos/layout
pnpm add @morphos/layout
yarn add @morphos/layout
bun add @morphos/layout

Copy and paste the following code into your project.

separator.tsx
import { StatelessComponent } from "@praxisjs/core";import { Component } from "@praxisjs/decorators";import { Separator as MorphosSeparator, type SeparatorProps as MorphosSeparatorProps  } from "@morphos/layout";import { cn } from "@/lib/utils";export type SeparatorProps = MorphosSeparatorProps;@Component()export class Separator extends StatelessComponent<SeparatorProps> {  render() {    const { class: cls, ...rest } = this.props;    return (      <MorphosSeparator        class={cn(          "shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",          cls,        )}        {...rest}      />    );  }}

Install the following dependencies:

npm install @morphos/layout @praxisjs/css
pnpm add @morphos/layout @praxisjs/css
yarn add @morphos/layout @praxisjs/css
bun add @morphos/layout @praxisjs/css

Copy and paste the following code into your project.

separator.tsx
import { StatelessComponent } from "@praxisjs/core";import { cx, Stylesheet, Styled, tokenVars } from "@praxisjs/css";import { Component } from "@praxisjs/decorators";import { Separator as MorphosSeparator, type SeparatorProps as MorphosSeparatorProps  } from "@morphos/layout";import { KosmesisTokens } from "@/lib/kosmesis-theme";const t = tokenVars(KosmesisTokens);class SeparatorStyles extends Stylesheet {  $root = this.css({ flexShrink: 0, backgroundColor: t.border })    .on('&[data-orientation="horizontal"]', { height: "1px", width: "100%" })    .on('&[data-orientation="vertical"]', { height: "100%", width: "1px" });}export type SeparatorProps = MorphosSeparatorProps;@Component()export class Separator extends StatelessComponent<SeparatorProps> {  @Styled(SeparatorStyles) $s!: SeparatorStyles;  render() {    const { class: cls, ...rest } = this.props;    return <MorphosSeparator class={cx(this.$s.$root, cls)} {...rest} />;  }}

Examples

Usage

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

<div>
  <p>Above</p>
  <Separator class="my-4" />
  <p>Below</p>
</div>

<div class="flex h-5 items-center">
  <span>Item</span>
  <Separator orientation="vertical" class="mx-2" />
  <span>Item</span>
</div>

Props

PropTypeDefault
orientation"horizontal" | "vertical""horizontal"
decorativebooleanfalse — when true, renders aria-hidden instead of role="separator"

On this page