├── .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 |
--------------------------------------------------------------------------------