# Xenia v0.1.1 - Table of Contents ## Pages - [Xenia](readme.md) - [Changelog](changelog.md) - Guides - [Wrapping any JavaScript library](wrapping-a-library.md) - [What Xenia owns, what your adapter owns](ownership-boundary.md) - [Building pages from folders](app-folder.md) - [Icons, notifications and languages](icons-notifications-languages.md) ## 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 ), 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.