mittwald Flow Logo

Components

Icon

Icons sind semantische Symbole, die Inhalte und Funktionen visualisieren und zur Verständlichkeit der Benutzeroberfläche beitragen.GitHub

Playground

Für das Flow Design System kommen Tabler Icons zum Einsatz. Eine Auswahl passender Icons wurde getroffen und mit festen Bedeutungen versehen. Alle relevanten Icons werden unten in der Icon-Bibliothek aufgelistet.

Um ein Icon einzufügen, wird eine Kombination aus „Icon“ und dem jeweiligen „Icon-Namen“ in einem Tag verwendet. Zum Beispiel sieht der Tag für das Icon „Home“ so aus: <IconHome />. Eine Übersicht aller verfügbaren Icons und ihrer Namen ist in der Icon-Bibliothek zu finden.

import { IconHome } from "@mittwald/flow-react-components";

<IconHome />

Tabler Icon

Wenn kein passendes Icon in der Icon-Bibliothek vorhanden ist, kann alternativ ein Icon von Tabler ausgewählt werden.

import { Icon } from "@mittwald/flow-react-components";
import { IconStar } from "@tabler/icons-react";

<Icon>
  <IconStar />
</Icon>

SVG

Zusätzlich können eigene SVGs als Icons eingesetzt werden. Dabei ist darauf zu achten, dass sie im Stil der übrigen Icons konsistent bleiben.

import { Icon } from "@mittwald/flow-react-components";

<Icon>
  <svg
    viewBox="0 0 100 100"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle cx="50" cy="50" r="50" />
  </svg>
</Icon>

Sizes

Icons sind in den Größen s, m und l verfügbar.

import { IconHome } from "@mittwald/flow-react-components";

<Row>
  <IconHome size="s" />
  <IconHome size="m" />
  <IconHome size="l" />
</Row>

Kombiniere mit ...

Align

Benutze die Align-Component, um ein Icon neben einem Text zu platzieren.

mail.agenturserver.de
import {
  Align,
  IconDomain,
  Text,
} from "@mittwald/flow-react-components";

<Align>
  <IconDomain />
  <Text>mail.agenturserver.de</Text>
</Align>

Icon-Bibliothek

Im Flow Design System haben ausgewählte Icons eine festgelegte Bedeutung. Sie lassen sich drei Typen zuordnen: Functional, Decorative und Status.

Functional

Functional Icons besitzen eine eindeutige, allgemein verständliche Symbolik, die der User bereits kennt. Sie unterstützen User bei Navigation und Interaktion und werden häufig in Actions wie Icon-Buttons eingesetzt.

import {
  ColumnLayout,
  IconAttachment,
  IconBackLink,
  IconCheck,
  IconCheckboxChecked,
  IconCheckboxEmpty,
  IconCheckboxIndeterminate,
  IconChevronDown,
  IconChevronLeft,
  IconChevronRight,
  IconChevronUp,
  IconClose,
  IconCode,
  IconContextMenu,
  IconContextMenuVertical,
  IconCopy,
  IconDelete,
  IconDownload,
  IconEdit,
  IconExternalLink,
  IconFilter,
  IconHide,
  IconHome,
  IconLink,
  IconLogout,
  IconMaximize,
  IconMenu,
  IconMinimize,
  IconMinus,
  IconNotification,
  IconPause,
  IconPlus,
  IconRadioOff,
  IconRadioOn,
  IconRedo,
  IconRefresh,
  IconSave,
  IconSearch,
  IconSend,
  IconSettings,
  IconShare,
  IconShow,
  IconSorting,
  IconStart,
  IconUndo,
  IconUpload,
  IconView,
  Label,
  LabeledValue,
} from "@mittwald/flow-react-components";

