Skip to Content

@stesura/icons

The editor’s icon system: icon components drawn from a swappable icon set. StesuraEditor picks the set with its iconSet prop (see Theming); custom toolbar UI imports the same components (BoldIcon, TableIcon, …) so its icons follow the set.

Icon sets

Both sets define the same names, so a set is chosen once and every icon follows. classicIcons lives on its own subpath, so only apps that pick it ship it.

fluentIcons

export const fluentIcons: IconSet;

Microsoft Fluent geometry, with the accent/fill layer variables. The default set.

classicIcons

export const classicIcons: IconSet; // from '@stesura/icons/classic'

The original Stesura icons, gaps filled with lucide. Its own subpath (@stesura/icons/classic) so only apps that pick it ship it.

IconSet

export type IconSet = Record<string, IconData>;

Icon geometry keyed by semantic name (bold). Both built-in sets define the same names, so a set is chosen once (via IconProvider) and every icon follows; call sites never name a set.

Provider

IconProvider

Supplies the default tier and icon set. Nesting is additive: an inner provider that only sets tier keeps the outer set, which is what lets EditorButtonLarge change the tier without knowing anything about sets.

Parameters:
NameTypeDefault
__0IconProviderProps
Returns:
Element

IconProviderProps

IconProvider’s props: either value, unset ones inherited from an outer provider.

NameTypeDefault
tierIconTier

Default geometry tier for icons below this point. EditorButton provides 16 and EditorButtonLarge provides 24, so call sites never pass a tier — the button they sit in decides. An explicit tier prop still wins.

setIconSet

Geometry every icon draws from. Fluent by default; pass classicIcons from @stesura/icons/classic for the classic set.

childrenReact.ReactNode

IconContextValue

What IconProvider supplies to the icons below it.

NameTypeDefault
tierIconTier

Default geometry tier for icons below this point. EditorButton provides 16 and EditorButtonLarge provides 24, so call sites never pass a tier — the button they sit in decides. An explicit tier prop still wins.

setIconSet

Geometry every icon draws from. Fluent by default; pass classicIcons from @stesura/icons/classic for the classic set.

Icon components

createIcon

Builds an icon component for a semantic name. Geometry is resolved per render from the active set, so switching sets re-renders every icon without touching a single call site.

Parameters:
NameTypeDefault
keystring
Returns:
NamedExoticComponent<IconProps>

IconProps

Icons accept the usual SVG props on top of the geometry controls, so they can be used as tooltip/menu triggers — Base UI’s render prop injects handlers, refs and ARIA attributes onto whatever element it is given.

NameTypeDefault
stringstring | number | undefined
methodstring | undefined
modestring | number | undefined
filterstring | undefined
valuesstring | undefined
typestring | undefined
instring | undefined
formatstring | number | undefined
transformstring | undefined
idstring | undefined
childrenReactNode
spacingstring | number | undefined
directionstring | number | undefined
keyKey | null | undefined
refRef<SVGSVGElement> | undefined

Allows getting a ref to the component instance. Once the component unmounts, React will set ref.current to null (or call the ref with null if you passed a callback ref).

crossOriginCrossOrigin
hrefstring | undefined
maxstring | number | undefined
mediastring | undefined
minstring | number | undefined
namestring | undefined
targetstring | undefined
suppressHydrationWarningboolean | undefined
classNamestring | undefined
langstring | undefined
noncestring | undefined
slotstring | undefined
styleCSSProperties | undefined
tabIndexnumber | undefined
roleAriaRole | undefined
colorstring | undefined
partstring | undefined
aria-activedescendantstring | undefined

Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.

aria-atomicBooleanish | undefined

Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.

aria-autocomplete"none" | "inline" | "list" | "both" | undefined

Indicates whether inputting text could trigger display of one or more predictions of the user’s intended value for an input and specifies how predictions would be presented if they are made.

aria-braillelabelstring | undefined

Defines a string value that labels the current element, which is intended to be converted into Braille.

aria-brailleroledescriptionstring | undefined

Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended to be converted into Braille.

aria-busyBooleanish | undefined
aria-checkedboolean | "true" | "false" | "mixed" | undefined

Indicates the current “checked” state of checkboxes, radio buttons, and other widgets.

