cotis-extras
Optional extension crates for Cotis: accessibility bridge traits and higher-level input managers.
Status: Early
0.1.0-alpharelease. APIs are still evolving alongside the core Cotis crates.
This repository contains accessibility and interactivity helpers only. It does not open a window, run layout, or draw pixels. Combine these crates with core Cotis crates, a layout engine, a pipe, and a renderer from the ecosystem below.
Workspace crates
| Crate | Role |
|---|---|
cotis-accessibility |
AccessKit bridge traits (AccessKitProvider, AccessibilityConfig) |
cotis-interactivity |
Mouse, keyboard, and scroll managers built on cotis-utils providers |
Architecture
flowchart LR
Renderer[Renderer_MouseProvider] --> Managers[cotis_interactivity_managers]
LayoutMgr[cotis_layout_ElementBoundingBox] --> Managers
Managers --> UI[UI_closure]
Elements[Accessible_elements] --> AccessKit[cotis_accessibility_AccessKitProvider]
AccessKit --> Platform[Platform_adapter]
- Render backends expose per-frame raw input through
cotis-utilsproviders (MouseProvider,SimpleKeyboardProvider, etc.). cotis-interactivitymanagers turn that state into UI-friendly signals: hover, click edges, key edges, scroll offsets.cotis-accessibilitydefines the contract between Cotis elements and platform accessibility adapters backed by AccessKit. No platform adapter ships in this repo.
Installation
Add the crates you need to your Cargo.toml:
= "0.1.0-alpha"
= "0.1.0-alpha"
= "0.1.0-alpha"
= "0.1.0-alpha"
cotis-accessibility also depends on accesskit directly for Role, Action, and related types.
A full desktop application also needs a layout engine, a pipe, and a renderer. See Quick start and Ecosystem.
Quick start
Clone a renderer backend and run its example:
Wire interactivity managers in your application state and call update(...) each frame after layout. Implement AccessKitProvider on your renderer or app shell for accessibility integration. See the crate-level docs for integration patterns.
Ecosystem
Cotis is split across several repositories. This repo provides optional accessibility and input helpers; sibling repos provide core traits, layout, pipes, and render backends.
| Repository | Role |
|---|---|
cotis |
Core traits and CotisApp orchestration |
cotis-layout |
Flexbox-style layout engine (CotisLayoutManager) |
cotis-pipes |
Layout output to render commands (CotisLayoutToRenderListPipeForGenerics) |
| cotis-extras (this repo) | Accessibility bridge traits and input managers |
cotis-wgpu |
Desktop renderer (wgpu + winit + glyphon) |
cotis-raylib |
Desktop renderer (raylib) |
cotis-renderer-template |
Scaffold for authoring a custom render backend |
cotis-cli |
Plugin host for installable build and run routines |
Pick a renderer backend and swap it without changing layout or UI code. Use cotis-renderer-template to implement a new backend.
Documentation
- API reference:
cargo doc --open -p cotis-interactivity - Published docs: cotis-accessibility, cotis-interactivity
- Core crate docs: cotis, cotis-utils