diff --git a/features/createroom/src/main/kotlin/io/element/android/features/createroom/root/CreateRoomRootScreen.kt b/features/createroom/src/main/kotlin/io/element/android/features/createroom/root/CreateRoomRootScreen.kt
index 0bbbaeede1..6b38708e0a 100644
--- a/features/createroom/src/main/kotlin/io/element/android/features/createroom/root/CreateRoomRootScreen.kt
+++ b/features/createroom/src/main/kotlin/io/element/android/features/createroom/root/CreateRoomRootScreen.kt
@@ -16,48 +16,66 @@
package io.element.android.features.createroom.root
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.displayCutoutPadding
import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
+import androidx.compose.ui.unit.sp
+import io.element.android.libraries.designsystem.R
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
+import io.element.android.libraries.designsystem.theme.components.CenterAlignedTopAppBar
import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.theme.components.IconButton
+import io.element.android.libraries.designsystem.theme.components.Scaffold
import io.element.android.libraries.designsystem.theme.components.Text
-import io.element.android.libraries.designsystem.R.drawable as DrawableR
import io.element.android.libraries.ui.strings.R.string as StringR
+@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun CreateRoomRootScreen(
state: CreateRoomRootState,
modifier: Modifier = Modifier,
- onBackPressed: () -> Unit = {}
+ onClosePressed: () -> Unit = {}
) {
- Box(
- modifier = modifier
- .fillMaxWidth()
- .displayCutoutPadding(),
- ) {
- Text(
- text = stringResource(id = StringR.create_chat),
- modifier = Modifier.align(Alignment.Center)
- )
- IconButton(
- modifier = Modifier
- .align(Alignment.CenterEnd),
- onClick = onBackPressed,
- ) {
- Icon(resourceId = DrawableR.ic_close, contentDescription = stringResource(id = StringR.action_close))
+ Scaffold(
+ modifier = modifier.fillMaxWidth(),
+ // TODO to test
+ //.displayCutoutPadding()
+ topBar = {
+ CreateRoomViewTopBar(onClosePressed = onClosePressed)
}
+ ) {
}
}
+@OptIn(ExperimentalMaterial3Api::class)
+@Composable
+fun CreateRoomViewTopBar(
+ modifier: Modifier = Modifier,
+ onClosePressed: () -> Unit = {},
+) {
+ CenterAlignedTopAppBar(
+ modifier = modifier,
+ title = {
+ Text(
+ text = stringResource(id = StringR.start_chat),
+ fontSize = 16.sp,
+ fontWeight = FontWeight.SemiBold,
+ )
+ },
+ actions = {
+ IconButton(onClick = onClosePressed) {
+ Icon(resourceId = R.drawable.ic_close, contentDescription = stringResource(id = StringR.action_close))
+ }
+ }
+ )
+}
+
@Preview
@Composable
fun CreateRoomRootViewLightPreview(@PreviewParameter(CreateRoomRootStateProvider::class) state: CreateRoomRootState) =
diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/CenterAlignedTopAppBar.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/CenterAlignedTopAppBar.kt
new file mode 100644
index 0000000000..36df702284
--- /dev/null
+++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/CenterAlignedTopAppBar.kt
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2023 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@file:OptIn(ExperimentalMaterial3Api::class)
+
+package io.element.android.libraries.designsystem.theme.components
+
+import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.WindowInsets
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.TopAppBarColors
+import androidx.compose.material3.TopAppBarDefaults
+import androidx.compose.material3.TopAppBarScrollBehavior
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.tooling.preview.Preview
+import io.element.android.libraries.designsystem.preview.ElementPreviewDark
+import io.element.android.libraries.designsystem.preview.ElementPreviewLight
+
+@OptIn(ExperimentalMaterial3Api::class)
+@Composable
+fun CenterAlignedTopAppBar(
+ title: @Composable () -> Unit,
+ modifier: Modifier = Modifier,
+ navigationIcon: @Composable () -> Unit = {},
+ actions: @Composable RowScope.() -> Unit = {},
+ windowInsets: WindowInsets = TopAppBarDefaults.windowInsets,
+ colors: TopAppBarColors = TopAppBarDefaults.smallTopAppBarColors(),
+ scrollBehavior: TopAppBarScrollBehavior? = null
+) {
+ androidx.compose.material3.CenterAlignedTopAppBar(
+ title = title,
+ modifier = modifier,
+ navigationIcon = navigationIcon,
+ actions = actions,
+ windowInsets = windowInsets,
+ colors = colors,
+ scrollBehavior = scrollBehavior,
+ )
+}
+
+@Preview
+@Composable
+internal fun CenterAlignedTopAppBarLightPreview() =
+ ElementPreviewLight { ContentToPreview() }
+
+@Preview
+@Composable
+internal fun CenterAlignedTopAppBarDarkPreview() =
+ ElementPreviewDark { ContentToPreview() }
+
+@Composable
+private fun ContentToPreview() {
+ TopAppBar(title = { Text(text = "Title") })
+}
diff --git a/libraries/ui-strings/src/main/res/values/strings_eax.xml b/libraries/ui-strings/src/main/res/values/strings_eax.xml
index ee0ee67aed..0ed87ec9f0 100644
--- a/libraries/ui-strings/src/main/res/values/strings_eax.xml
+++ b/libraries/ui-strings/src/main/res/values/strings_eax.xml
@@ -14,6 +14,5 @@
You can only connect to an existing server that supports sliding sync. Your homeserver admin will need to configure it.
Server not supported
This server currently doesn\'t support sliding sync.
- Create chat