aria-colcountnumber | undefined

Defines the total number of columns in a table, grid, or treegrid.

aria-colindexnumber | undefined

Defines an element’s column index or position with respect to the total number of columns within a table, grid, or treegrid.

aria-colindextextstring | undefined

Defines a human readable text alternative of aria-colindex.

aria-colspannumber | undefined

Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid.

aria-controlsstring | undefined

Identifies the element (or elements) whose contents or presence are controlled by the current element.

aria-currentboolean | "date" | "step" | "page" | "true" | "false" | "time" | "location" | undefined

Indicates the element that represents the current item within a container or set of related elements.

aria-describedbystring | undefined

Identifies the element (or elements) that describes the object.

aria-descriptionstring | undefined

Defines a string value that describes or annotates the current element.

aria-detailsstring | undefined

Identifies the element that provides a detailed, extended description for the object.

aria-disabledBooleanish | undefined

Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.

aria-dropeffect"none" | "copy" | "link" | "execute" | "move" | "popup" | undefined

Indicates what functions can be performed when a dragged object is released on the drop target. Deprecated: in ARIA 1.1

aria-errormessagestring | undefined

Identifies the element that provides an error message for the object.

aria-expandedBooleanish | undefined

Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed.

aria-flowtostring | undefined

Identifies the next element (or elements) in an alternate reading order of content which, at the user’s discretion, allows assistive technology to override the general default of reading in document source order.

aria-grabbedBooleanish | undefined

Indicates an element’s “grabbed” state in a drag-and-drop operation. Deprecated: in ARIA 1.1

aria-haspopupboolean | "true" | "false" | "dialog" | "menu" | "listbox" | "tree" | "grid" | undefined

Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.

aria-hiddenBooleanish | undefined

Indicates whether the element is exposed to an accessibility API.

aria-invalidboolean | "true" | "false" | "grammar" | "spelling" | undefined

Indicates the entered value does not conform to the format expected by the application.

aria-keyshortcutsstring | undefined

Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element.

aria-labelstring | undefined

Defines a string value that labels the current element.

aria-labelledbystring | undefined

Identifies the element (or elements) that labels the current element.

aria-levelnumber | undefined

Defines the hierarchical level of an element within a structure.

aria-live"off" | "assertive" | "polite" | undefined

Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region.

aria-modalBooleanish | undefined

Indicates whether an element is modal when displayed.

aria-multilineBooleanish | undefined

Indicates whether a text box accepts multiple lines of input or only a single line.

aria-multiselectableBooleanish | undefined

Indicates that the user may select more than one item from the current selectable descendants.

aria-orientation"horizontal" | "vertical" | undefined

Indicates whether the element’s orientation is horizontal, vertical, or unknown/ambiguous.

aria-ownsstring | undefined

Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship between DOM elements where the DOM hierarchy cannot be used to represent the relationship.

aria-placeholderstring | undefined

Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format.

aria-posinsetnumber | undefined

Defines an element’s number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.

aria-pressedboolean | "true" | "false" | "mixed" | undefined

Indicates the current “pressed” state of toggle buttons.

aria-readonlyBooleanish | undefined

Indicates that the element is not editable, but is otherwise operable.

aria-relevant"text" | "all" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined

Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified.

aria-requiredBooleanish | undefined

Indicates that user input is required on the element before a form may be submitted.

aria-roledescriptionstring | undefined

Defines a human-readable, author-localized description for the role of an element.

aria-rowcountnumber | undefined

Defines the total number of rows in a table, grid, or treegrid.

aria-rowindexnumber | undefined

Defines an element’s row index or position with respect to the total number of rows within a table, grid, or treegrid.

aria-rowindextextstring | undefined

Defines a human readable text alternative of aria-rowindex.

aria-rowspannumber | undefined

Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid.

aria-selectedBooleanish | undefined

Indicates the current “selected” state of various widgets.

aria-setsizenumber | undefined

Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.

aria-sort"none" | "other" | "ascending" | "descending" | undefined

Indicates if items in a table or grid are sorted in ascending or descending order.

aria-valuemaxnumber | undefined

Defines the maximum allowed value for a range widget.

aria-valueminnumber | undefined

Defines the minimum allowed value for a range widget.

