An opinionated architecture/library for Jetbrains Compose Multiplatform development with an implementation of the VISCE architecture
OSKit Compose is primarily a tool for us here at Outside Source. That being said, feel free to use this library in your own code. We strive to adhere to semantic versioning.
Contributions are appreciated and welcome, but we are a small team and make no guarantees that your changes will be implemented.
https://outsidesource.github.io/OSKit-Compose-KMP/
- Common
- Animation
- TransitionAnimatedContent (AnimatedContent with flexible transitions)
- Common CubicBezier transitions
- Canvas
- Blur
- URL Image painter
- Bitmap Painter
- Painter to Bitmap converter
- Layouts
- Arrangement.spacedByWithPadding()
- FixedTableRow
- FlexRow
- PanAndScale
- WrappableRow
- Popups (able to be placed anywhere in composable tree)
- BottomSheet
- Drawer
- Modal
- Popover
- Popup
- OSKit Integration
- Router
- Compose implementation of OSKit Router
- Backpress handling
- Route transitions
- Interactor
- Compose implementation of OSKit Interactor
- Router
- Markdown
- Markdown renderer
- Customizable styles with sane defaults
- Load local or remote images and specify alignment and size
- Asynchronous image loading
- Modifier
- borderTop, borderBottom, borderStart, borderEnd
- innerShadow, outerShadow
- disablePointerInput, preventClickPropagationToParent
- Desktop external drag and drop support
- Resources
- Fonts
- Images
- Strings with localization
- System UI
- Application Lifecycle Observer
- Customizable Window Insets
- Customizable system bar colors
- Window info
- Misc
- rememberLastNonNullState()
- Animation
- Android
- Context helpers
- Desktop
- Persisted window state
- SizedWindow for windows with enforced minimum size
Currently supported platforms include:
- Android
- JVM (MacOS/Windows/Linux)
- iOS
implementation("com.outsidesource:oskit-compose:3.3.0")
https://github.com/outsidesource/OSKit-Example-App-KMP
- onKeyEvent to BottomSheet
- KMPBackHandler/BackHandler to KMPPopup
- Focusable parameter to Popover
- KMPDisableScreenIdleTimeoutEffect
- Fixed typo in KMPTimePicker. Previously
TimeMerdiem
wasTimeMeridian
- Support for Jetbrains Compose 1.6
- Support for Kotlin 1.9.23
- KMPResource - No longer works with compose 1.6
- KMPFont - No longer works with compose 1.6
- KMPImage - No longer works with compose 1.6
- KMPTimePicker
- KMPDatePicker
- KMPWheelPicker
rememberKMPWindowInfo()
createInteractor()
KMPAppLifecycleObserver
Context
helper functionsrememberLastNonNullState()
- Fallback locale for
KMPString
- Markdown
- Async image loading
- Loading Markdown from other sources
PopupShapeCaretPosition
- iOS window insets issues
- Markdown
onLinkClick
now accepts a second parameter