Skip to content

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.

Notifications You must be signed in to change notification settings

AhmedMourad0/showcase

Repository files navigation

Showcase

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.

Canvas

  • 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

Date Pickers

  • 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 Modifiers considerWidth, considerHeight, and showIf.

Single Date Picker

Days View Months View Years View

Days of Year Picker

Days View Months View Fallback

Days of Month Picker

Days View Fallback

Bungee Gum Bars

  • 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

Theme Selector

  • 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 Blue Theme

Dark Mode #1 Dark Mode #2 Light Mode #1 Light Mode #2

Brown Orange Theme

Dark Mode #1 Dark Mode #2 Light Mode #1 Light Mode #2

Permissions Requester

  • 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

Download

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:

About

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.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published