compose-lobsters/desktop/src/jvmMain/kotlin/main.kt

65 lines
2.3 KiB
Kotlin

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollbarAdapter
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.WindowPlacement
import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.application
import androidx.compose.ui.window.rememberWindowState
import dev.msfjarvis.claw.common.posts.LobstersCard
import dev.msfjarvis.claw.common.posts.TEST_POST
import dev.msfjarvis.claw.common.theme.LobstersTheme
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
import org.pushingpixels.aurora.component.AuroraVerticalScrollbar
import org.pushingpixels.aurora.skin.ceruleanSkin
import org.pushingpixels.aurora.window.AuroraWindow
fun main() = application {
val urlLauncher = UrlLauncher()
val state =
rememberWindowState(
placement = WindowPlacement.Floating,
position = WindowPosition.Aligned(Alignment.Center),
)
val itemsList = (0 until 10).toList()
AuroraWindow(
skin = ceruleanSkin(),
title = "Claw",
state = state,
undecorated = true,
onCloseRequest = ::exitApplication,
) {
LobstersTheme(darkTheme = false) {
Box(
modifier = Modifier.fillMaxSize(),
) {
val listState = rememberLazyListState()
LazyColumn(
state = listState,
) {
itemsIndexed(itemsList) { _, _ ->
LobstersCard(
post = TEST_POST,
isSaved = false,
viewPost = { urlLauncher.launch(TEST_POST.url.ifEmpty { TEST_POST.commentsUrl }) },
viewComments = { urlLauncher.launch(TEST_POST.commentsUrl) },
toggleSave = {},
modifier = Modifier.padding(bottom = 16.dp, start = 16.dp, end = 16.dp),
)
}
}
AuroraVerticalScrollbar(
adapter = rememberScrollbarAdapter(listState),
modifier = Modifier.align(Alignment.CenterEnd).fillMaxHeight(),
)
}
}
}
}