aria-valuenownumber | undefined

Defines the current value for a range widget.

aria-valuetextstring | undefined

Defines the human readable text alternative of aria-valuenow for a range widget.

dangerouslySetInnerHTML{ __html: string | TrustedHTML; } | undefined
onCopyClipboardEventHandler<SVGSVGElement> | undefined
onCopyCaptureClipboardEventHandler<SVGSVGElement> | undefined
onCutClipboardEventHandler<SVGSVGElement> | undefined
onCutCaptureClipboardEventHandler<SVGSVGElement> | undefined
onPasteClipboardEventHandler<SVGSVGElement> | undefined
onPasteCaptureClipboardEventHandler<SVGSVGElement> | undefined
onCompositionEndCompositionEventHandler<SVGSVGElement> | undefined
onCompositionEndCaptureCompositionEventHandler<SVGSVGElement> | undefined
onCompositionStartCompositionEventHandler<SVGSVGElement> | undefined
onCompositionStartCaptureCompositionEventHandler<SVGSVGElement> | undefined
onCompositionUpdateCompositionEventHandler<SVGSVGElement> | undefined
onCompositionUpdateCaptureCompositionEventHandler<SVGSVGElement> | undefined
onFocusFocusEventHandler<SVGSVGElement> | undefined
onFocusCaptureFocusEventHandler<SVGSVGElement> | undefined
onBlurFocusEventHandler<SVGSVGElement> | undefined
onBlurCaptureFocusEventHandler<SVGSVGElement> | undefined
onChangeChangeEventHandler<SVGSVGElement, Element> | undefined
onChangeCaptureChangeEventHandler<SVGSVGElement, Element> | undefined
onBeforeInputInputEventHandler<SVGSVGElement> | undefined
onBeforeInputCaptureInputEventHandler<SVGSVGElement> | undefined
onInputInputEventHandler<SVGSVGElement> | undefined
onInputCaptureInputEventHandler<SVGSVGElement> | undefined
onResetReactEventHandler<SVGSVGElement> | undefined
onResetCaptureReactEventHandler<SVGSVGElement> | undefined
onSubmitSubmitEventHandler<SVGSVGElement> | undefined
onSubmitCaptureSubmitEventHandler<SVGSVGElement> | undefined
onInvalidReactEventHandler<SVGSVGElement> | undefined
onInvalidCaptureReactEventHandler<SVGSVGElement> | undefined
onLoadReactEventHandler<SVGSVGElement> | undefined
onLoadCaptureReactEventHandler<SVGSVGElement> | undefined
onErrorReactEventHandler<SVGSVGElement> | undefined
onErrorCaptureReactEventHandler<SVGSVGElement> | undefined
onKeyDownKeyboardEventHandler<SVGSVGElement> | undefined
onKeyDownCaptureKeyboardEventHandler<SVGSVGElement> | undefined
onKeyPressKeyboardEventHandler<SVGSVGElement> | undefined

Deprecated: Use onKeyUp or onKeyDown instead

onKeyPressCaptureKeyboardEventHandler<SVGSVGElement> | undefined

Deprecated: Use onKeyUpCapture or onKeyDownCapture instead

