diff --git a/app/src/main/java/be/ugent/sel/studeez/common/composable/FloatingActionButtonComposable.kt b/app/src/main/java/be/ugent/sel/studeez/common/composable/FloatingActionButtonComposable.kt
new file mode 100644
index 0000000..15005fa
--- /dev/null
+++ b/app/src/main/java/be/ugent/sel/studeez/common/composable/FloatingActionButtonComposable.kt
@@ -0,0 +1,62 @@
+package be.ugent.sel.studeez.common.composable
+
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.material.FloatingActionButton
+import androidx.compose.material.Icon
+import androidx.compose.material.IconButton
+import androidx.compose.material.Text
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Add
+import androidx.compose.material.icons.filled.Check
+import androidx.compose.material.icons.filled.DateRange
+import androidx.compose.material.icons.filled.Person
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.tooling.preview.Preview
+import be.ugent.sel.studeez.ui.theme.StudeezTheme
+
+@Composable
+fun CollapsedAddButton() {
+ FloatingActionButton(
+ onClick = { /* TODO popup add options */ }
+ ) {
+ Icon(imageVector = Icons.Default.Add, contentDescription = "fab")
+ }
+}
+
+@Composable
+fun ExpandedAddButton() {
+ Row() {
+ IconButton(onClick = { /* TODO Go to next step */ }) {
+ Column (horizontalAlignment = Alignment.CenterHorizontally) {
+ Icon(imageVector = Icons.Default.Check, contentDescription = "Task")
+ Text(text = "Task")
+ }
+ }
+ IconButton(onClick = { /* TODO Go to next step */ }) {
+ Column (horizontalAlignment = Alignment.CenterHorizontally) {
+ Icon(imageVector = Icons.Default.Person, contentDescription = "Friend")
+ Text(text = "Friend")
+ }
+ }
+ IconButton(onClick = { /* TODO Go to next step */ }) {
+ Column (horizontalAlignment = Alignment.CenterHorizontally) {
+ Icon(imageVector = Icons.Default.DateRange, contentDescription = "Session")
+ Text(text = "Session")
+ }
+ }
+ }
+}
+
+@Preview
+@Composable
+fun CollapsedAddButtonPreview() {
+ StudeezTheme { CollapsedAddButton() }
+}
+
+@Preview
+@Composable
+fun ExpandedAddButtonPreview() {
+ StudeezTheme { ExpandedAddButton() }
+}
\ No newline at end of file
diff --git a/app/src/main/java/be/ugent/sel/studeez/common/composable/NavigationBarComposable.kt b/app/src/main/java/be/ugent/sel/studeez/common/composable/NavigationBarComposable.kt
new file mode 100644
index 0000000..61964eb
--- /dev/null
+++ b/app/src/main/java/be/ugent/sel/studeez/common/composable/NavigationBarComposable.kt
@@ -0,0 +1,63 @@
+package be.ugent.sel.studeez.common.composable
+
+import androidx.compose.material.BottomNavigation
+import androidx.compose.material.BottomNavigationItem
+import androidx.compose.material.Icon
+import androidx.compose.material.Text
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Check
+import androidx.compose.material.icons.filled.List
+import androidx.compose.material.icons.filled.Person
+import androidx.compose.material.icons.outlined.DateRange
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import be.ugent.sel.studeez.ui.theme.StudeezTheme
+
+@Composable
+fun NavigationBar() {
+ // TODO Pass functions and new screens.
+ // TODO Pass which screen is selected.
+ // TODO Disabled -> HIGH/MEDIUM_EMPHASIS if the page is implemented
+ BottomNavigation(
+ elevation = 10.dp
+ ) {
+ BottomNavigationItem(
+ icon = { Icon(imageVector = Icons.Default.List, "Home") },
+ label = { Text(text = "Home") },
+ selected = false, // TODO
+ onClick = { /* TODO */ }
+ )
+
+ BottomNavigationItem(
+ icon = { Icon(imageVector = Icons.Default.Check, "Tasks") },
+ label = { Text(text = "Tasks") },
+ selected = false, // TODO
+ onClick = { /* TODO */ }
+ )
+
+ // Hack to space the entries in the navigation bar, make space for fab
+ BottomNavigationItem(icon = {}, onClick = {}, selected = false)
+
+ BottomNavigationItem(
+ icon = { Icon(imageVector = Icons.Outlined.DateRange, "Sessions") },
+ label = { Text(text = "Sessions") },
+ selected = false, // TODO
+ onClick = { /* TODO */ }
+ )
+
+ BottomNavigationItem(
+ icon = { Icon(imageVector = Icons.Default.Person, "Profile") },
+ label = { Text(text = "Profile") },
+ selected = false, // TODO
+ onClick = { /* TODO */ }
+ )
+
+ }
+}
+
+@Preview(showBackground = true)
+@Composable
+fun NavigationBarPreview() {
+ StudeezTheme { NavigationBar() }
+}
\ No newline at end of file
diff --git a/app/src/main/java/be/ugent/sel/studeez/common/composable/ToolbarComposable.kt b/app/src/main/java/be/ugent/sel/studeez/common/composable/ToolbarComposable.kt
new file mode 100644
index 0000000..2e3d635
--- /dev/null
+++ b/app/src/main/java/be/ugent/sel/studeez/common/composable/ToolbarComposable.kt
@@ -0,0 +1,77 @@
+package be.ugent.sel.studeez.common.composable
+
+import androidx.compose.foundation.layout.PaddingValues
+import androidx.compose.material.*
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Menu
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.tooling.preview.Preview
+import be.ugent.sel.studeez.ui.theme.StudeezTheme
+
+// TODO Add option for button in top right corner as extra button
+
+@Composable
+// Contains floatingActionButton and bottom bar, used in the main four screens.
+fun PrimaryScreenToolbar(
+ title: String,
+ content: (PaddingValues) -> Unit
+) {
+ Scaffold(
+ // Everything at the top of the screen
+ topBar = { TopAppBar(
+ title = { Text(text = title) },
+ navigationIcon = {
+ IconButton(onClick = { /* TODO open sidemenu */ }) {
+ Icon(imageVector = Icons.Default.Menu, contentDescription = "Menu")
+ }
+ }
+ ) },
+
+ // Everything at the bottom of the screen
+ bottomBar = { NavigationBar() }, // TODO Pass arguments so that the current tab etc can be shown
+ floatingActionButtonPosition = FabPosition.Center,
+ isFloatingActionButtonDocked = true,
+ floatingActionButton = { CollapsedAddButton() }
+ ) { paddingValues ->
+ content(paddingValues)
+ }
+}
+
+@Composable
+// Does not contain floatingActionButton and bottom bar, used in all the other screens
+fun SecondaryScreenToolbar(
+ title: String,
+ content: (PaddingValues) -> Unit
+) {
+ Scaffold(
+ // Everything at the top of the screen
+ topBar = { TopAppBar(
+ title = { Text(text = title) },
+ navigationIcon = {
+ IconButton(onClick = { /* TODO open sidemenu */ }) {
+ Icon(imageVector = Icons.Default.Menu, contentDescription = "Menu")
+ }
+ }
+ ) },
+ ) { paddingValues ->
+ content(paddingValues)
+ }
+}
+
+@Preview
+@Composable
+fun PrimaryScreenToolbarPreview() {
+ StudeezTheme { PrimaryScreenToolbar(
+ "Preview screen",
+ {}
+ ) }
+}
+
+@Preview
+@Composable
+fun SecondaryScreenToolbarPreview() {
+ StudeezTheme { SecondaryScreenToolbar(
+ "Preview screen",
+ {}
+ )}
+}
\ No newline at end of file
diff --git a/app/src/main/java/be/ugent/sel/studeez/ui/theme/Color.kt b/app/src/main/java/be/ugent/sel/studeez/ui/theme/Color.kt
index d432429..3639b8d 100644
--- a/app/src/main/java/be/ugent/sel/studeez/ui/theme/Color.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/ui/theme/Color.kt
@@ -2,7 +2,6 @@ package be.ugent.sel.studeez.ui.theme
import androidx.compose.ui.graphics.Color
-val Purple200 = Color(0xFFBB86FC)
-val Purple500 = Color(0xFF6200EE)
-val Purple700 = Color(0xFF3700B3)
-val Teal200 = Color(0xFF03DAC5)
\ No newline at end of file
+val Blue100 = Color( 30, 100, 200, 255)
+val Blue120 = Color( 27, 90, 180, 255)
+val Yellow100 = Color(255, 210, 0, 255)
\ No newline at end of file
diff --git a/app/src/main/java/be/ugent/sel/studeez/ui/theme/Theme.kt b/app/src/main/java/be/ugent/sel/studeez/ui/theme/Theme.kt
index bb1884d..bc2c315 100644
--- a/app/src/main/java/be/ugent/sel/studeez/ui/theme/Theme.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/ui/theme/Theme.kt
@@ -5,17 +5,20 @@ import androidx.compose.material.MaterialTheme
import androidx.compose.material.darkColors
import androidx.compose.material.lightColors
import androidx.compose.runtime.Composable
+import androidx.compose.ui.graphics.Color
+
+// Reference colour palette: https://xd.adobe.com/view/3cb1e6ff-eb42-4a74-886e-7739c2ccc5ed-69e2/
private val DarkColorPalette = darkColors(
- primary = Purple200,
- primaryVariant = Purple700,
- secondary = Teal200
+ primary = Blue100,
+ primaryVariant = Blue120,
+ secondary = Yellow100
)
private val LightColorPalette = lightColors(
- primary = Purple500,
- primaryVariant = Purple700,
- secondary = Teal200
+ primary = Blue100,
+ primaryVariant = Blue120,
+ secondary = Yellow100
/* Other default colors to override
background = Color.White,
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index f8c6127..485bbf6 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,10 +1,12 @@
+
+
- #FFBB86FC
- #FF6200EE
- #FF3700B3
- #FF03DAC5
- #FF018786
+ #FF1E64C8
+ #FF1B5AB4
+ #FF1850A0
+ #FFFFD200
+ #FFFDD931
#FF000000
#FFFFFFFF
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index a7dd890..b847a88 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,7 +1,8 @@
-
+
\ No newline at end of file