import type { IStyle, IFontWeight } from '@fluentui/style-utilities'; import type { IComponent, IHTMLSlot, IStyleableComponentProps } from '@fluentui/foundation-legacy'; import type { ITextSlot } from '@fluentui/react'; import type { IPersonaCoinSlot } from '../../PersonaCoin/PersonaCoin.types'; export type IVerticalPersonaComponent = IComponent< IVerticalPersonaProps, IVerticalPersonaTokens, IVerticalPersonaStyles >; // These types are redundant with IVerticalPersonaComponent but are needed until TS function return widening issue // is resolved: https://github.com/Microsoft/TypeScript/issues/241 // For now, these helper types can be used to provide return type safety when specifying tokens and styles functions. export type IVerticalPersonaTokenReturnType = ReturnType>; export type IVerticalPersonaStylesReturnType = ReturnType>; export interface IVerticalPersonaSlots { root?: IHTMLSlot; primaryText?: ITextSlot; secondaryText?: ITextSlot; coin?: IPersonaCoinSlot; } // Extending IStyleableComponentProps will automatically add stylable props for you, such as styles and theme. // If you don't want these props to be included in your component, just remove this extension. export interface IVerticalPersonaProps extends IVerticalPersonaSlots, IStyleableComponentProps { vertical: true; text: string; } export interface IVerticalPersonaStyles { root?: IStyle; primaryText?: IStyle; secondaryText?: IStyle; coin?: IStyle; // TODO: Check if this works after Jason his PR } export interface IVerticalPersonaTokens { verticalPersonaWidth?: number; fontFamily?: string; horizontalTextPadding?: number; primaryTextPaddingTop?: string; primaryTextFontSize?: string; primaryTextFontWeight?: IFontWeight; secondaryTextPaddingTop?: string; secondaryTextFontSize?: string; secondaryTextFontWeight?: IFontWeight; }