This media is not supported in your browser
VIEW IN TELEGRAM
Paper позволяет проектировать UI в веб-среде и затем экспортировать всё в код.
Что делает Paper интересным?
👉 Готовые UI-компоненты: кнопки, карточки, переключатели, диалоги и многое другое.
👉 Визуальный редактор: меняйте цвета, размеры, тени и другие параметры прямо в браузере, а затем копируйте готовый код в проект.
👉 Поддержка Material 3 с возможностью кастомизации под любой стиль.
👉 Открытый код, который можно модифицировать под свои задачи.
Paper предоставляет бесплатный 30-дневный пробный период без ограничений, после чего стоимость составляет 100$ в год. Если не хотите платить, можно продолжать пользоваться, но экспорт кода будет ограничен.
💬 Кто уже тестировал? Насколько удобен редактор? Делитесь впечатлениями!
#compose #kmp #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥56👍8👌3
Forwarded from Kotlin Multiplatform Broadcast
🔥 На конференции по Аврора ОС объявили о поддержки 🏝 Kotlin Multiplatform и в скоро будущем будет работать и ⚙️ Compose Multiplatform
Как только станет доступно попробовать - подключу в свой проект Frame.io
Источник - @AuroraDevelopers
#kmp #аврораос
Как только станет доступно попробовать - подключу в свой проект Frame.io
Источник - @AuroraDevelopers
#kmp #аврораос
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33
После релиза Compose 1.8.0 сразу же выпустили свежий RC мультиплатформенной версии. Внесены улучшения в Compose Web для Safari, но также появились и критические изменения:
👉 Зависимость material/material3 больше не добавляет зависимость material-icons-core, её нужно будет добавлять явно.
👉 Больше не поддерживается LocalTextInputService.
👉 Требуется Kotlin Gradle Plugin 2.X.
👉 Старый плагин org.jetbrains.compose.compiler больше не поддерживается.
#compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25
Forwarded from Android Broadcast
🛠 Значительные переработки под капотом для улучшения поддержки KMP
👉 Добавлена поддержка обработки deep link из Kotlin Common кода
👉 Улучшения API
#jetpack #jetpackupdate #navigation #compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
Плюсы решения
👉 Компоненты без стилизации
👉 Поддержка доступности и навигации клавиатурой
👉 Простое API
👉 Одинаковое поведение на всех платформах
👉 Хорошая документация
👉 Все компоненты поддерживают все KMP таргеты Compose
#compose #kmp #composemp #android #ios #desktop #wasm #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Приложения с KMP и Compose Multiplatform для Android, iOS, Desktop, Web. Стек: Kotlin Inject, KStore, KotlinX библиотеки, Ktor, Coil, KMP Settings, Compose Desktop JVM Hot Reload
Автор - Константин Цховребов из JB команды KMP.
Скачать можно в Google Play, а вот в App Store не выкладывали.
#compose #kmp #kotlin #пример #android #desktop #ios #web #wasm
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34
class TextPreviewParameterProvider : PreviewParameterProvider<String> {
override val values = sequenceOf("Hello, Compose!", "Hello, World!")
}
/**
* Получится превью со всеми возможными
* значениями параметра из провайдера
*/
@Preview
@Composable
fun SamplePreview(
@PreviewParameter(TextPreviewParameterProvider::class) text: String
) {
Text(text)
}#compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍4❤1
Ждем скорого стабильного релиза и можно будет разбирать
#compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Forwarded from Kotlin Adept Notes (Alex Panov)
Преимущества библиотеки:
#Compose #Snackbar #KMP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥55👍15❤4🤯3
🔥 Jetpack Navigation 3 теперь мультиплатформенная!
В релизе 1.0.0-alpha08 добавили поддержку множества новых KMP-таргетов для runtime-артефакта. Теперь библиотека работает на:
👉 JVM → Android и Desktop
👉 Native → Linux, iOS, watchOS, macOS, MinGW
👉 Web → JavaScript и WasmJS
Для UI-артефакта (где лежат Composable-функции) пока поддержка осталась только у Jetpack Compose.
Ждём появления отдельного артефакта для⚙️ Compose Multiplatform от JetBrains
#compose #kmp #navigation
В релизе 1.0.0-alpha08 добавили поддержку множества новых KMP-таргетов для runtime-артефакта. Теперь библиотека работает на:
👉 JVM → Android и Desktop
👉 Native → Linux, iOS, watchOS, macOS, MinGW
👉 Web → JavaScript и WasmJS
Для UI-артефакта (где лежат Composable-функции) пока поддержка осталась только у Jetpack Compose.
Ждём появления отдельного артефакта для
#compose #kmp #navigation
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥47👍8🤔5❤1
Подкючайте артефакт
org.jetbrains.androidx.navigation3:navigation3-ui:1.0.0-alpha01 в common код и можете пробоватьЖдем актуализации до свежей альфа версии, а также адаптивные layout и интеграцию с ViewModel
#compose #kmp #naviation #jetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥4🤔2
Что нового для всех таргетов:
👉 Аннотация
@Preview в common коде теперь поддерживает задание параметров (имя для отображения, размеры и прочее)👉 Больше возможностей по управлению тенями
👉 Адаптировали новое API для управления контекстным меню из Android под все платформы. Требуется включение через код
ComposeFoundationFlags.isNewContextMenuEnabled = true
👉 Тема Material Expressive
👉 Артефакт
androidx.compose.runtime:runtime стал мультиплатформенным, перенеся наработки из org.jetbrains.compose.runtime:runtime👉
runComposeUiTest() теперь позволяет запускать suspend функции в теле вызоваCompose/iOS
👉 Управление желаемой частотой кадров для рендера Composable
Modifier.preferredFrameRate(FrameRateCategory.High)
Modifier.preferredFrameRate(120f)
👉 Поддержка кастомизаций ввода, специфичных для iOS
BasicTextField(
value = "",
onValueChange = {},
keyboardOptions = KeyboardOptions(
platformImeOptions = PlatformImeOptions {
keyboardType(UIKeyboardTypeEmailAddress)
}
)
)
Compose/Web
🎉 Поддержка Web таргета перешло в Beta статус
👉 Поддержка Accessibility API
👉 Новое API для встраивания HTML
private val ttOSM =
"https://www.openstreetmap.org/export/embed.html?bbox=4.890965223312379%2C52.33722052818563%2C4.893990755081177%2C52.33860862450587&layer=mapnik"
@Composable
fun Map() {
Box(
modifier = Modifier.fillMaxWidth().fillMaxHeight()
) {
WebElementView(
factory = {
(document.createElement("iframe")
as HTMLIFrameElement)
.apply { src = ttOSM }
},
modifier = Modifier.fillMaxSize(),
update = { iframe -> iframe.src = iframe.src }
)
}
}
👉 Упростили связывание Jetpack Navigation c навигацией в браузере
// Код в Composable функции
LaunchedEffect(Unit) {
// Implicitly accesses the window object
navController.bindToBrowserNavigation()
}
Compose/Desktop
👉 Возможность настройки окна с контентом с помощью API SwingFrame() and SwingDialog(), аналогичные Window() and DialogWindow(). Разница то что новые API конфигурируются в init блоке до показа UI.
#compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥29❤3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Решение использует dev сборки Jetpack Navigation 3 для Compose Multiplatform
#compose #jetpack #navigation3 #cmp #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥47👍9❤3
Что нового:
👉 Основано на Jetpack Compose 1.9.3
👉 Артефакт compose.material3 теперь основывается на Jetpack Compose Material3 1.4.0, чтобы использовать предыдушую версию, то надо подключать зависимость традиционным образом
// было
implementation(compose.material3)
// заменить для совместимости
implementation("org.jetbrains.compose.material3:material3:1.8.2")
👉 Исправление багов на iOS
#compose #cmp #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3
#compose #kmp #cmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
⚙️ Compose Stability Analyzer включает в себя плагин компилятора, который в рантайме позволяет в логах видеть информацию по рекомпозиции функций. Работает с Kotlin Multiplatform
#compose #производительность #kmp #cmp
@TraceRecomposition
fun MyComposable(...) { ... }
#compose #производительность #kmp #cmp
👍23🔥5❤1
Тех стек:
👉 Многомодульная архитектура
👉 Metro DI
👉 Coil для показа картинок
👉 Kotlin Coroutines и SerlializationX
👉 Ktor
👉 Jetpack Room
#compose #cmp #kmp #android #ios #desktop #пример #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥6❤3
Google представила Navigation 3 — совершенно новую библиотеку для навигации в Compose, где управление стеком экранов сводится к простым операциям с списком.
Хорошая новость: JetBrains уже адаптировали её для Compose Multiplatform! В статье на реальном примере показывает, как:
👉 Добавить зависимости Navigation 3 в KMP-проект
👉 Определить маршруты через sealed-интерфейсы с @Serializable
👉 Работать с back stack как с обычным mutable list
👉 Создать адаптивные layouts для разных размеров экранов
Особенно полезно будет:
В статье — чистый код из commonMain с примерами навигации между экранами и реализацией bottom navigation.
#compose #cmp #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍7
#compose #cmp #kmp #androidjetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤4🔥4
Появилась реализация навигации под Web-браузер, совместимая с Jetpack Navigation 3 и интегрированная с нативной историей браузера. Автор — Костя Цховребов из JetBrains (KMP-команда).
Теперь Web-приложения на Compose Multiplatform могут работать с привычным поведением браузера: кнопки Back/Forward, корректное управление историей, восстановление состояния и предсказуемая работа нескольких экранов.
Поддерживаются две стратегии навигации:
👉 Chronological - Классическая браузерная модель: линейный переход по посещённым состояниям (Back/Forward).
👉 Hierarchical - Мобильная модель навигации, имитирующая структуру экранов и вложенную иерархию — аналогично Android-приложениям.
🧪 Обе стратегии можно сравнить в онлайн-демо
Пример использования Chronological-навигации
@Composable
fun App() {
val backStack = remember { mutableStateListOf<Any>(Root) }
ChronologicalBrowserNavigation(
backStack = backStack,
saveKey = { key ->
when (key) {
is Root -> buildBrowserHistoryFragment("root")
is Profile -> buildBrowserHistoryFragment(
"profile",
mapOf("id" to key.id.toString())
)
else -> null
}
},
restoreKey = { fragment ->
when (getBrowserHistoryFragmentName(fragment)) {
"root" -> Root
"profile" -> Profile(
getBrowserHistoryFragmentParameters(fragment)
.getValue("id")
?.toInt() ?: error("id is required")
)
else -> null
}
}
)
NavDisplay(backStack) { /* ... */ }
}
Navigation3 Browser кажется важным шагом для формирования единой модели навигации в Compose Multiplatform: Android → Desktop → Web.
Это упростит мультиплатформенную архитектуру и сделает перенос логики между платформами гораздо чище.
#Kotlin #Compose #KMP #CMP #WEB #AndroidJetpack #Jetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍11🔥3🤔3