From 7705087ab7de5f7a70f79b4825b8a5ca5951a4b6 Mon Sep 17 00:00:00 2001 From: austincalvelage Date: Wed, 2 Sep 2026 18:47:31 -0600 Subject: [PATCH] feat(ui): add combobox --- .changeset/calm-combs-search.md | 2 + .../src/primitives/autocomplete/README.md | 8 +- .../autocomplete/autocomplete-context.ts | 4 + .../autocomplete/autocomplete-root.tsx | 25 ++- .../autocomplete/autocomplete-trigger.tsx | 42 ++++ .../autocomplete/autocomplete.test.tsx | 34 +++ .../src/primitives/autocomplete/parts.ts | 1 + .../swingset/src/components/DocsViewer.tsx | 1 + packages/swingset/src/lib/registry.ts | 12 + packages/swingset/src/stories/combobox.mdx | 64 ++++++ .../swingset/src/stories/combobox.stories.tsx | 81 +++++++ .../components/combobox/combobox.styles.ts | 92 ++++++++ .../components/combobox/combobox.test.tsx | 208 ++++++++++++++++++ .../mosaic/components/combobox/combobox.tsx | 167 ++++++++++++++ .../src/mosaic/components/combobox/index.ts | 19 ++ packages/ui/src/mosaic/styles/index.ts | 10 + 16 files changed, 767 insertions(+), 3 deletions(-) create mode 100644 .changeset/calm-combs-search.md create mode 100644 packages/headless/src/primitives/autocomplete/autocomplete-trigger.tsx create mode 100644 packages/swingset/src/stories/combobox.mdx create mode 100644 packages/swingset/src/stories/combobox.stories.tsx create mode 100644 packages/ui/src/mosaic/components/combobox/combobox.styles.ts create mode 100644 packages/ui/src/mosaic/components/combobox/combobox.test.tsx create mode 100644 packages/ui/src/mosaic/components/combobox/combobox.tsx create mode 100644 packages/ui/src/mosaic/components/combobox/index.ts diff --git a/.changeset/calm-combs-search.md b/.changeset/calm-combs-search.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/calm-combs-search.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/packages/headless/src/primitives/autocomplete/README.md b/packages/headless/src/primitives/autocomplete/README.md index a0b04ba7968..f643ca3b8ef 100644 --- a/packages/headless/src/primitives/autocomplete/README.md +++ b/packages/headless/src/primitives/autocomplete/README.md @@ -25,6 +25,7 @@ function MyAutocomplete() { onInputValueChange={setInputValue} > + {filtered.map(fruit => ( @@ -75,6 +76,7 @@ In this pattern, keep the outer `Popover` or `Dialog` as the source of truth for | ------------------------- | --------------- | ---------------------------------------- | | `Autocomplete.Root` | — | Root context provider | | `Autocomplete.Input` | `` | Text input that drives filtering | +| `Autocomplete.Trigger` | `