Skip to content

⬅️ Back to Table of Contents

📄 Expander.tsx

📊 Analysis Summary

Metric Count
🔧 Functions 1
📦 Imports 6
💠 JSX Elements 6
📐 Interfaces 1

📚 Table of Contents

🛠️ File Location:

📂 packages/website/src/components/layout/Expander.tsx

📦 Imports

Name Source
Collapsible @docusaurus/theme-common
useCollapsible @docusaurus/theme-common
ArrowIcon @site/src/icons/arrow.svg
clsx clsx
React react
styles ./Expander.module.css

JSX Elements

Component Type Props Children
div element className={clsx(styles.expander, props.className)}
button element className={styles.heading}, onClick={toggleCollapsed} ,
ArrowIcon component className={clsx(styles.arrow, !collapsed && styles.expandedArrow)} none
span element className={styles.headerLabel} {props.label}
Collapsible component as="div", collapsed={collapsed}, lazy={false}
div element className={styles.children} {props.children}

Functions

Expander(props: ExpanderProps): React.JSX.Element

Code
function Expander(props: ExpanderProps): React.JSX.Element {
  const { collapsed, toggleCollapsed } = useCollapsible({
    initialState: false,
  });

  return (
    <div className={clsx(styles.expander, props.className)}>
      <button className={styles.heading} onClick={toggleCollapsed}>
        <ArrowIcon
          className={clsx(styles.arrow, !collapsed && styles.expandedArrow)}
        />
        <span className={styles.headerLabel}>{props.label}</span>
      </button>
      <Collapsible as="div" collapsed={collapsed} lazy={false}>
        <div className={styles.children}>{props.children}</div>
      </Collapsible>
    </div>
  );
}
  • Parameters:
  • props: ExpanderProps
  • Return Type: React.JSX.Element
  • Calls:
  • useCollapsible (from @docusaurus/theme-common)
  • clsx (from clsx)

Interfaces

ExpanderProps

Interface Code
export interface ExpanderProps {
  readonly children?: React.ReactNode;
  readonly className?: string;
  readonly label: string;
}

Properties

Name Type Optional Description
children React.ReactNode
className string
label string