onKeyUpKeyboardEventHandler<SVGSVGElement> | undefined
onKeyUpCaptureKeyboardEventHandler<SVGSVGElement> | undefined
onAbortReactEventHandler<SVGSVGElement> | undefined
onAbortCaptureReactEventHandler<SVGSVGElement> | undefined
onCanPlayReactEventHandler<SVGSVGElement> | undefined
onCanPlayCaptureReactEventHandler<SVGSVGElement> | undefined
onCanPlayThroughReactEventHandler<SVGSVGElement> | undefined
onCanPlayThroughCaptureReactEventHandler<SVGSVGElement> | undefined
onDurationChangeReactEventHandler<SVGSVGElement> | undefined
onDurationChangeCaptureReactEventHandler<SVGSVGElement> | undefined
onEmptiedReactEventHandler<SVGSVGElement> | undefined
onEmptiedCaptureReactEventHandler<SVGSVGElement> | undefined
onEncryptedReactEventHandler<SVGSVGElement> | undefined
onEncryptedCaptureReactEventHandler<SVGSVGElement> | undefined
onEndedReactEventHandler<SVGSVGElement> | undefined
onEndedCaptureReactEventHandler<SVGSVGElement> | undefined
onLoadedDataReactEventHandler<SVGSVGElement> | undefined
onLoadedDataCaptureReactEventHandler<SVGSVGElement> | undefined
onLoadedMetadataReactEventHandler<SVGSVGElement> | undefined
onLoadedMetadataCaptureReactEventHandler<SVGSVGElement> | undefined
onLoadStartReactEventHandler<SVGSVGElement> | undefined
onLoadStartCaptureReactEventHandler<SVGSVGElement> | undefined
onPauseReactEventHandler<SVGSVGElement> | undefined
onPauseCaptureReactEventHandler<SVGSVGElement> | undefined
onPlayReactEventHandler<SVGSVGElement> | undefined
onPlayCaptureReactEventHandler<SVGSVGElement> | undefined
onPlayingReactEventHandler<SVGSVGElement> | undefined
onPlayingCaptureReactEventHandler<SVGSVGElement> | undefined
onProgressReactEventHandler<SVGSVGElement> | undefined
onProgressCaptureReactEventHandler<SVGSVGElement> | undefined
onRateChangeReactEventHandler<SVGSVGElement> | undefined
onRateChangeCaptureReactEventHandler<SVGSVGElement> | undefined
onSeekedReactEventHandler<SVGSVGElement> | undefined
onSeekedCaptureReactEventHandler<SVGSVGElement> | undefined
onSeekingReactEventHandler<SVGSVGElement> | undefined
onSeekingCaptureReactEventHandler<SVGSVGElement> | undefined
onStalledReactEventHandler<SVGSVGElement> | undefined
onStalledCaptureReactEventHandler<SVGSVGElement> | undefined
onSuspendReactEventHandler<SVGSVGElement> | undefined
onSuspendCaptureReactEventHandler<SVGSVGElement> | undefined
onTimeUpdateReactEventHandler<SVGSVGElement> | undefined
onTimeUpdateCaptureReactEventHandler<SVGSVGElement> | undefined
onVolumeChangeReactEventHandler<SVGSVGElement> | undefined
onVolumeChangeCaptureReactEventHandler<SVGSVGElement> | undefined
onWaitingReactEventHandler<SVGSVGElement> | undefined
onWaitingCaptureReactEventHandler<SVGSVGElement> | undefined
onAuxClickMouseEventHandler<SVGSVGElement> | undefined
onAuxClickCaptureMouseEventHandler<SVGSVGElement> | undefined
onClickMouseEventHandler<SVGSVGElement> | undefined
onClickCaptureMouseEventHandler<SVGSVGElement> | undefined
onContextMenuMouseEventHandler<SVGSVGElement> | undefined
onContextMenuCaptureMouseEventHandler<SVGSVGElement> | undefined
onDoubleClickMouseEventHandler<SVGSVGElement> | undefined
onDoubleClickCaptureMouseEventHandler<SVGSVGElement> | undefined
onDragDragEventHandler<SVGSVGElement> | undefined
onDragCaptureDragEventHandler<SVGSVGElement> | undefined
onDragEndDragEventHandler<SVGSVGElement> | undefined
onDragEndCaptureDragEventHandler<SVGSVGElement> | undefined
onDragEnterDragEventHandler<SVGSVGElement> | undefined
onDragEnterCaptureDragEventHandler<SVGSVGElement> | undefined
onDragExitDragEventHandler<SVGSVGElement> | undefined
onDragExitCaptureDragEventHandler<SVGSVGElement> | undefined
onDragLeaveDragEventHandler<SVGSVGElement> | undefined
onDragLeaveCaptureDragEventHandler<SVGSVGElement> | undefined
onDragOverDragEventHandler<SVGSVGElement> | undefined
onDragOverCaptureDragEventHandler<SVGSVGElement> | undefined
onDragStartDragEventHandler<SVGSVGElement> | undefined
onDragStartCaptureDragEventHandler<SVGSVGElement> | undefined
onDropDragEventHandler<SVGSVGElement> | undefined
onDropCaptureDragEventHandler<SVGSVGElement> | undefined
onMouseDownMouseEventHandler<SVGSVGElement> | undefined
onMouseDownCaptureMouseEventHandler<SVGSVGElement> | undefined
onMouseEnterMouseEventHandler<SVGSVGElement> | undefined
onMouseLeaveMouseEventHandler<SVGSVGElement> | undefined
onMouseMoveMouseEventHandler<SVGSVGElement> | undefined
onMouseMoveCaptureMouseEventHandler<SVGSVGElement> | undefined
onMouseOutMouseEventHandler<SVGSVGElement> | undefined
onMouseOutCaptureMouseEventHandler<SVGSVGElement> | undefined
onMouseOverMouseEventHandler<SVGSVGElement> | undefined
onMouseOverCaptureMouseEventHandler<SVGSVGElement> | undefined
onMouseUpMouseEventHandler<SVGSVGElement> | undefined
onMouseUpCaptureMouseEventHandler<SVGSVGElement> | undefined
onSelectReactEventHandler<SVGSVGElement> | undefined
onSelectCaptureReactEventHandler<SVGSVGElement> | undefined
onTouchCancelTouchEventHandler<SVGSVGElement> | undefined
onTouchCancelCaptureTouchEventHandler<SVGSVGElement> | undefined
onTouchEndTouchEventHandler<SVGSVGElement> | undefined
onTouchEndCaptureTouchEventHandler<SVGSVGElement> | undefined
onTouchMoveTouchEventHandler<SVGSVGElement> | undefined
onTouchMoveCaptureTouchEventHandler<SVGSVGElement> | undefined
onTouchStartTouchEventHandler<SVGSVGElement> | undefined
onTouchStartCaptureTouchEventHandler<SVGSVGElement> | undefined
onPointerDownPointerEventHandler<SVGSVGElement> | undefined
onPointerDownCapturePointerEventHandler<SVGSVGElement> | undefined
onPointerMovePointerEventHandler<SVGSVGElement> | undefined
onPointerMoveCapturePointerEventHandler<SVGSVGElement> | undefined
onPointerUpPointerEventHandler<SVGSVGElement> | undefined
onPointerUpCapturePointerEventHandler<SVGSVGElement> | undefined
onPointerCancelPointerEventHandler<SVGSVGElement> | undefined
onPointerCancelCapturePointerEventHandler<SVGSVGElement> | undefined
onPointerEnterPointerEventHandler<SVGSVGElement> | undefined
onPointerLeavePointerEventHandler<SVGSVGElement> | undefined
onPointerOverPointerEventHandler<SVGSVGElement> | undefined
onPointerOverCapturePointerEventHandler<SVGSVGElement> | undefined
onPointerOutPointerEventHandler<SVGSVGElement> | undefined
onPointerOutCapturePointerEventHandler<SVGSVGElement> | undefined
onGotPointerCapturePointerEventHandler<SVGSVGElement> | undefined
onGotPointerCaptureCapturePointerEventHandler<SVGSVGElement> | undefined
onLostPointerCapturePointerEventHandler<SVGSVGElement> | undefined
onLostPointerCaptureCapturePointerEventHandler<SVGSVGElement> | undefined
onScrollUIEventHandler<SVGSVGElement> | undefined
onScrollCaptureUIEventHandler<SVGSVGElement> | undefined
onScrollEndUIEventHandler<SVGSVGElement> | undefined
onScrollEndCaptureUIEventHandler<SVGSVGElement> | undefined
onWheelWheelEventHandler<SVGSVGElement> | undefined
onWheelCaptureWheelEventHandler<SVGSVGElement> | undefined
onAnimationStartAnimationEventHandler<SVGSVGElement> | undefined
onAnimationStartCaptureAnimationEventHandler<SVGSVGElement> | undefined
onAnimationEndAnimationEventHandler<SVGSVGElement> | undefined
onAnimationEndCaptureAnimationEventHandler<SVGSVGElement> | undefined
onAnimationIterationAnimationEventHandler<SVGSVGElement> | undefined
onAnimationIterationCaptureAnimationEventHandler<SVGSVGElement> | undefined
onToggleToggleEventHandler<SVGSVGElement> | undefined
onBeforeToggleToggleEventHandler<SVGSVGElement> | undefined
onTransitionCancelTransitionEventHandler<SVGSVGElement> | undefined
onTransitionCancelCaptureTransitionEventHandler<SVGSVGElement> | undefined
onTransitionEndTransitionEventHandler<SVGSVGElement> | undefined
onTransitionEndCaptureTransitionEventHandler<SVGSVGElement> | undefined
onTransitionRunTransitionEventHandler<SVGSVGElement> | undefined
onTransitionRunCaptureTransitionEventHandler<SVGSVGElement> | undefined
onTransitionStartTransitionEventHandler<SVGSVGElement> | undefined
onTransitionStartCaptureTransitionEventHandler<SVGSVGElement> | undefined
scalestring | number | undefined
versionstring | undefined
seedstring | number | undefined
endstring | number | undefined
frstring | number | undefined
tostring | number | undefined
bystring | number | undefined
originstring | number | undefined
opacitystring | number | undefined
restartstring | number | undefined
fromstring | number | undefined
hangingstring | number | undefined
orientationstring | number | undefined
fontSizestring | number | undefined
fontFamilystring | undefined
letterSpacingstring | number | undefined
rstring | number | undefined
offsetstring | number | undefined
xstring | number | undefined
ystring | number | undefined
clipPathstring | undefined
maskstring | undefined
pathstring | undefined
accentHeightstring | number | undefined
accumulate"none" | "sum" | undefined
additive"replace" | "sum" | undefined
alignmentBaseline"auto" | "middle" | "hanging" | "inherit" | "alphabetic" | "ideographic" | "mathematical" | "baseline" | "before-edge" | "text-before-edge" | "central" | "after-edge" | "text-after-edge" | undefined
allowReorder"yes" | "no" | undefined
alphabeticstring | number | undefined
amplitudestring | number | undefined
arabicForm"initial" | "medial" | "terminal" | "isolated" | undefined
ascentstring | number | undefined
attributeNamestring | undefined
attributeTypestring | undefined
autoReverseBooleanish | undefined
azimuthstring | number | undefined
baseFrequencystring | number | undefined
baselineShiftstring | number | undefined
baseProfilestring | number | undefined
bboxstring | number | undefined
beginstring | number | undefined
biasstring | number | undefined
calcModestring | number | undefined
capHeightstring | number | undefined
clipstring | number | undefined
clipPathUnitsstring | number | undefined
clipRulestring | number | undefined
colorInterpolationstring | number | undefined
colorInterpolationFilters"auto" | "inherit" | "sRGB" | "linearRGB" | undefined
colorProfilestring | number | undefined
colorRenderingstring | number | undefined
contentScriptTypestring | number | undefined
contentStyleTypestring | number | undefined
cursorstring | number | undefined
cxstring | number | undefined
cystring | number | undefined
dstring | undefined
deceleratestring | number | undefined
descentstring | number | undefined
diffuseConstantstring | number | undefined
displaystring | number | undefined
divisorstring | number | undefined
dominantBaseline"auto" | "middle" | "hanging" | "inherit" | "alphabetic" | "ideographic" | "mathematical" | "text-before-edge" | "central" | "text-after-edge" | "use-script" | "no-change" | "reset-size" | undefined
durstring | number | undefined
dxstring | number | undefined
dystring | number | undefined
edgeModestring | number | undefined
elevationstring | number | undefined
enableBackgroundstring | number | undefined
exponentstring | number | undefined
externalResourcesRequiredBooleanish | undefined
fillOpacitystring | number | undefined
fillRule"inherit" | "nonzero" | "evenodd" | undefined
filterResstring | number | undefined
filterUnitsstring | number | undefined
floodColorstring | number | undefined
floodOpacitystring | number | undefined
focusable"auto" | Booleanish | undefined
fontSizeAdjuststring | number | undefined
fontStretchstring | number | undefined
fontStylestring | number | undefined
fontVariantstring | number | undefined
fontWeightstring | number | undefined
fxstring | number | undefined
fystring | number | undefined
g1string | number | undefined
g2string | number | undefined
glyphNamestring | number | undefined
glyphOrientationHorizontalstring | number | undefined
glyphOrientationVerticalstring | number | undefined
glyphRefstring | number | undefined
gradientTransformstring | undefined
gradientUnitsstring | undefined
horizAdvXstring | number | undefined
horizOriginXstring | number | undefined
ideographicstring | number | undefined
imageRenderingstring | number | undefined
in2string | number | undefined
interceptstring | number | undefined
k1string | number | undefined
k2string | number | undefined
k3string | number | undefined
k4string | number | undefined
kstring | number | undefined
kernelMatrixstring | number | undefined
kernelUnitLengthstring | number | undefined
kerningstring | number | undefined
keyPointsstring | number | undefined
keySplinesstring | number | undefined
keyTimesstring | number | undefined
lengthAdjuststring | number | undefined
lightingColorstring | number | undefined
limitingConeAnglestring | number | undefined
localstring | number | undefined
markerEndstring | undefined
markerHeightstring | number | undefined
markerMidstring | undefined
markerStartstring | undefined
markerUnitsstring | number | undefined
markerWidthstring | number | undefined
maskContentUnitsstring | number | undefined
maskUnitsstring | number | undefined
mathematicalstring | number | undefined
numOctavesstring | number | undefined
operatorstring | number | undefined
orderstring | number | undefined
orientstring | number | undefined
overflowstring | number | undefined
overlinePositionstring | number | undefined
overlineThicknessstring | number | undefined
paintOrderstring | number | undefined
panose1string | number | undefined
pathLengthstring | number | undefined
patternContentUnitsstring | undefined
patternTransformstring | number | undefined
patternUnitsstring | undefined
pointerEventsstring | number | undefined
pointsstring | undefined
pointsAtXstring | number | undefined
pointsAtYstring | number | undefined
pointsAtZstring | number | undefined
preserveAlphaBooleanish | undefined
preserveAspectRatiostring | undefined
primitiveUnitsstring | number | undefined
radiusstring | number | undefined
refXstring | number | undefined
refYstring | number | undefined
renderingIntentstring | number | undefined
repeatCountstring | number | undefined
repeatDurstring | number | undefined
requiredExtensionsstring | number | undefined
requiredFeaturesstring | number | undefined
resultstring | undefined
rotatestring | number | undefined
rxstring | number | undefined
rystring | number | undefined
shapeRenderingstring | number | undefined
slopestring | number | undefined
specularConstantstring | number | undefined
specularExponentstring | number | undefined
speedstring | number | undefined
spreadMethodstring | undefined
startOffsetstring | number | undefined
stdDeviationstring | number | undefined
stemhstring | number | undefined
stemvstring | number | undefined
stitchTilesstring | number | undefined
stopColorstring | undefined
stopOpacitystring | number | undefined
strikethroughPositionstring | number | undefined
strikethroughThicknessstring | number | undefined
strokeDasharraystring | number | undefined
strokeDashoffsetstring | number | undefined
strokeLinecap"square" | "inherit" | "butt" | "round" | undefined
strokeLinejoin"inherit" | "round" | "miter" | "bevel" | undefined
strokeMiterlimitstring | number | undefined
strokeOpacitystring | number | undefined
strokeWidthstring | number | undefined
surfaceScalestring | number | undefined
systemLanguagestring | number | undefined
tableValuesstring | number | undefined
targetXstring | number | undefined
targetYstring | number | undefined
textAnchor"start" | "end" | "middle" | "inherit" | undefined
textDecorationstring | number | undefined
textLengthstring | number | undefined
textRenderingstring | number | undefined
u1string | number | undefined
u2string | number | undefined
underlinePositionstring | number | undefined
underlineThicknessstring | number | undefined
unicodestring | number | undefined
unicodeBidistring | number | undefined
unicodeRangestring | number | undefined
unitsPerEmstring | number | undefined
vAlphabeticstring | number | undefined
vectorEffectstring | number | undefined
vertAdvYstring | number | undefined
vertOriginXstring | number | undefined
vertOriginYstring | number | undefined
vHangingstring | number | undefined
vIdeographicstring | number | undefined
viewTargetstring | number | undefined
visibilitystring | number | undefined
vMathematicalstring | number | undefined
widthsstring | number | undefined
wordSpacingstring | number | undefined
writingModestring | number | undefined
x1string | number | undefined
x2string | number | undefined
xChannelSelectorstring | undefined
xHeightstring | number | undefined
xlinkActuatestring | undefined
xlinkArcrolestring | undefined
xlinkHrefstring | undefined
xlinkRolestring | undefined
xlinkShowstring | undefined
xlinkTitlestring | undefined
xlinkTypestring | undefined
xmlBasestring | undefined
xmlLangstring | undefined
xmlnsstring | undefined
xmlSpacestring | undefined
y1string | number | undefined
y2string | number | undefined
yChannelSelectorstring | undefined
zstring | number | undefined
zoomAndPanstring | undefined
sizenumber

