├── .gitignore ├── LICENSE ├── README.md ├── addressbook-fullstack-ktor ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ └── webpack.js ├── addressbook-fullstack-spring-boot-oauth ├── .gettext.json ├── .gitignore ├── README.md ├── application │ └── build.gradle.kts ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ └── webpack.js ├── addressbook-fullstack-spring-boot ├── .gettext.json ├── .gitignore ├── README.md ├── application │ └── build.gradle.kts ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ └── webpack.js ├── addressbook-tabulator ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ └── webpack.js ├── addressbook ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ └── webpack.js ├── desktop ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ └── webpack.js ├── docs ├── addressbook-tabulator │ ├── 1815e00441357e01619e.ttf │ ├── 2463b90d9a316e4e5294.woff2 │ ├── 2582b0e4bcf85eceead0.ttf │ ├── 89999bdf5d835c012025.woff2 │ ├── 914997e1bdfc990d0897.ttf │ ├── c210719e60948b211a12.woff2 │ ├── da94ef451f4969af06e6.ttf │ ├── index.html │ ├── main.bundle.js │ └── main.bundle.js.LICENSE.txt ├── addressbook │ ├── 1815e00441357e01619e.ttf │ ├── 2463b90d9a316e4e5294.woff2 │ ├── 2582b0e4bcf85eceead0.ttf │ ├── 89999bdf5d835c012025.woff2 │ ├── 914997e1bdfc990d0897.ttf │ ├── c210719e60948b211a12.woff2 │ ├── da94ef451f4969af06e6.ttf │ ├── index.html │ ├── main.bundle.js │ └── main.bundle.js.LICENSE.txt ├── desktop │ ├── 1815e00441357e01619e.ttf │ ├── 2463b90d9a316e4e5294.woff2 │ ├── 2582b0e4bcf85eceead0.ttf │ ├── 89999bdf5d835c012025.woff2 │ ├── 914997e1bdfc990d0897.ttf │ ├── c210719e60948b211a12.woff2 │ ├── da94ef451f4969af06e6.ttf │ ├── index.html │ ├── main.bundle.js │ └── main.bundle.js.LICENSE.txt ├── fomantic │ ├── index.html │ ├── main.bundle.js │ ├── main.bundle.js.LICENSE.txt │ ├── semantic.min.css │ └── themes │ │ └── default │ │ └── assets │ │ ├── fonts │ │ ├── brand-icons.eot │ │ ├── brand-icons.svg │ │ ├── brand-icons.ttf │ │ ├── brand-icons.woff │ │ ├── brand-icons.woff2 │ │ ├── icons.eot │ │ ├── icons.svg │ │ ├── icons.ttf │ │ ├── icons.woff │ │ ├── icons.woff2 │ │ ├── outline-icons.eot │ │ ├── outline-icons.svg │ │ ├── outline-icons.ttf │ │ ├── outline-icons.woff │ │ └── outline-icons.woff2 │ │ └── images │ │ └── flags.png ├── helloworld │ ├── index.html │ └── main.bundle.js ├── patternfly │ ├── 0239b22511e2cbe0741a.woff │ ├── 053c8708cdba2dac36e7.eot │ ├── 06037ca2cf8525d353a1.woff2 │ ├── 08322afb8640616a6228.jpg │ ├── 093a799496f66d24a551.eot │ ├── 0a38e7ad901439687fde.ttf │ ├── 0a4b379b6ff0ec5eacde.ttf │ ├── 0be5ef4bb345cde8d812.eot │ ├── 0c3175eaa942783912bc.ttf │ ├── 11855d3f3f99709dfac5.woff2 │ ├── 1353c4d0aedbc7afbc83.eot │ ├── 14f8b4c85aa91125dbb7.eot │ ├── 164a0ab4c909b911c99b.woff │ ├── 176868e8875b80fac8dc.eot │ ├── 1904b4e1c18b4fc19778.woff │ ├── 190776b0696119b93c71.woff2 │ ├── 1c45e67be7e91ed0a625.ttf │ ├── 23fc486b36786bafb3d3.woff │ ├── 24515e9b56a0ccb45480.woff │ ├── 246cf166b6945bf1c584.woff2 │ ├── 269ca6c83388f975ccfa.woff2 │ ├── 3023e2f376de504d668d.eot │ ├── 30e8d31f821a144fe52c.jpg │ ├── 323f30b3399fdc516b30.woff2 │ ├── 3278ae4a3a97d92b639c.woff2 │ ├── 34d0b88404c4cacdb933.eot │ ├── 35d01efdc213d0af0d00.woff │ ├── 3b693db01ef2135e3f14.jpg │ ├── 3cd11726d843ff40c40b.woff │ ├── 4363e0967fae81c7b2e9.eot │ ├── 4515cb6498e51adec9d8.eot │ ├── 47a03d213b0b35080e32.woff │ ├── 4a8547976f936fc4a6e2.eot │ ├── 4bc0afcdb6ba85a4c1fa.ttf │ ├── 4e7303418fcbe51f818f.ttf │ ├── 4f3a0124fea180a47d7a.eot │ ├── 4fa1de252bbe1c586243.eot │ ├── 549231141115a61fa57d.woff │ ├── 54b2e33870ba270ba774.woff2 │ ├── 56faebeaec23b1c7d7d3.jpg │ ├── 57649dc00d7d7f3e8303.ttf │ ├── 59058fe454d37a189fb9.woff2 │ ├── 5e77435167651c698aaa.ttf │ ├── 60cc25d4be2d99536ede.woff2 │ ├── 61142d93d0198cb3c160.woff2 │ ├── 6130c5df0f4986af98b7.eot │ ├── 61cde7438158d1e8f397.ttf │ ├── 64fbabef5af5f881f4cc.ttf │ ├── 65289047f4db5e556473.svg │ ├── 675eb11fb9e055cea6a4.woff2 │ ├── 69bf841bb989a0010972.woff2 │ ├── 7150021df2ae6bcf6c17.woff2 │ ├── 723874f47b7995027c3b.eot │ ├── 732b5ddbe8d56f5462b6.woff │ ├── 73ab4e0a0342b521248d.ttf │ ├── 750945a4e9323d09a528.ttf │ ├── 755f9be7c2de8991f989.eot │ ├── 77929aa7a8bd4b667229.woff │ ├── 7799d9401910e36d7bb2.woff │ ├── 7d5ee241230ae4dfcd25.eot │ ├── 800277ea3e98b616b60f.woff │ ├── 817d3df17057373e2c46.woff │ ├── 81853c2fb712de98ef66.ttf │ ├── 81aade5a7b362566b199.woff │ ├── 8337c6c044fba48ede0b.eot │ ├── 8584d6d2426caac44a12.woff2 │ ├── 86ba5ba47b776c463f38.eot │ ├── 88ade95ac9a035be7168.woff │ ├── 89a09f63411d174b18ea.woff2 │ ├── 8aae586c8c4d72be50c1.woff │ ├── 8d723ad7cfca2dfffacb.woff │ ├── 95cea96f95f5e7335023.ttf │ ├── 95fdf61ffc45f12737c2.woff2 │ ├── 99464515aba730eab16c.woff2 │ ├── ab4371a522c3fce8ad2d.woff2 │ ├── ac4ae66cc059959cf8b7.woff │ ├── ac78b4f2e64edfb5859a.woff │ ├── b5204399f16e72d2a60d.ttf │ ├── b64efab6836e719c0e31.jpg │ ├── b6f1c5d0f6f5656cd4da.ttf │ ├── b827a4430acb1d15184f.eot │ ├── bbfff1d4d46f6fe58416.woff2 │ ├── bc0502ffc24dc33b8c5a.woff │ ├── bd43f64ce4046b35e472.ttf │ ├── bfe9360ac1bb3b5fd3ea.ttf │ ├── c0276d79b017a9c2476b.woff │ ├── c2b7c03209f0d3558e85.woff2 │ ├── cb9cea9527d93dd0c49b.ttf │ ├── cf06a52fa81e76cc6b01.woff2 │ ├── cf20f64017e81d101f15.eot │ ├── d49398e959e1af4cecdd.eot │ ├── d6b6f0c7a2af826d139d.woff │ ├── d88b666483405a79d23a.eot │ ├── d8b3d123ad39e5f0d1cb.eot │ ├── db4223ab0faaec898da7.woff │ ├── e12873666d74f0ad16dc.ttf │ ├── e716d42b789e4e377872.eot │ ├── e7bea4af7086ce0144fc.woff │ ├── e9d4a1e9285e4454ef7e.woff │ ├── eae21d83bc3af219ce80.woff │ ├── ed58ea35cdc962672ed1.eot │ ├── eea28e73c0df6dbbb1ff.jpg │ ├── f06e568e0195a8a577d5.eot │ ├── f8525e8f2934024270c0.ttf │ ├── fc5dd5b7715de80aae18.svg │ ├── feb05e55fca18e8e964b.ttf │ ├── index.html │ ├── main.bundle.js │ └── main.bundle.js.LICENSE.txt ├── pokedex │ ├── icons │ │ ├── 128x128.png │ │ ├── 16x16.png │ │ ├── 24x24.png │ │ ├── 256x256.png │ │ ├── 32x32.png │ │ ├── 48x48.png │ │ ├── 512x512.png │ │ ├── 64x64.png │ │ └── 96x96.png │ ├── index.html │ ├── main.bundle.js │ ├── main.bundle.js.LICENSE.txt │ ├── manifest.json │ ├── service-worker.js │ └── workbox-a7df7adf.js ├── showcase │ ├── 0958e178b152237f7269.jpg │ ├── 0c63e069bbc944a0dd9e.gif │ ├── 1815e00441357e01619e.ttf │ ├── 2463b90d9a316e4e5294.woff2 │ ├── 2582b0e4bcf85eceead0.ttf │ ├── 41c5fffa848782b1d187.jpg │ ├── 5e6e572c071486f2318a.gif │ ├── 89999bdf5d835c012025.woff2 │ ├── 914997e1bdfc990d0897.ttf │ ├── c210719e60948b211a12.woff2 │ ├── da94ef451f4969af06e6.ttf │ ├── index.html │ ├── main.bundle.js │ └── main.bundle.js.LICENSE.txt ├── tailwindcss │ ├── 0958e178b152237f7269.jpg │ ├── 1815e00441357e01619e.ttf │ ├── 2463b90d9a316e4e5294.woff2 │ ├── 2582b0e4bcf85eceead0.ttf │ ├── 89999bdf5d835c012025.woff2 │ ├── 914997e1bdfc990d0897.ttf │ ├── c210719e60948b211a12.woff2 │ ├── da94ef451f4969af06e6.ttf │ ├── index.html │ └── main.bundle.js ├── template │ ├── index.html │ ├── main.bundle.js │ └── main.bundle.js.LICENSE.txt └── todomvc │ ├── index.html │ ├── main.bundle.js │ ├── node_modules │ ├── todomvc-app-css │ │ ├── index.css │ │ ├── package.json │ │ └── readme.md │ └── todomvc-common │ │ ├── base.css │ │ ├── base.js │ │ ├── package.json │ │ └── readme.md │ ├── package-lock.json │ └── package.json ├── encoder-fullstack-ktor ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ └── webpack.js ├── fomantic ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ │ │ ├── semantic.min.css │ │ │ └── themes │ │ │ └── default │ │ │ └── assets │ │ │ ├── fonts │ │ │ ├── brand-icons.eot │ │ │ ├── brand-icons.svg │ │ │ ├── brand-icons.ttf │ │ │ ├── brand-icons.woff │ │ │ ├── brand-icons.woff2 │ │ │ ├── icons.eot │ │ │ ├── icons.svg │ │ │ ├── icons.ttf │ │ │ ├── icons.woff │ │ │ ├── icons.woff2 │ │ │ ├── outline-icons.eot │ │ │ ├── outline-icons.svg │ │ │ ├── outline-icons.ttf │ │ │ ├── outline-icons.woff │ │ │ └── outline-icons.woff2 │ │ │ └── images │ │ │ └── flags.png │ └── jsTest │ │ └── kotlin │ │ └── test │ │ └── com │ │ └── example │ │ └── AppSpec.kt └── webpack.config.d │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ ├── jquery.js │ └── webpack.js ├── helloworld ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ └── webpack.js ├── mini-template ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── src │ └── jsMain │ │ ├── kotlin │ │ └── com │ │ │ └── example │ │ │ └── App.kt │ │ └── resources │ │ └── index.html └── webpack.config.d │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ └── webpack.js ├── patternfly ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ └── webpack.js ├── pokedex ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle.kts ├── src │ ├── jsMain │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── App.kt │ │ │ │ ├── Model.kt │ │ │ │ └── PokeBox.kt │ │ └── resources │ │ │ ├── icons │ │ │ ├── 128x128.png │ │ │ ├── 16x16.png │ │ │ ├── 24x24.png │ │ │ ├── 256x256.png │ │ │ ├── 32x32.png │ │ │ ├── 48x48.png │ │ │ ├── 512x512.png │ │ │ ├── 64x64.png │ │ │ └── 96x96.png │ │ │ ├── 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 │ └── webpack.js ├── showcase ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ │ └── resources │ │ │ ├── index.html │ │ │ └── modules │ │ │ ├── css │ │ │ └── showcase.css │ │ │ ├── hbs │ │ │ ├── rest.en.hbs │ │ │ ├── rest.pl.hbs │ │ │ ├── template1.en.hbs │ │ │ └── template1.pl.hbs │ │ │ ├── i18n │ │ │ ├── messages-en.po │ │ │ ├── messages-pl.po │ │ │ └── messages.pot │ │ │ └── img │ │ │ ├── cat.jpg │ │ │ └── dog.jpg │ └── jsTest │ │ └── kotlin │ │ └── test │ │ └── com │ │ └── example │ │ └── ShowcaseSpec.kt └── webpack.config.d │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ └── webpack.js ├── tailwindcss ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ │ │ └── img │ │ │ │ └── cat.jpg │ │ │ └── tailwind │ │ │ ├── tailwind.config.js │ │ │ └── tailwind.twcss │ └── jsTest │ │ └── kotlin │ │ └── test │ │ └── com │ │ └── example │ │ └── AppSpec.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.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ └── webpack.js ├── todomvc-ballast ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.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 │ │ │ ├── node_modules │ │ │ ├── todomvc-app-css │ │ │ │ ├── index.css │ │ │ │ ├── package.json │ │ │ │ └── readme.md │ │ │ └── todomvc-common │ │ │ │ ├── base.css │ │ │ │ ├── base.js │ │ │ │ ├── package.json │ │ │ │ └── readme.md │ │ │ ├── package-lock.json │ │ │ └── package.json │ └── jsTest │ │ └── kotlin │ │ └── test │ │ └── com │ │ └── example │ │ └── AppSpec.kt └── webpack.config.d │ ├── bootstrap.js │ ├── css.js │ ├── file.js │ ├── handlebars.js │ └── webpack.js └── todomvc ├── .gettext.json ├── .gitignore ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle.kts ├── src ├── jsMain │ ├── kotlin │ │ └── com │ │ │ └── example │ │ │ └── Todomvc.kt │ └── resources │ │ ├── index.html │ │ ├── node_modules │ │ ├── todomvc-app-css │ │ │ ├── index.css │ │ │ ├── package.json │ │ │ └── readme.md │ │ └── todomvc-common │ │ │ ├── base.css │ │ │ ├── base.js │ │ │ ├── package.json │ │ │ └── readme.md │ │ ├── package-lock.json │ │ └── package.json └── jsTest │ └── kotlin │ └── test │ └── com │ └── example │ └── AppSpec.kt └── webpack.config.d ├── bootstrap.js ├── css.js ├── file.js ├── handlebars.js └── webpack.js /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | heroku-addressbook.sh 3 | heroku-numbers.sh 4 | heroku-tweets.sh 5 | heroku-encoder.sh 6 | build.sh 7 | build-fullstack.sh 8 | *.imp 9 | *.ipr 10 | *.iws 11 | /.idea/ 12 | copytodocs.sh 13 | /encoder-fullstack-ktor/logs/ktor.log 14 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Compiling 6 | * compileKotlinJs - Compiles frontend sources. 7 | * compileKotlinJvm - Compiles backend sources. 8 | ### Running 9 | * jsBrowserDevelopmentRun - Starts a webpack dev server on port 3000 10 | * jvmRun - Starts a dev server on port 8080 11 | ### Packaging 12 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 13 | * jsJar - Packages a standalone "web" frontend jar with all required files into `build/libs/*.jar` 14 | * jvmJar - Packages a backend jar with compiled source files into `build/libs/*.jar` 15 | * jarWithJs - Packages a "fat" jar with all backend sources and dependencies while also embedding frontend resources into `build/libs/*.jar` 16 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | systemProp.kspVersion=2.2.0-RC-2.0.1 4 | systemProp.kiluaRpcVersion=0.0.34 5 | #Dependencies 6 | systemProp.kvisionVersion=9.1.0 7 | ktorVersion=3.1.3 8 | hikariVersion=3.2.0 9 | commonsCodecVersion=1.10 10 | jdbcNamedParametersVersion=1.1 11 | exposedVersion=0.17.14 12 | logbackVersion=1.5.18 13 | h2Version=1.4.197 14 | pgsqlVersion=42.2.2 15 | kweryVersion=0.17 16 | 17 | kotlin.mpp.stability.nowarn=true 18 | org.gradle.jvmargs=-Xmx2g 19 | kotlin.js.ir.output.granularity=per-file 20 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook-fullstack-ktor/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "addressbook-fullstack-ktor" 9 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/src/commonMain/kotlin/com/example/Service.kt: -------------------------------------------------------------------------------- 1 | package com.example 2 | 3 | import dev.kilua.rpc.annotations.RpcService 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | enum class Sort { 8 | FN, LN, E, F 9 | } 10 | 11 | @RpcService 12 | interface IAddressService { 13 | suspend fun getAddressList(search: String?, types: String, sort: Sort): List
14 | suspend fun addAddress(address: Address): Address 15 | suspend fun updateAddress(address: Address): Address 16 | suspend fun deleteAddress(id: Int): Boolean 17 | } 18 | 19 | @RpcService 20 | interface IProfileService { 21 | suspend fun getProfile(): Profile 22 | } 23 | 24 | @RpcService 25 | interface IRegisterProfileService { 26 | suspend fun registerProfile(profile: Profile, password: String): Boolean 27 | } 28 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Address Book 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/src/jsMain/resources/modules/css/kvapp.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook-fullstack-ktor/src/jsMain/resources/modules/css/kvapp.css -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/src/jvmMain/resources/application.conf: -------------------------------------------------------------------------------- 1 | ktor { 2 | deployment { 3 | port = 8080 4 | watch = [build/classes/kotlin/jvm/main] 5 | } 6 | 7 | application { 8 | modules = [com.example.MainKt.main] 9 | } 10 | } 11 | 12 | db { 13 | driver = "org.h2.Driver" 14 | jdbcUrl = "jdbc:h2:file:////tmp/example_ktor" 15 | username = null 16 | password = null 17 | } 18 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/webpack.config.d/proxy.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.proxy = [ 3 | { 4 | context: ["/rpc/*", "/rpcsse/*"], 5 | target: 'http://localhost:8080' 6 | }, 7 | { 8 | context: ["/login", "/logout"], 9 | target: 'http://localhost:8080' 10 | }, 11 | { 12 | context: ["/rpcws/*"], 13 | target: 'http://localhost:8080', 14 | ws: true 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /addressbook-fullstack-ktor/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/application/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | kotlin("jvm") 3 | id("org.springframework.boot") 4 | } 5 | 6 | dependencies { 7 | implementation(rootProject) 8 | implementation(project.dependencies.platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)) 9 | implementation("org.springframework.boot:spring-boot-devtools") 10 | } 11 | 12 | springBoot { 13 | mainClass.value(project.parent?.extra?.get("mainClassName")?.toString()) 14 | } 15 | 16 | tasks.named("bootRun") { 17 | jvmArgs = listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005") 18 | systemProperties = System.getProperties().toMap() as Map 19 | } 20 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | systemProp.kspVersion=2.2.0-RC-2.0.1 4 | systemProp.kiluaRpcVersion=0.0.34 5 | systemProp.springBootVersion=3.5.0 6 | #Dependencies 7 | systemProp.kvisionVersion=9.1.0 8 | coroutinesVersion=1.10.2 9 | r2dbcPostgresqlVersion=1.0.7.RELEASE 10 | r2dbcH2Version=1.0.0.RELEASE 11 | e4kVersion=0.8.0 12 | 13 | kotlin.mpp.stability.nowarn=true 14 | org.gradle.jvmargs=-Xmx2g 15 | kotlin.js.ir.output.granularity=per-file 16 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook-fullstack-spring-boot-oauth/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | @file:Suppress("UnstableApiUsage") 2 | 3 | pluginManagement { 4 | repositories { 5 | gradlePluginPortal() 6 | mavenCentral() 7 | mavenLocal() 8 | } 9 | } 10 | 11 | dependencyResolutionManagement { 12 | repositories { 13 | mavenCentral() 14 | mavenLocal() 15 | } 16 | } 17 | 18 | rootProject.name = "addressbook-fullstack-spring-boot-oauth" 19 | include(":application") 20 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/src/commonMain/kotlin/com/example/Model.kt: -------------------------------------------------------------------------------- 1 | @file:UseContextualSerialization(OffsetDateTime::class) 2 | 3 | package com.example 4 | 5 | import kotlinx.serialization.Serializable 6 | import kotlinx.serialization.UseContextualSerialization 7 | import io.kvision.types.OffsetDateTime 8 | 9 | expect class Profile 10 | 11 | @Serializable 12 | data class Address( 13 | val id: Int? = 0, 14 | val firstName: String? = null, 15 | val lastName: String? = null, 16 | val email: String? = null, 17 | val phone: String? = null, 18 | val postalAddress: String? = null, 19 | val favourite: Boolean? = false, 20 | val createdAt: OffsetDateTime? = null, 21 | val userId: Int? = null 22 | ) 23 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/src/commonMain/kotlin/com/example/Service.kt: -------------------------------------------------------------------------------- 1 | package com.example 2 | 3 | import dev.kilua.rpc.annotations.RpcService 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | enum class Sort { 8 | FN, LN, E, F 9 | } 10 | 11 | @RpcService 12 | interface IAddressService { 13 | suspend fun getAddressList(search: String?, types: String, sort: Sort): List
14 | suspend fun addAddress(address: Address): Address 15 | suspend fun updateAddress(address: Address): Address 16 | suspend fun deleteAddress(id: Int): Boolean 17 | } 18 | 19 | @RpcService 20 | interface IProfileService { 21 | suspend fun getProfile(): Profile 22 | } -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Address Book 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/src/jsMain/resources/modules/css/kvapp.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook-fullstack-spring-boot-oauth/src/jsMain/resources/modules/css/kvapp.css -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/src/jvmMain/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | r2dbc: 3 | url: r2dbc:h2:file:////tmp/example_spring?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 4 | security: 5 | oauth2: 6 | client: 7 | registration: 8 | google: 9 | redirect-uri: http://localhost:8080/login/oauth2/code/google 10 | client-id: ${client.id} 11 | client-secret: ${client.secret} 12 | scopes: 13 | - openid 14 | - https://www.googleapis.com/auth/userinfo.email 15 | - https://www.googleapis.com/auth/userinfo.profile 16 | server: 17 | compression: 18 | enabled: true 19 | mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json 20 | min-response-size: 1024 -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/src/jvmMain/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | %d [%thread] %-5level %logger{36} - %msg%n 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/src/jvmMain/resources/schema.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS users ( 2 | id serial NOT NULL, 3 | username varchar(255) NOT NULL, 4 | name varchar(255) NOT NULL, 5 | PRIMARY KEY (id), 6 | UNIQUE(username) 7 | ); 8 | 9 | CREATE TABLE IF NOT EXISTS address ( 10 | id serial NOT NULL, 11 | first_name varchar(255), 12 | last_name varchar(255), 13 | email varchar(255), 14 | phone varchar(255), 15 | postal_address varchar(255), 16 | favourite boolean NOT NULL DEFAULT false, 17 | created_at timestamp with time zone, 18 | user_id int NOT NULL, 19 | PRIMARY KEY (id), 20 | FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE 21 | ); 22 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/webpack.config.d/proxy.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.proxy = [ 3 | { 4 | context: ["/rpc/*", "/rpcsse/*"], 5 | target: 'http://localhost:8080' 6 | }, 7 | { 8 | context: ["/login", "/logout", "/oauth2/authorization/google"], 9 | target: 'http://localhost:8080' 10 | }, 11 | { 12 | context: ["/rpcws/*"], 13 | target: 'http://localhost:8080', 14 | ws: true 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot-oauth/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Compiling 6 | * compileKotlinJs - Compiles frontend sources. 7 | * compileKotlinJvm - Compiles backend sources. 8 | ### Running 9 | * jsBrowserDevelopmentRun - Starts a webpack dev server on port 3000 10 | * jvmRun - Starts a dev server on port 8080 11 | ### Packaging 12 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 13 | * jsJar - Packages a standalone "web" frontend jar with all required files into `build/libs/*.jar` 14 | * jvmJar - Packages a backend jar with compiled source files into `build/libs/*.jar` 15 | * jarWithJs - Packages a "fat" jar with all backend sources and dependencies while also embedding frontend resources into `build/libs/*.jar` 16 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/application/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | kotlin("jvm") 3 | id("org.springframework.boot") 4 | } 5 | 6 | dependencies { 7 | implementation(rootProject) 8 | implementation(project.dependencies.platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)) 9 | implementation("org.springframework.boot:spring-boot-devtools") 10 | } 11 | 12 | springBoot { 13 | mainClass.value(project.parent?.extra?.get("mainClassName")?.toString()) 14 | } 15 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | systemProp.kspVersion=2.2.0-RC-2.0.1 4 | systemProp.kiluaRpcVersion=0.0.34 5 | systemProp.springBootVersion=3.5.0 6 | #Dependencies 7 | systemProp.kvisionVersion=9.1.0 8 | coroutinesVersion=1.10.2 9 | r2dbcPostgresqlVersion=1.0.7.RELEASE 10 | r2dbcH2Version=1.0.0.RELEASE 11 | e4kVersion=0.8.0 12 | 13 | kotlin.mpp.stability.nowarn=true 14 | org.gradle.jvmargs=-Xmx2g 15 | kotlin.js.ir.output.granularity=per-file 16 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook-fullstack-spring-boot/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | @file:Suppress("UnstableApiUsage") 2 | 3 | pluginManagement { 4 | repositories { 5 | gradlePluginPortal() 6 | mavenCentral() 7 | mavenLocal() 8 | } 9 | } 10 | 11 | dependencyResolutionManagement { 12 | repositories { 13 | mavenCentral() 14 | mavenLocal() 15 | } 16 | } 17 | 18 | rootProject.name = "addressbook-fullstack-spring-boot" 19 | include(":application") 20 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/src/commonMain/kotlin/com/example/Model.kt: -------------------------------------------------------------------------------- 1 | @file:UseContextualSerialization(OffsetDateTime::class) 2 | 3 | package com.example 4 | 5 | import kotlinx.serialization.Serializable 6 | import kotlinx.serialization.UseContextualSerialization 7 | import io.kvision.types.OffsetDateTime 8 | 9 | expect class Profile 10 | 11 | @Serializable 12 | data class Address( 13 | val id: Int? = 0, 14 | val firstName: String? = null, 15 | val lastName: String? = null, 16 | val email: String? = null, 17 | val phone: String? = null, 18 | val postalAddress: String? = null, 19 | val favourite: Boolean? = false, 20 | val createdAt: OffsetDateTime? = null, 21 | val userId: Int? = null 22 | ) 23 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/src/commonMain/kotlin/com/example/Service.kt: -------------------------------------------------------------------------------- 1 | package com.example 2 | 3 | import dev.kilua.rpc.annotations.RpcService 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | enum class Sort { 8 | FN, LN, E, F 9 | } 10 | 11 | @RpcService 12 | interface IAddressService { 13 | suspend fun getAddressList(search: String?, types: String, sort: Sort): List
14 | suspend fun addAddress(address: Address): Address 15 | suspend fun updateAddress(address: Address): Address 16 | suspend fun deleteAddress(id: Int): Boolean 17 | } 18 | 19 | @RpcService 20 | interface IProfileService { 21 | suspend fun getProfile(): Profile 22 | } 23 | 24 | @RpcService 25 | interface IRegisterProfileService { 26 | suspend fun registerProfile(profile: Profile, password: String): Boolean 27 | } 28 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Address Book 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/src/jsMain/resources/modules/css/kvapp.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook-fullstack-spring-boot/src/jsMain/resources/modules/css/kvapp.css -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/src/jvmMain/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | r2dbc: 3 | url: r2dbc:h2:file:////tmp/example_spring?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 4 | 5 | server: 6 | compression: 7 | enabled: true 8 | mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json 9 | min-response-size: 1024 10 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/src/jvmMain/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | %d [%thread] %-5level %logger{36} - %msg%n 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/src/jvmMain/resources/schema.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS users ( 2 | id serial NOT NULL, 3 | username varchar(255) NOT NULL, 4 | password varchar(255) NOT NULL, 5 | name varchar(255) NOT NULL, 6 | PRIMARY KEY (id), 7 | UNIQUE(username) 8 | ); 9 | 10 | CREATE TABLE IF NOT EXISTS address ( 11 | id serial NOT NULL, 12 | first_name varchar(255), 13 | last_name varchar(255), 14 | email varchar(255), 15 | phone varchar(255), 16 | postal_address varchar(255), 17 | favourite boolean NOT NULL DEFAULT false, 18 | created_at timestamp with time zone, 19 | user_id int NOT NULL, 20 | PRIMARY KEY (id), 21 | FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE 22 | ); 23 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/webpack.config.d/proxy.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.proxy = [ 3 | { 4 | context: ["/rpc/*", "/rpcsse/*"], 5 | target: 'http://localhost:8080' 6 | }, 7 | { 8 | context: ["/login", "/logout"], 9 | target: 'http://localhost:8080' 10 | }, 11 | { 12 | context: ["/rpcws/*"], 13 | target: 'http://localhost:8080', 14 | ws: true 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /addressbook-fullstack-spring-boot/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /addressbook-tabulator/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /addressbook-tabulator/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /addressbook-tabulator/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /addressbook-tabulator/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | 6 | kotlin.js.ir.output.granularity=per-file 7 | -------------------------------------------------------------------------------- /addressbook-tabulator/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook-tabulator/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /addressbook-tabulator/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /addressbook-tabulator/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "addressbook-tabulator" 9 | -------------------------------------------------------------------------------- /addressbook-tabulator/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Address Book 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /addressbook-tabulator/src/jsMain/resources/modules/css/kvapp.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook-tabulator/src/jsMain/resources/modules/css/kvapp.css -------------------------------------------------------------------------------- /addressbook-tabulator/src/jsMain/resources/modules/i18n/messages-en.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: English\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | 21 | #: ../src/main/kotlin/com/example/App.kt:20 22 | msgid "This is a localized message." 23 | msgstr "" 24 | -------------------------------------------------------------------------------- /addressbook-tabulator/src/jsTest/kotlin/test/com/example/AppSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import io.kvision.test.DomSpec 4 | import kotlin.test.Test 5 | import kotlin.test.assertTrue 6 | 7 | class AppSpec : DomSpec { 8 | 9 | @Test 10 | fun render() { 11 | run { 12 | assertTrue(true, "Dummy test") 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /addressbook-tabulator/src/jsTest/resources/css/kvapp.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook-tabulator/src/jsTest/resources/css/kvapp.css -------------------------------------------------------------------------------- /addressbook-tabulator/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /addressbook-tabulator/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /addressbook-tabulator/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /addressbook-tabulator/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /addressbook-tabulator/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /addressbook/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /addressbook/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /addressbook/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /addressbook/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | 6 | kotlin.js.ir.output.granularity=per-file 7 | -------------------------------------------------------------------------------- /addressbook/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /addressbook/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /addressbook/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "addressbook" 9 | -------------------------------------------------------------------------------- /addressbook/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Address Book 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /addressbook/src/jsMain/resources/modules/css/kvapp.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook/src/jsMain/resources/modules/css/kvapp.css -------------------------------------------------------------------------------- /addressbook/src/jsMain/resources/modules/i18n/messages-en.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: English\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | 21 | #: ../src/main/kotlin/com/example/App.kt:20 22 | msgid "This is a localized message." 23 | msgstr "" 24 | -------------------------------------------------------------------------------- /addressbook/src/jsTest/kotlin/test/com/example/AppSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import io.kvision.test.DomSpec 4 | import kotlin.test.Test 5 | import kotlin.test.assertTrue 6 | 7 | class AppSpec : DomSpec { 8 | 9 | @Test 10 | fun render() { 11 | run { 12 | assertTrue(true, "Dummy test") 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /addressbook/src/jsTest/resources/css/kvapp.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/addressbook/src/jsTest/resources/css/kvapp.css -------------------------------------------------------------------------------- /addressbook/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /addressbook/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /addressbook/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /addressbook/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /addressbook/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /desktop/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /desktop/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /desktop/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /desktop/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | 6 | kotlin.js.ir.output.granularity=per-file 7 | -------------------------------------------------------------------------------- /desktop/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/desktop/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /desktop/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /desktop/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "desktop" 9 | -------------------------------------------------------------------------------- /desktop/src/jsMain/kotlin/com/example/DesktopIcon.kt: -------------------------------------------------------------------------------- 1 | package com.example 2 | 3 | import io.kvision.core.AlignItems 4 | import io.kvision.core.WhiteSpace 5 | import io.kvision.html.icon 6 | import io.kvision.html.span 7 | import io.kvision.panel.VPanel 8 | import io.kvision.utils.px 9 | 10 | class DesktopIcon(icon: String, content: String) : VPanel(alignItems = AlignItems.CENTER) { 11 | init { 12 | width = 64.px 13 | height = 64.px 14 | icon(icon) { 15 | addCssClass("fa-3x") 16 | } 17 | span(content) { 18 | whiteSpace = WhiteSpace.NOWRAP 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /desktop/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Desktop 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /desktop/src/jsMain/resources/modules/css/kvapp.css: -------------------------------------------------------------------------------- 1 | body { 2 | overflow: hidden; 3 | } 4 | 5 | .stripes { 6 | background-image: repeating-linear-gradient(145deg, #ccc, #ccc 5px, #dbdbdb 5px, #dbdbdb 10px) !important; 7 | } 8 | -------------------------------------------------------------------------------- /desktop/src/jsTest/kotlin/test/com/example/AppSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import io.kvision.test.DomSpec 4 | import kotlin.test.Test 5 | import kotlin.test.assertTrue 6 | 7 | class AppSpec : DomSpec { 8 | 9 | @Test 10 | fun render() { 11 | run { 12 | assertTrue(true, "Dummy test") 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /desktop/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /desktop/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /desktop/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /desktop/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /desktop/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /docs/addressbook-tabulator/1815e00441357e01619e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook-tabulator/1815e00441357e01619e.ttf -------------------------------------------------------------------------------- /docs/addressbook-tabulator/2463b90d9a316e4e5294.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook-tabulator/2463b90d9a316e4e5294.woff2 -------------------------------------------------------------------------------- /docs/addressbook-tabulator/2582b0e4bcf85eceead0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook-tabulator/2582b0e4bcf85eceead0.ttf -------------------------------------------------------------------------------- /docs/addressbook-tabulator/89999bdf5d835c012025.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook-tabulator/89999bdf5d835c012025.woff2 -------------------------------------------------------------------------------- /docs/addressbook-tabulator/914997e1bdfc990d0897.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook-tabulator/914997e1bdfc990d0897.ttf -------------------------------------------------------------------------------- /docs/addressbook-tabulator/c210719e60948b211a12.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook-tabulator/c210719e60948b211a12.woff2 -------------------------------------------------------------------------------- /docs/addressbook-tabulator/da94ef451f4969af06e6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook-tabulator/da94ef451f4969af06e6.ttf -------------------------------------------------------------------------------- /docs/addressbook-tabulator/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Address Book 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/addressbook-tabulator/main.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v5.3.6 (https://getbootstrap.com/) 3 | * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | */ 6 | -------------------------------------------------------------------------------- /docs/addressbook/1815e00441357e01619e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook/1815e00441357e01619e.ttf -------------------------------------------------------------------------------- /docs/addressbook/2463b90d9a316e4e5294.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook/2463b90d9a316e4e5294.woff2 -------------------------------------------------------------------------------- /docs/addressbook/2582b0e4bcf85eceead0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook/2582b0e4bcf85eceead0.ttf -------------------------------------------------------------------------------- /docs/addressbook/89999bdf5d835c012025.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook/89999bdf5d835c012025.woff2 -------------------------------------------------------------------------------- /docs/addressbook/914997e1bdfc990d0897.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook/914997e1bdfc990d0897.ttf -------------------------------------------------------------------------------- /docs/addressbook/c210719e60948b211a12.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook/c210719e60948b211a12.woff2 -------------------------------------------------------------------------------- /docs/addressbook/da94ef451f4969af06e6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/addressbook/da94ef451f4969af06e6.ttf -------------------------------------------------------------------------------- /docs/addressbook/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Address Book 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/addressbook/main.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v5.3.6 (https://getbootstrap.com/) 3 | * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | */ 6 | -------------------------------------------------------------------------------- /docs/desktop/1815e00441357e01619e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/desktop/1815e00441357e01619e.ttf -------------------------------------------------------------------------------- /docs/desktop/2463b90d9a316e4e5294.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/desktop/2463b90d9a316e4e5294.woff2 -------------------------------------------------------------------------------- /docs/desktop/2582b0e4bcf85eceead0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/desktop/2582b0e4bcf85eceead0.ttf -------------------------------------------------------------------------------- /docs/desktop/89999bdf5d835c012025.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/desktop/89999bdf5d835c012025.woff2 -------------------------------------------------------------------------------- /docs/desktop/914997e1bdfc990d0897.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/desktop/914997e1bdfc990d0897.ttf -------------------------------------------------------------------------------- /docs/desktop/c210719e60948b211a12.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/desktop/c210719e60948b211a12.woff2 -------------------------------------------------------------------------------- /docs/desktop/da94ef451f4969af06e6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/desktop/da94ef451f4969af06e6.ttf -------------------------------------------------------------------------------- /docs/desktop/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Desktop 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/desktop/main.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v5.3.6 (https://getbootstrap.com/) 3 | * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | */ 6 | 7 | /*! @license DOMPurify 3.2.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.5/LICENSE */ 8 | -------------------------------------------------------------------------------- /docs/fomantic/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision App 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/fomantic/main.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * Toastify js 1.12.0 3 | * https://github.com/apvarun/toastify-js 4 | * @license MIT licensed 5 | * 6 | * Copyright (C) 2018 Varun A P 7 | */ 8 | 9 | /*! 10 | * jQuery JavaScript Library v3.7.1 11 | * https://jquery.com/ 12 | * 13 | * Copyright OpenJS Foundation and other contributors 14 | * Released under the MIT license 15 | * https://jquery.org/license 16 | * 17 | * Date: 2023-08-28T13:37Z 18 | */ 19 | -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/brand-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/brand-icons.eot -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/brand-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/brand-icons.ttf -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/brand-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/brand-icons.woff -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/brand-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/brand-icons.woff2 -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/outline-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/outline-icons.eot -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/outline-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/outline-icons.ttf -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/outline-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/outline-icons.woff -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/fonts/outline-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/fonts/outline-icons.woff2 -------------------------------------------------------------------------------- /docs/fomantic/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/fomantic/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /docs/helloworld/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Helloworld 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/patternfly/0239b22511e2cbe0741a.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/0239b22511e2cbe0741a.woff -------------------------------------------------------------------------------- /docs/patternfly/053c8708cdba2dac36e7.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/053c8708cdba2dac36e7.eot -------------------------------------------------------------------------------- /docs/patternfly/06037ca2cf8525d353a1.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/06037ca2cf8525d353a1.woff2 -------------------------------------------------------------------------------- /docs/patternfly/08322afb8640616a6228.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/08322afb8640616a6228.jpg -------------------------------------------------------------------------------- /docs/patternfly/093a799496f66d24a551.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/093a799496f66d24a551.eot -------------------------------------------------------------------------------- /docs/patternfly/0a38e7ad901439687fde.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/0a38e7ad901439687fde.ttf -------------------------------------------------------------------------------- /docs/patternfly/0a4b379b6ff0ec5eacde.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/0a4b379b6ff0ec5eacde.ttf -------------------------------------------------------------------------------- /docs/patternfly/0be5ef4bb345cde8d812.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/0be5ef4bb345cde8d812.eot -------------------------------------------------------------------------------- /docs/patternfly/0c3175eaa942783912bc.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/0c3175eaa942783912bc.ttf -------------------------------------------------------------------------------- /docs/patternfly/11855d3f3f99709dfac5.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/11855d3f3f99709dfac5.woff2 -------------------------------------------------------------------------------- /docs/patternfly/1353c4d0aedbc7afbc83.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/1353c4d0aedbc7afbc83.eot -------------------------------------------------------------------------------- /docs/patternfly/14f8b4c85aa91125dbb7.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/14f8b4c85aa91125dbb7.eot -------------------------------------------------------------------------------- /docs/patternfly/164a0ab4c909b911c99b.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/164a0ab4c909b911c99b.woff -------------------------------------------------------------------------------- /docs/patternfly/176868e8875b80fac8dc.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/176868e8875b80fac8dc.eot -------------------------------------------------------------------------------- /docs/patternfly/1904b4e1c18b4fc19778.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/1904b4e1c18b4fc19778.woff -------------------------------------------------------------------------------- /docs/patternfly/190776b0696119b93c71.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/190776b0696119b93c71.woff2 -------------------------------------------------------------------------------- /docs/patternfly/1c45e67be7e91ed0a625.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/1c45e67be7e91ed0a625.ttf -------------------------------------------------------------------------------- /docs/patternfly/23fc486b36786bafb3d3.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/23fc486b36786bafb3d3.woff -------------------------------------------------------------------------------- /docs/patternfly/24515e9b56a0ccb45480.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/24515e9b56a0ccb45480.woff -------------------------------------------------------------------------------- /docs/patternfly/246cf166b6945bf1c584.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/246cf166b6945bf1c584.woff2 -------------------------------------------------------------------------------- /docs/patternfly/269ca6c83388f975ccfa.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/269ca6c83388f975ccfa.woff2 -------------------------------------------------------------------------------- /docs/patternfly/3023e2f376de504d668d.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/3023e2f376de504d668d.eot -------------------------------------------------------------------------------- /docs/patternfly/30e8d31f821a144fe52c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/30e8d31f821a144fe52c.jpg -------------------------------------------------------------------------------- /docs/patternfly/323f30b3399fdc516b30.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/323f30b3399fdc516b30.woff2 -------------------------------------------------------------------------------- /docs/patternfly/3278ae4a3a97d92b639c.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/3278ae4a3a97d92b639c.woff2 -------------------------------------------------------------------------------- /docs/patternfly/34d0b88404c4cacdb933.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/34d0b88404c4cacdb933.eot -------------------------------------------------------------------------------- /docs/patternfly/35d01efdc213d0af0d00.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/35d01efdc213d0af0d00.woff -------------------------------------------------------------------------------- /docs/patternfly/3b693db01ef2135e3f14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/3b693db01ef2135e3f14.jpg -------------------------------------------------------------------------------- /docs/patternfly/3cd11726d843ff40c40b.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/3cd11726d843ff40c40b.woff -------------------------------------------------------------------------------- /docs/patternfly/4363e0967fae81c7b2e9.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/4363e0967fae81c7b2e9.eot -------------------------------------------------------------------------------- /docs/patternfly/4515cb6498e51adec9d8.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/4515cb6498e51adec9d8.eot -------------------------------------------------------------------------------- /docs/patternfly/47a03d213b0b35080e32.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/47a03d213b0b35080e32.woff -------------------------------------------------------------------------------- /docs/patternfly/4a8547976f936fc4a6e2.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/4a8547976f936fc4a6e2.eot -------------------------------------------------------------------------------- /docs/patternfly/4bc0afcdb6ba85a4c1fa.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/4bc0afcdb6ba85a4c1fa.ttf -------------------------------------------------------------------------------- /docs/patternfly/4e7303418fcbe51f818f.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/4e7303418fcbe51f818f.ttf -------------------------------------------------------------------------------- /docs/patternfly/4f3a0124fea180a47d7a.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/4f3a0124fea180a47d7a.eot -------------------------------------------------------------------------------- /docs/patternfly/4fa1de252bbe1c586243.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/4fa1de252bbe1c586243.eot -------------------------------------------------------------------------------- /docs/patternfly/549231141115a61fa57d.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/549231141115a61fa57d.woff -------------------------------------------------------------------------------- /docs/patternfly/54b2e33870ba270ba774.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/54b2e33870ba270ba774.woff2 -------------------------------------------------------------------------------- /docs/patternfly/56faebeaec23b1c7d7d3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/56faebeaec23b1c7d7d3.jpg -------------------------------------------------------------------------------- /docs/patternfly/57649dc00d7d7f3e8303.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/57649dc00d7d7f3e8303.ttf -------------------------------------------------------------------------------- /docs/patternfly/59058fe454d37a189fb9.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/59058fe454d37a189fb9.woff2 -------------------------------------------------------------------------------- /docs/patternfly/5e77435167651c698aaa.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/5e77435167651c698aaa.ttf -------------------------------------------------------------------------------- /docs/patternfly/60cc25d4be2d99536ede.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/60cc25d4be2d99536ede.woff2 -------------------------------------------------------------------------------- /docs/patternfly/61142d93d0198cb3c160.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/61142d93d0198cb3c160.woff2 -------------------------------------------------------------------------------- /docs/patternfly/6130c5df0f4986af98b7.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/6130c5df0f4986af98b7.eot -------------------------------------------------------------------------------- /docs/patternfly/61cde7438158d1e8f397.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/61cde7438158d1e8f397.ttf -------------------------------------------------------------------------------- /docs/patternfly/64fbabef5af5f881f4cc.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/64fbabef5af5f881f4cc.ttf -------------------------------------------------------------------------------- /docs/patternfly/675eb11fb9e055cea6a4.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/675eb11fb9e055cea6a4.woff2 -------------------------------------------------------------------------------- /docs/patternfly/69bf841bb989a0010972.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/69bf841bb989a0010972.woff2 -------------------------------------------------------------------------------- /docs/patternfly/7150021df2ae6bcf6c17.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/7150021df2ae6bcf6c17.woff2 -------------------------------------------------------------------------------- /docs/patternfly/723874f47b7995027c3b.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/723874f47b7995027c3b.eot -------------------------------------------------------------------------------- /docs/patternfly/732b5ddbe8d56f5462b6.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/732b5ddbe8d56f5462b6.woff -------------------------------------------------------------------------------- /docs/patternfly/73ab4e0a0342b521248d.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/73ab4e0a0342b521248d.ttf -------------------------------------------------------------------------------- /docs/patternfly/750945a4e9323d09a528.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/750945a4e9323d09a528.ttf -------------------------------------------------------------------------------- /docs/patternfly/755f9be7c2de8991f989.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/755f9be7c2de8991f989.eot -------------------------------------------------------------------------------- /docs/patternfly/77929aa7a8bd4b667229.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/77929aa7a8bd4b667229.woff -------------------------------------------------------------------------------- /docs/patternfly/7799d9401910e36d7bb2.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/7799d9401910e36d7bb2.woff -------------------------------------------------------------------------------- /docs/patternfly/7d5ee241230ae4dfcd25.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/7d5ee241230ae4dfcd25.eot -------------------------------------------------------------------------------- /docs/patternfly/800277ea3e98b616b60f.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/800277ea3e98b616b60f.woff -------------------------------------------------------------------------------- /docs/patternfly/817d3df17057373e2c46.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/817d3df17057373e2c46.woff -------------------------------------------------------------------------------- /docs/patternfly/81853c2fb712de98ef66.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/81853c2fb712de98ef66.ttf -------------------------------------------------------------------------------- /docs/patternfly/81aade5a7b362566b199.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/81aade5a7b362566b199.woff -------------------------------------------------------------------------------- /docs/patternfly/8337c6c044fba48ede0b.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/8337c6c044fba48ede0b.eot -------------------------------------------------------------------------------- /docs/patternfly/8584d6d2426caac44a12.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/8584d6d2426caac44a12.woff2 -------------------------------------------------------------------------------- /docs/patternfly/86ba5ba47b776c463f38.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/86ba5ba47b776c463f38.eot -------------------------------------------------------------------------------- /docs/patternfly/88ade95ac9a035be7168.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/88ade95ac9a035be7168.woff -------------------------------------------------------------------------------- /docs/patternfly/89a09f63411d174b18ea.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/89a09f63411d174b18ea.woff2 -------------------------------------------------------------------------------- /docs/patternfly/8aae586c8c4d72be50c1.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/8aae586c8c4d72be50c1.woff -------------------------------------------------------------------------------- /docs/patternfly/8d723ad7cfca2dfffacb.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/8d723ad7cfca2dfffacb.woff -------------------------------------------------------------------------------- /docs/patternfly/95cea96f95f5e7335023.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/95cea96f95f5e7335023.ttf -------------------------------------------------------------------------------- /docs/patternfly/95fdf61ffc45f12737c2.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/95fdf61ffc45f12737c2.woff2 -------------------------------------------------------------------------------- /docs/patternfly/99464515aba730eab16c.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/99464515aba730eab16c.woff2 -------------------------------------------------------------------------------- /docs/patternfly/ab4371a522c3fce8ad2d.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/ab4371a522c3fce8ad2d.woff2 -------------------------------------------------------------------------------- /docs/patternfly/ac4ae66cc059959cf8b7.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/ac4ae66cc059959cf8b7.woff -------------------------------------------------------------------------------- /docs/patternfly/ac78b4f2e64edfb5859a.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/ac78b4f2e64edfb5859a.woff -------------------------------------------------------------------------------- /docs/patternfly/b5204399f16e72d2a60d.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/b5204399f16e72d2a60d.ttf -------------------------------------------------------------------------------- /docs/patternfly/b64efab6836e719c0e31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/b64efab6836e719c0e31.jpg -------------------------------------------------------------------------------- /docs/patternfly/b6f1c5d0f6f5656cd4da.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/b6f1c5d0f6f5656cd4da.ttf -------------------------------------------------------------------------------- /docs/patternfly/b827a4430acb1d15184f.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/b827a4430acb1d15184f.eot -------------------------------------------------------------------------------- /docs/patternfly/bbfff1d4d46f6fe58416.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/bbfff1d4d46f6fe58416.woff2 -------------------------------------------------------------------------------- /docs/patternfly/bc0502ffc24dc33b8c5a.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/bc0502ffc24dc33b8c5a.woff -------------------------------------------------------------------------------- /docs/patternfly/bd43f64ce4046b35e472.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/bd43f64ce4046b35e472.ttf -------------------------------------------------------------------------------- /docs/patternfly/bfe9360ac1bb3b5fd3ea.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/bfe9360ac1bb3b5fd3ea.ttf -------------------------------------------------------------------------------- /docs/patternfly/c0276d79b017a9c2476b.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/c0276d79b017a9c2476b.woff -------------------------------------------------------------------------------- /docs/patternfly/c2b7c03209f0d3558e85.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/c2b7c03209f0d3558e85.woff2 -------------------------------------------------------------------------------- /docs/patternfly/cb9cea9527d93dd0c49b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/cb9cea9527d93dd0c49b.ttf -------------------------------------------------------------------------------- /docs/patternfly/cf06a52fa81e76cc6b01.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/cf06a52fa81e76cc6b01.woff2 -------------------------------------------------------------------------------- /docs/patternfly/cf20f64017e81d101f15.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/cf20f64017e81d101f15.eot -------------------------------------------------------------------------------- /docs/patternfly/d49398e959e1af4cecdd.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/d49398e959e1af4cecdd.eot -------------------------------------------------------------------------------- /docs/patternfly/d6b6f0c7a2af826d139d.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/d6b6f0c7a2af826d139d.woff -------------------------------------------------------------------------------- /docs/patternfly/d88b666483405a79d23a.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/d88b666483405a79d23a.eot -------------------------------------------------------------------------------- /docs/patternfly/d8b3d123ad39e5f0d1cb.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/d8b3d123ad39e5f0d1cb.eot -------------------------------------------------------------------------------- /docs/patternfly/db4223ab0faaec898da7.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/db4223ab0faaec898da7.woff -------------------------------------------------------------------------------- /docs/patternfly/e12873666d74f0ad16dc.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/e12873666d74f0ad16dc.ttf -------------------------------------------------------------------------------- /docs/patternfly/e716d42b789e4e377872.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/e716d42b789e4e377872.eot -------------------------------------------------------------------------------- /docs/patternfly/e7bea4af7086ce0144fc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/e7bea4af7086ce0144fc.woff -------------------------------------------------------------------------------- /docs/patternfly/e9d4a1e9285e4454ef7e.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/e9d4a1e9285e4454ef7e.woff -------------------------------------------------------------------------------- /docs/patternfly/eae21d83bc3af219ce80.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/eae21d83bc3af219ce80.woff -------------------------------------------------------------------------------- /docs/patternfly/ed58ea35cdc962672ed1.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/ed58ea35cdc962672ed1.eot -------------------------------------------------------------------------------- /docs/patternfly/eea28e73c0df6dbbb1ff.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/eea28e73c0df6dbbb1ff.jpg -------------------------------------------------------------------------------- /docs/patternfly/f06e568e0195a8a577d5.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/f06e568e0195a8a577d5.eot -------------------------------------------------------------------------------- /docs/patternfly/f8525e8f2934024270c0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/f8525e8f2934024270c0.ttf -------------------------------------------------------------------------------- /docs/patternfly/feb05e55fca18e8e964b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/patternfly/feb05e55fca18e8e964b.ttf -------------------------------------------------------------------------------- /docs/patternfly/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Patternfly demo 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/patternfly/main.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * Toastify js 1.12.0 3 | * https://github.com/apvarun/toastify-js 4 | * @license MIT licensed 5 | * 6 | * Copyright (C) 2018 Varun A P 7 | */ 8 | -------------------------------------------------------------------------------- /docs/pokedex/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/pokedex/icons/128x128.png -------------------------------------------------------------------------------- /docs/pokedex/icons/16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/pokedex/icons/16x16.png -------------------------------------------------------------------------------- /docs/pokedex/icons/24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/pokedex/icons/24x24.png -------------------------------------------------------------------------------- /docs/pokedex/icons/256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/pokedex/icons/256x256.png -------------------------------------------------------------------------------- /docs/pokedex/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/pokedex/icons/32x32.png -------------------------------------------------------------------------------- /docs/pokedex/icons/48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/pokedex/icons/48x48.png -------------------------------------------------------------------------------- /docs/pokedex/icons/512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/pokedex/icons/512x512.png -------------------------------------------------------------------------------- /docs/pokedex/icons/64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/pokedex/icons/64x64.png -------------------------------------------------------------------------------- /docs/pokedex/icons/96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/pokedex/icons/96x96.png -------------------------------------------------------------------------------- /docs/pokedex/main.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v5.3.6 (https://getbootstrap.com/) 3 | * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | */ 6 | 7 | /*! Hammer.JS - v2.0.7 - 2016-04-22 8 | * http://hammerjs.github.io/ 9 | * 10 | * Copyright (c) 2016 Jorik Tangelder; 11 | * Licensed under the MIT license */ 12 | -------------------------------------------------------------------------------- /docs/showcase/0958e178b152237f7269.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/showcase/0958e178b152237f7269.jpg -------------------------------------------------------------------------------- /docs/showcase/0c63e069bbc944a0dd9e.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/showcase/0c63e069bbc944a0dd9e.gif -------------------------------------------------------------------------------- /docs/showcase/1815e00441357e01619e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/showcase/1815e00441357e01619e.ttf -------------------------------------------------------------------------------- /docs/showcase/2463b90d9a316e4e5294.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/showcase/2463b90d9a316e4e5294.woff2 -------------------------------------------------------------------------------- /docs/showcase/2582b0e4bcf85eceead0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/showcase/2582b0e4bcf85eceead0.ttf -------------------------------------------------------------------------------- /docs/showcase/41c5fffa848782b1d187.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/showcase/41c5fffa848782b1d187.jpg -------------------------------------------------------------------------------- /docs/showcase/5e6e572c071486f2318a.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/showcase/5e6e572c071486f2318a.gif -------------------------------------------------------------------------------- /docs/showcase/89999bdf5d835c012025.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/showcase/89999bdf5d835c012025.woff2 -------------------------------------------------------------------------------- /docs/showcase/914997e1bdfc990d0897.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/showcase/914997e1bdfc990d0897.ttf -------------------------------------------------------------------------------- /docs/showcase/c210719e60948b211a12.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/showcase/c210719e60948b211a12.woff2 -------------------------------------------------------------------------------- /docs/showcase/da94ef451f4969af06e6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/showcase/da94ef451f4969af06e6.ttf -------------------------------------------------------------------------------- /docs/showcase/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Showcase 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/tailwindcss/0958e178b152237f7269.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/tailwindcss/0958e178b152237f7269.jpg -------------------------------------------------------------------------------- /docs/tailwindcss/1815e00441357e01619e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/tailwindcss/1815e00441357e01619e.ttf -------------------------------------------------------------------------------- /docs/tailwindcss/2463b90d9a316e4e5294.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/tailwindcss/2463b90d9a316e4e5294.woff2 -------------------------------------------------------------------------------- /docs/tailwindcss/2582b0e4bcf85eceead0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/tailwindcss/2582b0e4bcf85eceead0.ttf -------------------------------------------------------------------------------- /docs/tailwindcss/89999bdf5d835c012025.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/tailwindcss/89999bdf5d835c012025.woff2 -------------------------------------------------------------------------------- /docs/tailwindcss/914997e1bdfc990d0897.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/tailwindcss/914997e1bdfc990d0897.ttf -------------------------------------------------------------------------------- /docs/tailwindcss/c210719e60948b211a12.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/tailwindcss/c210719e60948b211a12.woff2 -------------------------------------------------------------------------------- /docs/tailwindcss/da94ef451f4969af06e6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/docs/tailwindcss/da94ef451f4969af06e6.ttf -------------------------------------------------------------------------------- /docs/tailwindcss/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision App 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/template/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision App 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/template/main.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v5.3.6 (https://getbootstrap.com/) 3 | * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | */ 6 | -------------------------------------------------------------------------------- /docs/todomvc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision • TodoMVC 7 | 8 | 9 | 10 | 11 |
12 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /docs/todomvc/node_modules/todomvc-common/readme.md: -------------------------------------------------------------------------------- 1 | # todomvc-common 2 | 3 | > Common TodoMVC utilities used by our apps 4 | 5 | 6 | ## Install 7 | 8 | ``` 9 | $ npm install --save todomvc-common 10 | ``` 11 | 12 | 13 | ## License 14 | 15 | MIT © [TasteJS](http://tastejs.com) 16 | -------------------------------------------------------------------------------- /docs/todomvc/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "requires": true, 3 | "lockfileVersion": 1, 4 | "dependencies": { 5 | "todomvc-app-css": { 6 | "version": "2.1.0", 7 | "resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.1.0.tgz", 8 | "integrity": "sha1-tvJxbTOa+i5feZNH0qSLBTliQqU=" 9 | }, 10 | "todomvc-common": { 11 | "version": "1.0.4", 12 | "resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.4.tgz", 13 | "integrity": "sha512-AA0Z4exovEqubhbZCrzzn9roVT4zvOncS319p2zIc4CsNe5B9TLL7Sei1NIV6d+WrgR5rOi+y0I9Y6GE7xgNOw==" 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /docs/todomvc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "dependencies": { 4 | "todomvc-app-css": "2.1.0", 5 | "todomvc-common": "1.0.4" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Compiling 6 | * compileKotlinJs - Compiles frontend sources. 7 | * compileKotlinJvm - Compiles backend sources. 8 | ### Running 9 | * jsBrowserDevelopmentRun - Starts a webpack dev server on port 3000 10 | * jvmRun - Starts a dev server on port 8080 11 | ### Packaging 12 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 13 | * jsJar - Packages a standalone "web" frontend jar with all required files into `build/libs/*.jar` 14 | * jvmJar - Packages a backend jar with compiled source files into `build/libs/*.jar` 15 | * jarWithJs - Packages a "fat" jar with all backend sources and dependencies while also embedding frontend resources into `build/libs/*.jar` 16 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | systemProp.kspVersion=2.2.0-RC-2.0.1 4 | systemProp.kiluaRpcVersion=0.0.34 5 | #Dependencies 6 | systemProp.kvisionVersion=9.1.0 7 | ktorVersion=3.1.3 8 | logbackVersion=1.5.18 9 | 10 | kotlin.mpp.stability.nowarn=true 11 | org.gradle.jvmargs=-Xmx2g 12 | kotlin.js.ir.output.granularity=per-file 13 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/encoder-fullstack-ktor/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /encoder-fullstack-ktor/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "encoder-fullstack-ktor" 9 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/src/commonMain/kotlin/com/example/Service.kt: -------------------------------------------------------------------------------- 1 | package com.example 2 | 3 | import dev.kilua.rpc.annotations.RpcService 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | enum class EncodingType { 8 | BASE64, URLENCODE, HEX 9 | } 10 | 11 | @RpcService 12 | interface IEncodingService { 13 | suspend fun encode(input: String, encodingType: EncodingType): String 14 | } 15 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Encoder 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/src/jvmMain/kotlin/com/example/Main.kt: -------------------------------------------------------------------------------- 1 | package com.example 2 | 3 | import dev.kilua.rpc.applyRoutes 4 | import dev.kilua.rpc.getServiceManager 5 | import dev.kilua.rpc.initRpc 6 | import dev.kilua.rpc.registerService 7 | import io.ktor.server.application.* 8 | import io.ktor.server.plugins.compression.* 9 | import io.ktor.server.routing.* 10 | import io.kvision.remote.registerRemoteTypes 11 | 12 | fun Application.main() { 13 | registerRemoteTypes() 14 | install(Compression) 15 | routing { 16 | applyRoutes(getServiceManager()) 17 | } 18 | initRpc { 19 | registerService { EncodingService() } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/src/jvmMain/kotlin/com/example/Service.kt: -------------------------------------------------------------------------------- 1 | package com.example 2 | 3 | import java.net.URLEncoder 4 | import java.util.* 5 | import javax.xml.bind.DatatypeConverter 6 | 7 | class EncodingService : IEncodingService { 8 | override suspend fun encode(input: String, encodingType: EncodingType): String { 9 | return when (encodingType) { 10 | EncodingType.BASE64 -> { 11 | Base64.getEncoder().encodeToString(input.toByteArray()) 12 | } 13 | EncodingType.URLENCODE -> { 14 | URLEncoder.encode(input, "UTF-8") 15 | } 16 | EncodingType.HEX -> { 17 | DatatypeConverter.printHexBinary(input.toByteArray()) 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/src/jvmMain/resources/application.conf: -------------------------------------------------------------------------------- 1 | ktor { 2 | deployment { 3 | port = 8080 4 | watch = [build/classes/kotlin/jvm/main] 5 | } 6 | 7 | application { 8 | modules = [com.example.MainKt.main] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /encoder-fullstack-ktor/webpack.config.d/proxy.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.proxy = [ 3 | { 4 | context: ["/rpc/*", "/rpcsse/*"], 5 | target: 'http://localhost:8080' 6 | }, 7 | { 8 | context: ["/rpcws/*"], 9 | target: 'http://localhost:8080', 10 | ws: true 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /encoder-fullstack-ktor/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /fomantic/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /fomantic/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /fomantic/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /fomantic/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | 6 | kotlin.js.ir.output.granularity=per-file 7 | -------------------------------------------------------------------------------- /fomantic/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /fomantic/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /fomantic/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "fomantic" 9 | -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision App 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/modules/css/kvapp.css: -------------------------------------------------------------------------------- 1 | .maplink { 2 | margin-left: 5px; 3 | } -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/modules/i18n/messages-en.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: English\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | 21 | #: ../src/main/kotlin/com/example/App.kt:20 22 | msgid "This is a localized message." 23 | msgstr "" 24 | -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/modules/i18n/messages.pot: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Content-Type: text/plain; charset=UTF-8\n" 4 | "Language: \n" 5 | 6 | #: src/main/kotlin/com/example/App.kt:27 7 | msgid "This is a localized message." 8 | msgstr "" 9 | -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/brand-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/brand-icons.eot -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/brand-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/brand-icons.ttf -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/brand-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/brand-icons.woff -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/brand-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/brand-icons.woff2 -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/outline-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/outline-icons.eot -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/outline-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/outline-icons.ttf -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/outline-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/outline-icons.woff -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/fonts/outline-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/fonts/outline-icons.woff2 -------------------------------------------------------------------------------- /fomantic/src/jsMain/resources/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/fomantic/src/jsMain/resources/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /fomantic/src/jsTest/kotlin/test/com/example/AppSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import io.kvision.test.SimpleSpec 4 | import kotlin.test.Test 5 | import kotlin.test.assertTrue 6 | 7 | class AppSpec : SimpleSpec { 8 | 9 | @Test 10 | fun render() { 11 | run { 12 | assertTrue(true, "Dummy test") 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /fomantic/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /fomantic/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /fomantic/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /fomantic/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /fomantic/webpack.config.d/jquery.js: -------------------------------------------------------------------------------- 1 | ;(function() { 2 | const webpack = require('webpack') 3 | 4 | config.plugins.push(new webpack.ProvidePlugin({ 5 | $: "jquery", 6 | jQuery: "jquery", 7 | "window.jQuery": "jquery" 8 | })); 9 | })(); 10 | -------------------------------------------------------------------------------- /fomantic/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /helloworld/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /helloworld/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /helloworld/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /helloworld/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | 6 | kotlin.js.ir.output.granularity=per-file 7 | -------------------------------------------------------------------------------- /helloworld/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/helloworld/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /helloworld/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /helloworld/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "helloworld" 9 | -------------------------------------------------------------------------------- /helloworld/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Helloworld 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /helloworld/src/jsMain/resources/modules/css/helloworld.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/helloworld/src/jsMain/resources/modules/css/helloworld.css -------------------------------------------------------------------------------- /helloworld/src/jsMain/resources/modules/i18n/messages-de.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: German\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | 21 | #: src/main/kotlin/com/example/Helloworld.kt:21 22 | msgid "Hello world!" 23 | msgstr "Hallo Welt!" 24 | -------------------------------------------------------------------------------- /helloworld/src/jsMain/resources/modules/i18n/messages-en.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: English\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | 21 | #: src/main/kotlin/com/example/Helloworld.kt:21 22 | msgid "Hello world!" 23 | msgstr "" 24 | -------------------------------------------------------------------------------- /helloworld/src/jsMain/resources/modules/i18n/messages-es.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: Spanish\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | 21 | #: src/main/kotlin/com/example/Helloworld.kt:21 22 | msgid "Hello world!" 23 | msgstr "Hola mundo!" 24 | -------------------------------------------------------------------------------- /helloworld/src/jsMain/resources/modules/i18n/messages-fr.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: French\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 20 | 21 | #: src/main/kotlin/com/example/Helloworld.kt:21 22 | msgid "Hello world!" 23 | msgstr "Bonjour monde!" 24 | -------------------------------------------------------------------------------- /helloworld/src/jsMain/resources/modules/i18n/messages-ja.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: Japanese\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=1; plural=0;\n" 20 | 21 | #: src/main/kotlin/com/example/Helloworld.kt:21 22 | msgid "Hello world!" 23 | msgstr "こんにちは世界!" 24 | -------------------------------------------------------------------------------- /helloworld/src/jsMain/resources/modules/i18n/messages-ko.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: Korean\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=1; plural=0;\n" 20 | 21 | #: src/main/kotlin/com/example/Helloworld.kt:21 22 | msgid "Hello world!" 23 | msgstr "여보세요 세계!" 24 | -------------------------------------------------------------------------------- /helloworld/src/jsMain/resources/modules/i18n/messages.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 02:14+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=CHARSET\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | 20 | #: src/main/kotlin/com/example/Helloworld.kt:21 21 | msgid "Hello world!" 22 | msgstr "" 23 | -------------------------------------------------------------------------------- /helloworld/src/jsTest/kotlin/test/com/example/HelloworldSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import com.example.Helloworld 4 | import io.kvision.i18n.I18n 5 | import io.kvision.test.DomSpec 6 | import kotlinx.browser.document 7 | import kotlin.test.Test 8 | import kotlin.test.assertTrue 9 | 10 | class HelloworldSpec : DomSpec { 11 | 12 | @Test 13 | fun render() { 14 | run { 15 | val helloworld = Helloworld("test") 16 | I18n.language = "en" 17 | helloworld.start(mapOf()) 18 | val element = document.getElementById("test") 19 | assertTrue( 20 | element?.innerHTML?.contains("Hello world!") ?: false, 21 | "Application should render Hello world! text" 22 | ) 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /helloworld/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /helloworld/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /helloworld/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /helloworld/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /helloworld/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /mini-template/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /mini-template/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | kotlin-js-store/ 10 | -------------------------------------------------------------------------------- /mini-template/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | ### Running 3 | * run - Starts a webpack dev server on port 8080. 4 | ### Packaging 5 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 6 | -------------------------------------------------------------------------------- /mini-template/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | val kotlinVersion: String by System.getProperties() 3 | kotlin("multiplatform") version kotlinVersion 4 | } 5 | 6 | repositories { 7 | mavenCentral() 8 | mavenLocal() 9 | } 10 | 11 | val kvisionVersion: String by System.getProperties() 12 | 13 | kotlin { 14 | js(IR) { 15 | browser { 16 | useEsModules() 17 | } 18 | binaries.executable() 19 | compilerOptions { 20 | target.set("es2015") 21 | } 22 | } 23 | sourceSets["jsMain"].dependencies { 24 | implementation("io.kvision:kvision:$kvisionVersion") 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /mini-template/gradle.properties: -------------------------------------------------------------------------------- 1 | systemProp.kotlinVersion=2.2.0-RC 2 | systemProp.kvisionVersion=9.1.0 3 | 4 | kotlin.js.ir.output.granularity=per-file 5 | -------------------------------------------------------------------------------- /mini-template/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/mini-template/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /mini-template/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /mini-template/src/jsMain/kotlin/com/example/App.kt: -------------------------------------------------------------------------------- 1 | package com.example 2 | 3 | import io.kvision.Application 4 | import io.kvision.Hot 5 | import io.kvision.html.div 6 | import io.kvision.panel.root 7 | import io.kvision.startApplication 8 | 9 | class App : Application() { 10 | 11 | override fun start() { 12 | root("kvapp") { 13 | div("Hello KVision!") 14 | } 15 | } 16 | } 17 | 18 | fun main() { 19 | startApplication(::App, js("import.meta.webpackHot").unsafeCast()) 20 | } 21 | -------------------------------------------------------------------------------- /mini-template/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | KVision Mini Template 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /mini-template/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /mini-template/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /mini-template/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /mini-template/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /patternfly/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /patternfly/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /patternfly/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /patternfly/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | 6 | kotlin.js.ir.output.granularity=per-file 7 | -------------------------------------------------------------------------------- /patternfly/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/patternfly/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /patternfly/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /patternfly/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "patternfly" 9 | -------------------------------------------------------------------------------- /patternfly/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Patternfly demo 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /patternfly/src/jsMain/resources/modules/i18n/messages-en.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: English\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | 21 | #: ../src/main/kotlin/com/example/App.kt:20 22 | msgid "This is a localized message." 23 | msgstr "" 24 | -------------------------------------------------------------------------------- /patternfly/src/jsMain/resources/modules/i18n/messages.pot: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Content-Type: text/plain; charset=UTF-8\n" 4 | "Language: \n" 5 | 6 | #: src/main/kotlin/com/example/App.kt:27 7 | msgid "This is a localized message." 8 | msgstr "" 9 | -------------------------------------------------------------------------------- /patternfly/src/jsTest/kotlin/test/com/example/AppSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import io.kvision.test.SimpleSpec 4 | import kotlin.test.Test 5 | import kotlin.test.assertTrue 6 | 7 | class AppSpec : SimpleSpec { 8 | 9 | @Test 10 | fun render() { 11 | run { 12 | assertTrue(true, "Dummy test") 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /patternfly/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /patternfly/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /patternfly/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /patternfly/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /patternfly/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /pokedex/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /pokedex/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /pokedex/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /pokedex/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | 6 | kotlin.js.ir.output.granularity=per-file 7 | -------------------------------------------------------------------------------- /pokedex/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/pokedex/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /pokedex/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /pokedex/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "pokedex" 9 | -------------------------------------------------------------------------------- /pokedex/src/jsMain/resources/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/pokedex/src/jsMain/resources/icons/128x128.png -------------------------------------------------------------------------------- /pokedex/src/jsMain/resources/icons/16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/pokedex/src/jsMain/resources/icons/16x16.png -------------------------------------------------------------------------------- /pokedex/src/jsMain/resources/icons/24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/pokedex/src/jsMain/resources/icons/24x24.png -------------------------------------------------------------------------------- /pokedex/src/jsMain/resources/icons/256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/pokedex/src/jsMain/resources/icons/256x256.png -------------------------------------------------------------------------------- /pokedex/src/jsMain/resources/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/pokedex/src/jsMain/resources/icons/32x32.png -------------------------------------------------------------------------------- /pokedex/src/jsMain/resources/icons/48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/pokedex/src/jsMain/resources/icons/48x48.png -------------------------------------------------------------------------------- /pokedex/src/jsMain/resources/icons/512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/pokedex/src/jsMain/resources/icons/512x512.png -------------------------------------------------------------------------------- /pokedex/src/jsMain/resources/icons/64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/pokedex/src/jsMain/resources/icons/64x64.png -------------------------------------------------------------------------------- /pokedex/src/jsMain/resources/icons/96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/pokedex/src/jsMain/resources/icons/96x96.png -------------------------------------------------------------------------------- /pokedex/src/jsTest/kotlin/test/com/example/AppSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import io.kvision.test.DomSpec 4 | import kotlin.test.Test 5 | import kotlin.test.assertTrue 6 | 7 | class AppSpec : DomSpec { 8 | 9 | @Test 10 | fun render() { 11 | run { 12 | assertTrue(true, "Dummy test") 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /pokedex/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /pokedex/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /pokedex/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /pokedex/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /pokedex/webpack.config.d/pwa.js: -------------------------------------------------------------------------------- 1 | const {GenerateSW} = require('workbox-webpack-plugin'); 2 | const {addTemplatedURLs} = require("ur-workbox-utils"); 3 | 4 | config.plugins.push(new GenerateSW({ 5 | cacheId: 'pokedex', 6 | maximumFileSizeToCacheInBytes: 10 * 1024 * 1024, 7 | manifestTransforms: [ 8 | addTemplatedURLs({ 9 | "index.html": ["../../../../src/jsMain/resources/index.html"] 10 | }) 11 | ] 12 | })); 13 | -------------------------------------------------------------------------------- /pokedex/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /showcase/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /showcase/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /showcase/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /showcase/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | 6 | kotlin.js.ir.output.granularity=per-file 7 | -------------------------------------------------------------------------------- /showcase/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/showcase/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /showcase/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /showcase/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "showcase" 9 | -------------------------------------------------------------------------------- /showcase/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision Showcase 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /showcase/src/jsMain/resources/modules/css/showcase.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/showcase/src/jsMain/resources/modules/css/showcase.css -------------------------------------------------------------------------------- /showcase/src/jsMain/resources/modules/hbs/rest.en.hbs: -------------------------------------------------------------------------------- 1 |

