@stratakit/structures
Version:
Medium-sized component structures for the Strata design system
277 lines (276 loc) • 11.7 kB
TypeScript
import type { BaseProps } from "@stratakit/foundations/secret-internals";
interface AccordionItemProps extends BaseProps {
/**
* The accordion item’s initial open state.
*
* @default false
*/
defaultOpen?: boolean;
/**
* The accordion item’s controlled open state.
*
* @default false
*/
open?: boolean;
/**
* Callback fired when the accordion item is opened.
*
* Should be used with the `open` prop.
*/
setOpen?: (open: boolean) => void;
}
/**
* An item within an accordion. Disclosed content with a label.
*
* Bare minimum example:
* ```tsx
* <AccordionItem.Root>
* <AccordionItem.Header>
* <AccordionItem.Marker />
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* </AccordionItem.Header>
* <AccordionItem.Content>Body</AccordionItem.Content>
* </AccordionItem.Root>
* ```
*
* If the accordion item discloses a significant section of the page, it may be
* desirable to markup its label as a heading for accessibility purposes (e.g.
* screen reader users often navigate by heading). For those cases, you can wrap
* the `AccordionItem.Button` component with an `AccordionItem.Heading`
* component and use its `render` prop for rendering an HTML heading element.
* ```tsx
* <AccordionItem.Root>
* <AccordionItem.Header>
* <AccordionItem.Marker />
* <AccordionItem.Heading render={<h2 />}>
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* </AccordionItem.Heading>
* </AccordionItem.Header>
* <AccordionItem.Content>Body</AccordionItem.Content>
* </AccordionItem.Root>
* ```
*
* Example with a decoration:
* ```tsx
* <AccordionItem.Root>
* <AccordionItem.Header>
* <AccordionItem.Marker />
* <AccordionItem.Decoration render={<Icon href={svgPlaceholder} />} />
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* </AccordionItem.Header>
* <AccordionItem.Content>Body</AccordionItem.Content>
* </AccordionItem.Root>
* ```
*
* @deprecated Use MUI [`Accordion`](https://mui.com/material-ui/api/accordion/) component instead.
* See [migration guide](https://stratakit.bentley.com/docs/getting-started/migration-from-legacy-stratakit/#accordionitem).
*/
declare const AccordionItemRoot: import("react").ForwardRefExoticComponent<AccordionItemProps & import("react").RefAttributes<HTMLDivElement | HTMLElement>>;
/**
* The always visible header of an accordion item.
*
* Must include an `AccordionItem.Button` and `AccordionItem.Marker` as a direct
* descendants.
*
* Example:
* ```tsx
* <AccordionItem.Root>
* <AccordionItem.Header>
* <AccordionItem.Marker />
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* </AccordionItem.Header>
* <AccordionItem.Content>Body</AccordionItem.Content>
* </AccordionItem.Root>
* ```
*
* @deprecated Use MUI [`AccordionSummary`](https://mui.com/material-ui/api/accordion-summary/) component instead.
* See [migration guide](https://stratakit.bentley.com/docs/getting-started/migration-from-legacy-stratakit/#accordionitem).
*/
declare const AccordionItemHeader: import("react").ForwardRefExoticComponent<Pick<import("@ariakit/react/role").RoleProps, "render"> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "render"> & import("react").RefAttributes<HTMLDivElement | HTMLElement>>;
/**
* The accordion item button.
*
* Must be a direct descendant of `AccordionItem.Header`.
*
* Example:
* ```tsx
* <AccordionItem.Header>
* <AccordionItem.Marker />
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* </AccordionItem.Header>
* ```
*
* @deprecated Use MUI [`AccordionSummary`](https://mui.com/material-ui/api/accordion-summary/) component to configure the button instead.
* See [migration guide](https://stratakit.bentley.com/docs/getting-started/migration-from-legacy-stratakit/#accordionitem).
*/
declare const AccordionItemButton: import("react").ForwardRefExoticComponent<Pick<import("@ariakit/react/role").RoleProps, "render"> & Omit<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">, "render"> & import("react").RefAttributes<HTMLElement | HTMLButtonElement>>;
/**
* An accordion item’s label.
*
* Must be a descendant of `AccordionItem.Button`.
*
* Example:
* ```tsx
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* ```
*
* @deprecated Use MUI [`Typography`](https://mui.com/material-ui/api/typography/) component instead.
* See [migration guide](https://stratakit.bentley.com/docs/getting-started/migration-from-legacy-stratakit/#accordionitem).
*/
declare const AccordionItemLabel: import("react").ForwardRefExoticComponent<Pick<import("@ariakit/react/role").RoleProps, "render"> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "render"> & import("react").RefAttributes<HTMLDivElement | HTMLElement>>;
/**
* The always-visible, optional decoration of the `AccordionItem.Header` content.
* It can be placed before or after the rest of the content in
* `AccordionItem.Header`. However, the `AccordionItem.Marker` must always be
* placed at either edge (beginning or end) of the header.
*
* Use as a direct descendant of `AccordionItem.Header`. The decoration
* can be placed before the rest of the header content.
*
* Example:
* ```tsx
* <AccordionItem.Header>
* <AccordionItem.Marker />
* <AccordionItem.Decoration render={<Icon href={svgPlaceholder} />} />
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* </AccordionItem.Header>
* ```
*
* Alternatively, the decoration can also be placed after the rest of the
* header content.
*
* Example:
* ```tsx
* <AccordionItem.Header>
* <AccordionItem.Marker />
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* <AccordionItem.Decoration render={<Icon href={svgPlaceholder} />} />
* </AccordionItem.Header>
* ```
*
* There can also be multiple decorations if passed as children under
* `AccordionItem.Decoration`.
*
* Example:
* ```tsx
* <AccordionItem.Header>
* <AccordionItem.Marker />
* <AccordionItem.Decoration>
* <Icon href={svgPlaceholder} />
* <Icon href={svgPlaceholder} />
* </AccordionItem.Decoration>
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* </AccordionItem.Header>
* ```
*
* @deprecated Provide custom content to MUI [`AccordionSummary`](https://mui.com/material-ui/api/accordion-summary/) component instead.
* See [migration guide](https://stratakit.bentley.com/docs/getting-started/migration-from-legacy-stratakit/#accordionitem).
*/
declare const AccordionItemDecoration: import("react").ForwardRefExoticComponent<Pick<import("@ariakit/react/role").RoleProps, "render"> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "render"> & import("react").RefAttributes<HTMLDivElement | HTMLElement>>;
/**
* The visual marker of the `AccordionItem.Header` content. While it can be
* placed before or after the rest of the content in `AccordionItem.Header`,
* it is recommended to place the marker before.
*
* Example:
* ```tsx
* <AccordionItem.Header>
* <AccordionItem.Marker />
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* </AccordionItem.Header>
* ```
*
* Alternatively, the marker can also be placed after the rest of the header
* content.
*
* Example:
* ```tsx
* <AccordionItem.Header>
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* <AccordionItem.Marker />
* </AccordionItem.Header>
* ```
*
* Pass an icon as a child to override the default chevron icon:
* ```tsx
* <AccordionItem.Header>
* <AccordionItem.Marker>
* <Icon href={svgPlaceholder} />
* </AccordionItem.Marker>
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* </AccordionItem.Header>
* ```
*
* @deprecated Use [`expandIconWrapper`](https://mui.com/material-ui/api/accordion-summary/#AccordionSummary-css-MuiAccordionSummary-expandIconWrapper) slot of MUI [`AccordionSummary`](https://mui.com/material-ui/api/accordion-summary/) component instead.
* See [migration guide](https://stratakit.bentley.com/docs/getting-started/migration-from-legacy-stratakit/#accordionitem).
*/
declare const AccordionItemMarker: import("react").ForwardRefExoticComponent<Pick<import("@ariakit/react/role").RoleProps, "render"> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "render"> & import("react").RefAttributes<HTMLDivElement | HTMLElement>>;
/**
* The disclosed content of the accordion item.
*
* Example:
* ```tsx
* <AccordionItem.Root>
* <AccordionItem.Header>
* <AccordionItem.Marker />
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* </AccordionItem.Header>
* <AccordionItem.Content>Body</AccordionItem.Content>
* </AccordionItem.Root>
* ```
*
* @deprecated Use MUI [`AccordionDetails`](https://mui.com/material-ui/api/accordion-details/) component instead.
* See [migration guide](https://stratakit.bentley.com/docs/getting-started/migration-from-legacy-stratakit/#accordionitem).
*/
declare const AccordionItemContent: import("react").ForwardRefExoticComponent<Pick<import("@ariakit/react/role").RoleProps, "render"> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "render"> & import("react").RefAttributes<HTMLDivElement | HTMLElement>>;
interface AccordionItemHeadingProps extends Omit<BaseProps, "render"> {
render: NonNullable<BaseProps["render"]>;
}
/**
* A heading for wrapping `AccordionItem.Button`.
*
* The `render` prop is required.
*
* Example:
* ```tsx
* <AccordionItem.Header>
* <AccordionItem.Marker />
* <AccordionItem.Heading render={<h2 />}>
* <AccordionItem.Button>
* <AccordionItem.Label>Label</AccordionItem.Label>
* </AccordionItem.Button>
* </AccordionItem.Heading>
* </AccordionItem.Header>
* ```
*
* @deprecated Use [`heading`](https://mui.com/material-ui/api/accordion/#Accordion-css-MuiAccordion-heading) slot of MUI [`Accordion`](https://mui.com/material-ui/api/accordion/) component instead.
* See [migration guide](https://stratakit.bentley.com/docs/getting-started/migration-from-legacy-stratakit/#accordionitem).
*/
declare const AccordionItemHeading: import("react").ForwardRefExoticComponent<AccordionItemHeadingProps & import("react").RefAttributes<HTMLDivElement | HTMLElement>>;
export { AccordionItemButton as Button, AccordionItemContent as Content, AccordionItemDecoration as Decoration, AccordionItemHeader as Header, AccordionItemHeading as Heading, AccordionItemLabel as Label, AccordionItemMarker as Marker, AccordionItemRoot as Root, };