Skip to content

[109e] Combobox primitive in shared/ui (bits-ui port) #114

@fedorovvvv

Description

@fedorovvvv

Sub-issue of #109.

Goal

Add a searchable, keyboard-navigable Combobox to template/src/shared/ui/ so HealthBar (109f) and future widgets can use it.

Scope

  • Wrap bits-ui Combobox (already a transitive dep via shadcn-svelte primitives).
  • Public surface mirrors existing primitives:
    • Combobox.svelte — root with bind:value, bind:open
    • ComboboxTrigger.svelte, ComboboxContent.svelte, ComboboxItem.svelte, ComboboxInput.svelte
    • Variants: default, mono (for HealthBar — matches font-mono header style)
    • Sizes: sm, md
    • class?: string forwarded to root, Snippet-based slots
  • Showcase on /playground — every variant × size combo, light + dark + orch themes.
  • Plain CSS + tokens from app/styles/app.css (rule 24).
  • Re-exported from shared/ui/index.ts.

Forgeplan

  • PRD-028 + RFC-023

Acceptance

  • /playground shows Combobox section with 2 variants × 2 sizes, search + keyboard nav working.
  • A11y: role=combobox, aria-expanded, aria-controls, focus-visible ring, escape-closes.
  • Type-check 0 errors, smoke green.
  • Rule 24 grep clean (no :global(.combobox-*) anywhere outside shared/ui/).

Depends on

  • (none — parallel with 109a–d)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions