Skip to content

Commit df29100

Browse files
committed
chore: cleanup and dep updates
1 parent 7ef4ec0 commit df29100

File tree

24 files changed

+236
-61
lines changed

24 files changed

+236
-61
lines changed

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,9 @@ classes.lst
1919
*.jsa
2020
jre/
2121

22+
# Kobweb ignores
23+
**/.kobweb/*
24+
!**/.kobweb/conf.yaml
25+
2226
# Gradle release
23-
cx.json
27+
cx.json

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ $ ./gradlew :backend:native:macOsUniversalBinary
5858
$ ./gradlew :backend:native:jibDockerBuild
5959
$ docker run -it --rm --name native-app sureshg/native
6060

61+
# Kobweb
62+
$ kobweb run -p compose/web
63+
$ ./gradlew :compose:web:kobwebStart -t
64+
$ ./gradlew :compose:web:kobwebStop
65+
6166
# Compose Desktop
6267
$ ./gradlew :compose:desktop:runDistributable
6368
$ ./gradlew :compose:desktop:packageDistributionForCurrentOS

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
plugins {
22
plugins.common
33
plugins.misc
4+
alias(libs.plugins.jetbrains.compose) apply false
45
// kotlin("multiplatform") apply false
56
}
67

client/build.gradle.kts

Lines changed: 0 additions & 6 deletions
This file was deleted.

compose/desktop/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
55
plugins {
66
plugins.kotlin.mpp
77
plugins.publishing
8-
alias(libs.plugins.jetbrains.compose.mpp)
8+
alias(libs.plugins.jetbrains.compose)
99
}
1010

