A collection of cool multiplatform components that are either hidden inside one of my projects or didn't manage to make it to one, packed into a Material You and Light/Dark mode supporting app.
Warning
Due to a current bug with Compose that is yet to be fixed, the app might spontaneously crash sometimes without direct user intervention.
- Showcases the Canvas component created with Compose Multiplatform that allows users to add, remove, and manipulate various shapes and images in the canvas space, with the ability to undo/redo their actions.
- Leverages the Compose Snapshot system to greatly simplify the code needed for the undo/redo functionality.
- Separates dragging from rotations and zooming for better user experience.
- Includes various interchangeable implementations of the focus manager used to determine which item has focus and when it will lose it.
- Channels rotation and zooming applied to the canvas itself to the last focused item, which facilitates manipulating tiny items.
- Allows bringing items to front by clicking on them.
- Allows clicking through large items to focus items hidden beneath them.
Canvas #1 | Canvas #2 |
- Showcases the following custom Compose Multiplatform components: Date Picker, Days of Month Picker, and Days of Year Picker.
- Uses a custom compose layout
ConsiderateBox
with custom Parent Data ModifiersconsiderWidth
,considerHeight
, andshowIf
.
Days View | Months View | Years View |
Days View | Months View | Fallback |
Days View | Fallback |
- Showcases a custom Compose Multiplatform range bar with elastic properties that makes it fun to use.
- Fully customizable for various levels of elasticity.
- Possesses the properties of both rubber and gum.
Bungee Gum #1 | Bungee Gum #2 |
- Showcases a multiplatform, extensible, and responsive compose theme selector.
- Provides the option for Material You theme on all devices that support it.
- Fully supports dark/light mode for all provided themes.
- App theme updates instantaneously upon selection, including system bar colors.
Dark Mode #1 | Dark Mode #2 | Light Mode #1 | Light Mode #2 |
Dark Mode #1 | Dark Mode #2 | Light Mode #1 | Light Mode #2 |
- Showcases a custom customizable Compose permissions requester.
- Supports requesting a single or multiple permissions at once.
- By default, once the requester enters composition, it checks the permission status:
- If the permission was never requested, the permissions is requested immediately.
- If the permission was granted, nothing happens.
- If the permission was denied once, the rationale is shown with an option to request the permission again.
- if the permission was denied permanently, a rationale is shown with the option to go to settings to grant it.
- Updated the state of each permission instantly when the user returns to the app from settings.
- Allows observing the state of each permission individually.
- Can be enabled/disabled by a flag.
- Supports custom strategies for each permission, useful for special permissions such as SYSTEM_ALERT_WINDOW
- Supports showing the rationale before requesting the permission, useful for sensitive permissions such as READ_PHONE_STATE
- Supports displaying custom rationale, can be a dialog, a sheet, or even embedded into other composables.
- Supports permission-walling content, where the provided content will not be shown unless the permission is granted.
- Provides an imperative callback that is invoked when all permissions are granted.
Permissions Not Granted | Permissions Granted |
Due to the nature of the app, it cannot be deployed to the app/play store, you can either pull the project locally and build it yourself (release build variant) or use the download link below:
- Download for Android
- Download for iOS (coming soon)
- Download for Desktop (coming soon)