--- layout: layouts/page.njk title: Input Group description: Display additional information or actions to an input or textarea. toc: - label: Usage id: usage - label: Examples id: examples children: - label: Icon id: example-icon - label: Text id: example-text - label: Button id: example-button - label: Tooltip id: example-tooltip - label: Textarea id: example-textarea - label: Spinner id: example-spinner - label: Dropdown id: example-dropdown - label: Group id: example-group --- {% from "macros/code_preview.njk" import code_preview %} {% from "macros/code_block.njk" import code_block %} {% from "dropdown-menu.njk" import dropdown_menu %} {% from "popover.njk" import popover %}
{% lucide "circle-alert" %}

There is no dedicated Input Group component in Basecoat.

{% set code_default %}
{% lucide "search" %}
12 results
https://
{% lucide "info" %}
{{ dropdown_menu( id="demo-dropdown-menu", trigger="Auto", trigger_attrs={"class": "btn-sm-ghost text-muted-foreground hover:text-accent-foreground h-6 p-2"}, popover_attrs={"data-side": "top", "class": "min-w-32"}, items=[ { type: "item", label: "Auto" }, { type: "item", label: "Agent" }, { type: "item", label: "Manual" } ] ) }}
52% used

{% lucide "check" %}
{% endset %} {{ code_preview("input-group-default", code_default, class="w-full max-w-sm") }}

Usage

Input groups are pure HTML composition using Tailwind utility classes. There is no dedicated component: use relative positioning on a wrapper, add your content with absolute positioning, and adjust input padding to make room.

Browse the examples below and copy the pattern that fits your needs.

Examples

Icon

{% set code_icon %}
{% lucide "search" %}
{% lucide "mail" %}
{% lucide "credit-card" %}
{% lucide "check" %}
{% lucide "star" %} {% lucide "info" %}
{% endset %} {{ code_preview("input-group-icon-prefix", code_icon, class="w-full max-w-sm") }}

Text

{% set code_text %}
$
USD
https://
.com
@company.com
{% endset %} {{ code_preview("input-group-text", code_text, class="w-full max-w-sm") }}

Button

{% set code_button %}
{% set trigger %} {% lucide "info" %} {% endset %} {% call popover( trigger=trigger, trigger_attrs={"class": "btn-sm-icon-ghost rounded-full size-6"}, popover_attrs={"class": "max-w-72"} ) %}

Your connection is not secure.

You should not enter any sensitive information on this site.

{% endcall %}
https://
{% endset %} {{ code_preview("input-group-button", code_button, class="w-full max-w-sm") }}

Tooltip

{% set code_tooltip %}
{% lucide "info" %}
{% lucide "circle-help" %}
{% lucide "circle-help" %}
{% endset %} {{ code_preview("input-group-tooltip", code_tooltip, class="w-full max-w-sm") }}

Textarea

{% set code_textarea %}
script.js
{% endset %} {{ code_preview("input-group-textarea", code_textarea, class="w-full max-w-md") }}

Spinner

{% set code_spinner %}
{% lucide "loader-circle", { "class": "animate-spin" } %}
{% lucide "loader-circle", { "class": "animate-spin" } %}
Saving...
{% lucide "loader-circle", { "class": "animate-spin" } %}
{% lucide "loader", { "class": "animate-spin" } %}
Please wait...
{% endset %} {{ code_preview("input-group-spinner", code_spinner, class="w-full max-w-md") }}

Dropdown

{% set code_dropdown %}
{% set trigger %} {% lucide "ellipsis" %} {% endset %} {{ dropdown_menu( main_attrs={"class": "absolute right-1.5 top-1/2 -translate-y-1/2 z-10"}, trigger=trigger, trigger_attrs={"class": "btn-sm-icon-ghost text-muted-foreground hover:text-accent-foreground size-6"}, popover_attrs={"data-align": "end", "class": "min-w-32"}, items=[ { type: "item", label: "Settings" }, { type: "item", label: "Copy path" }, { type: "item", label: "Open location" } ] ) }}
{% set trigger %} Search in... {% lucide "chevron-down", { "class": "size-3" } %} {% endset %} {{ dropdown_menu( main_attrs={"class": "absolute right-1.5 top-1/2 -translate-y-1/2"}, trigger=trigger, trigger_attrs={"class": "btn-sm-ghost text-muted-foreground hover:text-accent-foreground p-2 h-6"}, popover_attrs={"data-align": "end", "class": "min-w-32"}, items=[ { type: "item", label: "Documentation" }, { type: "item", label: "Blog Posts" }, { type: "item", label: "Changelog" } ] ) }}
{% endset %} {{ code_preview("input-group-dropdown", code_dropdown, class="w-full max-w-sm") }}

Group

{% set code_group %}
{% lucide "link-2" %}
.com
{% endset %} {{ code_preview("input-group-group", code_group, class="w-full max-w-sm") }}