diff --git a/.changeset/tame-cups-shine.md b/.changeset/tame-cups-shine.md
new file mode 100644
index 00000000..b68cc661
--- /dev/null
+++ b/.changeset/tame-cups-shine.md
@@ -0,0 +1,19 @@
+---
+"@tailor-platform/app-shell": minor
+---
+
+Allow the standalone `Select`, `Combobox`, and `Autocomplete` (including their `.Async` variants) to receive an accessible name via `aria-label`, `aria-labelledby`, and `id`. Previously these props were silently dropped, leaving the combobox with only its current value as an accessible name — a WCAG 4.1.2 issue for filters and toolbars used outside a `Form`. The props are now forwarded to the underlying trigger/input.
+
+```tsx
+// Announced as "Direction filter, combobox" instead of just its value
+
+
+// Or point at a visible label
+From
+
+```
diff --git a/docs/components/autocomplete.md b/docs/components/autocomplete.md
index c98b92d5..f4b0eaad 100644
--- a/docs/components/autocomplete.md
+++ b/docs/components/autocomplete.md
@@ -27,17 +27,20 @@ import { Autocomplete } from "@tailor-platform/app-shell";
### Autocomplete Props
-| Prop | Type | Default | Description |
-| --------------- | ------------------------- | --------------- | ------------------------------------------------------------------- |
-| `items` | `I[]` | - | Suggestion items. May be a flat array or an array of `ItemGroup` |
-| `placeholder` | `string` | - | Placeholder text for the input |
-| `emptyText` | `string` | `"No results."` | Text shown when no items match |
-| `value` | `string` | - | Controlled value (raw input string) |
-| `defaultValue` | `string` | - | Initial value (uncontrolled) |
-| `onValueChange` | `(value: string) => void` | - | Called when the value changes |
-| `mapItem` | `(item: T) => MappedItem` | - | Map each item to its label, key, and optional custom render |
-| `className` | `string` | - | Additional CSS classes for the root container |
-| `disabled` | `boolean` | `false` | Disables the autocomplete |
+| Prop | Type | Default | Description |
+| ----------------- | ------------------------- | --------------- | ------------------------------------------------------------------- |
+| `items` | `I[]` | - | Suggestion items. May be a flat array or an array of `ItemGroup` |
+| `placeholder` | `string` | - | Placeholder text for the input |
+| `emptyText` | `string` | `"No results."` | Text shown when no items match |
+| `value` | `string` | - | Controlled value (raw input string) |
+| `defaultValue` | `string` | - | Initial value (uncontrolled) |
+| `onValueChange` | `(value: string) => void` | - | Called when the value changes |
+| `mapItem` | `(item: T) => MappedItem` | - | Map each item to its label, key, and optional custom render |
+| `className` | `string` | - | Additional CSS classes for the root container |
+| `disabled` | `boolean` | `false` | Disables the autocomplete |
+| `aria-label` | `string` | - | Accessible name for the input. Use when there is no visible label |
+| `aria-labelledby` | `string` | - | ID of the element(s) that label the input |
+| `id` | `string` | - | ID applied to the combobox input element |
### MappedItem
@@ -216,6 +219,11 @@ const suggestions = Autocomplete.useAsync({
- Input is keyboard accessible with arrow key navigation
- Pressing `Escape` closes the suggestion list
- Selecting a suggestion fills the input with the item's label
+- When used standalone (no visible `