Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
7b67099
feat(InputGroup): new compound component with Addon, Suffix, and Butt…
pedromenezes1 Mar 18, 2026
cb314f3
feat(InputGroup): new compound component with Addon, Suffix, and Butt…
mattrothenberg Mar 18, 2026
15ecbc3
fix(InputGroup): show focus ring on container, not inner input
pedromenezes1 Mar 18, 2026
d3e141f
fix(InputGroup): address review feedback
pedromenezes1 Mar 18, 2026
d553d4b
fix(InputGroup): hide ring border when focus outline is visible
pedromenezes1 Mar 18, 2026
1f1a98d
fix(input-group): simplify flush button, improve consistency
pedromenezes1 Mar 19, 2026
e12f424
fix(InputGroup): restore focus ring styling after cherry-pick
pedromenezes1 Mar 19, 2026
509037c
docs(InputGroup): convert to MDX format
pedromenezes1 Mar 19, 2026
b3b3089
feat: InputGroup design updates + add tooltip variant for btn
najlaskr Mar 23, 2026
5056b21
feat(docs): add InputGroup to sidebar and HomeGrid
pedromenezes1 Mar 24, 2026
e39d423
feat(docs): use InputGroupHeroDemo (subdomain) in HomeGrid
pedromenezes1 Mar 24, 2026
4e04c42
feat(docs): hide label in InputGroup HomeGrid example
pedromenezes1 Mar 24, 2026
8a06d8a
fix(docs): remove label only from InputGroup HomeGrid example
pedromenezes1 Mar 24, 2026
d01312b
fix: restore legacy InputGroup export, fix addon padding for xs/sm si…
pedromenezes1 Mar 27, 2026
20d623d
chore: minimize index.ts diff, trim changeset, remove review file
pedromenezes1 Mar 27, 2026
f062dc1
fix: clean up InputGroup dead CSS, add forwardRef, export missing type
pedromenezes1 Mar 27, 2026
7185c9e
refactor: replace InputGroup imperative focus logic with native label…
pedromenezes1 Mar 28, 2026
f3221c4
feat: add InputGroup focusMode variant and sub-component registry met…
pedromenezes1 Mar 30, 2026
43a1be4
fix(lint): add 'auto' to non-color utilities allowlist in no-primitiv…
pedromenezes1 Mar 30, 2026
0855467
Merge remote-tracking branch 'origin/main' into feat/input-group-addon
pedromenezes1 Mar 30, 2026
1f89c3a
Merge branch 'main' into feat/input-group-addon
pedromenezes1 Mar 31, 2026
ddd73ec
Merge branch 'main' into feat/input-group-addon
pedromenezes1 Apr 4, 2026
9307cff
fix: address InputGroup code review feedback from bonk and stritt
pedromenezes1 Apr 5, 2026
89d9488
fix: hide focusMode from InputGroup public API using Omit pattern
pedromenezes1 Apr 5, 2026
191b3d9
revert: undo .gitignore change for kumo-docs-astro
pedromenezes1 Apr 6, 2026
03de7c0
fix: remove unused INTERNAL_FOCUS_MODE_VARIANTS constant
pedromenezes1 Apr 6, 2026
96f6920
docs: simplify changeset description for InputGroup
pedromenezes1 Apr 6, 2026
aa9c3e5
Merge branch 'main' into feat/input-group-addon
pedromenezes1 Apr 6, 2026
c9e2bc3
Merge remote-tracking branch 'origin/main' into feat/input-group-addon
pedromenezes1 Apr 9, 2026
48a93b0
feat: backward compat, button improvements, demo overhaul
pedromenezes1 Apr 9, 2026
01fb01c
Merge branch 'main' into feat/input-group-addon
pedromenezes1 Apr 10, 2026
94f057b
feat(input-group): auto-detect focusMode and improve individual mode …
pedromenezes1 Apr 10, 2026
9ac0985
Merge remote-tracking branch 'origin/main' into feat/input-group-addon
pedromenezes1 Apr 13, 2026
94be3e7
Merge remote-tracking branch 'origin/main' into feat/input-group-addon
pedromenezes1 Apr 14, 2026
e53aa30
Merge branch 'main' into feat/input-group-addon
pedromenezes1 Apr 17, 2026
6b10880
docs(input-group): convert JSX headings to markdown and improve table…
pedromenezes1 Apr 17, 2026
667aa35
Merge main into feat/input-group-addon: resolve sub-components.ts con…
pedromenezes1 Apr 17, 2026
bb67d2d
chore: drop unused sub-components.ts changes (fix already on main)
pedromenezes1 Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions .changeset/feat-input-group-revamp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
"@cloudflare/kumo": minor
"@cloudflare/kumo-docs-astro": patch
---

