This commit is contained in:
2026-04-28 17:03:00 +01:00
parent f08e661796
commit c3aba53468
16 changed files with 1258 additions and 706 deletions

View File

@@ -8,283 +8,232 @@
android:background="@color/colorBackground"
tools:context=".ClientDashboardActivity">
<!-- Top Bar with Profile Icon -->
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardProfile"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
app:cardCornerRadius="25dp"
app:cardElevation="2dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/imgProfile"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/circle_bg" />
</com.google.android.material.card.MaterialCardView>
<TextView
android:id="@+id/txtClientGreeting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="Olá, convidado"
android:textColor="@color/colorTextPrimary"
android:textSize="22sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintBottom_toBottomOf="@id/cardProfile"
app:layout_constraintStart_toEndOf="@id/cardProfile"
app:layout_constraintTop_toTopOf="@id/cardProfile" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="Sair"
android:textAllCaps="false"
android:textColor="@color/colorError"
app:layout_constraintBottom_toBottomOf="@id/cardProfile"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/cardProfile" />
<ScrollView
android:id="@+id/clientScroll"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:fillViewport="true"
android:scrollbars="none"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/bottomNavigation"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardProfile">
app:layout_constraintEnd_toEndOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="40dp">
android:paddingBottom="24dp">
<!-- Categories Section -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:text="Categorias"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvCategories"
<!-- Header -->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_food_category" />
android:paddingHorizontal="24dp"
android:paddingTop="32dp">
<!-- Integrated Next Reservation Card -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="32dp"
android:text="A sua próxima reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/txtClientGreeting"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Olá, convidado!"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:textStyle="bold"
android:fontFamily="sans-serif"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/imgNotification"
android:layout_marginEnd="16dp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Encontre a sua próxima mesa."
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:layout_constraintTop_toBottomOf="@id/txtClientGreeting"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/imgNotification" />
<ImageButton
android:id="@+id/imgNotification"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@drawable/bg_circle_white"
android:src="@android:drawable/ic_popup_reminder"
app:tint="@color/colorTextPrimary"
android:layout_marginEnd="12dp"
app:layout_constraintTop_toTopOf="@id/cardProfile"
app:layout_constraintBottom_toBottomOf="@id/cardProfile"
app:layout_constraintEnd_toStartOf="@id/cardProfile" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardProfile"
android:layout_width="50dp"
android:layout_height="50dp"
app:cardCornerRadius="25dp"
app:cardElevation="2dp"
app:strokeWidth="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<ImageView
android:id="@+id/imgProfile"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/circle_bg" />
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- Search Bar -->
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardNextReservation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="56dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="16dp"
app:cardBackgroundColor="@color/colorSurface"
app:cardCornerRadius="24dp"
app:cardElevation="6dp">
android:layout_marginTop="24dp"
app:cardCornerRadius="16dp"
app:cardElevation="4dp"
app:strokeWidth="0dp"
app:cardBackgroundColor="@color/colorSurface">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="16dp">
<RelativeLayout
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@android:drawable/ic_menu_search"
app:tint="@color/colorTextSecondary" />
<EditText
android:id="@+id/etSearch"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txtResTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sabor &amp; Arte"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/txtResTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtResTitle"
android:layout_marginTop="6dp"
android:text="Amanhã às 20h00 • 2 pessoas"
android:textColor="@color/colorTextSecondary"
android:textSize="15sp" />
<ImageView
android:id="@+id/imgResIcon"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_alignParentEnd="true"
android:src="@drawable/circle_bg"
app:tint="@color/colorPrimary" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginVertical="20dp"
android:background="@color/colorDivider" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnCheckIn"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
app:cornerRadius="14dp"
app:backgroundTint="@color/colorPrimary"
android:text="Check-in"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="15sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnPartilhar"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="0dp"
android:layout_height="54dp"
android:layout_marginStart="8dp"
android:layout_weight="1"
app:cornerRadius="14dp"
android:text="Partilhar"
android:textAllCaps="false"
android:textSize="15sp" />
</LinearLayout>
android:layout_height="match_parent"
android:layout_marginStart="12dp"
android:background="@null"
android:hint="Pesquisar restaurantes..."
android:textColor="@color/colorTextPrimary"
android:textColorHint="@color/colorTextHint"
android:textSize="16sp"
android:maxLines="1"
android:inputType="text" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- Actions Section -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="40dp"
android:text="Mais opções"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:fontFamily="sans-serif-medium" />
<GridLayout
<!-- Category Pills -->
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
android:columnCount="1">
android:layout_marginTop="24dp"
android:scrollbars="none"
android:clipToPadding="false"
android:paddingHorizontal="20dp">
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardNewRes"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_margin="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="2dp"
app:cardBackgroundColor="@color/colorSurface">
<LinearLayout
android:id="@+id/btnNovaReserva"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:background="?attr/selectableItemBackground">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reservar"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.chip.ChipGroup
android:id="@+id/chipGroupCategories"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:singleLine="true"
app:singleSelection="true">
<!-- Chips will be added programmatically -->
</com.google.android.material.chip.ChipGroup>
</HorizontalScrollView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardMinhasReservas"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_margin="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="2dp"
app:cardBackgroundColor="@color/colorSurface">
<LinearLayout
android:id="@+id/btnMinhasReservas"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:background="?attr/selectableItemBackground">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Minhas Reservas"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</GridLayout>
<!-- Status Section -->
<TextView
android:id="@+id/txtClientStatus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="40dp"
android:text="Tudo pronto para a sua próxima refeição!"
android:textAlignment="center"
android:textColor="@color/colorTextSecondary"
android:textSize="15sp" />
<TextView
android:id="@+id/txtClientRole"
<!-- Loading Spinner -->
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:text="Modo Cliente"
android:textColor="#94A3B8"
android:textSize="12sp" />
android:layout_marginTop="40dp"
android:visibility="visible"
android:indeterminateTint="@color/colorPrimary" />
<!-- Featured Carousel -->
<LinearLayout
android:id="@+id/layoutFeatured"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone"
android:layout_marginTop="24dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:text="Restaurantes Populares"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:textStyle="bold"
android:fontFamily="sans-serif" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvFeatured"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:clipToPadding="false"
android:paddingStart="24dp"
android:paddingEnd="8dp"
android:orientation="horizontal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_restaurant_featured" />
</LinearLayout>
<!-- Main Restaurant Grid/List -->
<LinearLayout
android:id="@+id/layoutAllRestaurants"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone"
android:layout_marginTop="32dp">
<TextView
android:id="@+id/txtListTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:text="Todos os Restaurantes"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:textStyle="bold"
android:fontFamily="sans-serif" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvMainRestaurants"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:clipToPadding="false"
android:paddingBottom="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_restaurant" />
</LinearLayout>
</LinearLayout>
</ScrollView>
<!-- Bottom Navigation Bar -->
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorSurface"
app:itemIconTint="@color/colorPrimary"
app:itemTextColor="@color/colorPrimary"
app:menu="@menu/bottom_nav_menu"
app:elevation="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -8,60 +8,77 @@
android:background="@color/colorBackground"
tools:context=".ExplorarRestaurantesActivity">
<!-- Header Section -->
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.Material3.Button.IconButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:icon="@android:drawable/ic_menu_revert"
app:iconTint="@color/colorTextPrimary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloExplorar"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Explorar restaurantes"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="20dp" />
android:textStyle="bold"
android:fontFamily="sans-serif"
app:layout_constraintTop_toTopOf="@id/btnVoltar"
app:layout_constraintBottom_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toEndOf="@id/btnVoltar"
app:layout_constraintEnd_toEndOf="parent" />
<!-- Loading Spinner -->
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:indeterminateTint="@color/colorPrimary"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<!-- Restaurant List -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvRestaurants"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingBottom="24dp"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloExplorar"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_restaurant" />
<!-- Details and Reservation Flow (Overlay) -->
<ScrollView
android:id="@+id/scrollReservaDetails"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:layout_marginTop="16dp"
android:fillViewport="true"
android:visibility="gone"
android:scrollbars="none"
android:background="@color/colorBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloExplorar">
app:layout_constraintTop_toBottomOf="@id/btnVoltar">
<LinearLayout
android:layout_width="match_parent"
@@ -69,12 +86,48 @@
android:orientation="vertical"
android:paddingBottom="48dp">
<!-- Rating Section -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingHorizontal="24dp"
android:layout_marginTop="8dp">
android:layout_marginTop="16dp"
android:gravity="center_vertical">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@android:drawable/star_on"
app:tint="@color/colorWarning" />
<TextView
android:id="@+id/txtAvgRating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="0.0"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txtTotalReviews"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="(0 avaliações)"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp" />
</LinearLayout>
<!-- Action Buttons for Details -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingHorizontal="24dp"
android:layout_marginTop="16dp">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVerAvaliacoes"
@@ -84,7 +137,7 @@
android:layout_weight="1"
android:layout_marginEnd="8dp"
app:cornerRadius="12dp"
android:text="Avaliações"
android:text="Ver / Deixar Avaliação"
android:textAllCaps="false"
android:textColor="@color/colorPrimary"
app:strokeColor="@color/colorPrimary" />
@@ -103,13 +156,15 @@
app:strokeColor="@color/colorError" />
</LinearLayout>
<!-- Reservation Form Card -->
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
app:cardCornerRadius="20dp"
app:cardElevation="2dp"
app:cardCornerRadius="24dp"
app:cardElevation="4dp"
app:strokeWidth="0dp"
app:cardBackgroundColor="@color/colorSurface">
<LinearLayout
@@ -121,60 +176,69 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Data da reserva"
android:text="Detalhes da Reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginBottom="24dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Data da reserva"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSelectDate"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
android:layout_height="56dp"
android:layout_marginTop="8dp"
app:cornerRadius="12dp"
android:text="Selecionar Data"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary" />
android:textColor="@color/colorTextPrimary"
app:strokeColor="@color/colorDivider" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginTop="20dp"
android:text="Hora da reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSelectTime"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
android:layout_height="56dp"
android:layout_marginTop="8dp"
app:cornerRadius="12dp"
android:text="Selecionar Hora"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary" />
android:textColor="@color/colorTextPrimary"
app:strokeColor="@color/colorDivider" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginTop="20dp"
android:text="Número de pessoas"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<EditText
android:id="@+id/etPartySize"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
android:background="@drawable/input_bg"
android:layout_height="56dp"
android:layout_marginTop="8dp"
android:background="@drawable/bg_input_modern"
android:inputType="number"
android:paddingHorizontal="16dp"
android:hint="Ex: 2"
android:textColorHint="@color/colorTextHint"
android:textColor="@color/colorTextPrimary" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
@@ -182,15 +246,16 @@
<com.google.android.material.button.MaterialButton
android:id="@+id/btnConfirmarReserva"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="32dp"
app:cornerRadius="14dp"
app:cornerRadius="16dp"
app:backgroundTint="@color/colorPrimary"
android:text="Confirmar Reserva"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="16sp" />
android:textStyle="bold"
android:textSize="18sp" />
</LinearLayout>
</ScrollView>

