UNPKG

@nex-ui/react

Version:

🎉 A beautiful, modern, and reliable React component library.

71 lines (67 loc) • 1.81 kB
"use client"; 'use strict'; var jsxRuntime = require('react/jsx-runtime'); var utils = require('@nex-ui/utils'); var useDefaultProps = require('../utils/useDefaultProps.cjs'); var useStyles = require('../utils/useStyles.cjs'); var useSlotClasses = require('../utils/useSlotClasses.cjs'); var useSlot = require('../utils/useSlot.cjs'); var icon = require('../../theme/recipes/icon.cjs'); const slots = [ 'root' ]; const Icon = (inProps)=>{ const props = useDefaultProps.useDefaultProps({ name: 'Icon', props: inProps }); const { as, color, focusable = false, spin = false, size = 'md', width = '1em', height = '1em', ...remainingProps } = props; if (utils.__DEV__ && !as) { console.warn('[Nex UI] Icon: Please pass the "as" property.'); } const ownerState = { ...props, color, as, spin, size, width, height }; const style = useStyles.useStyles({ ownerState, name: 'Icon', recipe: icon.iconRecipe }); const slotClasses = useSlotClasses.useSlotClasses({ name: 'Icon', slots }); const [IconRoot, getIconRootProps] = useSlot.useSlot({ style, elementType: 'svg', externalForwardedProps: remainingProps, classNames: slotClasses.root, a11y: { focusable, 'aria-hidden': props['aria-hidden'] ?? true }, additionalProps: { as, sx: { color, width, height } }, dataAttrs: { size, spin } }); return /*#__PURE__*/ jsxRuntime.jsx(IconRoot, { ...getIconRootProps() }); }; Icon.displayName = 'Icon'; exports.Icon = Icon;