import { VueNode } from "../_util/type.js"; import { SemanticClassNamesType, SemanticStylesType } from "../_util/hooks/useMergeSemantic.js"; import { Orientation } from "../_util/hooks/useOrientation.js"; import "../_util/hooks/index.js"; import { SizeType } from "../config-provider/SizeContext.js"; import { TooltipProps } from "../tooltip/index.js"; import { App, CSSProperties, PublicProps } from "vue"; import { SegmentedLabeledOption as SegmentedLabeledOption$1, SegmentedProps as SegmentedProps$1, SegmentedRawOption, SegmentedValue } from "@v-c/segmented"; //#region src/segmented/index.d.ts type SegmentedSemanticName = keyof SegmentedSemanticClassNames & keyof SegmentedSemanticStyles; interface SegmentedSemanticClassNames { root?: string; icon?: string; label?: string; item?: string; } interface SegmentedSemanticStyles { root?: CSSProperties; icon?: CSSProperties; label?: CSSProperties; item?: CSSProperties; } interface SegmentedLabeledOptionWithoutIcon extends SegmentedLabeledOption$1 { label: SegmentedLabeledOption$1['label']; tooltip?: string | TooltipProps; } interface SegmentedLabeledOptionWithIcon extends Omit, 'label'> { label?: SegmentedLabeledOption$1['label']; /** Set icon for Segmented item */ icon?: VueNode; tooltip?: string | TooltipProps; } type SegmentedLabeledOption = SegmentedLabeledOptionWithIcon | SegmentedLabeledOptionWithoutIcon; type SegmentedOptions = (T | SegmentedLabeledOption)[]; type SegmentedClassNamesType = SemanticClassNamesType; type SegmentedStylesType = SemanticStylesType; interface SegmentedProps extends Omit, SegmentedEmitsProps { value?: ValueType; defaultValue?: ValueType; options: SegmentedOptions; rootClass?: string; /** Option to fit width to its parent's width */ block?: boolean; /** Option to control the display size */ size?: SizeType; vertical?: boolean; orientation?: Orientation; classes?: SegmentedClassNamesType; styles?: SegmentedStylesType; shape?: 'default' | 'round'; iconRender?: (option: SegmentedLabeledOption) => any; labelRender?: (option: SegmentedLabeledOption) => any; } interface SegmentedEmits { 'change': (value: ValueType) => void; 'update:value': (value: ValueType) => void; } interface SegmentedEmitsProps { onChange?: SegmentedEmits['change']; 'onUpdate:value'?: SegmentedEmits['update:value']; } interface SegmentedSlots { iconRender: (option: SegmentedLabeledOption) => any; labelRender: (option: SegmentedLabeledOption) => any; } interface SegmentedInstance { $props: SegmentedProps & PublicProps; $emit: { (event: 'change', value: ValueType): void; (event: 'update:value', value: ValueType): void; }; $slots: SegmentedSlots; } interface SegmentedConstructor { new (props: SegmentedProps): SegmentedInstance; /** * Non-generic fallback signature. TypeScript infers from the last overload, * so this keeps render-function usage like `h(Segmented, props)` resolvable * against Vue's `Constructor

` overload of `h` (see #634), while the * generic signature above still drives template/Volar inference. */ new (props: SegmentedProps): SegmentedInstance; install: (app: App) => void; } declare const Segmented: SegmentedConstructor; //#endregion export { SegmentedClassNamesType, SegmentedConstructor, SegmentedEmits, SegmentedEmitsProps, SegmentedLabeledOption, SegmentedOptions, SegmentedProps, SegmentedSemanticClassNames, SegmentedSemanticName, SegmentedSemanticStyles, SegmentedSlots, SegmentedStylesType, Segmented as default };