<ColumnLayout l={[1, 1, 1, 1, 1]} m={[1, 1, 1]} s={[1, 1]}>
  <LabeledValue>
    <Label>Home</Label>
    <IconHome />
  </LabeledValue>
  <LabeledValue>
    <Label>Notification</Label>
    <IconNotification />
  </LabeledValue>
  <LabeledValue>
    <Label>Logout</Label>
    <IconLogout />
  </LabeledValue>
  <LabeledValue>
    <Label>Search</Label>
    <IconSearch />
  </LabeledValue>
  <LabeledValue>
    <Label>Menu</Label>
    <IconMenu />
  </LabeledValue>
  <LabeledValue>
    <Label>View</Label>
    <IconView />
  </LabeledValue>
  <LabeledValue>
    <Label>Filter</Label>
    <IconFilter />
  </LabeledValue>
  <LabeledValue>
    <Label>Sorting</Label>
    <IconSorting />
  </LabeledValue>
  <LabeledValue>
    <Label>ContextMenu</Label>
    <IconContextMenu />
  </LabeledValue>
  <LabeledValue>
    <Label>ContextMenuVertical</Label>
    <IconContextMenuVertical />
  </LabeledValue>
  <LabeledValue>
    <Label>Maximize</Label>
    <IconMaximize />
  </LabeledValue>
  <LabeledValue>
    <Label>Minimize</Label>
    <IconMinimize />
  </LabeledValue>
  <LabeledValue>
    <Label>Edit</Label>
    <IconEdit />
  </LabeledValue>
  <LabeledValue>
    <Label>Share</Label>
    <IconShare />
  </LabeledValue>
  <LabeledValue>
    <Label>Save</Label>
    <IconSave />
  </LabeledValue>
  <LabeledValue>
    <Label>Settings</Label>
    <IconSettings />
  </LabeledValue>
  <LabeledValue>
    <Label>Delete</Label>
    <IconDelete />
  </LabeledValue>
  <LabeledValue>
    <Label>Copy</Label>
    <IconCopy />
  </LabeledValue>
  <LabeledValue>
    <Label>Backlink</Label>
    <IconBackLink />
  </LabeledValue>
  <LabeledValue>
    <Label>ExternalLink</Label>
    <IconExternalLink />
  </LabeledValue>
  <LabeledValue>
    <Label>ChevronDown</Label>
    <IconChevronDown />
  </LabeledValue>
  <LabeledValue>
    <Label>ChevronLeft</Label>
    <IconChevronLeft />
  </LabeledValue>
  <LabeledValue>
    <Label>ChevronRight</Label>
    <IconChevronRight />
  </LabeledValue>
  <LabeledValue>
    <Label>ChevronUp</Label>
    <IconChevronUp />
  </LabeledValue>
  <LabeledValue>
    <Label>Close</Label>
    <IconClose />
  </LabeledValue>
  <LabeledValue>
    <Label>Show</Label>
    <IconShow />
  </LabeledValue>
  <LabeledValue>
    <Label>Hide</Label>
    <IconHide />
  </LabeledValue>
  <LabeledValue>
    <Label>Plus</Label>
    <IconPlus />
  </LabeledValue>
  <LabeledValue>
    <Label>Minus</Label>
    <IconMinus />
  </LabeledValue>
  <LabeledValue>
    <Label>Code</Label>
    <IconCode />
  </LabeledValue>
  <LabeledValue>
    <Label>CheckboxChecked</Label>
    <IconCheckboxChecked />
  </LabeledValue>
  <LabeledValue>
    <Label>CheckboxEmpty</Label>
    <IconCheckboxEmpty />
  </LabeledValue>
  <LabeledValue>
    <Label>CheckboxIndeterminate</Label>
    <IconCheckboxIndeterminate />
  </LabeledValue>
  <LabeledValue>
    <Label>RadioOff</Label>
    <IconRadioOff />
  </LabeledValue>
  <LabeledValue>
    <Label>RadioOn</Label>
    <IconRadioOn />
  </LabeledValue>
  <LabeledValue>
    <Label>Refresh</Label>
    <IconRefresh />
  </LabeledValue>
  <LabeledValue>
    <Label>Check</Label>
    <IconCheck />
  </LabeledValue>
  <LabeledValue>
    <Label>Download</Label>
    <IconDownload />
  </LabeledValue>
  <LabeledValue>
    <Label>Redo</Label>
    <IconRedo />
  </LabeledValue>
  <LabeledValue>
    <Label>Undo</Label>
    <IconUndo />
  </LabeledValue>
  <LabeledValue>
    <Label>Upload</Label>
    <IconUpload />
  </LabeledValue>
  <LabeledValue>
    <Label>Send</Label>
    <IconSend />
  </LabeledValue>
  <LabeledValue>
    <Label>Attachment</Label>
    <IconAttachment />
  </LabeledValue>
  <LabeledValue>
    <Label>Pause</Label>
    <IconPause />
  </LabeledValue>
  <LabeledValue>
    <Label>Start</Label>
    <IconStart />
  </LabeledValue>
  <LabeledValue>
    <Label>Link</Label>
    <IconLink />
  </LabeledValue>
</ColumnLayout>

Decorative

Decorative Icons tragen zur Ästhetik und zur emotionalen Wirkung der Benutzeroberfläche bei. Im Gegensatz zu den Functional Icons ist ihre Bedeutung jedoch oft nicht intuitiv erfassbar.

