Slide 1

Slide 1 text

Compose 2025.1.27

Slide 2

Slide 2 text

©MIXI 2 MIXI Android / iOS / Flutter 2017 Android 2014 @oidy

Slide 3

Slide 3 text

UI 5

Slide 4

Slide 4 text

©MIXI 1. 4 val Gray = Color(0xFFCCCCCC) val LightGray = Color(0xFFEEEEEE)

Slide 5

Slide 5 text

©MIXI 2. 5

Slide 6

Slide 6 text

©MIXI 3. UI 6 @Composable fun UserIcon( uiState: UserScreenUiState ) @Composable fun PostButton( viewModel: PostScreenViewModel )

Slide 7

Slide 7 text

©MIXI 4. UI 7 @Composable fun UserIcon(...) @Composable fun UserIcon2(...) @Composable fun UserIcon3(...)

Slide 8

Slide 8 text

©MIXI 5. padding 8 16 - (48 - 18) / 2 = 1 Material Design 48 x 48 dp

Slide 9

Slide 9 text

©MIXI 9 minimo 3 2 1 Figma Figma Code Connect

Slide 10

Slide 10 text

minimo

Slide 11

Slide 11 text

©MIXI 11 https://minimodel.jp/about

Slide 12

Slide 12 text

©MIXI • • View Compose • Figma 12 app app : https://speakerdeck.com/oidy/regasina-android-apurinoriakitekutiyazhan-lue

Slide 13

Slide 13 text

Figma

Slide 14

Slide 14 text

©MIXI 14 Figma App Screen Screen A Screen B Library Components Styles UI ( )

Slide 15

Slide 15 text

©MIXI 15 app Figma App Screen Screen A Screen B feature:b feature:a

Slide 16

Slide 16 text

©MIXI 16 app Figma App Screen Screen A Screen B feature:b feature:a Library Components core:ui

Slide 17

Slide 17 text

©MIXI 17 app Figma feature:b feature:a Library Components Styles core:designsystem core:ui App Screen Screen A Screen B

Slide 18

Slide 18 text

©MIXI 18 app feature:b feature:a core:designsystem core:ui internal public Color, ColorScheme, Typography Theme core:ui Theme

Slide 19

Slide 19 text

©MIXI 19 Figma variables Kotlin internal val White = Color(0xFFFFFFFF) internal val Black = Color(0xFF1C1C1C) internal val lightColorScheme = lightColorScheme( surface = White, onSurface = Black, ) internal val darkColorScheme = darkColorScheme( surface = Black, onSurface = White, )

Slide 20

Slide 20 text

©MIXI 20 Kotlin internal val White = Color(0xFFFFFFFF) internal val Black = Color(0xFF1C1C1C) internal val lightColorScheme = lightColorScheme( surface = White, onSurface = Black, ) internal val darkColorScheme = darkColorScheme( surface = Black, onSurface = White, ) Material Color Scheme Color Scheme

Slide 21

Slide 21 text

©MIXI Color Scheme 21 internal data class MinimoColorScheme( val primaryVariant: Color, ) internal val lightMinimoColorScheme = MinimoColorScheme(BlueLight) internal val darkMinimoColorScheme = MinimoColorScheme(Blue) Material

Slide 22

Slide 22 text

©MIXI 22 internal val LocalMinimoColorScheme = staticCompositionLocalOf { lightMinimoColorScheme } CompositionLocal @Composable fun MinimoTheme(darkTheme: Boolean = isSystemInDarkTheme(), ...) { CompositionLocalProvider( LocalMinimoColorScheme provides if (darkTheme) { darkMinimoColorScheme } else { lightMinimoColorScheme }, ) { MaterialTheme(...) } } Theme

Slide 23

Slide 23 text

©MIXI 23 val ColorScheme.primaryVariant: Color @Composable @ReadOnlyComposable get() = LocalMinimoColorScheme.current.primaryVariant Extension Composable Text( text = text, color = MaterialTheme.colorScheme.primaryVariant, )

Slide 24

Slide 24 text

©MIXI 24 val ColorScheme.primaryVariant: Color @Composable @ReadOnlyComposable get() = LocalMinimoColorScheme.current.primaryVariant Extension Composable Text( text = text, color = MaterialTheme.colorScheme.primaryVariant, ) Theme

