Saltatu eduki nagusira

Diseinu sistema

Kolore paleta​

Trainium paleta ui/theme/Color.kt ezarrita dago. Estetika ilun eta monokromo bati jarraitzen dio, urdin elektrikoa azentu kolore gisa.

Oinarrizko tonuak (gaiaren independentea)​

TokenHEX balioaErabilera nagusia
BlueDark#0B1426Gai iluna atzeko planoa
BlueMid#121F3DGai iluna gainazal
BlueDeep#162347Gai iluneko aldaera azalera
BlueAccent#2196F3Ekintzen kolore nagusia (botoiak, ertz aktiboak)
BlueElectric#448AFFGradientea CTA botoiak
BlueSoft#64B5F6Bigarren mailako testuak eta azpitituluak gai ilunean
BlueGlow#332196F3Distira eta itzal efektuak gardentasunarekin
BlueLight#BBDEFBHondo leunak gai argian
WhiteSoft#F0F4FFGai argiaren atzeko planoa

Gai ilunaren kolore-eskema​

Rol Materiala 3TokenBalio HEX
primaryDarkPrimary#448AFF
onPrimaryDarkOnPrimary#001E5F
primaryContainerDarkPrimaryContainer#1A3A6E
backgroundDarkBackground#0B1426
surfaceDarkSurface#121F3D
surfaceVariantDarkSurfaceVariant#1A2D54
errorDarkError#FF6B6B

Argi-gaiaren kolore-eskema​

Rol Materiala 3TokenBalio HEX
primaryLightPrimary#1565C0
onPrimaryLightOnPrimary#FFFFFF
primaryContainerLightPrimaryContainer#D0E4FF
backgroundLightBackground#F0F4FF
surfaceLightSurface#FFFFFF
surfaceVariantLightSurfaceVariant#E3ECFA
errorLightError#D32F2F

Tipografia​

Letra-tipoaren eskala ui/theme/Type.kt ezarrita dago eta FontFamily.SansSerif erabiltzen du (Android sistemako sans-serif lehenetsia, normalean Roboto) maila guztietarako.

NivelPisuaTamainaInterletraje
displayLargeBeltza (900)34 sp-0,25 sp
headlineLargeLodia (700)28 sp0 sp
headlineMediumLodia (700)24 sp0 sp
titleLargeErdi lodia (600)20 sp0,15 sp
titleMediumErdi lodia (600)16 sp0,15 sp
bodyLargeNormala (400)16 sp0,5 sp
bodyMediumNormala (400)14 sp0,25 sp
labelLargeLodia (700)14 sp1,2 sp
labelMediumErtaina (500)12 sp0,5 sp
labelSmallErtaina (500)11 sp0,5 sp

labelLarge letterSpacing = 1.2 sp duen IC_148 CTA botoietan erabiltzen da (adibidez, "HASI ORAIN", "JARRAITU") interfazearen ezaugarri hedatutako testu-efektua emateko.

Formak​

PremiumShapes forma pertsonalizatuko sistemak lehenetsitako Material 3 izkinen eskema ordezkatzen du:

NivelRadio de esquina
small10 dp
medium16 dp
large22 dp
extraLarge28 dp

Material 3-ren balio lehenetsiak baino erradio eskuzabal hauek txartelen eta botoien itxura biribilduari laguntzen diote.

Gaien kudeaketa​

Gaia bi geruzatan kudeatzen da:

MaterialTheme (ui/theme/Theme.kt): ColorScheme, Typography eta Shapes darkTheme parametroaren arabera aplikatzen dituen Trainium2Theme konposagarria definitzen du.

ThemeManager (ThemeManager.kt): erabiltzailearen hobespenak mantentzen ditu DataStore-n. Hobespena Flow<Boolean?> gisa irakurtzen da eta MainActivity.kt-n biltzen da collectAsState(initial = null)-rekin. Hasierako balioak null esan nahi du hobespena ez dela oraindik diskotik irakurri; kasu horretan, sistemaren gaia (isSystemInDarkTheme()) erabiltzen da.

val savedDarkMode by themeManager.isDarkMode.collectAsState(initial = null)
val systemTheme = isSystemInDarkTheme()
var isDarkTheme by remember(savedDarkMode) {
mutableStateOf(savedDarkMode ?: systemTheme)
}

Atzeko planoko gradienteak​

Pantaila guztiek gradiente bertikalak erabiltzen dituzte atzealde lauen ordez. Gradientea gai aktiboaren arabera aldatzen da:

Gai iluna:

Brush.verticalGradient(listOf(BlueDark, BlueMid, BlueDeep))
// #0B1426 → #121F3D → #162347

Garbitu gaia:

Brush.verticalGradient(listOf(Color(0xFFF0F4FF), Color(0xFFE3ECFF), Color(0xFFD6E4FF)))

Sarrera animazioak​

Pantaila guztiek sarrerako animazio mailakatuak ezartzen dituzte LaunchedEffect(Unit) + animateFloatAsState erabiliz. Eredu estandarra hau da:

var elementoVisible by remember { mutableStateOf(false) }
val alpha by animateFloatAsState(
targetValue = if (elementoVisible) 1f else 0f,
animationSpec = tween(durationMillis = 500),
label = "elemento_alpha"
)

LaunchedEffect(Unit) {
delay(100)
elementoVisible = true
}

Elementuak sekuentzialki erakusten dira bakoitzaren artean 100-300 ms-ko atzerapenekin, kaskadako itxura efektua sortuz.