canonrs-server 0.1.0

CanonRS server-side rendering support
id: combobox
label: Combobox
family: family-b-selection
category: Form
intent: Search and select from a list
description: Searchable combo box
composable: true
capabilities: OpenClose, Disabled
required_parts: ["ComboboxTrigger", "ComboboxList", "ComboboxItem"]
optional_parts: []
tags: ["combobox", "search", "autocomplete", "filter", "combo"]
keywords: 
pain: Searchable selects break ARIA roles and keyboard navigation
promise: Combobox roles and interaction fully enforced by structure
why: |
  ComboboxPrimitive defines proper ARIA roles and input behavior. SelectionState and VisibilityState control dropdown interaction. This guarantees accessible and predictable combobox behavior.
rules: ["CR-001", "CR-004"]
use_cases: ["autocomplete", "search dropdown"]
related: ["select", "radio", "radio_group", "color_picker", "slider"]
file: combobox_ui.css
tokens: combobox-*, space-*, size-*, radius-*, shadow-*, motion-*, font-*
foundation: spacing, size, radius, shadow, motion, typography
states: ["open", "closed", "selected", "disabled"]
island: combobox_boundary.rs
pillar: select
badges: ["SSR Safe", "Hydration Safe", "Token Driven", "Deterministic API", "Zero Drift", "Island Architecture"]
before: |
  // ❌ Typical
  view! {
    <input type="text" />
    <ul><li>"Option"</li></ul>
  }
after: |
  // ✅ CanonRS
  view! {
    <Combobox>
      <ComboboxTrigger>"Select..."</ComboboxTrigger>
      <ComboboxList>
        <ComboboxItem value="1">"Option"</ComboboxItem>
      </ComboboxList>
    </Combobox>
  }
boundary_type: interaction
ix_group: ix_selection
block: []
blocks_primitives: [stack]