View File

@@ -8,44 +8,82 @@
android:background="@color/colorBackground"
tools:context=".FavoritosActivity">
<!-- Header Section -->
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.Material3.Button.IconButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:icon="@android:drawable/ic_menu_revert"
app:iconTint="@color/colorTextPrimary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloFavoritos"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Restaurantes favoritos"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Os Meus Favoritos"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
android:textStyle="bold"
android:fontFamily="sans-serif"
app:layout_constraintTop_toTopOf="@id/btnVoltar"
app:layout_constraintBottom_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toEndOf="@id/btnVoltar"
app:layout_constraintEnd_toEndOf="parent" />
<!-- Loading Spinner -->
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
android:indeterminateTint="@color/colorPrimary"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="20dp" />
app:layout_constraintEnd_toEndOf="parent" />
<!-- Empty State -->
<LinearLayout
android:id="@+id/emptyState"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@android:drawable/btn_star_big_off"
app:tint="@color/colorDivider" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Ainda não tens favoritos guardados."
android:textColor="@color/colorTextSecondary"
android:textSize="16sp" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvFavoritos"
android:layout_width="0dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingBottom="24dp"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloFavoritos"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_restaurant" />

View File

@@ -8,41 +8,81 @@
android:background="@color/colorBackground"
tools:context=".MinhasReservasActivity">
<!-- Header Section -->
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.Material3.Button.IconButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:icon="@android:drawable/ic_menu_revert"
app:iconTint="@color/colorTextPrimary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloMinhasReservas"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Minhas Reservas"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
android:textStyle="bold"
android:fontFamily="sans-serif"
app:layout_constraintTop_toTopOf="@id/btnVoltar"
app:layout_constraintBottom_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toEndOf="@id/btnVoltar"
app:layout_constraintEnd_toEndOf="parent" />
<!-- Loading Spinner -->
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:indeterminateTint="@color/colorPrimary"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
android:layout_marginTop="20dp" />
app:layout_constraintEnd_toEndOf="parent" />
<!-- Empty State -->
<LinearLayout
android:id="@+id/emptyState"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@android:drawable/ic_menu_today"
app:tint="@color/colorDivider" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Sem reservas encontradas."
android:textColor="@color/colorTextSecondary"
android:textSize="16sp" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvMinhasReservas"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingBottom="16dp"
app:layout_constraintTop_toBottomOf="@id/txtTituloMinhasReservas"
android:paddingBottom="24dp"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View File