Explicit pixel size. Omit to let container CSS size the icon.

tierIconTier

Geometry tier override. Normally omitted: the surrounding button supplies it (EditorButton 16, EditorButtonLarge 24) so the same icon adapts when a toolbar collapses. Pass this only to override that.

ExportWhat it is
BorderIconBorder-picker icon drawn from options (top, bottom, left, right, horizontal, vertical) rather than set geometry. Props: BorderIconProps
ReactIconThe React logo, outside the sets. Props: ReactIconProps (SVG props plus size)

Geometry

For building a custom IconSet: geometry keyed by the same semantic names as the built-in sets.

IconData

A single-tier icon keeps its geometry inline; a two-tier icon supplies tiers. Icons gain a 24 tier as Fluent geometry is vendored in.

NameTypeDefault
viewBoxstring
strokeWidthnumber

Stroke width for stroked geometry. Omitted once geometry is fill-based.

strokeLinecap"square" | "butt" | "round"

Stroke terminals. lucide geometry is drawn with round caps and joins and reads wrong without them; Fluent geometry is filled and sets neither.

strokeLinejoin"round" | "miter" | "bevel"
filledboolean

Render as a solid filled glyph instead of a stroked outline.

fillRule"nonzero" | "evenodd"

Fill rule for the glyph. The legacy hand-drawn geometry was authored for evenodd; Fluent geometry assumes the SVG default nonzero and renders counters (letterform holes) inverted under evenodd.

