diff --git a/composeApp/src/androidInstrumentedTest/kotlin/com/randomboxd/onboarding/presentation/OnboardingScreenTest.kt b/composeApp/src/androidInstrumentedTest/kotlin/com/randomboxd/onboarding/presentation/OnboardingScreenTest.kt
index 6418e80..f0330ad 100644
--- a/composeApp/src/androidInstrumentedTest/kotlin/com/randomboxd/onboarding/presentation/OnboardingScreenTest.kt
+++ b/composeApp/src/androidInstrumentedTest/kotlin/com/randomboxd/onboarding/presentation/OnboardingScreenTest.kt
@@ -70,7 +70,10 @@ class OnboardingScreenTest {
// Page 4 → 5
composeTestRule.onNodeWithText("Next").performClick()
composeTestRule.waitForIdle()
- // Page 5 — last page, skip button should NOT be visible
+ // Page 5 → 6
+ composeTestRule.onNodeWithText("Next").performClick()
+ composeTestRule.waitForIdle()
+ // Page 6 — last page, skip button should NOT be visible
composeTestRule.onNodeWithText("Start Exploring").assertIsDisplayed()
composeTestRule.onNodeWithText("Start Exploring").performClick()
diff --git a/composeApp/src/commonMain/composeResources/values-ar/strings.xml b/composeApp/src/commonMain/composeResources/values-ar/strings.xml
index 2dec96f..79614f2 100644
--- a/composeApp/src/commonMain/composeResources/values-ar/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-ar/strings.xml
@@ -62,12 +62,18 @@
فيلم تلفزيوني
حرب
غربي
- جديد!
+ جديد!
مرشحات النوع
قلص اختيارك العشوائي إلى الأنواع التي تناسب مزاجك. ادمج عدة أنواع للعثور على الفيلم المثالي.
تصفية حسب نوع واحد أو أكثر في وقت واحد
إعادة تعيين المرشحات في أي وقت بنقرة واحدة
يعمل مع وضع المستخدم الواحد ووضع متعدد المستخدمين
+ سجلك
+ يتم حفظ اختياراتك تلقائياً في سجلك
+ يتم حفظ كل اختيار عشوائي تلقائياً
+ علّم على المفضلة بلمسة على القلب
+ امسح سجلك في أي وقت
+ 24 أفلام مختارة إجمالاً
جاري رمي النرد...
جاري البحث عن فيلمك العشوائي
إعادة الرمي
diff --git a/composeApp/src/commonMain/composeResources/values-ca/strings.xml b/composeApp/src/commonMain/composeResources/values-ca/strings.xml
index 3fca5f3..9940e90 100644
--- a/composeApp/src/commonMain/composeResources/values-ca/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-ca/strings.xml
@@ -62,12 +62,18 @@
Pel·lícula de TV
Guerra
Western
- NOU!
+ NOU!
Filtres de gènere
Limita la teva elecció aleatòria als gèneres que t\'apeteixen. Combina diversos gèneres per trobar la pel·lícula perfecta.
Filtra per un o més gèneres alhora
Restableix els filtres en qualsevol moment amb un toc
Funciona amb els modes d\'un sol usuari i multiusuari
+ El teu historial
+ Les teves seleccions es desen automàticament al teu historial
+ Cada selecció aleatòria es desa automàticament
+ Marca favorits amb un toc al cor
+ Esborra el teu historial quan vulguis
+ 24 pel·lícules seleccionades en total
Llançant els daus...
Trobar la teva pel·lícula aleatòria
Tornar a tirar
diff --git a/composeApp/src/commonMain/composeResources/values-de/strings.xml b/composeApp/src/commonMain/composeResources/values-de/strings.xml
index 199c8b6..3b3dba8 100644
--- a/composeApp/src/commonMain/composeResources/values-de/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-de/strings.xml
@@ -62,12 +62,18 @@
TV-Film
Krieg
Western
- NEU!
+ NEU!
Genre-Filter
Grenze deine zufällige Auswahl auf die Genres ein, nach denen dir der Sinn steht. Kombiniere mehrere Genres, um den perfekten Film zu finden.
Nach einem oder mehreren Genres gleichzeitig filtern
Filter jederzeit mit einem Tipp zurücksetzen
Funktioniert im Einzel- und Mehrbenutzermodus
+ Dein Verlauf
+ Deine Auswahlen werden automatisch in deinem Verlauf gespeichert
+ Jede Zufallsauswahl wird automatisch gespeichert
+ Markiere Favoriten mit einem Herz-Tipp
+ Lösche deinen Verlauf jederzeit
+ 24 Filme insgesamt ausgewählt
Würfel rollen...
Finde deinen zufälligen Film
Neu würfeln
diff --git a/composeApp/src/commonMain/composeResources/values-es/strings.xml b/composeApp/src/commonMain/composeResources/values-es/strings.xml
index 4ed3020..9a7d612 100644
--- a/composeApp/src/commonMain/composeResources/values-es/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-es/strings.xml
@@ -62,12 +62,18 @@
Película de TV
Guerra
Western
- ¡NUEVO!
+ ¡NUEVO!
Filtros por género
Acota tu elección aleatoria a los géneros que más te apetezcan. Combina varios géneros para encontrar la película perfecta.
Filtra por uno o más géneros a la vez
Restablece los filtros en cualquier momento con un toque
Funciona con los modos de un solo usuario y multiusuario
+ Tu historial
+ Tus selecciones se guardan automáticamente en tu historial
+ Cada selección aleatoria se guarda automáticamente
+ Marca favoritos con un toque en el corazón
+ Borra tu historial cuando quieras
+ 24 películas seleccionadas en total
Lanzando los dados...
Encontrando tu película aleatoria
Tirar de nuevo
diff --git a/composeApp/src/commonMain/composeResources/values-fr/strings.xml b/composeApp/src/commonMain/composeResources/values-fr/strings.xml
index 82f3998..6080b35 100644
--- a/composeApp/src/commonMain/composeResources/values-fr/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-fr/strings.xml
@@ -62,12 +62,18 @@
Téléfilm
Guerre
Western
- NOUVEAU!
+ NOUVEAU!
Filtres par genre
Affinez votre sélection aléatoire aux genres qui vous inspirent. Combinez plusieurs genres pour trouver le film parfait.
Filtrez par un ou plusieurs genres à la fois
Réinitialisez les filtres à tout moment en un seul geste
Fonctionne avec les modes utilisateur unique et multi-utilisateur
+ Votre historique
+ Vos sélections sont automatiquement enregistrées dans votre historique
+ Chaque sélection aléatoire est enregistrée automatiquement
+ Touchez le cœur pour marquer vos favoris
+ Effacez votre historique à tout moment
+ 24 films sélectionnés au total
Lancement des dés...
Trouver votre film aléatoire
Relancer
diff --git a/composeApp/src/commonMain/composeResources/values-gl/strings.xml b/composeApp/src/commonMain/composeResources/values-gl/strings.xml
index 037e88e..11988d4 100644
--- a/composeApp/src/commonMain/composeResources/values-gl/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-gl/strings.xml
@@ -62,12 +62,18 @@
Película de TV
Guerra
Western
- NOVO!
+ NOVO!
Filtros por xénero
Afina a túa elección aleatoria aos xéneros que máis che apetezan. Combina varios xéneros para atopar a película perfecta.
Filtra por un ou máis xéneros á vez
Restablece os filtros en calquera momento cun toque
Funciona cos modos de usuario único e multiusuario
+ O teu historial
+ As túas seleccións gárdanse automaticamente no teu historial
+ Cada selección aleatoria gárdase automaticamente
+ Marca favoritos cun toque no corazón
+ Borra o teu historial cando queiras
+ 24 películas seleccionadas en total
Lanzando os dados...
Atopando o teu filme aleatorio
Tirar de novo
diff --git a/composeApp/src/commonMain/composeResources/values-hi/strings.xml b/composeApp/src/commonMain/composeResources/values-hi/strings.xml
index 1c8433e..e63d1ea 100644
--- a/composeApp/src/commonMain/composeResources/values-hi/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-hi/strings.xml
@@ -62,12 +62,18 @@
टीवी फिल्म
युद्ध
वेस्टर्न
- नया!
+ नया!
शैली फ़िल्टर
अपनी यादृच्छिक पसंद को उन शैलियों तक सीमित करें जो आपके मूड में हैं। सही फिल्म खोजने के लिए कई शैलियों को मिलाएं।
एक या एक से अधिक शैलियों के अनुसार फ़िल्टर करें
एक टैप में फ़िल्टर रीसेट करें
एकल उपयोगकर्ता और बहु-उपयोगकर्ता मोड दोनों के साथ काम करता है
+ आपका इतिहास
+ आपके चयन आपके इतिहास में स्वचालित रूप से सहेजे जाते हैं
+ हर यादृच्छिक चयन स्वचालित रूप से सहेजा जाता है
+ दिल पर टैप करके पसंदीदा चिह्नित करें
+ कभी भी अपना इतिहास साफ़ करें
+ कुल 24 फ़िल्में चयनित
पासा फेंक रहे हैं...
आपकी यादृच्छिक फिल्म खोज रहे हैं
फिर से फेंकें
diff --git a/composeApp/src/commonMain/composeResources/values-it/strings.xml b/composeApp/src/commonMain/composeResources/values-it/strings.xml
index 6ce1382..d9e584e 100644
--- a/composeApp/src/commonMain/composeResources/values-it/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-it/strings.xml
@@ -62,12 +62,18 @@
Film TV
Guerra
Western
- NUOVO!
+ NUOVO!
Filtri per genere
Limita la tua scelta casuale ai generi che preferisci. Combina più generi per trovare il film perfetto.
Filtra per uno o più generi contemporaneamente
Reimposta i filtri in qualsiasi momento con un tocco
Funziona con le modalità utente singolo e multiutente
+ La tua cronologia
+ Le tue scelte vengono salvate automaticamente nella tua cronologia
+ Ogni scelta casuale viene salvata automaticamente
+ Segna i preferiti con un tocco sul cuore
+ Cancella la cronologia in qualsiasi momento
+ 24 film selezionati in totale
Lanciando i dadi...
Trovare il tuo film casuale
Rilancia
diff --git a/composeApp/src/commonMain/composeResources/values-ja/strings.xml b/composeApp/src/commonMain/composeResources/values-ja/strings.xml
index 7bde56d..5039793 100644
--- a/composeApp/src/commonMain/composeResources/values-ja/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-ja/strings.xml
@@ -62,12 +62,18 @@
TVムービー
戦争
西部劇
- 新機能!
+ 新機能!
ジャンルフィルター
気分に合ったジャンルに絞ってランダムな映画を選べます。複数のジャンルを組み合わせて理想の映画を見つけよう。
一度に1つ以上のジャンルでフィルタリング
ワンタップでいつでもフィルターをリセット
シングルユーザーとマルチユーザーモードの両方で動作
+ あなたの履歴
+ 選んだ作品は自動的に履歴に保存されます
+ すべてのランダムな選択が自動的に保存されます
+ ハートをタップしてお気に入りをマーク
+ いつでも履歴をクリアできます
+ 合計24作品を選択済み
サイコロを振っています...
ランダム映画を探しています
もう一度振る
diff --git a/composeApp/src/commonMain/composeResources/values-pt/strings.xml b/composeApp/src/commonMain/composeResources/values-pt/strings.xml
index a984051..2f81bf4 100644
--- a/composeApp/src/commonMain/composeResources/values-pt/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-pt/strings.xml
@@ -62,12 +62,18 @@
Telefilme
Guerra
Faroeste
- NOVO!
+ NOVO!
Filtros por gênero
Restrinja sua escolha aleatória aos gêneros que mais lhe apetecem. Combine vários gêneros para encontrar o filme perfeito.
Filtre por um ou mais gêneros de uma vez
Redefina os filtros a qualquer momento com um toque
Funciona nos modos de usuário único e multiusuário
+ Seu histórico
+ Suas seleções são salvas automaticamente no seu histórico
+ Cada seleção aleatória é salva automaticamente
+ Marque favoritos com um toque no coração
+ Limpe seu histórico quando quiser
+ 24 filmes selecionados no total
Lançando os dados...
Encontrando seu filme aleatório
Rolar novamente
diff --git a/composeApp/src/commonMain/composeResources/values-ru/strings.xml b/composeApp/src/commonMain/composeResources/values-ru/strings.xml
index 8609be1..3563da6 100644
--- a/composeApp/src/commonMain/composeResources/values-ru/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-ru/strings.xml
@@ -62,12 +62,18 @@
ТВ-фильм
Война
Вестерн
- НОВИНКА!
+ НОВИНКА!
Фильтры по жанру
Сузьте случайный выбор до жанров, которые вам нравятся. Комбинируйте несколько жанров, чтобы найти идеальный фильм.
Фильтрация по одному или нескольким жанрам одновременно
Сброс фильтров в любой момент одним нажатием
Работает в режимах одного и нескольких пользователей
+ Ваша история
+ Ваши выборы автоматически сохраняются в истории
+ Каждый случайный выбор сохраняется автоматически
+ Отмечайте любимое касанием сердца
+ Очищайте историю в любое время
+ Всего выбрано 24 фильма
Бросаем кубики...
Ищем ваш случайный фильм
Перебросить
diff --git a/composeApp/src/commonMain/composeResources/values-zh/strings.xml b/composeApp/src/commonMain/composeResources/values-zh/strings.xml
index 6f2efce..078ccaf 100644
--- a/composeApp/src/commonMain/composeResources/values-zh/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-zh/strings.xml
@@ -62,12 +62,18 @@
电视电影
战争
西部
- 新功能!
+ 新功能!
类型筛选
将随机推荐范围缩小到您感兴趣的类型。组合多个类型,找到完美的电影。
同时按一个或多个类型筛选
随时一键重置筛选条件
适用于单用户和多用户模式
+ 您的历史
+ 您的选择会自动保存到历史记录中
+ 每次随机选择都会自动保存
+ 点击心形图标标记收藏
+ 随时清除您的历史记录
+ 共选择了 24 部电影
掷骰子中...
正在寻找您的随机电影
重新掷骰
diff --git a/composeApp/src/commonMain/composeResources/values/strings.xml b/composeApp/src/commonMain/composeResources/values/strings.xml
index d8ee340..4a0178f 100644
--- a/composeApp/src/commonMain/composeResources/values/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values/strings.xml
@@ -62,12 +62,18 @@
TV Movie
War
Western
- NEW!
+ NEW!
Genre Filters
Narrow your random pick to the genres you\'re in the mood for. Mix multiple genres to find the perfect movie.
Filter by one or more genres at once
Reset filters anytime with one tap
Works with single user and multi-user modes
+ Your History
+ Your picks are automatically saved to your history
+ Every random pick is saved automatically
+ Mark favorites with a heart tap
+ Clear your history anytime
+ 24 movies picked in total
Rolling the dice...
Finding your random movie
Reroll
diff --git a/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/onboarding/presentation/OnboardingScreen.kt b/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/onboarding/presentation/OnboardingScreen.kt
index 55d269c..181ab13 100644
--- a/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/onboarding/presentation/OnboardingScreen.kt
+++ b/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/onboarding/presentation/OnboardingScreen.kt
@@ -36,6 +36,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.nacchofer31.randomboxd.core.presentation.RandomBoxdColors
import com.nacchofer31.randomboxd.onboarding.presentation.components.OnboardingGenreFiltersPage
+import com.nacchofer31.randomboxd.onboarding.presentation.components.OnboardingHistoryPage
import com.nacchofer31.randomboxd.onboarding.presentation.components.OnboardingMultiUserPage
import com.nacchofer31.randomboxd.onboarding.presentation.components.OnboardingPageIndicator
import com.nacchofer31.randomboxd.onboarding.presentation.components.OnboardingRandomSelectionPage
@@ -49,7 +50,7 @@ import randomboxd.composeapp.generated.resources.onboarding_next
import randomboxd.composeapp.generated.resources.onboarding_skip
import randomboxd.composeapp.generated.resources.onboarding_start_exploring
-private const val PAGE_COUNT = 5
+private const val PAGE_COUNT = 6
@Composable
fun OnboardingScreen(onFinish: () -> Unit) {
@@ -111,6 +112,7 @@ fun OnboardingScreen(onFinish: () -> Unit) {
2 -> OnboardingSearchTagsPage()
3 -> OnboardingMultiUserPage()
4 -> OnboardingGenreFiltersPage()
+ 5 -> OnboardingHistoryPage()
}
}
}
diff --git a/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/onboarding/presentation/components/OnboardingGenreFiltersPage.kt b/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/onboarding/presentation/components/OnboardingGenreFiltersPage.kt
index d61cd9c..44964a0 100644
--- a/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/onboarding/presentation/components/OnboardingGenreFiltersPage.kt
+++ b/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/onboarding/presentation/components/OnboardingGenreFiltersPage.kt
@@ -40,7 +40,6 @@ import randomboxd.composeapp.generated.resources.Res
import randomboxd.composeapp.generated.resources.onboarding_genre_feature1
import randomboxd.composeapp.generated.resources.onboarding_genre_feature2
import randomboxd.composeapp.generated.resources.onboarding_genre_feature3
-import randomboxd.composeapp.generated.resources.onboarding_genre_new_badge
import randomboxd.composeapp.generated.resources.onboarding_genre_subtitle
import randomboxd.composeapp.generated.resources.onboarding_genre_title
@@ -84,33 +83,13 @@ internal fun OnboardingGenreFiltersPage() {
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(12.dp),
) {
- Row(
- verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.spacedBy(10.dp),
- ) {
- Box(
- modifier =
- Modifier
- .clip(RoundedCornerShape(8.dp))
- .background(RandomBoxdColors.GreenAccent)
- .padding(horizontal = 10.dp, vertical = 5.dp),
- ) {
- Text(
- text = stringResource(Res.string.onboarding_genre_new_badge),
- color = RandomBoxdColors.BackgroundDarkColor,
- fontSize = 13.sp,
- fontWeight = FontWeight.ExtraBold,
- letterSpacing = 1.sp,
- )
- }
- Text(
- text = stringResource(Res.string.onboarding_genre_title),
- color = Color.White,
- fontSize = 28.sp,
- fontWeight = FontWeight.Bold,
- textAlign = TextAlign.Center,
- )
- }
+ Text(
+ text = stringResource(Res.string.onboarding_genre_title),
+ color = Color.White,
+ fontSize = 28.sp,
+ fontWeight = FontWeight.Bold,
+ textAlign = TextAlign.Center,
+ )
Text(
text = stringResource(Res.string.onboarding_genre_subtitle),
color = RandomBoxdColors.BackgroundLightColor,
diff --git a/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/onboarding/presentation/components/OnboardingHistoryPage.kt b/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/onboarding/presentation/components/OnboardingHistoryPage.kt
new file mode 100644
index 0000000..de31cb4
--- /dev/null
+++ b/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/onboarding/presentation/components/OnboardingHistoryPage.kt
@@ -0,0 +1,243 @@
+package com.nacchofer31.randomboxd.onboarding.presentation.components
+
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Favorite
+import androidx.compose.material.icons.filled.History
+import androidx.compose.material.icons.filled.People
+import androidx.compose.material3.Icon
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.graphics.Brush
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import com.nacchofer31.randomboxd.core.presentation.RandomBoxdColors
+import org.jetbrains.compose.resources.stringResource
+import randomboxd.composeapp.generated.resources.Res
+import randomboxd.composeapp.generated.resources.onboarding_history_feature1
+import randomboxd.composeapp.generated.resources.onboarding_history_feature2
+import randomboxd.composeapp.generated.resources.onboarding_history_feature3
+import randomboxd.composeapp.generated.resources.onboarding_history_footer
+import randomboxd.composeapp.generated.resources.onboarding_history_subtitle
+import randomboxd.composeapp.generated.resources.onboarding_history_title
+import randomboxd.composeapp.generated.resources.onboarding_new_badge
+
+private data class MockHistoryItem(
+ val title: String,
+ val meta: String,
+ val posterGradient: Pair,
+)
+
+private val mockHistoryItems =
+ listOf(
+ MockHistoryItem("Inception", "2010 · Sci-Fi", Color(0xFF3B82F6) to Color(0xFF1E3A8A)),
+ MockHistoryItem("Spirited Away", "2001 · Animation", Color(0xFFF59E0B) to Color(0xFFB45309)),
+ MockHistoryItem("The Godfather", "1972 · Crime", Color(0xFF6B7280) to Color(0xFF1F2937)),
+ )
+
+@Composable
+internal fun OnboardingHistoryPage() {
+ Column(
+ horizontalAlignment = Alignment.CenterHorizontally,
+ verticalArrangement = Arrangement.spacedBy(24.dp),
+ ) {
+ Box(
+ modifier =
+ Modifier
+ .fillMaxWidth()
+ .clip(RoundedCornerShape(16.dp))
+ .background(RandomBoxdColors.CardBackground)
+ .padding(16.dp),
+ ) {
+ Column(verticalArrangement = Arrangement.spacedBy(12.dp)) {
+ Row(
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.SpaceBetween,
+ modifier = Modifier.fillMaxWidth(),
+ ) {
+ Text(
+ text = "Your random picks",
+ color = Color.White,
+ fontSize = 14.sp,
+ fontWeight = FontWeight.SemiBold,
+ )
+ Box(
+ modifier =
+ Modifier
+ .clip(RoundedCornerShape(8.dp))
+ .background(RandomBoxdColors.GreenAccent)
+ .padding(horizontal = 8.dp, vertical = 3.dp),
+ ) {
+ Text(
+ text = "24",
+ color = RandomBoxdColors.BackgroundDarkColor,
+ fontSize = 12.sp,
+ fontWeight = FontWeight.ExtraBold,
+ )
+ }
+ }
+ mockHistoryItems.forEach { item ->
+ MockHistoryRow(item)
+ }
+ Text(
+ text = stringResource(Res.string.onboarding_history_footer),
+ color = RandomBoxdColors.BackgroundLightColor,
+ fontSize = 12.sp,
+ )
+ }
+ }
+
+ // Title section
+ Column(
+ horizontalAlignment = Alignment.CenterHorizontally,
+ verticalArrangement = Arrangement.spacedBy(12.dp),
+ ) {
+ Row(
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.spacedBy(10.dp),
+ ) {
+ Box(
+ modifier =
+ Modifier
+ .clip(RoundedCornerShape(8.dp))
+ .background(RandomBoxdColors.GreenAccent)
+ .padding(horizontal = 10.dp, vertical = 5.dp),
+ ) {
+ Text(
+ text = stringResource(Res.string.onboarding_new_badge),
+ color = RandomBoxdColors.BackgroundDarkColor,
+ fontSize = 13.sp,
+ fontWeight = FontWeight.ExtraBold,
+ letterSpacing = 1.sp,
+ )
+ }
+ Text(
+ text = stringResource(Res.string.onboarding_history_title),
+ color = Color.White,
+ fontSize = 28.sp,
+ fontWeight = FontWeight.Bold,
+ textAlign = TextAlign.Center,
+ )
+ }
+ Text(
+ text = stringResource(Res.string.onboarding_history_subtitle),
+ color = RandomBoxdColors.BackgroundLightColor,
+ fontSize = 15.sp,
+ lineHeight = 22.sp,
+ textAlign = TextAlign.Center,
+ modifier = Modifier.width(300.dp),
+ )
+ }
+ }
+
+ Spacer(Modifier.height(24.dp))
+
+ // Feature rows
+ Column(
+ verticalArrangement = Arrangement.spacedBy(12.dp),
+ ) {
+ OnboardingFeatureRow(
+ icon = {
+ Icon(
+ imageVector = Icons.Filled.History,
+ contentDescription = null,
+ modifier = Modifier.size(18.dp),
+ tint = RandomBoxdColors.GreenAccent,
+ )
+ },
+ text = stringResource(Res.string.onboarding_history_feature1),
+ iconBackgroundColor = TagGreenBg,
+ )
+ OnboardingFeatureRow(
+ icon = {
+ Icon(
+ imageVector = Icons.Filled.People,
+ contentDescription = null,
+ modifier = Modifier.size(18.dp),
+ tint = RandomBoxdColors.GreenAccent,
+ )
+ },
+ text = stringResource(Res.string.onboarding_history_feature2),
+ iconBackgroundColor = TagGreenBg,
+ )
+ OnboardingFeatureRow(
+ icon = {
+ Icon(
+ imageVector = Icons.Filled.Favorite,
+ contentDescription = null,
+ modifier = Modifier.size(18.dp),
+ tint = RandomBoxdColors.GreenAccent,
+ )
+ },
+ text = stringResource(Res.string.onboarding_history_feature3),
+ iconBackgroundColor = TagGreenBg,
+ )
+ }
+}
+
+@Composable
+private fun MockHistoryRow(item: MockHistoryItem) {
+ Row(
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.spacedBy(12.dp),
+ modifier = Modifier.fillMaxWidth(),
+ ) {
+ Box(
+ modifier =
+ Modifier
+ .size(width = 60.dp, height = 84.dp)
+ .clip(RoundedCornerShape(8.dp))
+ .background(
+ brush =
+ Brush.linearGradient(
+ colors =
+ listOf(
+ item.posterGradient.first,
+ item.posterGradient.second,
+ ),
+ ),
+ ),
+ )
+ Column(
+ verticalArrangement = Arrangement.spacedBy(4.dp),
+ modifier = Modifier.weight(1f),
+ ) {
+ Text(
+ text = item.title,
+ color = Color.White,
+ fontSize = 14.sp,
+ fontWeight = FontWeight.SemiBold,
+ maxLines = 1,
+ )
+ Text(
+ text = item.meta,
+ color = RandomBoxdColors.BackgroundLightColor,
+ fontSize = 12.sp,
+ maxLines = 1,
+ )
+ }
+ Icon(
+ imageVector = Icons.Filled.Favorite,
+ contentDescription = null,
+ modifier = Modifier.size(18.dp),
+ tint = RandomBoxdColors.GreenAccent,
+ )
+ }
+}
diff --git a/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/random_film/presentation/components/RandomFilmInfoView.kt b/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/random_film/presentation/components/RandomFilmInfoView.kt
index 1ac5509..cd8b42a 100644
--- a/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/random_film/presentation/components/RandomFilmInfoView.kt
+++ b/composeApp/src/commonMain/kotlin/com/nacchofer31/randomboxd/random_film/presentation/components/RandomFilmInfoView.kt
@@ -32,7 +32,7 @@ import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource
import randomboxd.composeapp.generated.resources.Res
import randomboxd.composeapp.generated.resources.enter_description
-import randomboxd.composeapp.generated.resources.onboarding_genre_new_badge
+import randomboxd.composeapp.generated.resources.onboarding_new_badge
import randomboxd.composeapp.generated.resources.ready_to_spin
import randomboxd.composeapp.generated.resources.roulette_icon
import randomboxd.composeapp.generated.resources.tip_genre_filter
@@ -124,7 +124,7 @@ fun RandomFilmInfoView() {
accentColor = RandomBoxdColors.OrangeAccent,
)
NewFeatureTipCard(
- newBadge = stringResource(Res.string.onboarding_genre_new_badge),
+ newBadge = stringResource(Res.string.onboarding_new_badge),
text = stringResource(Res.string.tip_genre_filter),
)
}
diff --git a/randomboxd.pen b/randomboxd.pen
index be039cf..ca57c78 100644
--- a/randomboxd.pen
+++ b/randomboxd.pen
@@ -1,5 +1,5 @@
{
- "version": "2.14",
+ "version": "2.17",
"children": [
{
"type": "frame",
@@ -5221,6 +5221,14 @@
"fill": "$accent-green",
"width": 10,
"height": 10
+ },
+ {
+ "type": "ellipse",
+ "id": "b1xHLE",
+ "name": "dot5Inactive5",
+ "fill": "$text-muted",
+ "width": 8,
+ "height": 8
}
]
},
@@ -5240,7 +5248,7 @@
"type": "text",
"id": "vubLL",
"fill": "#14181C",
- "content": "Start Exploring",
+ "content": "Next",
"fontFamily": "$font-primary",
"fontSize": 17,
"fontWeight": "700"
@@ -5250,6 +5258,1899 @@
"id": "kqO5K",
"width": 20,
"height": 20,
+ "icon": "arrow-right",
+ "library": "lucide",
+ "fill": "#14181C"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "H4rRi",
+ "x": 3410,
+ "y": 0,
+ "name": "History - Film History",
+ "clip": true,
+ "width": 390,
+ "height": 844,
+ "fill": "$bg-primary",
+ "layout": "vertical",
+ "children": [
+ {
+ "type": "frame",
+ "id": "GolTR",
+ "name": "statusBar",
+ "width": "fill_container",
+ "height": 44,
+ "padding": [
+ 12,
+ 24
+ ],
+ "justifyContent": "space_between",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "r1pO6a",
+ "name": "statusTime",
+ "fill": "$text-primary",
+ "content": "9:41",
+ "fontFamily": "Inter",
+ "fontSize": 15,
+ "fontWeight": "600"
+ },
+ {
+ "type": "frame",
+ "id": "UXo66",
+ "name": "statusIcons",
+ "gap": 6,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "d1DmeM",
+ "name": "signalIcon",
+ "width": 16,
+ "height": 16,
+ "icon": "signal",
+ "library": "lucide",
+ "fill": "$text-primary"
+ },
+ {
+ "type": "icon",
+ "id": "IMbsy",
+ "name": "wifiIcon",
+ "width": 16,
+ "height": 16,
+ "icon": "wifi",
+ "library": "lucide",
+ "fill": "$text-primary"
+ },
+ {
+ "type": "icon",
+ "id": "E9raAZ",
+ "name": "batteryIcon",
+ "width": 20,
+ "height": 16,
+ "icon": "battery-full",
+ "library": "lucide",
+ "fill": "$text-primary"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "lbyqn",
+ "name": "historyHeader",
+ "width": "fill_container",
+ "height": 56,
+ "padding": [
+ 0,
+ 20
+ ],
+ "justifyContent": "space_between",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "L3UMyu",
+ "name": "headerLeft",
+ "gap": 12,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "ZLcH9",
+ "name": "backBtn",
+ "width": 36,
+ "height": 36,
+ "fill": "$bg-card",
+ "cornerRadius": 18,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "XUrNf",
+ "name": "backIcon",
+ "width": 18,
+ "height": 18,
+ "icon": "arrow-left",
+ "library": "lucide",
+ "fill": "$text-primary"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "b7fDGX",
+ "name": "titleGroup",
+ "layout": "vertical",
+ "gap": 1,
+ "children": [
+ {
+ "type": "text",
+ "id": "Z2QjK",
+ "name": "historyTitle",
+ "fill": "$text-primary",
+ "content": "History",
+ "fontFamily": "$font-primary",
+ "fontSize": 20,
+ "fontWeight": "700"
+ },
+ {
+ "type": "text",
+ "id": "h2u1F4",
+ "name": "historySubtitle",
+ "fill": "$text-muted",
+ "content": "Your random picks",
+ "fontFamily": "$font-secondary",
+ "fontSize": 11,
+ "fontWeight": "normal"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "N6aot",
+ "name": "clearHistoryBtn",
+ "width": 36,
+ "height": 36,
+ "fill": "$bg-card",
+ "cornerRadius": 18,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "P6aapS",
+ "name": "clearIcon",
+ "width": 16,
+ "height": 16,
+ "icon": "trash-2",
+ "library": "lucide",
+ "fill": "$text-secondary"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "uSOmz",
+ "name": "historyMain",
+ "width": "fill_container",
+ "height": "fill_container",
+ "layout": "vertical",
+ "gap": 12,
+ "padding": [
+ 16,
+ 20,
+ 20,
+ 20
+ ],
+ "children": [
+ {
+ "type": "frame",
+ "id": "d2nlhC",
+ "name": "historyList",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 12,
+ "children": [
+ {
+ "type": "frame",
+ "id": "dgf4z",
+ "name": "histCard1",
+ "width": "fill_container",
+ "fill": "$bg-card",
+ "cornerRadius": 16,
+ "gap": 12,
+ "padding": 12,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "T432s",
+ "name": "histPoster1",
+ "width": 60,
+ "height": 84,
+ "fill": {
+ "type": "gradient",
+ "gradientType": "linear",
+ "enabled": true,
+ "rotation": 180,
+ "size": {
+ "height": 1
+ },
+ "colors": [
+ {
+ "color": "#FF8000",
+ "position": 0
+ },
+ {
+ "color": "#14181C",
+ "position": 1
+ }
+ ]
+ },
+ "cornerRadius": 8,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "W7AOQn",
+ "name": "histPosterIcon1",
+ "width": 22,
+ "height": 22,
+ "icon": "film",
+ "library": "lucide",
+ "fill": "#FFFFFF40"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "Gsi6b",
+ "name": "histInfo1",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 6,
+ "children": [
+ {
+ "type": "text",
+ "id": "Z1fRo2",
+ "name": "histTitle1",
+ "fill": "$text-primary",
+ "textGrowth": "fixed-width",
+ "width": "fill_container",
+ "content": "Ghostwatch",
+ "fontFamily": "$font-primary",
+ "fontSize": 15,
+ "fontWeight": "700"
+ },
+ {
+ "type": "text",
+ "id": "eTyd2",
+ "name": "histMeta1",
+ "fill": "$text-muted",
+ "textGrowth": "fixed-width",
+ "width": "fill_container",
+ "content": "1992 · Today · 21:34",
+ "fontFamily": "$font-secondary",
+ "fontSize": 11,
+ "fontWeight": "normal"
+ },
+ {
+ "type": "frame",
+ "id": "m7LYz",
+ "name": "histUsers1",
+ "gap": 4,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "gq5MC",
+ "name": "histUser1_1",
+ "height": 22,
+ "fill": "#000000",
+ "cornerRadius": 11,
+ "gap": 4,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "oj83K",
+ "name": "histUserText1_1",
+ "fill": "#FFFFFF",
+ "content": "nacchofer31",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "600"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "E70aZ",
+ "name": "histGenres1",
+ "gap": 4,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "QVB5k",
+ "name": "histGenre1_1",
+ "height": 22,
+ "fill": "$tag-green",
+ "cornerRadius": 11,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "TmN0t",
+ "name": "histGenreText1_1",
+ "fill": "$accent-green",
+ "content": "Horror",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "500"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "j84n0i",
+ "name": "histFav1",
+ "width": 36,
+ "height": 36,
+ "fill": "$tag-green",
+ "cornerRadius": 18,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "lH1qH",
+ "name": "histFavIcon1",
+ "width": 16,
+ "height": 16,
+ "icon": "heart",
+ "library": "lucide",
+ "fill": "$accent-green"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "kGlKb",
+ "name": "histCard2",
+ "width": "fill_container",
+ "fill": "$bg-card",
+ "cornerRadius": 16,
+ "gap": 12,
+ "padding": 12,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "B1BqFF",
+ "name": "histPoster2",
+ "width": 60,
+ "height": 84,
+ "fill": {
+ "type": "gradient",
+ "gradientType": "linear",
+ "enabled": true,
+ "rotation": 180,
+ "size": {
+ "height": 1
+ },
+ "colors": [
+ {
+ "color": "#40BCF4",
+ "position": 0
+ },
+ {
+ "color": "#14181C",
+ "position": 1
+ }
+ ]
+ },
+ "cornerRadius": 8,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "f5uyRd",
+ "name": "histPosterIcon2",
+ "width": 22,
+ "height": 22,
+ "icon": "film",
+ "library": "lucide",
+ "fill": "#FFFFFF40"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "cashe",
+ "name": "histInfo2",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 6,
+ "children": [
+ {
+ "type": "text",
+ "id": "KmeXG",
+ "name": "histTitle2",
+ "fill": "$text-primary",
+ "textGrowth": "fixed-width",
+ "width": "fill_container",
+ "content": "Past Lives",
+ "fontFamily": "$font-primary",
+ "fontSize": 15,
+ "fontWeight": "700"
+ },
+ {
+ "type": "text",
+ "id": "LSxOI",
+ "name": "histMeta2",
+ "fill": "$text-muted",
+ "textGrowth": "fixed-width",
+ "width": "fill_container",
+ "content": "2023 · Today · 20:12",
+ "fontFamily": "$font-secondary",
+ "fontSize": 11,
+ "fontWeight": "normal"
+ },
+ {
+ "type": "frame",
+ "id": "eN5T8",
+ "name": "histUsers2",
+ "gap": 4,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "OeI5o",
+ "name": "histUser2_1",
+ "height": 22,
+ "fill": "$accent-green",
+ "cornerRadius": 11,
+ "gap": 4,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "AVnIa",
+ "name": "histUserText2_1",
+ "fill": "#14181C",
+ "content": "nacchofer31",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "600"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "uD9te",
+ "name": "histUser2_2",
+ "height": 22,
+ "fill": "$accent-green",
+ "cornerRadius": 11,
+ "gap": 4,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "UZmac",
+ "name": "histUserText2_2",
+ "fill": "#14181C",
+ "content": "shoegazer94",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "600"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "iTb25",
+ "name": "histGenres2",
+ "gap": 4,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "W16LFB",
+ "name": "histGenre2_1",
+ "height": 22,
+ "fill": "$tag-green",
+ "cornerRadius": 11,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "dCYf6",
+ "name": "histGenreText2_1",
+ "fill": "$accent-green",
+ "content": "Drama",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "500"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "R37tl",
+ "name": "histGenre2_2",
+ "height": 22,
+ "fill": "$tag-green",
+ "cornerRadius": 11,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "FpH7Y",
+ "name": "histGenreText2_2",
+ "fill": "$accent-green",
+ "content": "Romance",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "500"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "AJ09U",
+ "name": "histFav2",
+ "width": 36,
+ "height": 36,
+ "fill": "$bg-elevated",
+ "cornerRadius": 18,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "GzD2v",
+ "name": "histFavIcon2",
+ "width": 16,
+ "height": 16,
+ "icon": "heart",
+ "library": "lucide",
+ "fill": "$text-muted"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "wHXWI",
+ "name": "histCard3",
+ "width": "fill_container",
+ "fill": "$bg-card",
+ "cornerRadius": 16,
+ "gap": 12,
+ "padding": 12,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "LOl8x",
+ "name": "histPoster3",
+ "width": 60,
+ "height": 84,
+ "fill": {
+ "type": "gradient",
+ "gradientType": "linear",
+ "enabled": true,
+ "rotation": 180,
+ "size": {
+ "height": 1
+ },
+ "colors": [
+ {
+ "color": "#00E054",
+ "position": 0
+ },
+ {
+ "color": "#14181C",
+ "position": 1
+ }
+ ]
+ },
+ "cornerRadius": 8,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "XGqKC",
+ "name": "histPosterIcon3",
+ "width": 22,
+ "height": 22,
+ "icon": "film",
+ "library": "lucide",
+ "fill": "#FFFFFF40"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "LQWmw",
+ "name": "histInfo3",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 6,
+ "children": [
+ {
+ "type": "text",
+ "id": "iaQg9",
+ "name": "histTitle3",
+ "fill": "$text-primary",
+ "textGrowth": "fixed-width",
+ "width": "fill_container",
+ "content": "La La Land",
+ "fontFamily": "$font-primary",
+ "fontSize": 15,
+ "fontWeight": "700"
+ },
+ {
+ "type": "text",
+ "id": "Vpe4Z",
+ "name": "histMeta3",
+ "fill": "$text-muted",
+ "textGrowth": "fixed-width",
+ "width": "fill_container",
+ "content": "2016 · Yesterday · 22:48",
+ "fontFamily": "$font-secondary",
+ "fontSize": 11,
+ "fontWeight": "normal"
+ },
+ {
+ "type": "frame",
+ "id": "Nol4m",
+ "name": "histUsers3",
+ "gap": 4,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "jv76Q",
+ "name": "histUser3_1",
+ "height": 22,
+ "fill": "#000000",
+ "cornerRadius": 11,
+ "gap": 4,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "t8SRI7",
+ "name": "histUserText3_1",
+ "fill": "#FFFFFF",
+ "content": "shoegazer94",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "600"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "K6eNGL",
+ "name": "histGenres3",
+ "gap": 4,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "pJACm",
+ "name": "histGenre3_1",
+ "height": 22,
+ "fill": "$bg-elevated",
+ "cornerRadius": 11,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "fT3tr",
+ "name": "histGenreText3_1",
+ "fill": "$text-muted",
+ "content": "Any genre",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "500"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "Mbf3j",
+ "name": "histFav3",
+ "width": 36,
+ "height": 36,
+ "fill": "$bg-elevated",
+ "cornerRadius": 18,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "qic13",
+ "name": "histFavIcon3",
+ "width": 16,
+ "height": 16,
+ "icon": "heart",
+ "library": "lucide",
+ "fill": "$text-muted"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "f0T6F",
+ "name": "histCard4",
+ "width": "fill_container",
+ "fill": "$bg-card",
+ "cornerRadius": 16,
+ "gap": 12,
+ "padding": 12,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "RwmLw",
+ "name": "histPoster4",
+ "width": 60,
+ "height": 84,
+ "fill": {
+ "type": "gradient",
+ "gradientType": "linear",
+ "enabled": true,
+ "rotation": 180,
+ "size": {
+ "height": 1
+ },
+ "colors": [
+ {
+ "color": "#A24BD6",
+ "position": 0
+ },
+ {
+ "color": "#14181C",
+ "position": 1
+ }
+ ]
+ },
+ "cornerRadius": 8,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "rzWAI",
+ "name": "histPosterIcon4",
+ "width": 22,
+ "height": 22,
+ "icon": "film",
+ "library": "lucide",
+ "fill": "#FFFFFF40"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "Yhi7F",
+ "name": "histInfo4",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 6,
+ "children": [
+ {
+ "type": "text",
+ "id": "GlCjX",
+ "name": "histTitle4",
+ "fill": "$text-primary",
+ "textGrowth": "fixed-width",
+ "width": "fill_container",
+ "content": "The Big Lebowski",
+ "fontFamily": "$font-primary",
+ "fontSize": 15,
+ "fontWeight": "700"
+ },
+ {
+ "type": "text",
+ "id": "s0Bos7",
+ "name": "histMeta4",
+ "fill": "$text-muted",
+ "textGrowth": "fixed-width",
+ "width": "fill_container",
+ "content": "1998 · Yesterday · 19:05",
+ "fontFamily": "$font-secondary",
+ "fontSize": 11,
+ "fontWeight": "normal"
+ },
+ {
+ "type": "frame",
+ "id": "wIKNm",
+ "name": "histUsers4",
+ "gap": 4,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "VgWEl",
+ "name": "histUser4_1",
+ "height": 22,
+ "fill": "$accent-orange",
+ "cornerRadius": 11,
+ "gap": 4,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "GSAsJ",
+ "name": "histUserText4_1",
+ "fill": "#14181C",
+ "content": "nacchofer31",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "600"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "xh2QT",
+ "name": "histUser4_2",
+ "height": 22,
+ "fill": "$accent-orange",
+ "cornerRadius": 11,
+ "gap": 4,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "M5Rvk",
+ "name": "histUserText4_2",
+ "fill": "#14181C",
+ "content": "shoegazer94",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "600"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "we7Xz",
+ "name": "histGenres4",
+ "gap": 4,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "aNs27",
+ "name": "histGenre4_1",
+ "height": 22,
+ "fill": "$tag-green",
+ "cornerRadius": 11,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "msFvf",
+ "name": "histGenreText4_1",
+ "fill": "$accent-green",
+ "content": "Comedy",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "500"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "rOU1P",
+ "name": "histFav4",
+ "width": 36,
+ "height": 36,
+ "fill": "$tag-green",
+ "cornerRadius": 18,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "eWtXC",
+ "name": "histFavIcon4",
+ "width": 16,
+ "height": 16,
+ "icon": "heart",
+ "library": "lucide",
+ "fill": "$accent-green"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "wDK7P",
+ "name": "histCard5",
+ "width": "fill_container",
+ "fill": "$bg-card",
+ "cornerRadius": 16,
+ "gap": 12,
+ "padding": 12,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "jlTiw",
+ "name": "histPoster5",
+ "width": 60,
+ "height": 84,
+ "fill": {
+ "type": "gradient",
+ "gradientType": "linear",
+ "enabled": true,
+ "rotation": 180,
+ "size": {
+ "height": 1
+ },
+ "colors": [
+ {
+ "color": "#FF8000",
+ "position": 0
+ },
+ {
+ "color": "#14181C",
+ "position": 1
+ }
+ ]
+ },
+ "cornerRadius": 8,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "C67TiK",
+ "name": "histPosterIcon5",
+ "width": 22,
+ "height": 22,
+ "icon": "film",
+ "library": "lucide",
+ "fill": "#FFFFFF40"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "LHnqY",
+ "name": "histInfo5",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 6,
+ "children": [
+ {
+ "type": "text",
+ "id": "G3Nc6",
+ "name": "histTitle5",
+ "fill": "$text-primary",
+ "textGrowth": "fixed-width",
+ "width": "fill_container",
+ "content": "Blade Runner 2049",
+ "fontFamily": "$font-primary",
+ "fontSize": 15,
+ "fontWeight": "700"
+ },
+ {
+ "type": "text",
+ "id": "NxqjB",
+ "name": "histMeta5",
+ "fill": "$text-muted",
+ "textGrowth": "fixed-width",
+ "width": "fill_container",
+ "content": "2017 · Mon · 21:20",
+ "fontFamily": "$font-secondary",
+ "fontSize": 11,
+ "fontWeight": "normal"
+ },
+ {
+ "type": "frame",
+ "id": "GK8UN",
+ "name": "histUsers5",
+ "gap": 4,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "jnXC0",
+ "name": "histUser5_1",
+ "height": 22,
+ "fill": "#000000",
+ "cornerRadius": 11,
+ "gap": 4,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "ce77Y",
+ "name": "histUserText5_1",
+ "fill": "#FFFFFF",
+ "content": "nacchofer31",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "600"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "oxoAN",
+ "name": "histGenres5",
+ "gap": 4,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "sJWvK",
+ "name": "histGenre5_1",
+ "height": 22,
+ "fill": "$tag-green",
+ "cornerRadius": 11,
+ "padding": [
+ 0,
+ 8
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "SAWjf",
+ "name": "histGenreText5_1",
+ "fill": "$accent-green",
+ "content": "Sci-Fi",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "500"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "QW2Oh",
+ "name": "histFav5",
+ "width": 36,
+ "height": 36,
+ "fill": "$bg-elevated",
+ "cornerRadius": 18,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "UJih3",
+ "name": "histFavIcon5",
+ "width": 16,
+ "height": 16,
+ "icon": "heart",
+ "library": "lucide",
+ "fill": "$text-muted"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "rHxIH",
+ "name": "historyFooter",
+ "width": "fill_container",
+ "padding": [
+ 4,
+ 0,
+ 0,
+ 0
+ ],
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "OwkiY",
+ "name": "historyFooterText",
+ "fill": "$text-muted",
+ "content": "24 movies picked in total",
+ "fontFamily": "$font-secondary",
+ "fontSize": 11,
+ "fontWeight": "500"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "oS0JX",
+ "x": 454,
+ "y": 900,
+ "name": "Onboarding - History",
+ "clip": true,
+ "width": 390,
+ "height": 844,
+ "fill": "$bg-primary",
+ "layout": "vertical",
+ "children": [
+ {
+ "type": "frame",
+ "id": "MFjST",
+ "name": "contentWrapper6",
+ "width": "fill_container",
+ "height": "fill_container",
+ "layout": "vertical",
+ "padding": [
+ 60,
+ 32,
+ 40,
+ 32
+ ],
+ "justifyContent": "space_between",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "yGu27",
+ "name": "topSection6",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 28,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "CGkuj",
+ "name": "historyMockup",
+ "width": "fill_container",
+ "fill": "$bg-card",
+ "cornerRadius": 20,
+ "layout": "vertical",
+ "gap": 10,
+ "padding": 16,
+ "children": [
+ {
+ "type": "frame",
+ "id": "yPV28",
+ "name": "mockupHeader",
+ "width": "fill_container",
+ "justifyContent": "space_between",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "jfBT3",
+ "name": "mockupTitle",
+ "fill": "$text-primary",
+ "content": "Your random picks",
+ "fontFamily": "$font-primary",
+ "fontSize": 14,
+ "fontWeight": "700"
+ },
+ {
+ "type": "frame",
+ "id": "Wtpc1",
+ "name": "countBadge",
+ "width": 22,
+ "height": 22,
+ "fill": "$accent-green",
+ "cornerRadius": 11,
+ "layout": "vertical",
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "Ir1xb",
+ "name": "countText",
+ "fill": "#14181C",
+ "content": "24",
+ "fontFamily": "Inter",
+ "fontSize": 10,
+ "fontWeight": "700"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "t3U7gB",
+ "name": "histCard Ghostwatch",
+ "width": "fill_container",
+ "fill": "$bg-elevated",
+ "cornerRadius": 12,
+ "gap": 10,
+ "padding": 10,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "fwSu2",
+ "name": "poster",
+ "width": 32,
+ "height": 44,
+ "fill": {
+ "type": "gradient",
+ "gradientType": "linear",
+ "enabled": true,
+ "rotation": 180,
+ "size": {
+ "height": 1
+ },
+ "colors": [
+ {
+ "color": "#FF8000",
+ "position": 0
+ },
+ {
+ "color": "#14181C",
+ "position": 1
+ }
+ ]
+ },
+ "cornerRadius": 6,
+ "layout": "vertical",
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "SptAp",
+ "name": "filmIcon",
+ "width": 14,
+ "height": 14,
+ "icon": "film",
+ "library": "lucide",
+ "fill": "#FFFFFF40"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "XRHzq",
+ "name": "info",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 3,
+ "children": [
+ {
+ "type": "text",
+ "id": "ePaVw",
+ "name": "title",
+ "fill": "$text-primary",
+ "content": "Ghostwatch",
+ "fontFamily": "$font-primary",
+ "fontSize": 12,
+ "fontWeight": "600"
+ },
+ {
+ "type": "text",
+ "id": "rikNR",
+ "name": "meta",
+ "fill": "$text-muted",
+ "content": "1992 · Today · 21:34",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "normal"
+ }
+ ]
+ },
+ {
+ "type": "icon",
+ "id": "DTTjs",
+ "name": "favIcon",
+ "width": 14,
+ "height": 14,
+ "icon": "heart",
+ "library": "lucide",
+ "fill": "$accent-green"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "XLDoF",
+ "name": "histCard Past Lives",
+ "width": "fill_container",
+ "fill": "$bg-elevated",
+ "cornerRadius": 12,
+ "gap": 10,
+ "padding": 10,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "yWEcV",
+ "name": "poster",
+ "width": 32,
+ "height": 44,
+ "fill": {
+ "type": "gradient",
+ "gradientType": "linear",
+ "enabled": true,
+ "rotation": 180,
+ "size": {
+ "height": 1
+ },
+ "colors": [
+ {
+ "color": "#40BCF4",
+ "position": 0
+ },
+ {
+ "color": "#14181C",
+ "position": 1
+ }
+ ]
+ },
+ "cornerRadius": 6,
+ "layout": "vertical",
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "j5ST3o",
+ "name": "filmIcon",
+ "width": 14,
+ "height": 14,
+ "icon": "film",
+ "library": "lucide",
+ "fill": "#FFFFFF40"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "hCQjN",
+ "name": "info",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 3,
+ "children": [
+ {
+ "type": "text",
+ "id": "RPEXb",
+ "name": "title",
+ "fill": "$text-primary",
+ "content": "Past Lives",
+ "fontFamily": "$font-primary",
+ "fontSize": 12,
+ "fontWeight": "600"
+ },
+ {
+ "type": "text",
+ "id": "V95aUj",
+ "name": "meta",
+ "fill": "$text-muted",
+ "content": "2023 · Today · 20:12",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "normal"
+ }
+ ]
+ },
+ {
+ "type": "icon",
+ "id": "K4dBW",
+ "name": "favIcon",
+ "width": 14,
+ "height": 14,
+ "icon": "heart",
+ "library": "lucide",
+ "fill": "$text-muted"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "bwaii",
+ "name": "histCard La La Land",
+ "width": "fill_container",
+ "fill": "$bg-elevated",
+ "cornerRadius": 12,
+ "gap": 10,
+ "padding": 10,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "bAAEJ",
+ "name": "poster",
+ "width": 32,
+ "height": 44,
+ "fill": {
+ "type": "gradient",
+ "gradientType": "linear",
+ "enabled": true,
+ "rotation": 180,
+ "size": {
+ "height": 1
+ },
+ "colors": [
+ {
+ "color": "#00E054",
+ "position": 0
+ },
+ {
+ "color": "#14181C",
+ "position": 1
+ }
+ ]
+ },
+ "cornerRadius": 6,
+ "layout": "vertical",
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "q4VUJV",
+ "name": "filmIcon",
+ "width": 14,
+ "height": 14,
+ "icon": "film",
+ "library": "lucide",
+ "fill": "#FFFFFF40"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "v5CdTg",
+ "name": "info",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 3,
+ "children": [
+ {
+ "type": "text",
+ "id": "kf0Wz",
+ "name": "title",
+ "fill": "$text-primary",
+ "content": "La La Land",
+ "fontFamily": "$font-primary",
+ "fontSize": 12,
+ "fontWeight": "600"
+ },
+ {
+ "type": "text",
+ "id": "xAlEX",
+ "name": "meta",
+ "fill": "$text-muted",
+ "content": "2016 · Yesterday · 22:48",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "normal"
+ }
+ ]
+ },
+ {
+ "type": "icon",
+ "id": "Yzc49",
+ "name": "favIcon",
+ "width": 14,
+ "height": 14,
+ "icon": "heart",
+ "library": "lucide",
+ "fill": "$text-muted"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "id": "UWTHk",
+ "name": "mockupFooter",
+ "fill": "$text-muted",
+ "textGrowth": "fixed-width",
+ "width": "fill_container",
+ "content": "24 movies picked in total",
+ "textAlign": "center",
+ "fontFamily": "$font-secondary",
+ "fontSize": 10,
+ "fontWeight": "normal"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "BMqaK",
+ "name": "titleSection6",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 12,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "yIxjB",
+ "name": "screen5Title",
+ "fill": "$text-primary",
+ "content": "Your History",
+ "textAlign": "center",
+ "fontFamily": "$font-primary",
+ "fontSize": 28,
+ "fontWeight": "700"
+ },
+ {
+ "type": "text",
+ "id": "WCSOm",
+ "name": "screen5Subtitle",
+ "fill": "$text-secondary",
+ "textGrowth": "fixed-width",
+ "width": 300,
+ "content": "Every random pick is saved automatically. Revisit titles, see who picked them, and keep your favorites close.",
+ "lineHeight": 1.5,
+ "textAlign": "center",
+ "fontFamily": "$font-secondary",
+ "fontSize": 15,
+ "fontWeight": "normal"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "F9lKg",
+ "name": "middleSection6",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 10,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "VCEAg",
+ "name": "featureRow6",
+ "width": "fill_container",
+ "fill": "$bg-card",
+ "cornerRadius": 12,
+ "gap": 12,
+ "padding": [
+ 12,
+ 16
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "ZaR2T",
+ "width": 36,
+ "height": 36,
+ "fill": "$tag-green",
+ "cornerRadius": 8,
+ "layout": "vertical",
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "zdQ9X",
+ "width": 18,
+ "height": 18,
+ "icon": "history",
+ "library": "lucide",
+ "fill": "$accent-green"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "id": "oo2NU",
+ "fill": "$text-primary",
+ "content": "Every pick is saved automatically",
+ "fontFamily": "$font-secondary",
+ "fontSize": 14,
+ "fontWeight": "500"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "Ln6he",
+ "name": "featureRow6",
+ "width": "fill_container",
+ "fill": "$bg-card",
+ "cornerRadius": 12,
+ "gap": 12,
+ "padding": [
+ 12,
+ 16
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "TDWi9",
+ "width": 36,
+ "height": 36,
+ "fill": "$tag-orange",
+ "cornerRadius": 8,
+ "layout": "vertical",
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "u2jgfy",
+ "width": 18,
+ "height": 18,
+ "icon": "users",
+ "library": "lucide",
+ "fill": "$accent-orange"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "id": "z8uWSW",
+ "fill": "$text-primary",
+ "content": "See who picked each movie",
+ "fontFamily": "$font-secondary",
+ "fontSize": 14,
+ "fontWeight": "500"
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "hesjE",
+ "name": "featureRow6",
+ "width": "fill_container",
+ "fill": "$bg-card",
+ "cornerRadius": 12,
+ "gap": 12,
+ "padding": [
+ 12,
+ 16
+ ],
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "GHgNf",
+ "width": 36,
+ "height": 36,
+ "fill": "$tag-green",
+ "cornerRadius": 8,
+ "layout": "vertical",
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "icon",
+ "id": "AR5cs",
+ "width": 18,
+ "height": 18,
+ "icon": "heart",
+ "library": "lucide",
+ "fill": "$accent-green"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "id": "feid4",
+ "fill": "$text-primary",
+ "content": "Favorite picks and clear anytime",
+ "fontFamily": "$font-secondary",
+ "fontSize": 14,
+ "fontWeight": "500"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "Sv4SI",
+ "name": "bottomSection6",
+ "width": "fill_container",
+ "layout": "vertical",
+ "gap": 16,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "frame",
+ "id": "v1GX0A",
+ "name": "pageIndicator6",
+ "gap": 8,
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "ellipse",
+ "id": "cpANK",
+ "name": "dot6Inactive1",
+ "fill": "$text-muted",
+ "width": 8,
+ "height": 8
+ },
+ {
+ "type": "ellipse",
+ "id": "tlOiu",
+ "name": "dot6Inactive2",
+ "fill": "$text-muted",
+ "width": 8,
+ "height": 8
+ },
+ {
+ "type": "ellipse",
+ "id": "fvOiP",
+ "name": "dot6Inactive3",
+ "fill": "$text-muted",
+ "width": 8,
+ "height": 8
+ },
+ {
+ "type": "ellipse",
+ "id": "Kxhyc",
+ "name": "dot6Inactive4",
+ "fill": "$text-muted",
+ "width": 8,
+ "height": 8
+ },
+ {
+ "type": "ellipse",
+ "id": "G7re3E",
+ "name": "dot6Inactive5",
+ "fill": "$text-muted",
+ "width": 8,
+ "height": 8
+ },
+ {
+ "type": "ellipse",
+ "id": "P9xZPd",
+ "name": "dot6Active",
+ "fill": "$accent-green",
+ "width": 10,
+ "height": 10
+ }
+ ]
+ },
+ {
+ "type": "frame",
+ "id": "umyHt",
+ "name": "finishBtn6",
+ "width": "fill_container",
+ "height": 56,
+ "fill": "$accent-green",
+ "cornerRadius": 16,
+ "gap": 8,
+ "justifyContent": "center",
+ "alignItems": "center",
+ "children": [
+ {
+ "type": "text",
+ "id": "L2VQNO",
+ "fill": "#14181C",
+ "content": "Start Exploring",
+ "fontFamily": "$font-primary",
+ "fontSize": 17,
+ "fontWeight": "700"
+ },
+ {
+ "type": "icon",
+ "id": "SzKQo",
+ "width": 20,
+ "height": 20,
"icon": "sparkles",
"library": "lucide",
"fill": "#14181C"