@@ -8,73 +8,88 @@
android:background="@color/colorBackground"
tools:context=".NovaReservaActivity">
<!-- Header Section -->
<com.google.android.material.button.MaterialButton
android:id="@+id/btnVoltar"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.Material3.Button.IconButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="← Voltar"
android:textAllCaps="false"
android:textColor="@color/colorTextSecondary"
android:textSize="16sp"
app:icon="@android:drawable/ic_menu_revert"
app:iconTint="@color/colorTextPrimary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtTituloNovaReserva"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Nova reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="28sp"
android:fontFamily="sans-serif-medium"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
android:textStyle="bold"
android:fontFamily="sans-serif"
app:layout_constraintTop_toTopOf="@id/btnVoltar"
app:layout_constraintBottom_toBottomOf="@id/btnVoltar"
app:layout_constraintStart_toEndOf="@id/btnVoltar"
app:layout_constraintEnd_toEndOf="parent" />
<!-- Loading Spinner -->
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:indeterminateTint="@color/colorPrimary"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="20dp" />
app:layout_constraintEnd_toEndOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvCategories"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:layout_marginTop="16dp"
android:visibility="visible"
android:clipToPadding="false"
android:paddingBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloNovaReserva"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
tools:listitem="@layout/item_food_category" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvRestaurants"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:layout_marginTop="16dp"
android:visibility="gone"
android:clipToPadding="false"
android:paddingBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloNovaReserva"
app:layout_constraintTop_toBottomOf="@id/btnVoltar"
tools:listitem="@layout/item_restaurant" />
<ScrollView
android:id="@+id/scrollNovaReserva"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:layout_marginTop="16dp"
android:fillViewport="true"
android:visibility="gone"
android:scrollbars="none"
android:background="@color/colorBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtTituloNovaReserva">
app:layout_constraintTop_toBottomOf="@id/btnVoltar">
<LinearLayout
android:layout_width="match_parent"
@@ -87,8 +102,9 @@
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="8dp"
app:cardCornerRadius="20dp"
app:cardElevation="2dp"
app:cardCornerRadius="24dp"
app:cardElevation="4dp"
app:strokeWidth="0dp"
app:cardBackgroundColor="@color/colorSurface">
<LinearLayout
@@ -100,62 +116,69 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Data da reserva"
android:text="Detalhes da Reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginBottom="24dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Data da reserva"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSelectDate"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
android:layout_height="56dp"
android:layout_marginTop="8dp"
app:cornerRadius="12dp"
android:text="Selecionar Data"
android:textAllCaps="false"
android:textSize="16sp"
android:textColor="@color/colorTextSecondary" />
android:textColor="@color/colorTextPrimary"
app:strokeColor="@color/colorDivider" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginTop="20dp"
android:text="Hora da reserva"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSelectTime"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
android:layout_height="56dp"
android:layout_marginTop="8dp"
app:cornerRadius="12dp"
android:text="Selecionar Hora"
android:textAllCaps="false"
android:textSize="16sp"
android:textColor="@color/colorTextSecondary" />
android:textColor="@color/colorTextPrimary"
app:strokeColor="@color/colorDivider" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginTop="20dp"
android:text="Número de pessoas"
android:textColor="@color/colorTextPrimary"
android:textSize="16sp"
android:fontFamily="sans-serif-medium" />
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<EditText
android:id="@+id/etPartySize"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginTop="12dp"
android:background="@drawable/input_bg"
android:layout_height="56dp"
android:layout_marginTop="8dp"
android:background="@drawable/bg_input_modern"
android:inputType="number"
android:paddingHorizontal="16dp"
android:hint="Ex: 2"
android:textColorHint="@color/colorTextHint"
android:textColor="@color/colorTextPrimary" />
</LinearLayout>
@@ -164,15 +187,16 @@
<com.google.android.material.button.MaterialButton
android:id="@+id/btnConfirmarReserva"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="32dp"
app:cornerRadius="14dp"
app:cornerRadius="16dp"
app:backgroundTint="@color/colorPrimary"
android:text="Confirmar Reserva"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="16sp" />
android:textStyle="bold"
android:textSize="18sp" />
</LinearLayout>
</ScrollView>