childrenIconNode[]
tiersPartial<Record<IconTier, IconGeometry>>

IconGeometry

An icon’s SVG geometry at one tier.

NameTypeDefault
viewBoxstring
strokeWidthnumber

Stroke width for stroked geometry. Omitted once geometry is fill-based.

strokeLinecap"square" | "butt" | "round"

Stroke terminals. lucide geometry is drawn with round caps and joins and reads wrong without them; Fluent geometry is filled and sets neither.

strokeLinejoin"round" | "miter" | "bevel"
filledboolean

Render as a solid filled glyph instead of a stroked outline.

fillRule"nonzero" | "evenodd"

Fill rule for the glyph. The legacy hand-drawn geometry was authored for evenodd; Fluent geometry assumes the SVG default nonzero and renders counters (letterform holes) inverted under evenodd.

childrenIconNode[]

IconNode

export type IconNode = [string, IconNodeAttrs, IconNode[]?];

One SVG element of an icon’s geometry: [tag, attrs, children?].

IconNodeAttrs

An IconNode’s SVG attributes, with color given as layers rather than literal paints.

NameTypeDefault
layerIconLayer

Primary role. Paints stroke for outline-*, otherwise fill.

fillLayerIconLayer

Fill role for a path that is both stroked and filled.

strokeLayerIconLayer

Stroke role, for open paths that need a non-outline color — a constructive + or destructive × drawn as line segments has no area, so a fill would paint nothing.

IconLayer

export type IconLayer = | "outline-primary" | "outline-secondary" | "accent-primary" | "accent-secondary" | "accent-tertiary" | "fill-primary" | "fill-secondary" | "fill-tertiary" | "constructive" | "destructive" /** Brand marks: not themeable, see the notes in core's stylesheet. */ | "brand-pdf" | "brand-word";

Semantic color role for a path. The name carries the paint channel: outline-* paints stroke, everything else paints fill. A path that needs both sets layer (stroke) and fillLayer (fill).

IconTier

export type IconTier = 16 | 24;

Rendering tiers. 16 = EditorButton / context menus; 24 = EditorButtonLarge, which pins its icons to 24px.

Last updated on