Packages
corex
0.1.1
0.1.2
0.1.1
0.1.0
0.1.0-rc.1
0.1.0-rc.0
0.1.0-beta.5
0.1.0-beta.4
0.1.0-beta.3
0.1.0-beta.2
0.1.0-beta.1
0.1.0-alpha.33
0.1.0-alpha.32
0.1.0-alpha.31
0.1.0-alpha.30
0.1.0-alpha.29
0.1.0-alpha.28
0.1.0-alpha.27
0.1.0-alpha.26
0.1.0-alpha.25
0.1.0-alpha.24
0.1.0-alpha.23
0.1.0-alpha.22
0.1.0-alpha.21
0.1.0-alpha.20
0.1.0-alpha.19
0.1.0-alpha.18
0.1.0-alpha.17
0.1.0-alpha.16
0.1.0-alpha.15
0.1.0-alpha.14
0.1.0-alpha.13
0.1.0-alpha.12
0.1.0-alpha.11
0.1.0-alpha.10
0.1.0-alpha.9
0.1.0-alpha.8
0.1.0-alpha.7
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
Accessible and unstyled UI components library written in Elixir and TypeScript that integrates Zag.js state machines into the Phoenix Framework.
Current section
Files
Jump to
Current section
Files
usage-rules/skills/corex-api/SKILL.md
---
name: corex-api
description: >-
Load when using Corex.Accordion.set_value, Corex.Dialog.open, phx-click with
Corex.* JS commands, socket helpers Corex.*(socket, id, …), controlled mode
with value assign, assign_async with accordion_skeleton, toast_group flash,
or mix usage_rules.search_docs set_value -p corex. For on_*_change subscriptions
use corex-events skill instead.
---
# Corex API
Imperative push API — not event subscriptions (`on_*_change` → **corex-events**).
## Client — `<.action>`
```heex
<.action class="button" phx-click={Corex.Accordion.set_value("faq", ["first"])}>
Open first
</.action>
```
## Server — socket helper
```elixir
def handle_event("open_first", _params, socket) do
{:noreply, Corex.Accordion.set_value(socket, "faq", ["first"])}
end
```
## Controlled mode
Pair `controlled`, `value`, and `on_value_change`:
```heex
<.accordion id="faq" controlled value={@open} on_value_change="faq_value_change" class="accordion" items={…} />
```
## Discovery
MCP `get_component { id: "<name>" }` → API section, or `mix usage_rules.search_docs "set_value" -p corex`.
Full checklist: sub-rule `corex:api`.