View File

@@ -3,13 +3,12 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="4dp"
app:cardCornerRadius="20dp"
app:cardElevation="2dp"
app:cardBackgroundColor="@color/colorSurface"
app:strokeWidth="1dp"
app:strokeColor="@color/colorDivider">
app:strokeWidth="0dp">
<LinearLayout
android:layout_width="match_parent"
@@ -17,59 +16,91 @@
android:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/txtReservaRestaurante"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Nome do Restaurante"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium" />
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:id="@+id/txtReservaRestaurante"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Nome do Restaurante"
android:textColor="@color/colorTextPrimary"
android:textSize="20sp"
android:textStyle="bold"
android:fontFamily="sans-serif" />
<TextView
android:id="@+id/txtReservaDataHora"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="Hoje às 20:00"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
<TextView
android:id="@+id/txtReservaStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Estado: Pendente"
android:textSize="14sp"
android:textColor="@color/colorSecondary"
android:fontFamily="sans-serif-medium" />
<com.google.android.material.chip.Chip
android:id="@+id/chipReservaStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pendente"
android:textSize="12sp"
android:textStyle="bold"
android:textColor="@color/colorChipPendingText"
app:chipBackgroundColor="@color/colorChipPending"
app:chipStrokeWidth="0dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="horizontal"
android:layout_marginTop="8dp"
android:gravity="center_vertical">
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@android:drawable/ic_menu_recent_history"
app:tint="@color/colorTextSecondary" />
<TextView
android:id="@+id/txtReservaDataHora"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="Hoje às 20:00"
android:textColor="@color/colorTextSecondary"
android:textSize="15sp" />
</LinearLayout>
<TextView
android:id="@+id/txtReservaStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:text="Pendente" /> <!-- Kept for backward compatibility if needed in adapter -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnCheckIn"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_height="52dp"
android:layout_weight="1"
android:layout_marginEnd="6dp"
android:layout_marginEnd="8dp"
app:cornerRadius="12dp"
app:backgroundTint="@color/colorPrimary"
android:text="Check-in"
android:textAllCaps="false"
android:textStyle="bold"
android:textColor="@color/white" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnCancelar"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_height="52dp"
android:layout_weight="1"
android:layout_marginStart="6dp"
android:layout_marginStart="8dp"
app:cornerRadius="12dp"
app:strokeColor="@color/colorError"
android:text="Cancelar"
@@ -81,7 +112,7 @@
android:id="@+id/txtLocationWarning"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginTop="12dp"
android:text="Dê permissões de localização para aceder ao check-in."
android:textAlignment="center"
android:textColor="@color/colorWarning"

