import * as React from "react"; import type { Editor } from "@tiptap/react"; export type Mark = "bold" | "italic" | "strike" | "code" | "underline" | "superscript" | "subscript"; /** * Configuration for the mark functionality */ export interface UseMarkConfig { /** * The Tiptap editor instance. */ editor?: Editor | null; /** * The type of mark to toggle */ type: Mark; /** * Whether the button should hide when mark is not available. * @default false */ hideWhenUnavailable?: boolean; /** * Callback function called after a successful mark toggle. */ onToggled?: () => void; } export declare const markIcons: { bold: React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element>; italic: React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element>; underline: React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element>; strike: React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element>; code: React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element>; superscript: React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element>; subscript: React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element>; }; export declare const MARK_SHORTCUT_KEYS: Record; /** * Checks if a mark can be toggled in the current editor state */ export declare function canToggleMark(editor: Editor | null, type: Mark): boolean; /** * Checks if a mark is currently active */ export declare function isMarkActive(editor: Editor | null, type: Mark): boolean; /** * Toggles a mark in the editor */ export declare function toggleMark(editor: Editor | null, type: Mark): boolean; /** * Determines if the mark button should be shown */ export declare function shouldShowButton(props: { editor: Editor | null; type: Mark; hideWhenUnavailable: boolean; }): boolean; /** * Gets the formatted mark name */ export declare function getFormattedMarkName(type: Mark): string; /** * Custom hook that provides mark functionality for Tiptap editor * * @example * ```tsx * // Simple usage * function MySimpleBoldButton() { * const { isVisible, handleMark } = useMark({ type: "bold" }) * * if (!isVisible) return null * * return * } * * // Advanced usage with configuration * function MyAdvancedItalicButton() { * const { isVisible, handleMark, label, isActive } = useMark({ * editor: myEditor, * type: "italic", * hideWhenUnavailable: true, * onToggled: () => console.log('Mark toggled!') * }) * * if (!isVisible) return null * * return ( * * Italic * * ) * } * ``` */ export declare function useMark(config: UseMarkConfig): { isVisible: boolean; isActive: boolean; handleMark: () => boolean; canToggle: boolean; label: string; shortcutKeys: string; Icon: React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element> | React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element> | React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element> | React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element> | React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element> | React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element> | React.MemoExoticComponent<({ className, ...props }: React.SVGProps) => import("react/jsx-runtime").JSX.Element>; }; //# sourceMappingURL=use-mark.d.ts.map