Slide 25

Slide 25 text

©MIXI 25 app feature:b feature:a core:designsystem core:ui

Slide 26

Slide 26 text

©MIXI UI 26 Buttons TextButton IconButton Chips FilterChip InputChip

Slide 27

Slide 27 text

©MIXI 27 Figma core:ui Buttons TextButton IconButton Chips Section Package FilterChip InputChip

Slide 28

Slide 28 text

©MIXI 28 Figma core:ui Buttons TextButton IconButton Chips Component Composable FilterChip InputChip

Slide 29

Slide 29 text

©MIXI 29 Figma core:ui Buttons TextButton text IconButton icon Properties Parameters Figma 1:1

Slide 30

Slide 30 text

Figma Code Connect

Slide 31

Slide 31 text

©MIXI Figma Code Connect Figma UI 2024 4 Compose, SwiftUI, React, HTML 31 @Composable fun Button(...) publish

Slide 32

Slide 32 text

©MIXI (2025 1 ) 32 Figma Code Connect Figma Dev Mode Relay Figma Organization or Enterprise Gradle Plugin & Library Figma Professional or Organization or Enterprise Figma Plugin Android Studio Plugin Ladybug Gradle Plugin Kotlin Plugin UI (JSON) Figma Figma Column, Row, Text build Composable

Slide 33

Slide 33 text

©MIXI UI 33 @FigmaConnect("https://www.figma.com/...") private class ButtonDoc { @FigmaProperty(FigmaType.Text, "text") private lateinit var text: String @FigmaProperty(FigmaType.Boolean, "enabled") private val enabled: Boolean = true @Composable private fun Example() { Button( onClick = {}, enabled = enabled, ) { Text(text = text) } } } URL Figma Property Boolean Text Enum Instance Compose Params Boolean String Enum Composable Figma

Slide 34

Slide 34 text

©MIXI UI 34 @FigmaConnect("https://www.figma.com/...") private class ButtonDoc { @FigmaProperty(FigmaType.Text, "text") private lateinit var text: String @FigmaProperty(FigmaType.Boolean, "enabled") private val enabled: Boolean = true @Composable private fun Example() { Button( onClick = {}, enabled = enabled, ) { Text(text = text) } } }

Slide 35

Slide 35 text

©MIXI UI 35 @FigmaConnect("https://www.figma.com/...") private class ButtonDoc { @FigmaProperty(FigmaType.Text, "text") private lateinit var text: String @FigmaProperty(FigmaType.Boolean, "enabled") private val enabled: Boolean = true @Composable private fun Example() { Button( onClick = {}, enabled = enabled, ) { Text(text = text) } } }

Slide 36

Slide 36 text

©MIXI : 36 @FigmaConnect(...) private class ButtonDoc { ... @Composable private fun Example() { if (enabled) { Button( onClick = {}, ) ... } else { Button( onClick = {}, enabled = enabled, ) ... } } }

Slide 37

Slide 37 text

©MIXI : Variant SwiftUI Code Connect hideDefault Compose 37 @FigmaConnect(...) @FigmaVariant("enabled", "false") private class DisabledButtonDoc { ... @Composable private fun Example() { Button( onClick = {}, enabled = false, ) ... } } @FigmaConnect(...) private class ButtonDoc { ... @Composable private fun Example() { Button( onClick = {}, ) ... } } enabled false

Slide 38

Slide 38 text

©MIXI UI 38

Slide 39

Slide 39 text

©MIXI : 39 ReservationHistoryMenu( ... price = "¥4,000", ) Figma Compose ( ) 1

Slide 40

Slide 40 text

©MIXI : 40 @FigmaProperty(FigmaType.Text, "price") private val price: Int = 0 ReservationHistoryMenu( ... price = "¥4,000", ) Int ( ) ReservationHistoryMenu( ... price = 4000, )

Slide 41

Slide 41 text

©MIXI UI Compose Preview publish CI 41 React "AI for prop mapping" Figma

Slide 42

Slide 42 text

©MIXI 42 minimo 3 2 1 Figma Figma Code Connect Figma : file, section, variable, component, property Compose : module, package, theme, composable, parameter Figma Figma UI