#![allow(unused_must_use)]

use iced::{
    Center, Element, Length, Task, font,
    widget::{column, row},
};
use iced_fonts::{DEVICON_FONT_BYTES, devicon::*};

pub fn main() -> iced::Result {
    iced::application(App::new, App::update, App::view)
        .title("devicon")
        .run()
}

#[derive(Default)]
struct App {}

#[derive(Debug, Clone, Copy)]
enum Message {
    FontLoaded(Result<(), font::Error>),
}

impl App {
    fn new() -> (Self, Task<Message>) {
        (
            Self {},
            Task::batch(vec![
                font::load(DEVICON_FONT_BYTES).map(Message::FontLoaded),
            ]),
        )
    }

    fn update(&mut self, message: Message) {
        match message {
            Message::FontLoaded(result) => {
                dbg!(result);
            }
        }
    }

    fn view(&self) -> Element<Message> {
        column![
            row![
                space(),
                aarchsixfour(),
                adonisjs(),
                git(),
                bitbucket(),
                mysql(),
                aftereffects(),
                database(),
                dropbox(),
                akka(),
                github(),
                algolia(),
                wordpress(),
                visualstudio(),
                jekyll(),
                android(),
                windows(),
                stackoverflow(),
                apple(),
                linux(),
                alpinejs(),
                ghost_small(),
                anaconda(),
                codepen(),
                github_full(),
                nodejs_small(),
                nodejs(),
                androidstudio(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                ember(),
                angularjs(),
                django(),
                npm(),
                ghost(),
                angularmaterial(),
                unity(),
                raspberry_pi(),
                ansible(),
                go(),
                git_branch(),
                git_pull_request(),
                git_merge(),
                git_compare(),
                git_commit(),
                antdesign(),
                apache(),
                apacheairflow(),
                smashing_magazine(),
                apachekafka(),
                apachespark(),
                apl(),
                appwrite(),
                archlinux(),
                arduino(),
                argocd(),
                astro(),
                htmlfive(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                scala(),
                java(),
                ruby(),
                ubuntu(),
                rails(),
                python(),
                php(),
                markdown(),
                laravel(),
                magento(),
                awk(),
                drupal(),
                chrome(),
                ie(),
                firefox(),
                opera(),
                bootstrap(),
                safari(),
                cssthree(),
                cssthree_full(),
                sass(),
                grunt(),
                bower(),
                javascript_alt(),
                axios(),
                jquery(),
                coffeescript(),
                backbonejs(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                angular(),
                azure(),
                swift(),
                azuredevops(),
                symfony(),
                less(),
                stylus(),
                trello(),
                azuresqldatabase(),
                jira(),
                babel(),
                ballerina(),
                bamboo(),
                bash(),
                beats(),
                behance(),
                gulp(),
                atom(),
                blazor(),
                blender(),
                jenkins(),
                clojure(),
                perl(),
                clojure_alt(),
                browserstack(),
                bulma(),
                redis(),
                postgresql(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                bun(),
                requirejs(),
                c_lang(),
                typothree(),
                cairo(),
                doctrine(),
                groovy(),
                nginx(),
                haskell(),
                zend(),
                gnu(),
                cakephp(),
                heroku(),
                canva(),
                debian(),
                travis(),
                dotnet(),
                codeigniter(),
                javascript(),
                yii(),
                composer(),
                krakenjs(),
                capacitor(),
                mozilla(),
                firebase(),
                carbon(),
                cassandra(),
                centos(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                ceylon(),
                circleci(),
                clarity(),
                clion(),
                mootools_badge(),
                clojurescript(),
                ruby_rough(),
                cloudflare(),
                cloudflareworkers(),
                cmake(),
                terminal(),
                codeac(),
                codecov(),
                dart(),
                confluence(),
                consul(),
                contao(),
                dreamweaver(),
                corejs(),
                eclipse(),
                cosmosdb(),
                couchbase(),
                prolog(),
                couchdb(),
                cplusplus(),
                mongodb(),
                meteor(),
                meteorfull(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                fsharp(),
                rust(),
                ionic(),
                sublime(),
                appcelerator(),
                crystal(),
                amazonwebservices(),
                digitalocean(),
                dlang(),
                docker(),
                erlang(),
                csharp(),
                grails(),
                illustrator(),
                intellij(),
                materializecss(),
                cucumber(),
                photoshop(),
                cypressio(),
                react(),
                redhat(),
                dthreejs(),
                datagrip(),
                dataspell(),
                dbeaver(),
                denojs(),
                devicon(),
                discordjs(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                djangorest(),
                sqlite(),
                vim(),
                dotnetcore(),
                dropwizard(),
                dynamodb(),
                ecto(),
                elasticsearch(),
                electron(),
                eleventy(),
                elixir(),
                elm(),
                emacs(),
                embeddedc(),
                envoy(),
                eslint(),
                express(),
                facebook(),
                fastapi(),
                fastify(),
                faunadb(),
                feathersjs(),
                fedora(),
                figma(),
                filezilla(),
                flask(),
                flutter(),
                fortran(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                foundation(),
                framermotion(),
                frameworkseven(),
                gatling(),
                gatsby(),
                gazebo(),
                gcc(),
                gentoo(),
                gimp(),
                gitbook(),
                githubactions(),
                githubcodespaces(),
                gitlab(),
                gitpod(),
                gitter(),
                godot(),
                goland(),
                google(),
                googlecloud(),
                gradle(),
                grafana(),
                graphql(),
                grpc(),
                hadoop(),
                handlebars(),
                hardhat(),
                harvester(),
                haxe(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                helm(),
                hibernate(),
                homebrew(),
                hugo(),
                ifttt(),
                influxdb(),
                inkscape(),
                insomnia(),
                jaegertracing(),
                jamstack(),
                jasmine(),
                jeet(),
                jest(),
                jetbrains(),
                jetpackcompose(),
                jiraalign(),
                json(),
                jule(),
                julia(),
                junit(),
                jupyter(),
                kthreeos(),
                kthrees(),
                ksix(),
                kaggle(),
                karatelabs(),
                karma(),
                kdeneon(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                keras(),
                kibana(),
                knexjs(),
                knockout(),
                kotlin(),
                ktor(),
                kubernetes(),
                labview(),
                latex(),
                linkedin(),
                liquibase(),
                livewire(),
                llvm(),
                lodash(),
                logstash(),
                lua(),
                lumen(),
                mariadb(),
                materialui(),
                matlab(),
                matplotlib(),
                maven(),
                maya(),
                microsoftsqlserver(),
                minitab(),
                mithril(),
                mobx(),
                mocha(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                modx(),
                moleculer(),
                mongoose(),
                moodle(),
                msdos(),
                nano(),
                neofourj(),
                neovim(),
                nestjs(),
                netlify(),
                networkx(),
                nextjs(),
                ngrx(),
                nhibernate(),
                nim(),
                nimble(),
                nixos(),
                nodemon(),
                nodewebkit(),
                nomad(),
                norg(),
                notion(),
                nuget(),
                numpy(),
                nuxtjs(),
                oauth(),
                objectivec(),
                ocaml(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                ohmyzsh(),
                okta(),
                openal(),
                openapi(),
                opencl(),
                opencv(),
                opengl(),
                openstack(),
                opensuse(),
                opentelemetry(),
                oracle(),
                ory(),
                pfivejs(),
                packer(),
                pandas(),
                pfsense(),
                phalcon(),
                phoenix(),
                photonengine(),
                phpstorm(),
                playwright(),
                plotly(),
                pnpm(),
                podman(),
                poetry(),
                polygon(),
                portainer(),
                postcss(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                postman(),
                powershell(),
                premierepro(),
                prisma(),
                processing(),
                prometheus(),
                protractor(),
                pulsar(),
                pulumi(),
                puppeteer(),
                purescript(),
                putty(),
                pycharm(),
                pypi(),
                pyscript(),
                pytest(),
                pytorch(),
                qodana(),
                qt(),
                quarkus(),
                quasar(),
                qwik(),
                r(),
                rabbitmq(),
                railway(),
                rancher(),
                reach(),
                reactbootstrap(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                reactnavigation(),
                reactrouter(),
                readthedocs(),
                realm(),
                rect(),
                redux(),
                renpy(),
                replit(),
                rider(),
                rocksdb(),
                rockylinux(),
                rollup(),
                ros(),
                rspec(),
                rstudio(),
                rubymine(),
                rxjs(),
                salesforce(),
                sanity(),
                scalingo(),
                scikitlearn(),
                sdl(),
                selenium(),
                sema(),
                sentry(),
                sequelize(),
                shopware(),
                shotgrid(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                sketch(),
                slack(),
                socketio(),
                solidity(),
                solidjs(),
                sonarqube(),
                sourcetree(),
                spack(),
                splunk(),
                spring(),
                spss(),
                spyder(),
                sqlalchemy(),
                sqldeveloper(),
                ssh(),
                stata(),
                storybook(),
                streamlit(),
                subversion(),
                supabase(),
                svelte(),
                swagger(),
                swiper(),
                tailwindcss(),
                tauri(),
                tensorflow(),
                terraform(),
                tex(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                thealgorithms(),
                threedsmax(),
                threejs(),
                titaniumsdk(),
                tomcat(),
                tortoisegit(),
                towergit(),
                traefikmesh(),
                traefikproxy(),
                trpc(),
                twitter(),
                typescript(),
                unifiedmodelinglanguage(),
                unix(),
                unrealengine(),
                uwsgi(),
                veight(),
                vagrant(),
                vala(),
                vault(),
                vercel(),
                vertx(),
                visualbasic(),
                vite(),
                vitejs(),
                vitess(),
                vitest(),
                vscode(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
            row![
                vsphere(),
                vuejs(),
                vuestorefront(),
                vuetify(),
                vyper(),
                wasm(),
                webflow(),
                weblate(),
                webpack(),
                webstorm(),
                windowsoneone(),
                woocommerce(),
                xamarin(),
                xcode(),
                xd(),
                xml(),
                yaml(),
                yarn(),
                yugabytedb(),
                yunohost(),
                zig(),
            ]
            .padding(12)
            .spacing(20)
            .width(Length::Fill)
            .align_y(Center),
        ]
        .into()
    }
}