View File

@@ -3,66 +3,115 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="2dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="12dp"
app:cardCornerRadius="24dp"
app:cardElevation="6dp"
app:cardBackgroundColor="@color/colorSurface"
app:strokeWidth="1dp"
app:strokeColor="@color/colorDivider">
app:strokeWidth="0dp">
<RelativeLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
android:layout_height="wrap_content">
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/imgRestaurantThumb"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginEnd="16dp"
android:layout_width="0dp"
android:layout_height="180dp"
android:scaleType="centerCrop"
android:src="@mipmap/ic_launcher"
app:shapeAppearanceOverlay="@style/ShapeAppearance.Material3.Corner.Medium" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/imgRestaurantThumb"
android:layout_toStartOf="@id/btnFavorite"
android:layout_centerVertical="true"
android:orientation="vertical">
<TextView
android:id="@+id/txtRestaurantName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Restaurant Name"
android:textColor="@color/colorTextPrimary"
android:textSize="18sp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/txtRestaurantCategory"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="Category"
android:textColor="@color/colorTextSecondary"
android:textSize="14sp" />
</LinearLayout>
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<ImageButton
android:id="@+id/btnFavorite"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:background="?attr/selectableItemBackgroundBorderless"
android:layout_marginTop="12dp"
android:layout_marginEnd="12dp"
android:background="@drawable/bg_circle_white"
android:padding="12dp"
android:scaleType="fitCenter"
android:src="@android:drawable/btn_star_big_off" />
</RelativeLayout>
android:src="@android:drawable/btn_star_big_off"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:tint="@color/colorTextPrimary" />
<LinearLayout
android:id="@+id/bottomContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp"
app:layout_constraintTop_toBottomOf="@id/imgRestaurantThumb"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<TextView
android:id="@+id/txtRestaurantName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Restaurant Name"
android:textColor="@color/colorTextPrimary"
android:textSize="22sp"
android:textStyle="bold"
android:fontFamily="sans-serif" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="6dp"
android:gravity="center_vertical">
<TextView
android:id="@+id/txtRestaurantCategory"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Category"
android:textColor="@color/colorTextSecondary"
android:textSize="15sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" • "
android:textColor="@color/colorTextSecondary"
android:textSize="15sp" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@android:drawable/star_on"
app:tint="@color/colorWarning" />
<TextView
android:id="@+id/txtRestaurantRating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:text="N/A"
android:textColor="@color/colorTextPrimary"
android:textSize="15sp"
android:textStyle="bold" />
</LinearLayout>
<!-- New Elegant Reserve Button -->
<com.google.android.material.button.MaterialButton
android:id="@+id/btnReservarCard"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginTop="16dp"
app:cornerRadius="12dp"
app:backgroundTint="@color/colorPrimary"
android:text="Reservar Mesa"
android:textAllCaps="false"
android:textColor="@color/white"
android:textStyle="bold"
android:textSize="16sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>