import {
  ColumnLayout,
  IconAI,
  IconAnalytics,
  IconApp,
  IconAutoresponder,
  IconBackup,
  IconCamera,
  IconCertificate,
  IconChangelog,
  IconContainer,
  IconContract,
  IconContributor,
  IconCronjob,
  IconCustomer,
  IconDashboard,
  IconDatabase,
  IconDate,
  IconDeliveryBox,
  IconDesktop,
  IconDirectory,
  IconDomain,
  IconEmail,
  IconExtension,
  IconFile,
  IconForwardAddress,
  IconKnowledgeHint,
  IconLeadFyndr,
  IconMainUser,
  IconMarketplace,
  IconMember,
  IconMittwald,
  IconMobile,
  IconMonitoring,
  IconMove,
  IconNumber,
  IconOrder,
  IconPassword,
  IconPayment,
  IconPicture,
  IconProject,
  IconRegistry,
  IconSecurity,
  IconServer,
  IconSsh,
  IconSshKey,
  IconSshSftp,
  IconStar,
  IconStarFilled,
  IconSubdomain,
  IconSupport,
  IconTerminate,
  IconTicket,
  IconTime,
  IconUser,
  IconVhost,
  IconVolume,
  IconPath,
  Label,
  LabeledValue,
  IconDnsZone,
  IconEmailArchive,
  IconInvite,
  IconDnsSubZone,
} from "@mittwald/flow-react-components";

