gitextract_l9t_x8j8/ ├── .gitignore ├── LICENSE ├── README.md ├── addressbook/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ ├── App.kt │ │ │ │ ├── EditPanel.kt │ │ │ │ ├── ListPanel.kt │ │ │ │ └── Model.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ ├── css/ │ │ │ │ └── kvapp.css │ │ │ └── i18n/ │ │ │ ├── messages-en.po │ │ │ └── messages-pl.po │ │ └── jsTest/ │ │ ├── kotlin/ │ │ │ └── test/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── AppSpec.kt │ │ └── resources/ │ │ └── css/ │ │ └── kvapp.css │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── tailwind.js │ └── webpack.js ├── addressbook-fullstack-ktor/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── logs/ │ │ └── ktor.log │ ├── settings.gradle.kts │ ├── src/ │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ ├── Model.kt │ │ │ └── Service.kt │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ ├── App.kt │ │ │ │ ├── EditPanel.kt │ │ │ │ ├── ListPanel.kt │ │ │ │ ├── MainPanel.kt │ │ │ │ ├── Model.kt │ │ │ │ └── Security.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ ├── css/ │ │ │ │ └── kvapp.css │ │ │ └── i18n/ │ │ │ ├── messages-en.po │ │ │ ├── messages-pl.po │ │ │ └── messages.pot │ │ └── jvmMain/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ ├── Dao.kt │ │ │ ├── Db.kt │ │ │ ├── Main.kt │ │ │ └── Service.kt │ │ └── resources/ │ │ ├── application.conf │ │ └── logback.xml │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── proxy.js │ ├── tailwind.js │ └── webpack.js ├── addressbook-fullstack-spring-boot/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── application/ │ │ └── build.gradle.kts │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ ├── Model.kt │ │ │ └── Service.kt │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ ├── App.kt │ │ │ │ ├── EditPanel.kt │ │ │ │ ├── ListPanel.kt │ │ │ │ ├── MainPanel.kt │ │ │ │ ├── Model.kt │ │ │ │ └── Security.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ ├── css/ │ │ │ │ └── kvapp.css │ │ │ └── i18n/ │ │ │ ├── messages-en.po │ │ │ ├── messages-pl.po │ │ │ └── messages.pot │ │ └── jvmMain/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ ├── Main.kt │ │ │ ├── Security.kt │ │ │ └── Service.kt │ │ └── resources/ │ │ ├── application.yml │ │ ├── logback.xml │ │ └── schema.sql │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── proxy.js │ ├── tailwind.js │ └── webpack.js ├── addressbook-fullstack-spring-boot-oauth/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── application/ │ │ └── build.gradle.kts │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ ├── Model.kt │ │ │ └── Service.kt │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ ├── App.kt │ │ │ │ ├── EditPanel.kt │ │ │ │ ├── ListPanel.kt │ │ │ │ ├── MainPanel.kt │ │ │ │ ├── Model.kt │ │ │ │ └── Security.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ ├── css/ │ │ │ │ └── kvapp.css │ │ │ └── i18n/ │ │ │ ├── messages-en.po │ │ │ ├── messages-pl.po │ │ │ └── messages.pot │ │ └── jvmMain/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ ├── Main.kt │ │ │ ├── Security.kt │ │ │ └── Service.kt │ │ └── resources/ │ │ ├── application.yml │ │ ├── logback.xml │ │ └── schema.sql │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── proxy.js │ ├── tailwind.js │ └── webpack.js ├── addressbook-tabulator/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ ├── App.kt │ │ │ │ ├── EditPanel.kt │ │ │ │ ├── ListPanel.kt │ │ │ │ └── Model.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ ├── css/ │ │ │ │ └── kvapp.css │ │ │ └── i18n/ │ │ │ ├── messages-en.po │ │ │ └── messages-pl.po │ │ └── jsTest/ │ │ ├── kotlin/ │ │ │ └── test/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── AppSpec.kt │ │ └── resources/ │ │ └── css/ │ │ └── kvapp.css │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── tailwind.js │ └── webpack.js ├── desktop/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ ├── App.kt │ │ │ │ ├── Calculator.kt │ │ │ │ ├── DesktopIcon.kt │ │ │ │ ├── DesktopWindow.kt │ │ │ │ ├── Paint.kt │ │ │ │ ├── TextEditor.kt │ │ │ │ └── WebBrowser.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ └── css/ │ │ │ └── kvapp.css │ │ └── jsTest/ │ │ └── kotlin/ │ │ └── test/ │ │ └── com/ │ │ └── example/ │ │ └── AppSpec.kt │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── tailwind.js │ └── webpack.js ├── docs/ │ ├── addressbook/ │ │ ├── index.html │ │ ├── main.bundle.js │ │ └── main.bundle.js.LICENSE.txt │ ├── addressbook-tabulator/ │ │ ├── index.html │ │ ├── main.bundle.js │ │ └── main.bundle.js.LICENSE.txt │ ├── desktop/ │ │ ├── index.html │ │ ├── main.bundle.js │ │ └── main.bundle.js.LICENSE.txt │ ├── fomantic/ │ │ ├── index.html │ │ ├── main.bundle.js │ │ └── main.bundle.js.LICENSE.txt │ ├── helloworld/ │ │ ├── index.html │ │ └── main.bundle.js │ ├── patternfly/ │ │ ├── index.html │ │ ├── main.bundle.js │ │ └── main.bundle.js.LICENSE.txt │ ├── pokedex/ │ │ ├── index.html │ │ ├── main.bundle.js │ │ ├── main.bundle.js.LICENSE.txt │ │ ├── manifest.json │ │ ├── service-worker.js │ │ └── workbox-a7df7adf.js │ ├── showcase/ │ │ ├── index.html │ │ ├── showcase.js │ │ └── showcase.js.LICENSE.txt │ ├── template/ │ │ ├── index.html │ │ ├── template.js │ │ └── template.js.LICENSE.txt │ ├── template-tailwindcss/ │ │ ├── index.html │ │ └── template-tailwindcss.js │ └── todomvc/ │ ├── index.html │ ├── main.bundle.js │ └── package.json ├── encoder-fullstack-ktor/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── Service.kt │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ └── App.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ └── i18n/ │ │ │ ├── messages-en.po │ │ │ ├── messages-pl.po │ │ │ └── messages.pot │ │ └── jvmMain/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ ├── Main.kt │ │ │ └── Service.kt │ │ └── resources/ │ │ ├── application.conf │ │ └── logback.xml │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── proxy.js │ ├── tailwind.js │ └── webpack.js ├── fomantic/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ ├── App.kt │ │ │ │ ├── CardView.kt │ │ │ │ ├── Components.kt │ │ │ │ ├── State.kt │ │ │ │ ├── Toolbar.kt │ │ │ │ └── User.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ ├── css/ │ │ │ │ └── kvapp.css │ │ │ └── i18n/ │ │ │ ├── messages-en.po │ │ │ ├── messages-pl.po │ │ │ └── messages.pot │ │ └── jsTest/ │ │ └── kotlin/ │ │ └── test/ │ │ └── com/ │ │ └── example/ │ │ └── AppSpec.kt │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── jquery.js │ ├── tailwind.js │ └── webpack.js ├── helloworld/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ └── Helloworld.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ ├── css/ │ │ │ │ └── helloworld.css │ │ │ └── i18n/ │ │ │ ├── messages-de.po │ │ │ ├── messages-en.po │ │ │ ├── messages-es.po │ │ │ ├── messages-fr.po │ │ │ ├── messages-ja.po │ │ │ ├── messages-ko.po │ │ │ ├── messages-pl.po │ │ │ ├── messages-ru.po │ │ │ └── messages.pot │ │ └── jsTest/ │ │ └── kotlin/ │ │ └── test/ │ │ └── com/ │ │ └── example/ │ │ └── HelloworldSpec.kt │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── tailwind.js │ └── webpack.js ├── mini-template/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── src/ │ │ └── jsMain/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── App.kt │ │ └── resources/ │ │ └── index.html │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── tailwind.js │ └── webpack.js ├── patternfly/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ ├── App.kt │ │ │ │ ├── CardView.kt │ │ │ │ ├── Components.kt │ │ │ │ ├── ListView.kt │ │ │ │ ├── Model.kt │ │ │ │ ├── Redux.kt │ │ │ │ ├── TableView.kt │ │ │ │ ├── Toolbar.kt │ │ │ │ └── User.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ ├── css/ │ │ │ │ └── kvapp.css │ │ │ └── i18n/ │ │ │ ├── messages-en.po │ │ │ ├── messages-pl.po │ │ │ └── messages.pot │ │ └── jsTest/ │ │ └── kotlin/ │ │ └── test/ │ │ └── com/ │ │ └── example/ │ │ └── AppSpec.kt │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── tailwind.js │ └── webpack.js ├── pokedex/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ ├── App.kt │ │ │ │ ├── Model.kt │ │ │ │ └── PokeBox.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── modules/ │ │ │ └── i18n/ │ │ │ ├── messages-en.po │ │ │ ├── messages-pl.po │ │ │ └── messages.pot │ │ └── jsTest/ │ │ └── kotlin/ │ │ └── test/ │ │ └── com/ │ │ └── example/ │ │ └── AppSpec.kt │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── pwa.js │ ├── tailwind.js │ └── webpack.js ├── showcase/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ ├── BasicTab.kt │ │ │ │ ├── ButtonsTab.kt │ │ │ │ ├── ChartTab.kt │ │ │ │ ├── ContainersTab.kt │ │ │ │ ├── DataTab.kt │ │ │ │ ├── DragDropTab.kt │ │ │ │ ├── DropDownTab.kt │ │ │ │ ├── FormTab.kt │ │ │ │ ├── LayoutsTab.kt │ │ │ │ ├── ModalsTab.kt │ │ │ │ ├── RestTab.kt │ │ │ │ ├── Showcase.kt │ │ │ │ └── TabulatorTab.kt │ │ │ ├── ktml/ │ │ │ │ ├── rest.en.ktml │ │ │ │ ├── rest.pl.ktml │ │ │ │ ├── template1.en.ktml │ │ │ │ └── template1.pl.ktml │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ ├── css/ │ │ │ │ └── showcase.css │ │ │ └── i18n/ │ │ │ ├── messages-en.po │ │ │ ├── messages-pl.po │ │ │ └── messages.pot │ │ └── jsTest/ │ │ └── kotlin/ │ │ └── test/ │ │ └── com/ │ │ └── example/ │ │ └── ShowcaseSpec.kt │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── tailwind.js │ └── webpack.js ├── template/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ └── App.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── modules/ │ │ │ ├── css/ │ │ │ │ └── kvapp.css │ │ │ └── i18n/ │ │ │ ├── messages-en.po │ │ │ ├── messages-pl.po │ │ │ └── messages.pot │ │ └── jsTest/ │ │ └── kotlin/ │ │ └── test/ │ │ └── com/ │ │ └── example/ │ │ └── AppSpec.kt │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── tailwind.js │ └── webpack.js ├── template-tailwindcss/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ └── App.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ ├── modules/ │ │ │ │ ├── css/ │ │ │ │ │ └── kvapp.css │ │ │ │ └── i18n/ │ │ │ │ ├── messages-en.po │ │ │ │ ├── messages-pl.po │ │ │ │ └── messages.pot │ │ │ └── tailwind/ │ │ │ ├── tailwind.config.js │ │ │ └── tailwind.css │ │ └── jsTest/ │ │ └── kotlin/ │ │ └── test/ │ │ └── com/ │ │ └── example/ │ │ └── AppSpec.kt │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── tailwind.js │ └── webpack.js ├── todomvc/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ └── Todomvc.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── package.json │ │ └── jsTest/ │ │ └── kotlin/ │ │ └── test/ │ │ └── com/ │ │ └── example/ │ │ └── AppSpec.kt │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── tailwind.js │ └── webpack.js ├── todomvc-ballast/ │ ├── .gettext.json │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ ├── src/ │ │ ├── jsMain/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ ├── TodoContract.kt │ │ │ │ ├── TodoEventHandler.kt │ │ │ │ ├── TodoInputHandler.kt │ │ │ │ ├── TodoModel.kt │ │ │ │ ├── TodoModule.kt │ │ │ │ ├── TodoSavedStateAdapter.kt │ │ │ │ ├── TodoViewModel.kt │ │ │ │ └── Todomvc.kt │ │ │ └── resources/ │ │ │ ├── index.html │ │ │ └── package.json │ │ └── jsTest/ │ │ └── kotlin/ │ │ └── test/ │ │ └── com/ │ │ └── example/ │ │ └── AppSpec.kt │ └── webpack.config.d/ │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── tailwind.js │ └── webpack.js └── todomvc-signal/ ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── settings.gradle.kts ├── src/ │ ├── jsMain/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── Todomvc.kt │ │ └── resources/ │ │ ├── index.html │ │ └── package.json │ └── jsTest/ │ └── kotlin/ │ └── test/ │ └── com/ │ └── example/ │ └── AppSpec.kt └── webpack.config.d/ ├── bootstrap.js ├── css.js ├── file.js ├── handlebars.js ├── tailwind.js └── webpack.js