mirror of
https://github.com/nextui-org/nextui.git
synced 2025-12-08 19:26:11 +00:00
125 lines
2.6 KiB
TypeScript
125 lines
2.6 KiB
TypeScript
const SearchIcon = `export const SearchIcon = ({
|
|
size = 24,
|
|
strokeWidth = 1.5,
|
|
width,
|
|
height,
|
|
...props
|
|
}) => (
|
|
<svg
|
|
aria-hidden="true"
|
|
fill="none"
|
|
focusable="false"
|
|
height={height || size}
|
|
role="presentation"
|
|
viewBox="0 0 24 24"
|
|
width={width || size}
|
|
{...props}
|
|
>
|
|
<path
|
|
d="M11.5 21C16.7467 21 21 16.7467 21 11.5C21 6.25329 16.7467 2 11.5 2C6.25329 2 2 6.25329 2 11.5C2 16.7467 6.25329 21 11.5 21Z"
|
|
stroke="currentColor"
|
|
strokeLinecap="round"
|
|
strokeLinejoin="round"
|
|
strokeWidth={strokeWidth}
|
|
/>
|
|
<path
|
|
d="M22 22L20 20"
|
|
stroke="currentColor"
|
|
strokeLinecap="round"
|
|
strokeLinejoin="round"
|
|
strokeWidth={strokeWidth}
|
|
/>
|
|
</svg>
|
|
);`;
|
|
|
|
const App = `import {extendVariants, Input} from "@nextui-org/react";
|
|
import {SearchIcon} from "./SearchIcon";
|
|
|
|
const MyInput = extendVariants(Input, {
|
|
variants: {
|
|
color: {
|
|
stone: {
|
|
inputWrapper: [
|
|
"bg-zinc-100",
|
|
"border",
|
|
"shadow",
|
|
"transition-colors",
|
|
"focus-within:bg-zinc-100",
|
|
"data-[hover=true]:border-zinc-600",
|
|
"data-[hover=true]:bg-zinc-100",
|
|
"group-data-[focus=true]:border-zinc-600",
|
|
"dark:bg-zinc-900",
|
|
"dark:border-zinc-800",
|
|
"dark:data-[hover=true]:bg-zinc-900",
|
|
"dark:focus-within:bg-zinc-900",
|
|
],
|
|
input: [
|
|
"text-zinc-800",
|
|
"placeholder:text-zinc-600",
|
|
"dark:text-zinc-400",
|
|
"dark:placeholder:text-zinc-600",
|
|
],
|
|
},
|
|
},
|
|
size: {
|
|
xs: {
|
|
inputWrapper: "h-6 min-h-6 px-1",
|
|
input: "text-tiny",
|
|
},
|
|
md: {
|
|
inputWrapper: "h-10 min-h-10",
|
|
input: "text-small",
|
|
},
|
|
xl: {
|
|
inputWrapper: "h-14 min-h-14",
|
|
input: "text-medium",
|
|
},
|
|
},
|
|
radius: {
|
|
xs: {
|
|
inputWrapper: "rounded",
|
|
},
|
|
sm: {
|
|
inputWrapper: "rounded-[4px]",
|
|
},
|
|
},
|
|
textSize: {
|
|
base: {
|
|
input: "text-base",
|
|
},
|
|
},
|
|
removeLabel: {
|
|
true: {
|
|
label: "hidden",
|
|
},
|
|
false: {},
|
|
},
|
|
},
|
|
defaultVariants: {
|
|
color: "stone",
|
|
textSize: "base",
|
|
removeLabel: true,
|
|
},
|
|
});
|
|
|
|
export default function App() {
|
|
return (
|
|
<MyInput
|
|
isClearable
|
|
placeholder="Search..."
|
|
radius="md"
|
|
size="md"
|
|
startContent={<SearchIcon className="text-zinc-500" size={16} />}
|
|
/>
|
|
);
|
|
}`;
|
|
|
|
const react = {
|
|
"/App.jsx": App,
|
|
"/SearchIcon.jsx": SearchIcon,
|
|
};
|
|
|
|
export default {
|
|
...react,
|
|
};
|