Add `InputGroup` compound component for composing decorated inputs

Compound structure: `InputGroup`, `InputGroup.Input`, `InputGroup.Addon`, `InputGroup.Suffix`, `InputGroup.Button`.

- Field integration — pass `label`, `description`, `error`, `required`, and `labelTooltip` directly to `InputGroup`
- Size variants (`xs`, `sm`, `base`, `lg`) propagate to all sub-components via context, including icon sizing in addons
- `InputGroup.Addon` — positions icons, text, or buttons at `align="start"` (default) or `align="end"` of the input
- `InputGroup.Suffix` — inline text suffix (e.g. `.workers.dev`)
- `InputGroup.Button` — ghost button for secondary actions with tooltip support
- Deprecated `InputGroup.Label` — use `InputGroup.Addon` instead
- Deprecated `InputGroup.Description` — use `InputGroup.Suffix` instead

```tsx
{/* Reveal / hide password */}
<InputGroup>
<InputGroup.Input
type={show ? "text" : "password"}
defaultValue="password"
aria-label="Password"
/>
<InputGroup.Addon align="end" className="pr-1">
<InputGroup.Button
size="sm"
aria-label={show ? "Hide password" : "Show password"}
onClick={() => setShow(!show)}
>
{show ? <EyeSlashIcon size={16} /> : <EyeIcon size={16} />}
</InputGroup.Button>
</InputGroup.Addon>
</InputGroup>
```

```tsx
{/* Search input */}
<InputGroup>
<InputGroup.Addon>
<MagnifyingGlassIcon className="text-kumo-subtle" />
</InputGroup.Addon>
<InputGroup.Input placeholder="Search..." />
</InputGroup>
```
1 change: 1 addition & 0 deletions lint/no-primitive-colors.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ const NON_COLOR_UTILITIES = new Set([
"current",
"inherit",
"none",
"auto",
// Border utilities (not colors)
"0",
"2",
Expand Down
1 change: 1 addition & 0 deletions packages/kumo-docs-astro/src/components/SidebarNav.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ const componentItems: NavItem[] = [
{ label: "Grid", href: "/components/grid" },
{ label: "Input", href: "/components/input" },
{ label: "InputArea", href: "/components/input-area" },
{ label: "InputGroup", href: "/components/input-group" },
{ label: "Label", href: "/components/label" },
{ label: "Layer Card", href: "/components/layer-card" },
{ label: "Link", href: "/components/link" },
Expand Down
7 changes: 7 additions & 0 deletions packages/kumo-docs-astro/src/components/demos/HomeGrid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import {
useKumoToastManager,
} from "@cloudflare/kumo";
import { ShikiProvider, CodeHighlighted } from "@cloudflare/kumo/code";
import { InputGroupDemo } from "~/components/demos/InputGroupDemo";
import {
MagnifyingGlassIcon,
PlusIcon,
Expand Down Expand Up @@ -67,6 +68,7 @@ const componentRoutes: Record<string, string> = {
grid: "/components/grid",
input: "/components/input",
"input-area": "/components/input-area",
"input-group": "/components/input-group",
label: "/components/label",
"layer-card": "/components/layer-card",
link: "/components/link",
Expand Down Expand Up @@ -416,6 +418,11 @@ export function HomeGrid() {
id: "input-area",
Component: <InputArea placeholder="Enter your name" />,
},
{
name: "InputGroup",
id: "input-group",
Component: <InputGroupDemo />,
},
{
name: "Meter",
id: "meter",
Expand Down
Loading
Loading