import { type CSSProperties, type HTMLAttributes, type ReactNode } from 'react';
type CurvedTabsRenderState = {
active: boolean;
};
type CurvedTabsTriggerChildren = ReactNode | ((state: CurvedTabsRenderState) => ReactNode);
type CurvedTabsTriggerProps = {
ariaLabel?: string;
children?: CurvedTabsTriggerChildren;
disabled?: boolean;
href?: string;
label?: ReactNode;
name: string;
onSelect?: (name: string) => void;
};
type CurvedTabsRoute = {
key?: string;
name: string;
};
type CurvedTabsNavigationEvent = {
canPreventDefault: true;
target?: string;
type: 'tabPress';
};
type CurvedTabsNavigation = {
emit?: (event: CurvedTabsNavigationEvent) => {
defaultPrevented?: boolean;
} | void;
navigate?: (name: string) => void;
};
type CurvedTabsState = {
index: number;
routes: readonly CurvedTabsRoute[];
};
type CurvedTabsListProps = {
children?: ReactNode;
};
type CurvedTabsIndicatorProps = Record;
type CurvedTabsStyle = CSSProperties & {
'--curved-tabs-active-color'?: string;
'--curved-tabs-bar-height'?: string;
'--curved-tabs-bead-color'?: string;
'--curved-tabs-focus-color'?: string;
'--curved-tabs-icon-box'?: string;
'--curved-tabs-idle-color'?: string;
'--curved-tabs-pill-color'?: string;
'--curved-tabs-pill-height'?: string;
'--curved-tabs-surface-color'?: string;
'--curved-tabs-surface-opacity'?: number;
'--curved-tabs-surface-stroke'?: string;
'--curved-tabs-thickness'?: string;
};
type CurvedTabsProps = {
activeColor?: string;
arcHeight?: number;
ariaLabel?: string;
animationDistanceCoefficient?: number;
beadColor?: string;
defaultValue?: string;
disabled?: boolean;
dragEnabled?: boolean;
edgePadding?: number;
focusColor?: string;
iconBox?: number;
idleColor?: string;
maxPillWidth?: number;
navigation?: CurvedTabsNavigation;
onValueChange?: (value: string, trigger: CurvedTabsTriggerConfig) => void;
pillColor?: string;
pillHeight?: number;
showBeads?: boolean;
state?: CurvedTabsState;
style?: CurvedTabsStyle;
surfaceColor?: string;
surfaceOpacity?: number;
surfaceStrokeColor?: string;
thickness?: number;
value?: string;
} & Omit, 'children' | 'defaultValue' | 'onChange' | 'style'> & {
children?: ReactNode;
};
type CurvedTabsTriggerConfig = {
ariaLabel?: string;
disabled?: boolean;
href?: string;
label: ReactNode;
name: string;
onSelect?: (name: string) => void;
render?: (state: CurvedTabsRenderState) => ReactNode;
routeKey?: string;
};
type CurvedTabsComponent = ((props: CurvedTabsProps) => ReactNode) & {
Indicator: typeof CurvedTabsIndicator;
List: typeof CurvedTabsList;
Trigger: typeof CurvedTabsTrigger;
};
declare const CurvedTabsTrigger: {
(_props: CurvedTabsTriggerProps): null;
__curvedTabsRole: "trigger";
};
declare const CurvedTabsIndicator: {
(_props: CurvedTabsIndicatorProps): null;
__curvedTabsRole: "indicator";
};
declare const CurvedTabsList: {
(_props: CurvedTabsListProps): null;
__curvedTabsRole: "list";
};
declare const CurvedTabs: CurvedTabsComponent;
export { CurvedTabs };
export type { CurvedTabsNavigation, CurvedTabsNavigationEvent, CurvedTabsProps, CurvedTabsRenderState, CurvedTabsRoute, CurvedTabsState, CurvedTabsTriggerConfig, CurvedTabsTriggerProps, };