or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

data-display-components.mddisclosure-components.mdfeedback-components.mdform-components.mdhooks.mdindex.mdlayout-components.mdnavigation-components.mdoverlay-components.mdspecialized-components.mdstyling-system.mdtheme-system.mdtypes.mdtypography-components.md
tile.json

disclosure-components.mddocs/

Disclosure Components

Disclosure components provide expandable/collapsible content including accordions, tabs, and collapsible sections.

Capabilities

Accordion Component

Expandable accordion component for grouped collapsible content.

import { Accordion, useAccordion, useAccordionContext, useAccordionItemContext } from "@chakra-ui/react";

interface AccordionRootProps {
  value?: string[];
  defaultValue?: string[];
  multiple?: boolean;
  collapsible?: boolean;
  disabled?: boolean;
  onValueChange?: (details: AccordionValueChangeDetails) => void;
  onFocusChange?: (details: AccordionFocusChangeDetails) => void;
  children?: React.ReactNode;
}

namespace Accordion {
  export const Root: React.FC<AccordionRootProps>;
  export const RootProvider: React.FC<AccordionRootProps>;
  export const Item: React.FC<{
    value: string;
    disabled?: boolean;
    children?: React.ReactNode;
  }>;
  export const ItemTrigger: ChakraComponent<"button">;
  export const ItemContent: ChakraComponent<"div">;
  export const ItemBody: ChakraComponent<"div">;
  export const ItemIndicator: ChakraComponent<"div">;
}

interface AccordionValueChangeDetails {
  value: string[];
}

interface AccordionFocusChangeDetails {
  value: string | null;
}

function useAccordion(props: UseAccordionProps): UseAccordionReturn;
function useAccordionContext(): AccordionContext;
function useAccordionItemContext(): AccordionItemContext;

Usage:

<Accordion.Root defaultValue={["item-1"]}>
  <Accordion.Item value="item-1">
    <Accordion.ItemTrigger>
      Section 1
      <Accordion.ItemIndicator />
    </Accordion.ItemTrigger>
    <Accordion.ItemContent>
      <Accordion.ItemBody>Content for section 1</Accordion.ItemBody>
    </Accordion.ItemContent>
  </Accordion.Item>
  <Accordion.Item value="item-2">
    <Accordion.ItemTrigger>
      Section 2
      <Accordion.ItemIndicator />
    </Accordion.ItemTrigger>
    <Accordion.ItemContent>
      <Accordion.ItemBody>Content for section 2</Accordion.ItemBody>
    </Accordion.ItemContent>
  </Accordion.Item>
</Accordion.Root>

Tabs Component

Tab navigation component for switching between views.

import { Tabs, useTabs, useTabsContext } from "@chakra-ui/react";

interface TabsRootProps {
  value?: string;
  defaultValue?: string;
  orientation?: "horizontal" | "vertical";
  activationMode?: "manual" | "automatic";
  loop?: boolean;
  variant?: "line" | "enclosed" | "outline" | "plain";
  size?: "sm" | "md" | "lg";
  fitted?: boolean;
  onValueChange?: (details: { value: string }) => void;
  onFocusChange?: (details: { value: string | null }) => void;
  children?: React.ReactNode;
}

namespace Tabs {
  export const Root: React.FC<TabsRootProps>;
  export const RootProvider: React.FC<TabsRootProps>;
  export const List: ChakraComponent<"div">;
  export const Trigger: ChakraComponent<"button", {
    value: string;
    disabled?: boolean;
  }>;
  export const Content: ChakraComponent<"div", {
    value: string;
  }>;
  export const ContentGroup: ChakraComponent<"div">;
  export const Indicator: ChakraComponent<"div">;
}

interface UseTabsProps {
  value?: string;
  defaultValue?: string;
  orientation?: "horizontal" | "vertical";
  onValueChange?: (details: { value: string }) => void;
}

interface UseTabsReturn {
  value: string;
  setValue: (value: string) => void;
  focused: string | null;
  getTriggerProps: (props: { value: string }) => any;
  getContentProps: (props: { value: string }) => any;
  getListProps: () => any;
}

function useTabs(props: UseTabsProps): UseTabsReturn;
function useTabsContext(): TabsContext;

Usage:

<Tabs.Root defaultValue="tab-1" variant="line" size="md">
  <Tabs.List>
    <Tabs.Trigger value="tab-1">Tab 1</Tabs.Trigger>
    <Tabs.Trigger value="tab-2">Tab 2</Tabs.Trigger>
    <Tabs.Trigger value="tab-3">Tab 3</Tabs.Trigger>
    <Tabs.Indicator />
  </Tabs.List>
  <Tabs.ContentGroup>
    <Tabs.Content value="tab-1">Content 1</Tabs.Content>
    <Tabs.Content value="tab-2">Content 2</Tabs.Content>
    <Tabs.Content value="tab-3">Content 3</Tabs.Content>
  </Tabs.ContentGroup>
</Tabs.Root>

Collapsible Component

Simple collapsible content component.

import { Collapsible, useCollapsible, useCollapsibleContext } from "@chakra-ui/react";

interface CollapsibleRootProps {
  open?: boolean;
  defaultOpen?: boolean;
  disabled?: boolean;
  lazyMount?: boolean;
  unmountOnExit?: boolean;
  onOpenChange?: (details: { open: boolean }) => void;
  children?: React.ReactNode;
}

namespace Collapsible {
  export const Root: React.FC<CollapsibleRootProps>;
  export const RootProvider: React.FC<CollapsibleRootProps>;
  export const Trigger: ChakraComponent<"button">;
  export const Content: ChakraComponent<"div">;
  export const Indicator: ChakraComponent<"div">;
}

interface UseCollapsibleProps {
  open?: boolean;
  defaultOpen?: boolean;
  disabled?: boolean;
  onOpenChange?: (details: { open: boolean }) => void;
}

interface UseCollapsibleReturn {
  open: boolean;
  setOpen: (open: boolean) => void;
  disabled: boolean;
  getTriggerProps: () => any;
  getContentProps: () => any;
}

function useCollapsible(props: UseCollapsibleProps): UseCollapsibleReturn;
function useCollapsibleContext(): CollapsibleContext;

Usage:

<Collapsible.Root>
  <Collapsible.Trigger>
    Toggle Content <Collapsible.Indicator />
  </Collapsible.Trigger>
  <Collapsible.Content>
    <Box p="4">Collapsible content goes here</Box>
  </Collapsible.Content>
</Collapsible.Root>

Types

interface UseAccordionProps {
  value?: string[];
  defaultValue?: string[];
  multiple?: boolean;
  collapsible?: boolean;
  onValueChange?: (details: AccordionValueChangeDetails) => void;
}

interface UseAccordionReturn {
  value: string[];
  setValue: (value: string[]) => void;
  focused: string | null;
  getItemProps: (props: { value: string }) => any;
  getItemTriggerProps: (props: { value: string }) => any;
  getItemContentProps: (props: { value: string }) => any;
}

interface AccordionContext extends UseAccordionReturn {}

interface AccordionItemContext {
  value: string;
  open: boolean;
  disabled: boolean;
  focused: boolean;
}

interface TabsContext extends UseTabsReturn {}

interface CollapsibleContext extends UseCollapsibleReturn {}