UNPKG

@progress/kendo-react-common

Version:

React Common package delivers common utilities that can be used with the KendoReact UI components. KendoReact Common Utilities package

77 lines (76 loc) 2.08 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use client"; import * as e from "react"; import o from "prop-types"; import { classNames as k } from "../classNames.mjs"; import { SIZE_CLASSES as v } from "./constants.mjs"; import { toIconClass as N } from "./utils.mjs"; import { useMouse as b } from "../hooks/useMouse.mjs"; const u = e.forwardRef((l, d) => { const { className: n, name: s, themeColor: t, size: i, flip: m, style: h, id: g, tabIndex: x, ...y } = l, a = e.useRef(null), f = e.useRef(null); e.useImperativeHandle(a, () => ({ element: f.current })), e.useImperativeHandle(d, () => a.current); const c = e.useMemo(() => i || p.size, [i]), r = e.useMemo(() => m || p.flip, [m]), z = e.useMemo( () => k( "k-icon", "k-font-icon", s && N(s), { [`k-color-${t}`]: t, "k-flip-h": r === "horizontal" || r === "both", "k-flip-v": r === "vertical" || r === "both" }, v[c], n ), [s, t, c, r, n] ), I = b(l, a); return /* @__PURE__ */ e.createElement( "span", { ref: f, ...y, ...I, className: z, id: g, tabIndex: x, style: h, role: "presentation" } ); }); u.propTypes = { style: o.object, classNames: o.string, name: o.string, themeColor: o.oneOf([ "inherit", "primary", "secondary", "tertiary", "info", "success", "error", "warning", "dark", "light", "inverse" ]), size: o.oneOf(["default", "xsmall", "small", "medium", "large", "xlarge", "xxlarge", "xxxlarge"]), flip: o.oneOf(["default", "horizontal", "vertical", "both"]) }; const p = { size: "default", flip: "default" }; u.displayName = "KendoIcon"; export { u as Icon };