<ColumnLayout l={[1, 1, 1, 1, 1]} m={[1, 1, 1]} s={[1, 1]}>
  <LabeledValue>
    <Label>mittwald</Label>
    <IconMittwald />
  </LabeledValue>
  <LabeledValue>
    <Label>Star</Label>
    <IconStar />
  </LabeledValue>
  <LabeledValue>
    <Label>StarFilled</Label>
    <IconStarFilled />
  </LabeledValue>
  <LabeledValue>
    <Label>AI</Label>
    <IconAI />
  </LabeledValue>
  <LabeledValue>
    <Label>Project</Label>
    <IconProject />
  </LabeledValue>
  <LabeledValue>
    <Label>Server</Label>
    <IconServer />
  </LabeledValue>
  <LabeledValue>
    <Label>Customer</Label>
    <IconCustomer />
  </LabeledValue>
  <LabeledValue>
    <Label>Support</Label>
    <IconSupport />
  </LabeledValue>
  <LabeledValue>
    <Label>Email</Label>
    <IconEmail />
  </LabeledValue>
  <LabeledValue>
    <Label>DeliveryBox</Label>
    <IconDeliveryBox />
  </LabeledValue>
  <LabeledValue>
    <Label>EmailArchive</Label>
    <IconEmailArchive />
  </LabeledValue>
  <LabeledValue>
    <Label>App</Label>
    <IconApp />
  </LabeledValue>
  <LabeledValue>
    <Label>Domain</Label>
    <IconDomain />
  </LabeledValue>
  <LabeledValue>
    <Label>Vhost</Label>
    <IconVhost />
  </LabeledValue>
  <LabeledValue>
    <Label>Subdomain</Label>
    <IconSubdomain />
  </LabeledValue>
  <LabeledValue>
    <Label>Domainpfad</Label>
    <IconPath />
  </LabeledValue>
  <LabeledValue>
    <Label>Certificate</Label>
    <IconCertificate />
  </LabeledValue>
  <LabeledValue>
    <Label>DnsZone</Label>
    <IconDnsZone />
  </LabeledValue>
  <LabeledValue>
    <Label>DnsSubZone</Label>
    <IconDnsSubZone />
  </LabeledValue>
  <LabeledValue>
    <Label>Move</Label>
    <IconMove />
  </LabeledValue>
  <LabeledValue>
    <Label>Directory</Label>
    <IconDirectory />
  </LabeledValue>
  <LabeledValue>
    <Label>File</Label>
    <IconFile />
  </LabeledValue>
  <LabeledValue>
    <Label>Database</Label>
    <IconDatabase />
  </LabeledValue>
  <LabeledValue>
    <Label>Changelog</Label>
    <IconChangelog />
  </LabeledValue>
  <LabeledValue>
    <Label>Extension</Label>
    <IconExtension />
  </LabeledValue>
  <LabeledValue>
    <Label>Order</Label>
    <IconOrder />
  </LabeledValue>
  <LabeledValue>
    <Label>Monitoring</Label>
    <IconMonitoring />
  </LabeledValue>
  <LabeledValue>
    <Label>Analytics</Label>
    <IconAnalytics />
  </LabeledValue>
  <LabeledValue>
    <Label>Ticket</Label>
    <IconTicket />
  </LabeledValue>
  <LabeledValue>
    <Label>Contributor</Label>
    <IconContributor />
  </LabeledValue>
  <LabeledValue>
    <Label>Payment</Label>
    <IconPayment />
  </LabeledValue>
  <LabeledValue>
    <Label>Contract</Label>
    <IconContract />
  </LabeledValue>
  <LabeledValue>
    <Label>Camera</Label>
    <IconCamera />
  </LabeledValue>
  <LabeledValue>
    <Label>Backup</Label>
    <IconBackup />
  </LabeledValue>
  <LabeledValue>
    <Label>Cronjob</Label>
    <IconCronjob />
  </LabeledValue>
  <LabeledValue>
    <Label>Member</Label>
    <IconMember />
  </LabeledValue>
  <LabeledValue>
    <Label>User</Label>
    <IconUser />
  </LabeledValue>
  <LabeledValue>
    <Label>Marketplace</Label>
    <IconMarketplace />
  </LabeledValue>
  <LabeledValue>
    <Label>SshSftp</Label>
    <IconSshSftp />
  </LabeledValue>
  <LabeledValue>
    <Label>LeadFyndr</Label>
    <IconLeadFyndr />
  </LabeledValue>
  <LabeledValue>
    <Label>Container</Label>
    <IconContainer />
  </LabeledValue>
  <LabeledValue>
    <Label>Volume</Label>
    <IconVolume />
  </LabeledValue>
  <LabeledValue>
    <Label>Number</Label>
    <IconNumber />
  </LabeledValue>
  <LabeledValue>
    <Label>Time</Label>
    <IconTime />
  </LabeledValue>
  <LabeledValue>
    <Label>Date</Label>
    <IconDate />
  </LabeledValue>
  <LabeledValue>
    <Label>Dashboard</Label>
    <IconDashboard />
  </LabeledValue>
  <LabeledValue>
    <Label>Terminate</Label>
    <IconTerminate />
  </LabeledValue>
  <LabeledValue>
    <Label>Security</Label>
    <IconSecurity />
  </LabeledValue>
  <LabeledValue>
    <Label>SshKey</Label>
    <IconSshKey />
  </LabeledValue>
  <LabeledValue>
    <Label>ForwardAddress</Label>
    <IconForwardAddress />
  </LabeledValue>
  <LabeledValue>
    <Label>Autoresponder</Label>
    <IconAutoresponder />
  </LabeledValue>
  <LabeledValue>
    <Label>Password</Label>
    <IconPassword />
  </LabeledValue>
  <LabeledValue>
    <Label>Desktop</Label>
    <IconDesktop />
  </LabeledValue>
  <LabeledValue>
    <Label>Mobile</Label>
    <IconMobile />
  </LabeledValue>
  <LabeledValue>
    <Label>Registry</Label>
    <IconRegistry />
  </LabeledValue>
  <LabeledValue>
    <Label>Picture</Label>
    <IconPicture />
  </LabeledValue>
  <LabeledValue>
    <Label>MainUser</Label>
    <IconMainUser />
  </LabeledValue>
  <LabeledValue>
    <Label>Ssh</Label>
    <IconSsh />
  </LabeledValue>
  <LabeledValue>
    <Label>KnowledgeHint</Label>
    <IconKnowledgeHint />
  </LabeledValue>
  <LabeledValue>
    <Label>Invite</Label>
    <IconInvite />
  </LabeledValue>
</ColumnLayout>

Status

Bestimmte Icons dienen der Anzeige des Status eines Elements.

import {
  ColumnLayout,
  IconDanger,
  IconFailed,
  IconInfo,
  IconPending,
  IconSucceeded,
  IconSuccess,
  IconWarning,
  Label,
  LabeledValue,
} from "@mittwald/flow-react-components";

<ColumnLayout l={[1, 1, 1, 1, 1]} m={[1, 1, 1]} s={[1, 1]}>
  <LabeledValue>
    <Label>Success</Label>
    <IconSuccess />
  </LabeledValue>
  <LabeledValue>
    <Label>Warning</Label>
    <IconWarning />
  </LabeledValue>
  <LabeledValue>
    <Label>Danger</Label>
    <IconDanger />
  </LabeledValue>
  <LabeledValue>
    <Label>Info</Label>
    <IconInfo />
  </LabeledValue>
  <LabeledValue>
    <Label>Pending</Label>
    <IconPending />
  </LabeledValue>
  <LabeledValue>
    <Label>Succeeded</Label>
    <IconSucceeded />
  </LabeledValue>
  <LabeledValue>
    <Label>Failed</Label>
    <IconFailed />
  </LabeledValue>
</ColumnLayout>

Overview