@primer/react
Version:
An implementation of GitHub's Primer Design System using React
60 lines (59 loc) • 1.9 kB
TypeScript
import { FCWithSlotMarker, SlotMarker } from "../../utils/types/Slots.js";
import React, { FC, PropsWithChildren } from "react";
import { IconProps } from "@primer/octicons-react";
//#region src/experimental/UnderlinePanels/UnderlinePanels.d.ts
type UnderlinePanelsProps = {
/**
* Tabs (UnderlinePanels.Tab) and panels (UnderlinePanels.Panel) to render
*/
children: React.ReactNode;
/**
* Accessible name for the tab list
*/
'aria-label'?: React.AriaAttributes['aria-label'];
/**
* ID of the element containing the name for the tab list
*/
'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
/**
* Custom string to use when generating the IDs of tabs and `aria-labelledby` for the panels
*/
id?: string;
/**
* Loading state for all counters. It displays loading animation for individual counters until all are resolved. It is needed to prevent multiple layout shift.
*/
loadingCounters?: boolean;
/**
* Class name for custom styling
*/
className?: string;
/**
* Element type for the tab container
*/
as?: React.ElementType;
};
type TabProps = PropsWithChildren<{
/**
* Whether this is the selected tab
*/
'aria-selected'?: boolean;
/**
* Callback that will trigger both on click selection and keyboard selection.
*/
onSelect?: (event: React.KeyboardEvent<HTMLButtonElement> | React.MouseEvent<HTMLButtonElement>) => void;
/**
* Content of CounterLabel rendered after tab text label
*/
counter?: number | string;
/**
* Icon rendered before the tab text label
*/
icon?: FC<IconProps>;
}>;
type PanelProps = React.HTMLAttributes<HTMLDivElement>;
declare const _default: React.FC<UnderlinePanelsProps> & SlotMarker & {
Panel: FCWithSlotMarker<PanelProps>;
Tab: FCWithSlotMarker<TabProps>;
};
//#endregion
export { PanelProps, TabProps, UnderlinePanelsProps, _default as default };