Icon
This page explains how to use Marigold icons effectively. Icons enhance visual appeal and help draw users’ attention. As a core element of the Marigold design system, they establish a consistent visual language across applications.
For a full list of the available Icons go to the Marigold Icons.
Anatomy
The <Icon>
component consists of an SVG element that represents the icon.
Appearance
Property | Type | Description |
---|---|---|
variant | - | The available variants of this component. |
size | - | The available sizes of this component. |
Usage
Icons are used to enhance the user interface by providing visual cues and improving the overall user experience. They can be used in buttons, links, or as standalone elements to represent actions, statuses, or concepts. Icons should be used sparingly and only when they add value to the user interface. They should be easily recognizable and convey their meaning clearly without the need for additional text.
Icons should be used consistently throughout the application to maintain a cohesive design language.
They should also be accessible, meaning that they should have appropriate alternative text or labels for screen readers.
Icons should not be used as a replacement for text, but rather as a complement to it.
Installation
The Marigold Icons are available as a package called @marigold/icons
.
You can use them in your project by installing the package and importing the icons you need.
# with npm
npm install @marigold/icons --save
# with pnpm
pnpm add @marigold/icons
To import a specific component you just have to use the name of the icon directly between the < />
brackets. E.g.:
import { DesignTicket } from '@marigold/icons';
export default function MyComponent() {
return <DesignTicket />;
}
You can also copy the SVG code directly from the Marigold Icons page, but we recommend using the package for better maintainability and consistency.
Icon size
You can change the size of the icon by using the size
prop, you can set it to any valid CSS size value. It automatically sets the width
and height
of the SVG element.
Customize icon
Icons are build on our own SVG component, which is based on the SVG standard. Meaning you can use all the attributes and properties that are available in the SVG standard.
Props
accentHeight?
string | number;
accumulate?
"none" | "sum";
additive?
"sum" | "replace";
alignmentBaseline?
"alphabetic" |
"hanging" |
"ideographic" |
"mathematical" |
"auto" |
"baseline" |
"before-edge" |
"text-before-edge" |
"middle" |
"central" |
"after-edge" |
"text-after-edge" |
"inherit";
allowReorder?
"no" | "yes";
alphabetic?
string | number;
amplitude?
string | number;
arabicForm?
"initial" | "medial" | "terminal" | "isolated";
aria-activedescendant?
string;
aria-atomic?
Booleanish;
aria-autocomplete?
"list" | "none" | "inline" | "both";
aria-braillelabel?
string;
aria-brailleroledescription?
string;
aria-busy?
Booleanish;
aria-checked?
boolean | "true" | "false" | "mixed";
aria-colcount?
number;
aria-colindex?
number;
aria-colindextext?
string;
aria-colspan?
number;
aria-controls?
string;
aria-current?
boolean | "time" | "true" | "false" | "page" | "step" | "location" | "date";
aria-describedby?
string;
aria-description?
string;
aria-details?
string;
aria-disabled?
Booleanish;
aria-dropeffect?
"link" | "none" | "copy" | "execute" | "move" | "popup";
aria-errormessage?
string;
aria-expanded?
Booleanish;
aria-flowto?
string;
aria-grabbed?
Booleanish;
aria-haspopup?
boolean | "dialog" | "menu" | "grid" | "listbox" | "tree" | "true" | "false";
aria-hidden?
Booleanish;
aria-invalid?
boolean | "true" | "false" | "grammar" | "spelling";
aria-keyshortcuts?
string;
aria-label?
string;
aria-labelledby?
string;
aria-level?
number;
aria-live?
"off" | "assertive" | "polite";
aria-modal?
Booleanish;
aria-multiline?
Booleanish;
aria-multiselectable?
Booleanish;
aria-orientation?
"horizontal" | "vertical";
aria-owns?
string;
aria-placeholder?
string;
aria-posinset?
number;
aria-pressed?
boolean | "true" | "false" | "mixed";
aria-readonly?
Booleanish;
aria-relevant?
"text" |
"additions" |
"additions removals" |
"additions text" |
"all" |
"removals" |
"removals additions" |
"removals text" |
"text additions" |
"text removals";
aria-required?
Booleanish;
aria-roledescription?
string;
aria-rowcount?
number;
aria-rowindex?
number;
aria-rowindextext?
string;
aria-rowspan?
number;
aria-selected?
Booleanish;
aria-setsize?
number;
aria-sort?
"none" | "ascending" | "descending" | "other";
aria-valuemax?
number;
aria-valuemin?
number;
aria-valuenow?
number;
aria-valuetext?
string;
ascent?
string | number;
attributeName?
string;
attributeType?
string;
autoReverse?
Booleanish;
azimuth?
string | number;
baseFrequency?
string | number;
baseProfile?
string | number;
baselineShift?
string | number;
bbox?
string | number;
begin?
string | number;
bias?
string | number;
by?
string | number;
calcMode?
string | number;
capHeight?
string | number;
children?
ReactNode;
className?
string;
clip?
string | number;
clipPath?
string;
clipPathUnits?
string | number;
clipRule?
string | number;
color?
string;
colorInterpolation?
string | number;
colorInterpolationFilters?
"auto" | "inherit" | "sRGB" | "linearRGB";
colorProfile?
string | number;
colorRendering?
string | number;
contentScriptType?
string | number;
contentStyleType?
string | number;
crossOrigin?
CrossOrigin;
cursor?
CursorProp;
cx?
string | number;
cy?
string | number;
d?
string;
dangerouslySetInnerHTML?
{
__html: string | TrustedHTML;
}
decelerate?
string | number;
descent?
string | number;
diffuseConstant?
string | number;
direction?
string | number;
display?
string | number;
divisor?
string | number;
dominantBaseline?
string | number;
dur?
string | number;
dx?
string | number;
dy?
string | number;
edgeMode?
string | number;
elevation?
string | number;
enableBackground?
string | number;
end?
string | number;
exponent?
string | number;
externalResourcesRequired?
Booleanish;
fillOpacity?
string | number;
fillRule?
"inherit" | "nonzero" | "evenodd";
filter?
string;
filterRes?
string | number;
filterUnits?
string | number;
floodColor?
string | number;
floodOpacity?
string | number;
focusable?
"auto" | Booleanish;
fontFamily?
string;
fontSize?
FontSizeProp;
fontSizeAdjust?
string | number;
fontStretch?
string | number;
fontStyle?
string | number;
fontVariant?
string | number;
fontWeight?
string | number;
format?
string | number;
fr?
string | number;
from?
string | number;
fx?
string | number;
fy?
string | number;
g1?
string | number;
g2?
string | number;
glyphName?
string | number;
glyphOrientationHorizontal?
string | number;
glyphOrientationVertical?
string | number;
glyphRef?
string | number;
gradientTransform?
string;
gradientUnits?
string;
hanging?
string | number;
height?
HeightProp;
horizAdvX?
string | number;
horizOriginX?
string | number;
href?
string;
id?
string;
ideographic?
string | number;
imageRendering?
string | number;
in?
string;
in2?
string | number;
intercept?
string | number;
k?
string | number;
k1?
string | number;
k2?
string | number;
k3?
string | number;
k4?
string | number;
kernelMatrix?
string | number;
kernelUnitLength?
string | number;
kerning?
string | number;
keyPoints?
string | number;
keySplines?
string | number;
keyTimes?
string | number;
lang?
string;
lengthAdjust?
string | number;
letterSpacing?
string | number;
lightingColor?
string | number;
limitingConeAngle?
string | number;
local?
string | number;
markerEnd?
string;
markerHeight?
string | number;
markerMid?
string;
markerStart?
string;
markerUnits?
string | number;
markerWidth?
string | number;
mask?
string;
maskContentUnits?
string | number;
maskUnits?
string | number;
mathematical?
string | number;
max?
string | number;
media?
string;
method?
string;
min?
string | number;
mode?
string | number;
name?
string;
numOctaves?
string | number;
offset?
string | number;
onAbort?
ReactEventHandler<SVGSVGElement>;
onAbortCapture?
ReactEventHandler<SVGSVGElement>;
onAnimationEnd?
AnimationEventHandler<SVGSVGElement>;
onAnimationEndCapture?
AnimationEventHandler<SVGSVGElement>;
onAnimationIteration?
AnimationEventHandler<SVGSVGElement>;
onAnimationIterationCapture?
AnimationEventHandler<SVGSVGElement>;
onAnimationStart?
AnimationEventHandler<SVGSVGElement>;
onAnimationStartCapture?
AnimationEventHandler<SVGSVGElement>;
onAuxClick?
MouseEventHandler<SVGSVGElement>;
onAuxClickCapture?
MouseEventHandler<SVGSVGElement>;
onBeforeInput?
InputEventHandler<SVGSVGElement>;
onBeforeInputCapture?
FormEventHandler<SVGSVGElement>;
onBeforeToggle?
ToggleEventHandler<SVGSVGElement>;
onBlur?
FocusEventHandler<SVGSVGElement>;
onBlurCapture?
FocusEventHandler<SVGSVGElement>;
onCanPlay?
ReactEventHandler<SVGSVGElement>;
onCanPlayCapture?
ReactEventHandler<SVGSVGElement>;
onCanPlayThrough?
ReactEventHandler<SVGSVGElement>;
onCanPlayThroughCapture?
ReactEventHandler<SVGSVGElement>;
onChange?
FormEventHandler<SVGSVGElement>;
onChangeCapture?
FormEventHandler<SVGSVGElement>;
onClick?
MouseEventHandler<SVGSVGElement>;
onClickCapture?
MouseEventHandler<SVGSVGElement>;
onCompositionEnd?
CompositionEventHandler<SVGSVGElement>;
onCompositionEndCapture?
CompositionEventHandler<SVGSVGElement>;
onCompositionStart?
CompositionEventHandler<SVGSVGElement>;
onCompositionStartCapture?
CompositionEventHandler<SVGSVGElement>;
onCompositionUpdate?
CompositionEventHandler<SVGSVGElement>;
onCompositionUpdateCapture?
CompositionEventHandler<SVGSVGElement>;
onContextMenu?
MouseEventHandler<SVGSVGElement>;
onContextMenuCapture?
MouseEventHandler<SVGSVGElement>;
onCopy?
ClipboardEventHandler<SVGSVGElement>;
onCopyCapture?
ClipboardEventHandler<SVGSVGElement>;
onCut?
ClipboardEventHandler<SVGSVGElement>;
onCutCapture?
ClipboardEventHandler<SVGSVGElement>;
onDoubleClick?
MouseEventHandler<SVGSVGElement>;
onDoubleClickCapture?
MouseEventHandler<SVGSVGElement>;
onDrag?
DragEventHandler<SVGSVGElement>;
onDragCapture?
DragEventHandler<SVGSVGElement>;
onDragEnd?
DragEventHandler<SVGSVGElement>;
onDragEndCapture?
DragEventHandler<SVGSVGElement>;
onDragEnter?
DragEventHandler<SVGSVGElement>;
onDragEnterCapture?
DragEventHandler<SVGSVGElement>;
onDragExit?
DragEventHandler<SVGSVGElement>;
onDragExitCapture?
DragEventHandler<SVGSVGElement>;
onDragLeave?
DragEventHandler<SVGSVGElement>;
onDragLeaveCapture?
DragEventHandler<SVGSVGElement>;
onDragOver?
DragEventHandler<SVGSVGElement>;
onDragOverCapture?
DragEventHandler<SVGSVGElement>;
onDragStart?
DragEventHandler<SVGSVGElement>;
onDragStartCapture?
DragEventHandler<SVGSVGElement>;
onDrop?
DragEventHandler<SVGSVGElement>;
onDropCapture?
DragEventHandler<SVGSVGElement>;
onDurationChange?
ReactEventHandler<SVGSVGElement>;
onDurationChangeCapture?
ReactEventHandler<SVGSVGElement>;
onEmptied?
ReactEventHandler<SVGSVGElement>;
onEmptiedCapture?
ReactEventHandler<SVGSVGElement>;
onEncrypted?
ReactEventHandler<SVGSVGElement>;
onEncryptedCapture?
ReactEventHandler<SVGSVGElement>;
onEnded?
ReactEventHandler<SVGSVGElement>;
onEndedCapture?
ReactEventHandler<SVGSVGElement>;
onError?
ReactEventHandler<SVGSVGElement>;
onErrorCapture?
ReactEventHandler<SVGSVGElement>;
onFocus?
FocusEventHandler<SVGSVGElement>;
onFocusCapture?
FocusEventHandler<SVGSVGElement>;
onGotPointerCapture?
PointerEventHandler<SVGSVGElement>;
onGotPointerCaptureCapture?
PointerEventHandler<SVGSVGElement>;
onInput?
FormEventHandler<SVGSVGElement>;
onInputCapture?
FormEventHandler<SVGSVGElement>;
onInvalid?
FormEventHandler<SVGSVGElement>;
onInvalidCapture?
FormEventHandler<SVGSVGElement>;
onKeyDown?
KeyboardEventHandler<SVGSVGElement>;
onKeyDownCapture?
KeyboardEventHandler<SVGSVGElement>;
onKeyPress?
KeyboardEventHandler<SVGSVGElement>;
onKeyUp
or onKeyDown
insteadonKeyPressCapture?
KeyboardEventHandler<SVGSVGElement>;
onKeyUpCapture
or onKeyDownCapture
insteadonKeyUp?
KeyboardEventHandler<SVGSVGElement>;
onKeyUpCapture?
KeyboardEventHandler<SVGSVGElement>;
onLoad?
ReactEventHandler<SVGSVGElement>;
onLoadCapture?
ReactEventHandler<SVGSVGElement>;
onLoadStart?
ReactEventHandler<SVGSVGElement>;
onLoadStartCapture?
ReactEventHandler<SVGSVGElement>;
onLoadedData?
ReactEventHandler<SVGSVGElement>;
onLoadedDataCapture?
ReactEventHandler<SVGSVGElement>;
onLoadedMetadata?
ReactEventHandler<SVGSVGElement>;
onLoadedMetadataCapture?
ReactEventHandler<SVGSVGElement>;
onLostPointerCapture?
PointerEventHandler<SVGSVGElement>;
onLostPointerCaptureCapture?
PointerEventHandler<SVGSVGElement>;
onMouseDown?
MouseEventHandler<SVGSVGElement>;
onMouseDownCapture?
MouseEventHandler<SVGSVGElement>;
onMouseEnter?
MouseEventHandler<SVGSVGElement>;
onMouseLeave?
MouseEventHandler<SVGSVGElement>;
onMouseMove?
MouseEventHandler<SVGSVGElement>;
onMouseMoveCapture?
MouseEventHandler<SVGSVGElement>;
onMouseOut?
MouseEventHandler<SVGSVGElement>;
onMouseOutCapture?
MouseEventHandler<SVGSVGElement>;
onMouseOver?
MouseEventHandler<SVGSVGElement>;
onMouseOverCapture?
MouseEventHandler<SVGSVGElement>;
onMouseUp?
MouseEventHandler<SVGSVGElement>;
onMouseUpCapture?
MouseEventHandler<SVGSVGElement>;
onPaste?
ClipboardEventHandler<SVGSVGElement>;
onPasteCapture?
ClipboardEventHandler<SVGSVGElement>;
onPause?
ReactEventHandler<SVGSVGElement>;
onPauseCapture?
ReactEventHandler<SVGSVGElement>;
onPlay?
ReactEventHandler<SVGSVGElement>;
onPlayCapture?
ReactEventHandler<SVGSVGElement>;
onPlaying?
ReactEventHandler<SVGSVGElement>;
onPlayingCapture?
ReactEventHandler<SVGSVGElement>;
onPointerCancel?
PointerEventHandler<SVGSVGElement>;
onPointerCancelCapture?
PointerEventHandler<SVGSVGElement>;
onPointerDown?
PointerEventHandler<SVGSVGElement>;
onPointerDownCapture?
PointerEventHandler<SVGSVGElement>;
onPointerEnter?
PointerEventHandler<SVGSVGElement>;
onPointerLeave?
PointerEventHandler<SVGSVGElement>;
onPointerMove?
PointerEventHandler<SVGSVGElement>;
onPointerMoveCapture?
PointerEventHandler<SVGSVGElement>;
onPointerOut?
PointerEventHandler<SVGSVGElement>;
onPointerOutCapture?
PointerEventHandler<SVGSVGElement>;
onPointerOver?
PointerEventHandler<SVGSVGElement>;
onPointerOverCapture?
PointerEventHandler<SVGSVGElement>;
onPointerUp?
PointerEventHandler<SVGSVGElement>;
onPointerUpCapture?
PointerEventHandler<SVGSVGElement>;
onProgress?
ReactEventHandler<SVGSVGElement>;
onProgressCapture?
ReactEventHandler<SVGSVGElement>;
onRateChange?
ReactEventHandler<SVGSVGElement>;
onRateChangeCapture?
ReactEventHandler<SVGSVGElement>;
onReset?
FormEventHandler<SVGSVGElement>;
onResetCapture?
FormEventHandler<SVGSVGElement>;
onScroll?
UIEventHandler<SVGSVGElement>;
onScrollCapture?
UIEventHandler<SVGSVGElement>;
onScrollEnd?
UIEventHandler<SVGSVGElement>;
onScrollEndCapture?
UIEventHandler<SVGSVGElement>;
onSeeked?
ReactEventHandler<SVGSVGElement>;
onSeekedCapture?
ReactEventHandler<SVGSVGElement>;
onSeeking?
ReactEventHandler<SVGSVGElement>;
onSeekingCapture?
ReactEventHandler<SVGSVGElement>;
onSelect?
ReactEventHandler<SVGSVGElement>;
onSelectCapture?
ReactEventHandler<SVGSVGElement>;
onStalled?
ReactEventHandler<SVGSVGElement>;
onStalledCapture?
ReactEventHandler<SVGSVGElement>;
onSubmit?
FormEventHandler<SVGSVGElement>;
onSubmitCapture?
FormEventHandler<SVGSVGElement>;
onSuspend?
ReactEventHandler<SVGSVGElement>;
onSuspendCapture?
ReactEventHandler<SVGSVGElement>;
onTimeUpdate?
ReactEventHandler<SVGSVGElement>;
onTimeUpdateCapture?
ReactEventHandler<SVGSVGElement>;
onToggle?
ToggleEventHandler<SVGSVGElement>;
onTouchCancel?
TouchEventHandler<SVGSVGElement>;
onTouchCancelCapture?
TouchEventHandler<SVGSVGElement>;
onTouchEnd?
TouchEventHandler<SVGSVGElement>;
onTouchEndCapture?
TouchEventHandler<SVGSVGElement>;
onTouchMove?
TouchEventHandler<SVGSVGElement>;
onTouchMoveCapture?
TouchEventHandler<SVGSVGElement>;
onTouchStart?
TouchEventHandler<SVGSVGElement>;
onTouchStartCapture?
TouchEventHandler<SVGSVGElement>;
onTransitionCancel?
TransitionEventHandler<SVGSVGElement>;
onTransitionCancelCapture?
TransitionEventHandler<SVGSVGElement>;
onTransitionEnd?
TransitionEventHandler<SVGSVGElement>;
onTransitionEndCapture?
TransitionEventHandler<SVGSVGElement>;
onTransitionRun?
TransitionEventHandler<SVGSVGElement>;
onTransitionRunCapture?
TransitionEventHandler<SVGSVGElement>;
onTransitionStart?
TransitionEventHandler<SVGSVGElement>;
onTransitionStartCapture?
TransitionEventHandler<SVGSVGElement>;
onVolumeChange?
ReactEventHandler<SVGSVGElement>;
onVolumeChangeCapture?
ReactEventHandler<SVGSVGElement>;
onWaiting?
ReactEventHandler<SVGSVGElement>;
onWaitingCapture?
ReactEventHandler<SVGSVGElement>;
onWheel?
WheelEventHandler<SVGSVGElement>;
onWheelCapture?
WheelEventHandler<SVGSVGElement>;
opacity?
string | number;
operator?
string | number;
order?
string | number;
orient?
string | number;
orientation?
AlignmentProp;
origin?
string | number;
overflow?
string | number;
overlinePosition?
string | number;
overlineThickness?
string | number;
paintOrder?
string | number;
panose1?
string | number;
path?
string;
pathLength?
string | number;
patternContentUnits?
string;
patternTransform?
string | number;
patternUnits?
string;
pointerEvents?
string | number;
points?
string;
pointsAtX?
string | number;
pointsAtY?
string | number;
pointsAtZ?
string | number;
preserveAlpha?
Booleanish;
preserveAspectRatio?
string;
primitiveUnits?
string | number;
r?
string | number;
radius?
string | number;
ref?
Ref<SVGSVGElement>;
ref.current
to null
(or call the ref with null
if you passed a callback ref).
@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}refX?
string | number;
refY?
string | number;
renderingIntent?
string | number;
repeatCount?
string | number;
repeatDur?
string | number;
requiredExtensions?
string | number;
requiredFeatures?
string | number;
restart?
string | number;
result?
string;
role?
AriaRole;
rotate?
string | number;
rx?
string | number;
ry?
string | number;
scale?
string | number;
seed?
string | number;
shapeRendering?
string | number;
slope?
string | number;
spacing?
string | number;
specularConstant?
string | number;
specularExponent?
string | number;
speed?
string | number;
spreadMethod?
string;
startOffset?
string | number;
stdDeviation?
string | number;
stemh?
string | number;
stemv?
string | number;
stitchTiles?
string | number;
stopColor?
string;
stopOpacity?
string | number;
strikethroughPosition?
string | number;
strikethroughThickness?
string | number;
string?
string | number;
stroke?
string;
strokeDasharray?
string | number;
strokeDashoffset?
string | number;
strokeLinecap?
"inherit" | "butt" | "round" | "square";
strokeLinejoin?
"inherit" | "round" | "miter" | "bevel";
strokeMiterlimit?
string | number;
strokeOpacity?
string | number;
strokeWidth?
string | number;
suppressHydrationWarning?
boolean;
surfaceScale?
string | number;
systemLanguage?
string | number;
tabIndex?
number;
tableValues?
string | number;
target?
string;
targetX?
string | number;
targetY?
string | number;
textAnchor?
string;
textDecoration?
string | number;
textLength?
string | number;
textRendering?
string | number;
to?
string | number;
transform?
string;
type?
string;
u1?
string | number;
u2?
string | number;
underlinePosition?
string | number;
underlineThickness?
string | number;
unicode?
string | number;
unicodeBidi?
string | number;
unicodeRange?
string | number;
unitsPerEm?
string | number;
vAlphabetic?
string | number;
vHanging?
string | number;
vIdeographic?
string | number;
vMathematical?
string | number;
values?
string;
vectorEffect?
string | number;
version?
string;
vertAdvY?
string | number;
vertOriginX?
string | number;
vertOriginY?
string | number;
viewBox?
string;
viewTarget?
string | number;
visibility?
string | number;
width?
WidthProp;
widths?
string | number;
wordSpacing?
string | number;
writingMode?
string | number;
x?
string | number;
x1?
string | number;
x2?
string | number;
xChannelSelector?
string;
xHeight?
string | number;
xlinkActuate?
string;
xlinkArcrole?
string;
xlinkHref?
string;
xlinkRole?
string;
xlinkShow?
string;
xlinkTitle?
string;
xlinkType?
string;
xmlBase?
string;
xmlLang?
string;
xmlSpace?
string;
xmlns?
string;
xmlnsXlink?
string;
y?
string | number;
y1?
string | number;
y2?
string | number;
yChannelSelector?
string;
z?
string | number;
zoomAndPan?
string;