├── test ├── test_helper.exs ├── cookbook_web │ └── controllers │ │ ├── page_controller_test.exs │ │ ├── error_json_test.exs │ │ └── error_html_test.exs └── support │ └── conn_case.ex ├── native ├── .gitignore └── swiftui │ ├── Cookbook │ ├── Assets.xcassets │ │ ├── Contents.json │ │ └── AppIcon.appiconset │ │ │ ├── 16-mac.png │ │ │ ├── 32-mac.png │ │ │ ├── 64-mac.png │ │ │ ├── 1024-mac.png │ │ │ ├── 128-mac.png │ │ │ ├── 256-mac.png │ │ │ ├── 32-mac 1.png │ │ │ ├── 512-mac.png │ │ │ ├── AppIcon.jpg │ │ │ ├── 256-mac 1.png │ │ │ ├── 512-mac 1.png │ │ │ ├── AppIcon 1.jpg │ │ │ └── Contents.json │ ├── Preview Content │ │ └── Preview Assets.xcassets │ │ │ └── Contents.json │ ├── Cookbook.swift │ ├── ConnectingView.swift │ ├── ContentView.swift │ ├── DisconnectedView.swift │ ├── ReconnectingView.swift │ └── ErrorView.swift │ └── Cookbook.xcodeproj │ ├── project.xcworkspace │ └── contents.xcworkspacedata │ └── project.pbxproj ├── rel ├── overlays │ └── bin │ │ ├── server.bat │ │ └── server └── env.sh.eex ├── priv ├── static │ ├── favicon.ico │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── apple-touch-icon.png │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── robots.txt │ ├── site.webmanifest │ └── images │ │ └── logo.svg └── gettext │ ├── en │ └── LC_MESSAGES │ │ └── errors.po │ └── errors.pot ├── lib ├── cookbook_web │ ├── components │ │ ├── layouts_swiftui │ │ │ ├── app.swiftui.neex │ │ │ └── root.swiftui.neex │ │ ├── layouts.ex │ │ ├── layouts.swiftui.ex │ │ ├── layouts │ │ │ ├── root.html.heex │ │ │ └── app.html.heex │ │ └── core_components.swiftui.ex │ ├── controllers │ │ ├── page_html.ex │ │ ├── page_controller.ex │ │ ├── error_json.ex │ │ ├── error_html.ex │ │ └── page_html │ │ │ └── home.html.heex │ ├── live │ │ ├── recipes │ │ │ ├── card_row_live.ex │ │ │ ├── gesture_live.ex │ │ │ ├── onboarding_live.ex │ │ │ ├── playback_bar_live.ex │ │ │ ├── media_overview_live.ex │ │ │ ├── message_thread_live.ex │ │ │ ├── sectioned_grid_live.ex │ │ │ ├── drill_down_navigation_live.ex │ │ │ ├── charts_live.ex │ │ │ ├── drill_down_navigation_live.swiftui.ex │ │ │ ├── hub_and_spoke_navigation_live.ex │ │ │ ├── search_live.swiftui.ex │ │ │ ├── search_live.ex │ │ │ ├── maps_live.ex │ │ │ ├── tabs_live.swiftui.ex │ │ │ ├── tabs_live.ex │ │ │ ├── pyramid_navigation_live.ex │ │ │ ├── scroll_automation_live.ex │ │ │ ├── sectioned_grid_live.swiftui.ex │ │ │ ├── maps_live.swiftui.ex │ │ │ ├── video_live.ex │ │ │ ├── scroll_automation_live.swiftui.ex │ │ │ ├── charts_live.swiftui.ex │ │ │ ├── message_thread_live.swiftui.ex │ │ │ ├── video_live.swiftui.ex │ │ │ ├── onboarding_live.swiftui.ex │ │ │ ├── gesture_live.swiftui.ex │ │ │ ├── hub_and_spoke_navigation_live.swiftui.ex │ │ │ ├── card_row_live.swiftui.ex │ │ │ ├── pyramid_navigation_live.swiftui.ex │ │ │ ├── media_overview_live.swiftui.ex │ │ │ └── playback_bar_live.swiftui.ex │ │ ├── cookbook_live.ex │ │ └── cookbook_live.swiftui.ex │ ├── gettext.ex │ ├── styles │ │ └── app.swiftui.ex │ ├── endpoint.ex │ ├── telemetry.ex │ └── router.ex ├── cookbook.ex ├── cookbook │ └── application.ex ├── cookbook_web.ex └── cookbook_native.ex ├── .formatter.exs ├── assets ├── css │ └── app.css ├── js │ └── app.js ├── tailwind.config.js └── vendor │ └── topbar.js ├── .github └── workflows │ └── fly.yml ├── config ├── test.exs ├── prod.exs ├── config.exs ├── dev.exs └── runtime.exs ├── README.md ├── fly.toml ├── .gitignore ├── .dockerignore ├── mix.exs ├── Dockerfile └── mix.lock /test/test_helper.exs: -------------------------------------------------------------------------------- 1 | ExUnit.start() 2 | -------------------------------------------------------------------------------- /native/.gitignore: -------------------------------------------------------------------------------- 1 | xcuserdata 2 | xcshareddata 3 | -------------------------------------------------------------------------------- /rel/overlays/bin/server.bat: -------------------------------------------------------------------------------- 1 | set PHX_SERVER=true 2 | call "%~dp0\cookbook" start 3 | -------------------------------------------------------------------------------- /priv/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liveview-native/cookbook/HEAD/priv/static/favicon.ico -------------------------------------------------------------------------------- /lib/cookbook_web/components/layouts_swiftui/app.swiftui.neex: -------------------------------------------------------------------------------- 1 | <.flash_group flash={@flash} /> 2 | <%= @inner_content %> -------------------------------------------------------------------------------- /priv/static/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liveview-native/cookbook/HEAD/priv/static/favicon-16x16.png -------------------------------------------------------------------------------- /priv/static/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liveview-native/cookbook/HEAD/priv/static/favicon-32x32.png -------------------------------------------------------------------------------- /priv/static/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liveview-native/cookbook/HEAD/priv/static/apple-touch-icon.png -------------------------------------------------------------------------------- /rel/overlays/bin/server: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -eu 3 | 4 | cd -P -- "$(dirname -- "$0")" 5 | PHX_SERVER=true exec ./cookbook start 6 | -------------------------------------------------------------------------------- /priv/static/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liveview-native/cookbook/HEAD/priv/static/android-chrome-192x192.png -------------------------------------------------------------------------------- /priv/static/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liveview-native/cookbook/HEAD/priv/static/android-chrome-512x512.png -------------------------------------------------------------------------------- /native/swiftui/Cookbook/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /lib/cookbook_web/components/layouts.ex: -------------------------------------------------------------------------------- 1 | defmodule CookbookWeb.Layouts do 2 | use CookbookWeb, :html 3 | 4 | embed_templates "layouts/*" 5 | end 6 | -------------------------------------------------------------------------------- /lib/cookbook_web/controllers/page_html.ex: -------------------------------------------------------------------------------- 1 | defmodule CookbookWeb.PageHTML do 2 | use CookbookWeb, :html 3 | 4 | embed_templates "page_html/*" 5 | end 6 | -------------------------------------------------------------------------------- /native/swiftui/Cookbook/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.formatter.exs: -------------------------------------------------------------------------------- 1 | [ 2 | import_deps: [:phoenix], 3 | plugins: [Phoenix.LiveView.HTMLFormatter], 4 | inputs: ["*.{heex,ex,exs}", "{config,lib,test}/**/*.{heex,ex,exs}"] 5 | ] 6 | -------------------------------------------------------------------------------- /assets/css/app.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss/base"; 2 | @import "tailwindcss/components"; 3 | @import "tailwindcss/utilities"; 4 | 5 | /* This file is for your main application CSS */ 6 | -------------------------------------------------------------------------------- /native/swiftui/Cookbook/Assets.xcassets/AppIcon.appiconset/16-mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liveview-native/cookbook/HEAD/native/swiftui/Cookbook/Assets.xcassets/AppIcon.appiconset/16-mac.png -------------------------------------------------------------------------------- /native/swiftui/Cookbook/Assets.xcassets/AppIcon.appiconset/32-mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liveview-native/cookbook/HEAD/native/swiftui/Cookbook/Assets.xcassets/AppIcon.appiconset/32-mac.png -------------------------------------------------------------------------------- /native/swiftui/Cookbook/Assets.xcassets/AppIcon.appiconset/64-mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liveview-native/cookbook/HEAD/native/swiftui/Cookbook/Assets.xcassets/AppIcon.appiconset/64-mac.png -------------------------------------------------------------------------------- /lib/cookbook_web/components/layouts.swiftui.ex: -------------------------------------------------------------------------------- 1 | defmodule CookbookWeb.Layouts.SwiftUI do 2 | use CookbookNative, [:layout, format: :swiftui] 3 | 4 | embed_templates "layouts_swiftui/*" 5 | end 6 | -------------------------------------------------------------------------------- /lib/cookbook_web/components/layouts_swiftui/root.swiftui.neex: -------------------------------------------------------------------------------- 1 | <.csrf_token /> 2 |