# Xenia v0.1.1 - API Reference

## Modules

- Core: JS islands
  - [Xenia](Xenia.md): Any JavaScript library in a Phoenix LiveView page.
  - [Xenia.Component](Xenia.Component.md): Renders the LiveView-owned container for a Xenia adapter.
  - [Xenia.Components](Xenia.Components.md): Defines typed Phoenix function components for Xenia adapters.
  - [Xenia.Provider](Xenia.Provider.md): Publishes application-wide values to Xenia adapters.
  - [Xenia.Shortcuts](Xenia.Shortcuts.md): Keyboard shortcuts for a JS island, handled in your LiveView.

- App folder: pages from folders
  - [Xenia.Layout](Xenia.Layout.md): A layout in a Xenia app folder: a frame around every page in its folder
and below.
  - [Xenia.Live](Xenia.Live.md): The shared LiveView of a `live.ex`: one LiveView owns every page in its
folder and below.
  - [Xenia.Metadata](Xenia.Metadata.md): Page titles, descriptions and social-card tags for an app folder.
  - [Xenia.Page](Xenia.Page.md): A page in a Xenia app folder: the `page.ex` that makes its folder a route.
  - [Xenia.Persistent](Xenia.Persistent.md): A layout's persistent part: a LiveView that stays mounted, with its state
and its JavaScript components, while the user moves between the pages
under its layout. It lives in a `persistent.ex` next to the `layout.ex`;
the module name is yours.
  - [Xenia.Routes](Xenia.Routes.md): Generates Phoenix LiveView routes from a Xenia app folder.
  - [Xenia.Sitemap](Xenia.Sitemap.md): A `sitemap.xml` built from your app folder's pages.

- Official adapters
  - [Xenia.Adapters.Chartjs](Xenia.Adapters.Chartjs.md): `<.chartjs>`: a Chart.js chart, through Xenia's official Chart.js adapter.
  - [Xenia.Adapters.D3](Xenia.Adapters.D3.md): `<.d3_chart>`: data-driven charts (D3), through Xenia's official adapter.
  - [Xenia.Adapters.Flatpickr](Xenia.Adapters.Flatpickr.md): `<.flatpickr>`: a date and time picker (flatpickr), through Xenia's official adapter.
  - [Xenia.Adapters.FullCalendar](Xenia.Adapters.FullCalendar.md): `<.full_calendar>`: a calendar (FullCalendar), through Xenia's official adapter.
  - [Xenia.Adapters.Leaflet](Xenia.Adapters.Leaflet.md): `<.leaflet_map>`: an interactive map (Leaflet), through Xenia's official adapter.
  - [Xenia.Adapters.Monaco](Xenia.Adapters.Monaco.md): Phoenix function component for Xenia's Monaco adapter.
  - [Xenia.Adapters.MonacoDiff](Xenia.Adapters.MonacoDiff.md): `<.monaco_diff>`: Monaco's diff editor, through Xenia's official adapter.
  - [Xenia.Adapters.ShoelaceRating](Xenia.Adapters.ShoelaceRating.md): `<.shoelace_rating>`: a star rating (Shoelace's <sl-rating>), through Xenia's official adapter.
  - [Xenia.Adapters.SortableJS](Xenia.Adapters.SortableJS.md): `<.sortable_list>`: drag-and-drop lists (SortableJS), through Xenia's official adapter.
  - [Xenia.Adapters.Tabulator](Xenia.Adapters.Tabulator.md): `<.tabulator>`: an interactive data table (Tabulator), through Xenia's official adapter.
  - [Xenia.Adapters.Tiptap](Xenia.Adapters.Tiptap.md): `<.tiptap>`: a rich-text editor (Tiptap), through Xenia's official adapter.
  - [Xenia.Adapters.TomSelect](Xenia.Adapters.TomSelect.md): `<.tom_select>`: a searchable select and tag picker (Tom Select), through Xenia's official adapter.
  - [Xenia.Adapters.Uppy](Xenia.Adapters.Uppy.md): `<.uppy>`: a file upload dashboard (Uppy), through Xenia's official adapter.
  - [Xenia.Adapters.WaveSurfer](Xenia.Adapters.WaveSurfer.md): `<.wavesurfer>`: an audio waveform (WaveSurfer.js), through Xenia's official adapter.
  - [Xenia.Adapters.WaveSurferMultitrack](Xenia.Adapters.WaveSurferMultitrack.md): `<.wavesurfer_multitrack>`: a multitrack audio studio with recording, through Xenia's official adapter.
  - [Xenia.Adapters.Xterm](Xenia.Adapters.Xterm.md): `<.xterm>`: a terminal (xterm.js), through Xenia's official adapter.

- App folder internals
  - [Xenia.Routes.Discovery](Xenia.Routes.Discovery.md): Turns paths in the app directory into routes. Pure: paths in, structs out.
Only `scan/1` reads the filesystem.
  - [Xenia.Routes.Page](Xenia.Routes.Page.md): A page found in the app directory. Paths are relative to the app root.
  - [Xenia.Routes.PageModule](Xenia.Routes.PageModule.md): Finds the module a `page.ex` defines, without running the file.
  - [Xenia.Routes.Route](Xenia.Routes.Route.md): A discovered page with its modules resolved, ready to become a `live` route.

## Mix Tasks

- [mix xenia.gen.component](Mix.Tasks.Xenia.Gen.Component.md): Generates a component for a JavaScript library: the adapter that drives
the library, and a typed HEEx tag for it.
- [mix xenia.gen.layout](Mix.Tasks.Xenia.Gen.Layout.md): Generates a `layout.ex` in the app folder: a frame around every page in
its folder and below.
- [mix xenia.gen.page](Mix.Tasks.Xenia.Gen.Page.md): Generates a `page.ex` in the app folder, which makes its folder a route.
- [mix xenia.install](Mix.Tasks.Xenia.Install.md): Turns a freshly generated Phoenix 1.8 app into a Xenia app.
- [mix xenia.routes](Mix.Tasks.Xenia.Routes.md): Prints every route `xenia_routes` generated: its path, its page, the
LiveView that serves it (a `live.ex` owner for shared pages), and its
layouts, outermost first, with their persistent parts.