1111
dependencies {

compose/web/.kobweb/conf.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
site:
2+
title: "Kobweb App"
3+
4+
server:
5+
files:
6+
dev:
7+
contentRoot: "build/processedResources/js/main/public"
8+
script: "build/dist/js/developmentExecutable/web.js"
9+
api: "build/libs/web.jar"
10+
prod:
11+
script: "build/dist/js/productionExecutable/web.js"
12+
siteRoot: ".kobweb/site"
13+
14+
port: 8080

compose/web/README.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

compose/web/build.gradle.kts

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,43 @@
11
plugins {
22
plugins.kotlin.mpp
33
plugins.publishing
4+
alias(libs.plugins.jetbrains.compose)
5+
alias(libs.plugins.kobweb.application)
6+
alias(libs.plugins.kobwebx.markdown)
47
}
58

6-
dependencies { commonMainImplementation(projects.common) }
9+
kobweb { app { index { this.description.set("Kobweb!") } } }
10+
11+
tasks {
12+
jsProcessResources {
13+
inputs.property("version", project.version.toString())
14+
filesMatching("manifest.json") {
15+
expand(
16+
"name" to project.name,
17+
"version" to project.version.toString().substringBeforeLast("."),
18+
)
19+
}
20+
}
21+
}
22+
23+
kotlin {
24+
sourceSets {
25+
commonMain {
26+
dependencies {
27+
implementation(projects.common)
28+
implementation(compose.runtime)
29+
}
30+
}
31+
32+
jsMain {
33+
dependencies {
34+
implementation(compose.html.core)
35+
implementation(libs.kobweb.core)
36+
implementation(libs.kobweb.silk)
37+
implementation(libs.kobwebx.markdown)
38+
// implementation(compose.html.svg)
39+
// implementation(libs.silk.icons.fa)
40+
}
41+
}
42+
}
43+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package dev.suresh
2+
3+
import androidx.compose.runtime.Composable
4+
import androidx.compose.runtime.LaunchedEffect
5+
import com.varabyte.kobweb.compose.css.ScrollBehavior
6+
import com.varabyte.kobweb.compose.ui.modifiers.minHeight
7+
import com.varabyte.kobweb.compose.ui.modifiers.scrollBehavior
8+
import com.varabyte.kobweb.core.App
9+
import com.varabyte.kobweb.silk.SilkApp
10+
import com.varabyte.kobweb.silk.components.layout.Surface
11+
import com.varabyte.kobweb.silk.components.style.common.SmoothColorStyle
12+
import com.varabyte.kobweb.silk.components.style.toModifier
13+
import com.varabyte.kobweb.silk.init.InitSilk
14+
import com.varabyte.kobweb.silk.init.InitSilkContext
15+
import com.varabyte.kobweb.silk.theme.colors.ColorMode
16+
import kotlinx.browser.localStorage
17+
import org.jetbrains.compose.web.css.vh
18+
19+
private const val COLOR_MODE_KEY = "playground:colorMode"
20+
21+
@InitSilk
22+
fun initColorMode(ctx: InitSilkContext) {
23+
ctx.config.initialColorMode =
24+
localStorage.getItem(COLOR_MODE_KEY)?.let { ColorMode.valueOf(it) } ?: ColorMode.DARK
25+
}
26+
27+
@App
28+
@Composable
29+
fun MyApp(content: @Composable () -> Unit) {
30+
SilkApp {
31+
val colorMode = ColorMode.current
32+
LaunchedEffect(colorMode) { localStorage.setItem(COLOR_MODE_KEY, colorMode.name) }
33+
Surface(SmoothColorStyle.toModifier().minHeight(100.vh).scrollBehavior(ScrollBehavior.Smooth)) {
34+
content()
35+
}
36+
}
37+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package dev.suresh.pages
2+
3+
import BuildConfig
4+
import androidx.compose.runtime.Composable
5+
import androidx.compose.runtime.getValue
6+
import androidx.compose.runtime.setValue
7+
import com.varabyte.kobweb.compose.foundation.layout.Column
8+
import com.varabyte.kobweb.compose.foundation.layout.Row
9+
import com.varabyte.kobweb.compose.ui.Alignment
10+
import com.varabyte.kobweb.compose.ui.Modifier
11+
import com.varabyte.kobweb.compose.ui.modifiers.borderRadius
12+
import com.varabyte.kobweb.compose.ui.modifiers.fillMaxSize
13+
import com.varabyte.kobweb.compose.ui.modifiers.flexWrap
14+
import com.varabyte.kobweb.compose.ui.modifiers.padding
15+
import com.varabyte.kobweb.core.Page
16+
import com.varabyte.kobweb.silk.components.forms.Button
17+
import com.varabyte.kobweb.silk.components.icons.MoonIcon
18+
import com.varabyte.kobweb.silk.components.icons.SunIcon
19+
import com.varabyte.kobweb.silk.components.navigation.Link
20+
import com.varabyte.kobweb.silk.components.text.SpanText
21+
import com.varabyte.kobweb.silk.theme.colors.ColorMode
22+
import org.jetbrains.compose.web.css.FlexWrap
23+
import org.jetbrains.compose.web.css.percent
24+
import org.jetbrains.compose.web.css.px
25+
import org.jetbrains.compose.web.dom.H1
26+
import org.jetbrains.compose.web.dom.Text
27+
28+
@Page
29+
@Composable
30+
fun HomePage() {
31+
Column(Modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally) {
32+
Row(Modifier.align(Alignment.End)) {
33+
var colorMode by ColorMode.currentState
34+
Button(
35+
onClick = { colorMode = colorMode.opposite },
36+
Modifier.borderRadius(50.percent).padding(0.px)) {
37+
// Includes support for Font Awesome icons
38+
if (colorMode.isLight) SunIcon() else MoonIcon()
39+
}
40+
}
41+
42+
H1 { Text("Welcome to Kobweb! ${BuildConfig.version}") }
43+
44+
Row(Modifier.flexWrap(FlexWrap.Wrap)) {
45+
SpanText("Create rich, dynamic web apps with ease, leveraging ")
46+
Link("https://kotlinlang.org/", "Kotlin")
47+
SpanText(" and ")
48+
Link("https://github.com/JetBrains/compose-multiplatform#compose-html/", "Compose HTML")
49+
}
50+
}
51+
}

0 commit comments

Comments
 (0)