@vertisanpro/flowbite-react
Version:
Non-Official React components built for Flowbite and Tailwind CSS
16 lines (15 loc) • 1.39 kB
JavaScript
import { twMerge } from '@vertisanpro/tailwind-merge';
import { nanoid } from 'nanoid';
import React, { forwardRef, useMemo } from 'react';
import { mergeDeep } from '../../helpers/merge-deep';
import { getTheme } from '../../theme-store';
export const FloatingLabel = forwardRef(({ label, helperText, color = 'default', sizing = 'md', variant, disabled = false, theme: customTheme = {}, className, ...props }, ref) => {
const randomId = useMemo(() => nanoid(), []);
const theme = mergeDeep(getTheme().floatingLabel, customTheme);
return (React.createElement("div", null,
React.createElement("div", { className: twMerge('relative', variant === 'standard' ? 'z-0' : '') },
React.createElement("input", { type: "text", id: props.id ? props.id : 'floatingLabel' + randomId, "aria-describedby": "outlined_success_help", className: twMerge(theme.input[color][variant][sizing], className), placeholder: " ", "data-testid": "floating-label", disabled: disabled, ...props, ref: ref }),
React.createElement("label", { htmlFor: props.id ? props.id : 'floatingLabel' + randomId, className: twMerge(theme.label[color][variant][sizing], className) }, label)),
React.createElement("p", { id: 'outlined_helper_text' + randomId, className: twMerge(theme.helperText[color], className) }, helperText)));
});
FloatingLabel.displayName = 'FloatingLabel';