Annonce

The annonce component is used to display an announcement on top of the hero section.

New

Introducing Tailus UI React

Installation

Copy-Paste the component code in a .tsx file.

import React from "react";
import { annonceRoot, annonceConcern, type AnnonceRootProps, type AnnonceConcernProps } from "@tailus/themer";

export interface AnnonceRootVariantsProps extends AnnonceRootProps {
  className?: string;
  href?: string;
  children: React.ReactNode;
}

export const AnnonceRoot: React.FC<AnnonceRootVariantsProps> = ({
  className,
  href,
  variant = "outlined",
  size = "md",
  children,
  ...props
}) => {
  const Component = href ? "a" : "div";

  return (
    <Component 
      href={href} 
      className={annonceRoot({variant, size, className})} 
      {...props}
    >
      {children}
    </Component>
  );
};

export interface AnnonceConcernVariantsProps extends React.HTMLAttributes<HTMLSpanElement>, AnnonceConcernProps{
  className?: string,
  children: React.ReactNode,
}

export const AnnonceConcern: React.FC<AnnonceConcernVariantsProps> = (({
  className,
  intent = 'primary',
  size = 'md',
  children,
  ...props 
}) => (
  <span 
    className={annonceConcern({intent, size, className})} 
    {...props}
  >
    {children}
  </span>
));

export interface AnnonceMessageProps {
  className?: string,
  children: React.ReactNode,
}

export const AnnonceMessage: React.FC<AnnonceMessageProps> = (({
  className,
  children,
  ...props
}) => (
  <p 
    className={className} 
    {...props}
  >
    {children}
  </p>
));

export default {
  Root: AnnonceRoot,
  Concern: AnnonceConcern,
  Message: AnnonceMessage,
}

Usage

Import all parts and piece them together.

import Annonce from "@tailus-ui/Annonce"

export default () => (
    <Annonce.Root>
        <Annonce.Concern />
        <Annonce.Message />
    </Annonce.Root>
)

See examples below for more use cases.

Reference

Root

The parent component of the Annonce component

Prop
Type
Default
size
enum
md
variant
enum
outlined
href
string
-

Concern

The subject of the announcement

Prop
Type
Default
size
enum
md
intent
enum
primary

Message

The message of the announcement

Examples

Variants

New

Introducing Tailus UI React

New

Introducing Tailus UI React

New

Introducing Tailus UI React

New

Introducing Tailus UI React

import Annonce from "@tailus-ui/Annonce"

export const MyComponent = () => (
    <div className="space-y-4">
        <Annonce.Root variant="plain">
            <Annonce.Concern size="xs">New</Annonce.Concern>
            <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>

        <Annonce.Root variant="outlined">
            <Annonce.Concern size="xs">New</Annonce.Concern>
            <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>

        <Annonce.Root variant="soft" data-shade="900">
            <Annonce.Concern size="xs">New</Annonce.Concern>
            <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>

        <Annonce.Root variant="mixed">
            <Annonce.Concern size="xs">New</Annonce.Concern>
            <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>
    </div>
)

Intents

New

Introducing Tailus UI React

New

Introducing Tailus UI React

New

Introducing Tailus UI React

New

Introducing Tailus UI React

New

Introducing Tailus UI React

New

Introducing Tailus UI React

New

Introducing Tailus UI React

New

Introducing Tailus UI React

New

Introducing Tailus UI React

import Annonce from "@tailus-ui/Annonce"

export const MyComponent = () => (
    <div className="space-y-4">
        <Annonce.Root variant="plain">
            <Annonce.Concern size="xs">New</Annonce.Concern>
            <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>

        <Annonce.Root variant="outlined">
            <Annonce.Concern size="xs">New</Annonce.Concern>
            <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>

        <Annonce.Root variant="soft" data-shade="900">
            <Annonce.Concern size="xs">New</Annonce.Concern>
            <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>

        <Annonce.Root variant="mixed">
            <Annonce.Concern size="xs">New</Annonce.Concern>
            <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>
    </div>
)

Sizes

Xs

Introducing Tailus UI React

Sm

Introducing Tailus UI React

Md

Introducing Tailus UI React

Lg

Introducing Tailus UI React

import Annonce from "@tailus-ui/Annonce"

export const MyComponent = () => (
    <div className="space-y-4">
        <Annonce.Root variant="mixed" size="xs">
            <Annonce.Concern size="xs">Xs</Annonce.Concern>
            <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>
        <Annonce.Root variant="mixed" size="sm">
            <Annonce.Concern size="sm">Sm</Annonce.Concern>
            <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>
        <Annonce.Root variant="mixed" size="md">
            <Annonce.Concern size="md">Md</Annonce.Concern>
            <Annonce.Message>Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>
        <Annonce.Root variant="mixed" size="lg">
            <Annonce.Concern size="lg">Lg</Annonce.Concern>
            <Annonce.Message>Introducing Tailus UI React</Annonce.Message>
        </Annonce.Root>
    </div>
)
import Annonce from "@tailus-ui/Annonce"

export const MyComponent = () => (
    <Annonce.Root variant="mixed" href="/">
        <Annonce.Concern size="xs">New</Annonce.Concern>
        <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
    </Annonce.Root>
)
import Annonce from "@tailus-ui/Annonce"

export const MyComponent = () => (
    <Annonce.Root href="/" variant="mixed" size="md" className="pr-2">
        <Annonce.Concern size="xs">New</Annonce.Concern>
        <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        <div className="relative flex ml-2 items-center transition-transform duration-300">
            <span className="absolute inset-y-0 right-[5px] my-auto w-2.5 block opacity-0 h-[1.5px] -translate-y-[0.25px] bg-gray-950 dark:bg-white origin-left scale-x-0 transition duration-300 group-hover:opacity-100 group-hover:scale-x-100"></span>
            <svg aria-hidden xmlns="http://www.w3.org/2000/svg" className="size-4 -translate-x-2 text-[--title-text-color] transition duration-300 group-hover:translate-x-px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
                <path strokeLinecap="round" strokeLinejoin="round" d="M9 5l7 7-7 7" />
            </svg>
        </div>
    </Annonce.Root>
)
New

Introducing Tailus UI React

Learn more
import Annonce from "@tailus-ui/Annonce"
import {Link} from "@tailus-ui/typography"

export const MyComponent = () => (
    <Annonce.Root variant="mixed" size="md">
        <Annonce.Concern>New</Annonce.Concern>
        <Annonce.Message className="text-sm">Introducing Tailus UI React</Annonce.Message>
        <Link href="/" weight="medium" intent="neutral" size="sm" variant="underlined"> Learn more</Link>
    </Annonce.Root>
)