@Tutorial {

    @Intro(title: "The template") {
        This is a beginner tutorial. It shows how to create a simple "Hello, world!" app using ``Adwaita``.
        While there are instructions for building on macOS, _Adwaita for Swift_ works best on Linux.
    }

    @Section(title: "Installation") {
        @ContentAndMedia {
            Learn how to set up your Linux system or your Mac.
        }
        @Steps {
            @Step {
                **If you are on Linux,** install the [GNOME Builder IDE](https://flathub.org/apps/org.gnome.Builder).
                @Image(source: "Builder.png", alt: "GNOME Builder in the GNOME Software app store.")
            }
            @Step {
                **If you are on macOS,** install [Xcode](https://developer.apple.com/xcode/).
                Open your terminal client and follow the [installation instructions for Homebrew](https://brew.sh).
                Then, run `brew install libadwaita`.
                @Image(source: "InstallLibadwaita.png", alt: "The macOS Terminal application.")
            }
        }
    }

    @Section(title: "Clone the template repository") {
        @ContentAndMedia {
            The template repository provides a simple, working app that can be used as a starting point for your own app.
            In this section, you'll create a simple "Hello, world!" app and run the app.
        }
        @Steps {
            @Step {
                Open your terminal client and navigate to a directory you want to create the package in (e.g. `~/Documents/`).
                @Image(source: "ChangeDirectory.png", alt: "The GNOME Console app.")
            }
            @Step {
                Clone the template repository into the `HelloWorld` directory using `git clone https://github.com/AparokshaUI/AdwaitaTemplate HelloWorld`.

                This creates a directory `HelloWorld` containing the content of the [Adwaita Template](https://github.com/AparokshaUI/AdwaitaTemplate).
                @Image(source: "GitClone.png", alt: "The GNOME Console app.")
            }
            @Step {
                **If you are on Linux,** use the `Select a Folder...` button in the welcome window of GNOME Builder to open the `HelloWorld` directory.

                It will start to install the dependencies automatically.
                @Image(source: "OpenFolder.png", alt: "GNOME Builder's welcome view.")
            }
            @Step {
                **If you are on macOS,** use the `Open Existing Project...` button in the welcome window of Xcode to open the `HelloWorld` directory.
                @Image(source: "OpenXcode.png", alt: "Xcode's welcome view.")
            }
            @Step {
                Select the `Package.swift` file in the sidebar.

                This file defines that this Swift _package_ contains an executable, and lists the dependencies required by the executable.
                One can see that the Swift files that are part of the executable are located in the `Sources` folder.
                @Code(name: "Package.swift", file: "Package.swift")
            }
            @Step {
                Open the `io.github.AparokshaUI.AdwaitaTemplate.json` file.

                This file is relevant for Linux only.
                It informs the GNOME Builder about the required dependencies of your app, and how to build and install your app.
                It is called a [Flatpak manifest](https://docs.flatpak.org/en/latest/manifests.html).
                @Code(name: "io.github.AparokshaUI.AdwaitaTemplate.json", file: "io.github.AparokshaUI.AdwaitaTemplate.json")
            }
            @Step {
                The `Sources` folder contains the actual Swift code of your app.
                Open the `AdwaitaTemplate.swift` file to see the definition of an app and its user interface.
                @Code(name: "AdwaitaTemplate.swift", file: "AdwaitaTemplate.swift")
            }
            @Step {
                Run the app using the play button in Xcode or GNOME Builder.
                A window should open.

                On macOS, the window will look slightly different from the one in the screenshot. Note that libadwaita is built for Linux and therefore works best on Linux.
                @Image(source: "AdwaitaTemplate.png", alt: "The result.")
            }
        }
    }

}
