UNPKG

@arolariu/components

Version:

🎨 70+ beautiful, accessible React components built on Base UI. TypeScript-first, CSS Modules styling, tree-shakeable, SSR-ready. Perfect for modern web apps, design systems & rapid prototyping. Zero config, maximum flexibility! ⚡

87 lines (86 loc) • 3.63 kB
"use client"; import { jsx } from "react/jsx-runtime"; import { Button } from "./button.js"; import { Input } from "./input.js"; import { Textarea } from "./textarea.js"; import { cn } from "../../lib/utilities.js"; import input_group_module from "./input-group.module.js"; import * as __rspack_external_react from "react"; function getAddonAlignClass(align) { switch(align){ case "block-end": return input_group_module.blockEnd; case "block-start": return input_group_module.blockStart; case "inline-end": return input_group_module.inlineEnd; default: return input_group_module.inlineStart; } } function getButtonSizeClass(size) { switch(size){ case "icon-sm": return input_group_module.buttonIconSm; case "icon-xs": return input_group_module.buttonIconXs; case "sm": return input_group_module.buttonSm; default: return input_group_module.buttonXs; } } const InputGroup = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", { ref: ref, role: "group", "data-slot": "input-group", className: cn(input_group_module.group, className), ...props })); const InputGroupAddon = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, align = "inline-start", onClick, ...props }, ref)=>/*#__PURE__*/ jsx("div", { ref: ref, role: "group", "data-slot": "input-group-addon", "data-align": align, className: cn(input_group_module.addon, getAddonAlignClass(align), className), onClick: (event)=>{ if (event.target.closest("button")) return void onClick?.(event); onClick?.(event); if (event.defaultPrevented) return; event.currentTarget.parentElement?.querySelector("input, textarea")?.focus(); }, ...props })); const InputGroupButton = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, type = "button", variant = "ghost", size = "xs", ...props }, ref)=>/*#__PURE__*/ jsx(Button, { ref: ref, type: type, "data-size": size, variant: variant, className: cn(input_group_module.button, getButtonSizeClass(size), className), ...props })); const InputGroupText = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("span", { ref: ref, className: cn(input_group_module.text, className), ...props })); const InputGroupInput = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(Input, { ref: ref, "data-slot": "input-group-control", className: cn(input_group_module.input, className), ...props })); const InputGroupTextarea = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(Textarea, { ref: ref, "data-slot": "input-group-control", className: cn(input_group_module.textarea, className), ...props })); InputGroup.displayName = "InputGroup"; InputGroupAddon.displayName = "InputGroupAddon"; InputGroupButton.displayName = "InputGroupButton"; InputGroupText.displayName = "InputGroupText"; InputGroupInput.displayName = "InputGroupInput"; InputGroupTextarea.displayName = "InputGroupTextarea"; export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea }; //# sourceMappingURL=input-group.js.map