@@ -72,6 +72,13 @@ export interface ComponentAnatomy<TConditions extends ComponentConditions, TPart
7272 * Description of the focus structure of the component.
7373 */
7474 focus ?: FocusDefinition < TParts > ;
75+
76+ /**
77+ * Description of cursor behavior for interactive elements.
78+ * If not provided, defaults to using focus.focusTarget.part with cursor: pointer.
79+ * Set to false to explicitly disable automatic cursor generation.
80+ */
81+ cursor ?: CursorDefinition | false ;
7582}
7683
7784/**
@@ -285,6 +292,25 @@ export const Focus = {
285292 } ,
286293} as const ;
287294
295+ /**
296+ * Defines cursor behavior for interactive elements.
297+ *
298+ * @public
299+ */
300+ export interface CursorDefinition {
301+ /**
302+ * The part that should receive the cursor style when interactive.
303+ * If undefined, uses the same part as focus.focusTarget.part.
304+ */
305+ part ?: string ;
306+
307+ /**
308+ * The cursor type to apply (defaults to "pointer").
309+ * Common values: "pointer", "text", "move", "grab", "default".
310+ */
311+ cursorType ?: string ;
312+ }
313+
288314/**
289315 * Parameters used to evaluate style modules for a component.
290316 *
@@ -525,6 +551,7 @@ export interface SerializableAnatomy {
525551 parts : Record < string , string > ,
526552 interactivity ?: InteractivityDefinition ,
527553 focus ?: FocusDefinition < any > ,
554+ cursor ?: CursorDefinition | false ,
528555 styleRules : SerializableStyleRule [ ]
529556}
530557
0 commit comments