UNPKG

@fluentui/react-icons

Version:

Fluent System Icons are a collection of familiar, friendly, and modern icons from Microsoft.

90 lines 3.39 kB
import * as React from 'react'; import { __styles, makeStaticStyles, mergeClasses } from "@griffel/react"; import { useIconState } from '../useIconState'; import fontFilledTtf from './FluentSystemIcons-Filled.ttf'; import fontFilledWoff from './FluentSystemIcons-Filled.woff'; import fontFilledWoff2 from './FluentSystemIcons-Filled.woff2'; import fontRegularTtf from './FluentSystemIcons-Regular.ttf'; import fontRegularWoff from './FluentSystemIcons-Regular.woff'; import fontRegularWoff2 from './FluentSystemIcons-Regular.woff2'; import fontOneSizeTtf from './FluentSystemIcons-Resizable.ttf'; import fontOneSizeWoff from './FluentSystemIcons-Resizable.woff'; import fontOneSizeWoff2 from './FluentSystemIcons-Resizable.woff2'; const FONT_FAMILY_MAP = { [0 /* Filled */]: 'FluentSystemIconsFilled', [1 /* Regular */]: 'FluentSystemIconsRegular', [2 /* Resizable */]: 'FluentSystemIcons' }; const useStaticStyles = makeStaticStyles(` @font-face { font-family: ${FONT_FAMILY_MAP[0 /* Filled */]}; font-display: "block"; src: url(${JSON.stringify(fontFilledWoff2)}) format("woff2"), url(${JSON.stringify(fontFilledWoff)}) format("woff"), url(${JSON.stringify(fontFilledTtf)}) format("truetype"); } @font-face { font-family: ${FONT_FAMILY_MAP[1 /* Regular */]}; font-display: "block"; src: url(${JSON.stringify(fontRegularWoff2)}) format("woff2"), url(${JSON.stringify(fontRegularWoff)}) format("woff"), url(${JSON.stringify(fontRegularTtf)}) format("truetype"); } @font-face { font-family: ${FONT_FAMILY_MAP[2 /* Resizable */]}; font-display: "block"; src: url(${JSON.stringify(fontOneSizeWoff2)}) format("woff2"), url(${JSON.stringify(fontOneSizeWoff)}) format("woff"), url(${JSON.stringify(fontOneSizeTtf)}) format("truetype"); } `); const useRootStyles = __styles({ "0": { "Bahqtrf": "f9dzkbp" }, "1": { "Bahqtrf": "f1krtbx5" }, "2": { "Bahqtrf": "f1sxfq9t" }, "root": { "mc9l5x": "f14t3ns0", "B80ckks": "fmd4ok8", "Bg96gwp": "fne0op0", "ycbfsm": "fg4l7m0" } }, { "d": [".f9dzkbp{font-family:FluentSystemIconsFilled;}", ".f1krtbx5{font-family:FluentSystemIconsRegular;}", ".f1sxfq9t{font-family:FluentSystemIcons;}", ".f14t3ns0{display:inline-block;}", ".fmd4ok8{font-style:normal;}", ".fne0op0{line-height:1em;}"], "t": ["@media (forced-colors: active){.fg4l7m0{forced-color-adjust:auto;}}"] }); export function createFluentFontIcon(displayName, codepoint, font, fontSize, options) { const Component = props => { useStaticStyles(); const styles = useRootStyles(); const className = mergeClasses(styles.root, styles[font], props.className); const state = useIconState({ ...props, className }, { flipInRtl: options === null || options === void 0 ? void 0 : options.flipInRtl }); // We want to keep the same API surface as the SVG icons, so translate `primaryFill` to `color` if (props.primaryFill && props.primaryFill.toLowerCase() !== 'currentcolor') { state.style = { ...state.style, color: props.primaryFill }; } if (fontSize) { state.style = { ...state.style, fontSize }; } return React.createElement("i", Object.assign({}, state), codepoint); }; Component.displayName = displayName; Component.codepoint = codepoint; return Component; }