Number of repositories: {{total_count}}

2 | -------------------------------------------------------------------------------- /showcase/src/jsMain/resources/modules/hbs/rest.pl.hbs: -------------------------------------------------------------------------------- 1 |

Liczba repozytoriów: {{total_count}}

2 | -------------------------------------------------------------------------------- /showcase/src/jsMain/resources/modules/hbs/template1.en.hbs: -------------------------------------------------------------------------------- 1 |

Hello, my name is {{name}}. I am from {{hometown}}. I have {{kids.length}} kids:

2 |
    {{#kids}}
  • {{name}} is {{age}}
  • {{/kids}}
3 | -------------------------------------------------------------------------------- /showcase/src/jsMain/resources/modules/hbs/template1.pl.hbs: -------------------------------------------------------------------------------- 1 |

Cześć, nazywam się {{name}}. Mieszkam w {{hometown}}. Mam {{kids.length}} dzieci:

2 |
    {{#kids}}
  • {{name}} ma {{age}} lat
  • {{/kids}}
3 | -------------------------------------------------------------------------------- /showcase/src/jsMain/resources/modules/img/cat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/showcase/src/jsMain/resources/modules/img/cat.jpg -------------------------------------------------------------------------------- /showcase/src/jsMain/resources/modules/img/dog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/showcase/src/jsMain/resources/modules/img/dog.jpg -------------------------------------------------------------------------------- /showcase/src/jsTest/kotlin/test/com/example/ShowcaseSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import io.kvision.test.DomSpec 4 | import kotlinx.browser.document 5 | import kotlin.test.Test 6 | import kotlin.test.assertTrue 7 | 8 | class ShowcaseSpec : DomSpec { 9 | 10 | override fun getTestId() = "showcase" 11 | 12 | @Test 13 | fun render() { 14 | run { 15 | val element = document.getElementById("showcase") 16 | assertTrue(element != null, "Element exists") 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /showcase/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /showcase/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /showcase/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /showcase/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /showcase/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /tailwindcss/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /tailwindcss/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /tailwindcss/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /tailwindcss/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | 6 | kotlin.js.ir.output.granularity=per-file 7 | -------------------------------------------------------------------------------- /tailwindcss/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/tailwindcss/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /tailwindcss/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /tailwindcss/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "tailwindcss" 9 | -------------------------------------------------------------------------------- /tailwindcss/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision App 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /tailwindcss/src/jsMain/resources/modules/css/kvapp.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/tailwindcss/src/jsMain/resources/modules/css/kvapp.css -------------------------------------------------------------------------------- /tailwindcss/src/jsMain/resources/modules/i18n/messages-en.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: English\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | 21 | #: ../src/main/kotlin/com/example/App.kt:20 22 | msgid "This is a localized message." 23 | msgstr "" 24 | -------------------------------------------------------------------------------- /tailwindcss/src/jsMain/resources/modules/i18n/messages.pot: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Content-Type: text/plain; charset=UTF-8\n" 4 | "Language: \n" 5 | 6 | #: src/main/kotlin/com/example/App.kt:31 7 | msgid "This is a localized message." 8 | msgstr "" 9 | -------------------------------------------------------------------------------- /tailwindcss/src/jsMain/resources/modules/img/cat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/tailwindcss/src/jsMain/resources/modules/img/cat.jpg -------------------------------------------------------------------------------- /tailwindcss/src/jsMain/resources/tailwind/tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: { 3 | files: [ "SOURCES" ] 4 | }, 5 | } 6 | -------------------------------------------------------------------------------- /tailwindcss/src/jsMain/resources/tailwind/tailwind.twcss: -------------------------------------------------------------------------------- 1 | @config "./tailwind.config.js"; 2 | @import "tailwindcss"; 3 | @custom-variant dark (&:where(.dark, .dark *)); 4 | @source inline("bg-neutral-500 text-white font-bold inline-block rounded-full"); 5 | -------------------------------------------------------------------------------- /tailwindcss/src/jsTest/kotlin/test/com/example/AppSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import io.kvision.test.SimpleSpec 4 | import kotlin.test.Test 5 | import kotlin.test.assertTrue 6 | 7 | class AppSpec : SimpleSpec { 8 | 9 | @Test 10 | fun render() { 11 | run { 12 | assertTrue(true, "Dummy test") 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tailwindcss/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /tailwindcss/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /tailwindcss/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /tailwindcss/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /tailwindcss/webpack.config.d/tailwind.js: -------------------------------------------------------------------------------- 1 | ;(function() { 2 | config.module.rules.push({ 3 | test: /\.twcss$/, 4 | use: [ 5 | "style-loader", 6 | { 7 | loader: "css-loader", 8 | options: {sourceMap: false} 9 | }, 10 | { 11 | loader: "postcss-loader", 12 | options: { 13 | postcssOptions: { 14 | plugins: [ 15 | ["@tailwindcss/postcss", {} ], 16 | (config.devServer ? undefined : [ "cssnano", {} ]) 17 | ] 18 | } 19 | } 20 | } 21 | ] 22 | }); 23 | })(); 24 | -------------------------------------------------------------------------------- /tailwindcss/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /template/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /template/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /template/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /template/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | 6 | kotlin.js.ir.output.granularity=per-file 7 | -------------------------------------------------------------------------------- /template/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/template/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /template/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /template/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "template" 9 | -------------------------------------------------------------------------------- /template/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision App 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /template/src/jsMain/resources/modules/css/kvapp.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/template/src/jsMain/resources/modules/css/kvapp.css -------------------------------------------------------------------------------- /template/src/jsMain/resources/modules/i18n/messages-en.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the KVision package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: KVision\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-08-18 01:34+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: English\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | 21 | #: ../src/main/kotlin/com/example/App.kt:20 22 | msgid "This is a localized message." 23 | msgstr "" 24 | -------------------------------------------------------------------------------- /template/src/jsMain/resources/modules/i18n/messages.pot: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Content-Type: text/plain; charset=UTF-8\n" 4 | "Language: \n" 5 | 6 | #: src/jsMain/kotlin/com/example/App.kt:40 7 | msgid "This is a localized message." 8 | msgstr "" 9 | -------------------------------------------------------------------------------- /template/src/jsTest/kotlin/test/com/example/AppSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import io.kvision.test.SimpleSpec 4 | import kotlin.test.Test 5 | import kotlin.test.assertTrue 6 | 7 | class AppSpec : SimpleSpec { 8 | 9 | @Test 10 | fun render() { 11 | run { 12 | assertTrue(true, "Dummy test") 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /template/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /template/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /template/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /template/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /template/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /todomvc-ballast/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /todomvc-ballast/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /todomvc-ballast/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /todomvc-ballast/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | koinVersion=4.1.0-Beta7 6 | 7 | kotlin.js.ir.output.granularity=per-file 8 | -------------------------------------------------------------------------------- /todomvc-ballast/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/todomvc-ballast/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /todomvc-ballast/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /todomvc-ballast/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "todomvc-ballast" 9 | -------------------------------------------------------------------------------- /todomvc-ballast/src/jsMain/kotlin/com/example/TodoEventHandler.kt: -------------------------------------------------------------------------------- 1 | package com.example 2 | 3 | import com.copperleaf.ballast.EventHandler 4 | import com.copperleaf.ballast.EventHandlerScope 5 | import io.kvision.routing.KVRouter 6 | 7 | class TodoEventHandler(private val routing: KVRouter) : 8 | EventHandler { 9 | override suspend fun EventHandlerScope.handleEvent( 10 | event: TodoContract.Events 11 | ) = when (event) { 12 | is TodoContract.Events.StateRestored -> { 13 | routing.kvResolve() 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /todomvc-ballast/src/jsMain/kotlin/com/example/TodoModel.kt: -------------------------------------------------------------------------------- 1 | package com.example 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | enum class MODE { 7 | ALL, 8 | ACTIVE, 9 | COMPLETED 10 | } 11 | 12 | @Serializable 13 | data class Todo(val completed: Boolean, val title: String) 14 | -------------------------------------------------------------------------------- /todomvc-ballast/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision • TodoMVC 7 | 8 | 9 | 10 | 11 |
12 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /todomvc-ballast/src/jsMain/resources/node_modules/todomvc-common/readme.md: -------------------------------------------------------------------------------- 1 | # todomvc-common 2 | 3 | > Common TodoMVC utilities used by our apps 4 | 5 | 6 | ## Install 7 | 8 | ``` 9 | $ npm install --save todomvc-common 10 | ``` 11 | 12 | 13 | ## License 14 | 15 | MIT © [TasteJS](http://tastejs.com) 16 | -------------------------------------------------------------------------------- /todomvc-ballast/src/jsMain/resources/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "requires": true, 3 | "lockfileVersion": 1, 4 | "dependencies": { 5 | "todomvc-app-css": { 6 | "version": "2.1.0", 7 | "resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.1.0.tgz", 8 | "integrity": "sha1-tvJxbTOa+i5feZNH0qSLBTliQqU=" 9 | }, 10 | "todomvc-common": { 11 | "version": "1.0.4", 12 | "resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.4.tgz", 13 | "integrity": "sha512-AA0Z4exovEqubhbZCrzzn9roVT4zvOncS319p2zIc4CsNe5B9TLL7Sei1NIV6d+WrgR5rOi+y0I9Y6GE7xgNOw==" 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /todomvc-ballast/src/jsMain/resources/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "dependencies": { 4 | "todomvc-app-css": "2.1.0", 5 | "todomvc-common": "1.0.4" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /todomvc-ballast/src/jsTest/kotlin/test/com/example/AppSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import io.kvision.test.DomSpec 4 | import kotlin.test.Test 5 | import kotlin.test.assertTrue 6 | 7 | class AppSpec : DomSpec { 8 | 9 | @Test 10 | fun render() { 11 | run { 12 | assertTrue(true, "Dummy test") 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /todomvc-ballast/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /todomvc-ballast/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /todomvc-ballast/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /todomvc-ballast/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /todomvc-ballast/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /todomvc/.gettext.json: -------------------------------------------------------------------------------- 1 | { 2 | "js": { 3 | "parsers": [ 4 | { 5 | "expression": "tr", 6 | "arguments": { 7 | "text": 0 8 | } 9 | }, 10 | { 11 | "expression": "ntr", 12 | "arguments": { 13 | "text": 0, 14 | "textPlural": 1 15 | } 16 | }, 17 | { 18 | "expression": "gettext", 19 | "arguments": { 20 | "text": 0 21 | } 22 | }, 23 | { 24 | "expression": "ngettext", 25 | "arguments": { 26 | "text": 0, 27 | "textPlural": 1 28 | } 29 | } 30 | ], 31 | "glob": { 32 | "pattern": "src/jsMain/**/*.kt" 33 | } 34 | }, 35 | "headers": { 36 | "Language": "" 37 | }, 38 | "output": "src/jsMain/resources/modules/i18n/messages.pot" 39 | } 40 | -------------------------------------------------------------------------------- /todomvc/.gitignore: -------------------------------------------------------------------------------- 1 | .*/ 2 | build/ 3 | out/ 4 | /refresh.sh 5 | *.imp 6 | *.ipr 7 | *.iws 8 | *.idea 9 | -------------------------------------------------------------------------------- /todomvc/README.md: -------------------------------------------------------------------------------- 1 | ## Gradle Tasks 2 | 3 | ### Resource Processing 4 | * generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file. 5 | ### Running 6 | * run - Starts a webpack dev server on port 3000. 7 | ### Packaging 8 | * jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable` 9 | * zip - Packages a zip archive with all required files into `build/libs/*.zip` 10 | -------------------------------------------------------------------------------- /todomvc/gradle.properties: -------------------------------------------------------------------------------- 1 | #Plugins 2 | systemProp.kotlinVersion=2.2.0-RC 3 | #Dependencies 4 | systemProp.kvisionVersion=9.1.0 5 | 6 | kotlin.js.ir.output.granularity=per-file 7 | -------------------------------------------------------------------------------- /todomvc/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rjaros/kvision-examples/7c05fe3d8651ed54f0aa8c0d723d8e991c7312a2/todomvc/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /todomvc/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-all.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /todomvc/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } 8 | rootProject.name = "todomvc" 9 | -------------------------------------------------------------------------------- /todomvc/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | KVision • TodoMVC 7 | 8 | 9 | 10 | 11 |
12 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /todomvc/src/jsMain/resources/node_modules/todomvc-common/readme.md: -------------------------------------------------------------------------------- 1 | # todomvc-common 2 | 3 | > Common TodoMVC utilities used by our apps 4 | 5 | 6 | ## Install 7 | 8 | ``` 9 | $ npm install --save todomvc-common 10 | ``` 11 | 12 | 13 | ## License 14 | 15 | MIT © [TasteJS](http://tastejs.com) 16 | -------------------------------------------------------------------------------- /todomvc/src/jsMain/resources/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "requires": true, 3 | "lockfileVersion": 1, 4 | "dependencies": { 5 | "todomvc-app-css": { 6 | "version": "2.1.0", 7 | "resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.1.0.tgz", 8 | "integrity": "sha1-tvJxbTOa+i5feZNH0qSLBTliQqU=" 9 | }, 10 | "todomvc-common": { 11 | "version": "1.0.4", 12 | "resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.4.tgz", 13 | "integrity": "sha512-AA0Z4exovEqubhbZCrzzn9roVT4zvOncS319p2zIc4CsNe5B9TLL7Sei1NIV6d+WrgR5rOi+y0I9Y6GE7xgNOw==" 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /todomvc/src/jsMain/resources/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "dependencies": { 4 | "todomvc-app-css": "2.1.0", 5 | "todomvc-common": "1.0.4" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /todomvc/src/jsTest/kotlin/test/com/example/AppSpec.kt: -------------------------------------------------------------------------------- 1 | package test.com.example 2 | 3 | import io.kvision.test.DomSpec 4 | import kotlin.test.Test 5 | import kotlin.test.assertTrue 6 | 7 | class AppSpec : DomSpec { 8 | 9 | @Test 10 | fun render() { 11 | run { 12 | assertTrue(true, "Dummy test") 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /todomvc/webpack.config.d/bootstrap.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 2 | config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'}); 3 | config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'}); 4 | -------------------------------------------------------------------------------- /todomvc/webpack.config.d/css.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] }); 2 | -------------------------------------------------------------------------------- /todomvc/webpack.config.d/file.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.(jpe?g|png|gif|svg)$/i, 4 | type: 'asset/resource' 5 | } 6 | ); 7 | -------------------------------------------------------------------------------- /todomvc/webpack.config.d/handlebars.js: -------------------------------------------------------------------------------- 1 | config.module.rules.push( 2 | { 3 | test: /\.hbs$/i, 4 | loader: 'handlebars-loader' 5 | } 6 | ); -------------------------------------------------------------------------------- /todomvc/webpack.config.d/webpack.js: -------------------------------------------------------------------------------- 1 | if (config.devServer) { 2 | config.devServer.hot = true; 3 | config.devServer.open = false; 4 | config.devServer.port = 3000; 5 | config.devServer.historyApiFallback = true; 6 | config.devtool = 'eval-cheap-source-map'; 7 | } else { 8 | config.devtool = undefined; 9 | } 10 | 11 | // disable bundle size warning 12 | config.performance = { 13 | assetFilter: function (assetFilename) { 14 | return !assetFilename.endsWith('.js'); 15 | }, 16 | }; 17 | --------------------------------------------------------------------------------