# Narabe v0.1.0 - API Reference

## Modules

- Components
  - [Narabe](Narabe.md): Lists, trees and boards that people reorder, for Phoenix LiveView: the
components in `Narabe.Components` (`sortable_list/1`, `tree/1`,
`board/1`, `tree_picker/1`), and the order in your database with
`Narabe.Ecto`.
  - [Narabe.Components](Narabe.Components.md): Lists, trees and boards that people reorder: `sortable_list/1`,
`tree/1`, `board/1`, and `tree_picker/1` to choose a place in a tree.
  - [Narabe.Live](Narabe.Live.md): Helpers for the LiveView of a list, a tree or a board.
  - [Narabe.Messages](Narabe.Messages.md): The words of the lists, trees and boards: button labels, what a screen
reader hears as items are lifted, moved and dropped, and why a move was
refused.
  - [Narabe.Tree](Narabe.Tree.md): A tree's items, flat, as a page shows them: each after its parent, with
its level and its place among its siblings.

- Order and moves
  - [Narabe.Move](Narabe.Move.md): A move, as a drop sends it: these items (one, or several selected), into
this parent (a tree's item, a board's column, or `nil` for the top level
or a plain list), right after one item, or right before another.
  - [Narabe.Position](Narabe.Position.md): Position keys: a text per item that sorts between its neighbours, so
that moving an item writes that one row, and two people moving at once
both land.
  - [Narabe.Rules](Narabe.Rules.md): What may go where: the same rules in the browser, as people drag (a drop
that breaks them is not offered), and on the server, as `Narabe.Ecto`
applies a move (one that breaks them is refused).

- Database
  - [Narabe.Ecto](Narabe.Ecto.md): Order in your database: a move applied in one transaction, positions for
new rows, a list's keys spread out again, and the order to read it in.
The same on Postgres, MySQL and SQLite.
  - [Narabe.Migration](Narabe.Migration.md): The column of an item's position, in a migration: a text compared byte
by byte, as position keys must be (see `Narabe.Position`).
  - [Narabe.Ordered](Narabe.Ordered.md): A schema's order, declared once: the options of `Narabe.Ecto` that every
call on the schema then takes.

- With Issho
  - [Narabe.Issho](Narabe.Issho.md): People and agents seen moving things, with
[Issho](https://hex.pm/packages/issho): a list, a tree or a board
shows the item each person is on, the items someone is dragging (in
their color, with their name) and where they would land, and an agent
that moves items goes to them and drags them there before the move
lands, for the people who watch.

- Testing
  - [Narabe.Test](Narabe.Test.md): Helpers for `Phoenix.LiveViewTest`, to move, open, rename and pick in
tests with no browser.

## Mix Tasks

- [mix narabe.build](Mix.Tasks.Narabe.Build.md): Builds Narabe into `priv/static`.
- [mix narabe.install](Mix.Tasks.Narabe.Install.md): Sets up Narabe in a Phoenix application.
- [mix narabe.release_check](Mix.Tasks.Narabe.ReleaseCheck.md): Checks the built files before a release of Narabe.

