├── .gitignore ├── LICENSE ├── README.md ├── build.gradle ├── crab ├── README.md ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── flamingo │ │ └── crab │ │ ├── DsAnnModel.kt │ │ ├── Errors.kt │ │ ├── MetadataExtractor.kt │ │ ├── Options.kt │ │ ├── RegistryGenerator.kt │ │ ├── SamplesFinder.kt │ │ ├── codegen │ │ ├── AnnModelSourceGenerator.kt │ │ └── RegistrySourceGenerator.kt │ │ └── utils.kt │ └── resources │ └── META-INF │ └── services │ └── com.google.devtools.ksp.processing.SymbolProcessorProvider ├── flamingo-component-demo-api ├── build.gradle ├── lint-baseline.xml ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── flamingo │ │ └── demoapi │ │ ├── DemoPreference.kt │ │ ├── DemoTypes.kt │ │ ├── LongSummaryCategoryPreference.kt │ │ ├── LongSummaryPreference.kt │ │ ├── Preferences.kt │ │ ├── String.kt │ │ └── WhiteModeDemo.kt │ └── res │ ├── drawable │ ├── example_doctor.webp │ ├── example_dog.webp │ ├── example_human.webp │ ├── example_plant.webp │ └── preview_border_rounded.xml │ └── layout │ └── demo_preference.xml ├── flamingo-lint ├── .gitignore ├── build.gradle └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── flamingo │ │ │ └── lint │ │ │ ├── AlphaDisabledDeclarationDetector.kt │ │ │ ├── CardElevationInXmlDetector.kt │ │ │ ├── FlamingoIssueRegistry.kt │ │ │ ├── TestTagDetector.kt │ │ │ ├── TextAppearanceDetector.kt │ │ │ └── WrongComponentAlternativeDetector.kt │ └── resources │ │ └── META-INF │ │ └── services │ │ └── com.android.tools.lint.client.api.IssueRegistry │ └── test │ └── java │ └── com │ └── flamingo │ └── WrongComponentAlternativeDetectorTest.kt ├── flamingo-playground-app ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ └── AndroidManifest.xml ├── flamingo-playground ├── .gitignore ├── README.md ├── aboutLibrariesConfig │ ├── libraries │ │ ├── lib_feather_icons.json │ │ ├── lib_image_dog.json │ │ ├── lib_image_human.json │ │ ├── lib_image_plant.json │ │ ├── lib_ksp.json │ │ └── lib_lint.json │ └── licenses │ │ └── lic_unsplash.json ├── build.gradle ├── lint-baseline.xml ├── proguard-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── flamingo │ │ │ └── playground │ │ │ ├── AccessibilityAndUiTestingLabFragment.kt │ │ │ ├── ComposeSandboxFragment.kt │ │ │ ├── ComposeShadowLabFragment.kt │ │ │ ├── DesignDemosFragment.kt │ │ │ ├── Ext.kt │ │ │ ├── FlamingoPlaygroundActivity.kt │ │ │ ├── FontsDemoFragment.kt │ │ │ ├── IconsDemoFragment.kt │ │ │ ├── IllustrationsDemoFragment.kt │ │ │ ├── LogosDemoFragment.kt │ │ │ ├── PaletteColorsDemoFragment.kt │ │ │ ├── StagingFragmentContainer.kt │ │ │ ├── ThemeColorsDemoFragment.kt │ │ │ ├── components │ │ │ ├── AlertMessageComposeStatesPlayroom.kt │ │ │ ├── AlertMessageStatesPlayroom.kt │ │ │ ├── AlertMessageTypicalUsage.kt │ │ │ ├── AvatarStatesPlayroom.kt │ │ │ ├── AvatarTypicalUsage.kt │ │ │ ├── ButtonStatesPlayroom.kt │ │ │ ├── ButtonTypicalUsage.kt │ │ │ ├── CircularLoaderStatesPlayroom.kt │ │ │ ├── DividerStatesPlayroom.kt │ │ │ ├── EmptyStateStatesPlayroom.kt │ │ │ ├── EmptyStateTypicalUsage.kt │ │ │ ├── IconButtonStatesPlayroom.kt │ │ │ ├── IndicatorStatesPlayroom.kt │ │ │ ├── IndicatorTypicalUsage.kt │ │ │ ├── ListItemSkeletonStatesPlayroom.kt │ │ │ ├── RatingStatesPlayroom.kt │ │ │ ├── SearchStatesPlayroom.kt │ │ │ ├── SwitchStatesPlayroom.kt │ │ │ ├── alertmessage │ │ │ │ └── Theater.kt │ │ │ ├── attachment │ │ │ │ └── LazyColumnTypicalUsage.kt │ │ │ ├── avatar │ │ │ │ ├── AvatarComposeStatesPlayroom.kt │ │ │ │ └── Theater.kt │ │ │ ├── badge │ │ │ │ ├── BadgeStatesPlayroom.kt │ │ │ │ └── Theater.kt │ │ │ ├── bookmarktogglebutton │ │ │ │ └── TypicalUsage.kt │ │ │ ├── button │ │ │ │ ├── ButtonComposeStatesPlayroom.kt │ │ │ │ ├── ButtonInRowTypicalUsage.kt │ │ │ │ ├── Theater.kt │ │ │ │ └── samples.kt │ │ │ ├── card │ │ │ │ ├── CardStatesPlayroom.kt │ │ │ │ └── ClickableCardTypicalUsage.kt │ │ │ ├── checkbox │ │ │ │ ├── CheckboxStatesPlayroom.kt │ │ │ │ └── Theater.kt │ │ │ ├── checkboxgroup │ │ │ │ ├── CheckBoxGroupStatesPlayroom.kt │ │ │ │ └── Theater.kt │ │ │ ├── chip │ │ │ │ ├── ChipStatesPlayroom.kt │ │ │ │ └── Theater.kt │ │ │ ├── chipgroup │ │ │ │ ├── ChipGroupStatesPlayroom.kt │ │ │ │ └── Theater.kt │ │ │ ├── counter │ │ │ │ └── CounterStatesPlayroom.kt │ │ │ ├── drawer │ │ │ │ └── DrawerStatesPlayroom.kt │ │ │ ├── dropdown │ │ │ │ ├── DropdownStatesPlayroom.kt │ │ │ │ ├── DropdownTypicalUsage.kt │ │ │ │ ├── Theater.kt │ │ │ │ └── samples.kt │ │ │ ├── fab │ │ │ │ └── FloatingActionButtonStatesPlayroom.kt │ │ │ ├── iconbutton │ │ │ │ ├── IconButtonComposeStatesPlayroom.kt │ │ │ │ └── Theater.kt │ │ │ ├── icontogglebutton │ │ │ │ └── TypicalUsage.kt │ │ │ ├── indicator │ │ │ │ └── StatesPlayroom.kt │ │ │ ├── link │ │ │ │ ├── LinkStatesPlayroom.kt │ │ │ │ └── Theater.kt │ │ │ ├── listitem │ │ │ │ ├── AnnotatedListItemSample.kt │ │ │ │ ├── AnnotatedTypicalUsage.kt │ │ │ │ ├── ListItemStatesPlayroom.kt │ │ │ │ └── ListLoadingTypicalUsage.kt │ │ │ ├── menulist │ │ │ │ └── MenuListStatesPlayroom.kt │ │ │ ├── modal │ │ │ │ └── ModalStatesPlayroom.kt │ │ │ ├── radiobutton │ │ │ │ ├── InGroup.kt │ │ │ │ ├── InGroupInsideListItem.kt │ │ │ │ └── RadioButtonStatesPlayroom.kt │ │ │ ├── radiogroup │ │ │ │ ├── RadioGroupStatesPlayroom.kt │ │ │ │ └── Theater.kt │ │ │ ├── ratingtogglebutton │ │ │ │ ├── StatesPlayroom.kt │ │ │ │ └── TypicalUsage.kt │ │ │ ├── roundedrectwithcutout │ │ │ │ ├── StatesPlayroom.kt │ │ │ │ ├── Theater.kt │ │ │ │ └── samples.kt │ │ │ ├── skeleton │ │ │ │ ├── Circle.kt │ │ │ │ ├── Rectangle.kt │ │ │ │ ├── RectangleNoRoundCorners.kt │ │ │ │ ├── SkeletonTypicalUsage.kt │ │ │ │ ├── Square.kt │ │ │ │ └── Text.kt │ │ │ ├── snackbar │ │ │ │ ├── AllStates.kt │ │ │ │ └── TypicalUsage.kt │ │ │ ├── socialgroup │ │ │ │ ├── ButtonStatesPlayroom.kt │ │ │ │ └── LikeDislikeStatesPlayroom.kt │ │ │ ├── switchgroup │ │ │ │ ├── SwitchGroupStatesPlayroom.kt │ │ │ │ └── Theater.kt │ │ │ ├── tabrow │ │ │ │ ├── ComplexLinedTabs.kt │ │ │ │ ├── ComplexTabs.kt │ │ │ │ ├── LinedTabs.kt │ │ │ │ ├── ManyTabs.kt │ │ │ │ ├── TabRowTypicalUsage.kt │ │ │ │ ├── TabsWithDropdown.kt │ │ │ │ ├── Theater.kt │ │ │ │ └── TwoSmallTabs.kt │ │ │ ├── textfield │ │ │ │ ├── TextFieldStatesPlayroom.kt │ │ │ │ └── Theater.kt │ │ │ ├── topappbar │ │ │ │ ├── LazyColumnScrollingShadowSample.kt │ │ │ │ ├── ScrollingShadowSample.kt │ │ │ │ ├── SearchFocusSample.kt │ │ │ │ ├── Theater.kt │ │ │ │ ├── TopAppBarLazyListScrollDemo.kt │ │ │ │ ├── TopAppBarScrollDemo.kt │ │ │ │ ├── TopAppBarSearchFocusDemo.kt │ │ │ │ └── TopAppBarStatesPlayroom.kt │ │ │ ├── widgetcard │ │ │ │ └── Demo.kt │ │ │ └── widgetcardgroup │ │ │ │ ├── Demo.kt │ │ │ │ ├── Theater.kt │ │ │ │ ├── sample1.kt │ │ │ │ └── sample2.kt │ │ │ ├── conf │ │ │ ├── Conf.kt │ │ │ └── TechPause.kt │ │ │ ├── fontconfig │ │ │ └── compose │ │ │ │ ├── ComposeFontConfiguratorFragment.kt │ │ │ │ ├── Config.kt │ │ │ │ ├── Dimension.kt │ │ │ │ └── ParamsEditor.kt │ │ │ ├── gallery │ │ │ ├── ComponentBundle.kt │ │ │ ├── ComponentDetailsFragment.kt │ │ │ ├── ComponentsRepository.kt │ │ │ ├── DemosAdapter.kt │ │ │ ├── GalleryFragment.kt │ │ │ ├── GalleryViewModel.kt │ │ │ └── ViewComponentDetailsFragment.kt │ │ │ ├── license │ │ │ ├── LicenseDialog.kt │ │ │ ├── LicensesFragment.kt │ │ │ └── Report.kt │ │ │ ├── overlay │ │ │ ├── DebugOverlayConfigImpl.kt │ │ │ ├── DebugOverlayControl.kt │ │ │ ├── DebugOverlayImpl.kt │ │ │ └── DebugOverlayTileService.kt │ │ │ ├── preview │ │ │ ├── AlertMessagePreview.kt │ │ │ ├── AttachmentPreview.kt │ │ │ ├── AvatarPreview.kt │ │ │ ├── BadgePreview.kt │ │ │ ├── BookmarkToggleButtonPreview.kt │ │ │ ├── ButtonPreview.kt │ │ │ ├── CardPreview.kt │ │ │ ├── CheckBoxGroupPreview.kt │ │ │ ├── CheckboxPreview.kt │ │ │ ├── ChipGroupPreview.kt │ │ │ ├── ChipPreview.kt │ │ │ ├── CircularLoaderPreview.kt │ │ │ ├── CounterPreview.kt │ │ │ ├── DislikePreview.kt │ │ │ ├── DividerPreview.kt │ │ │ ├── DrawerPreview.kt │ │ │ ├── DropdownPreview.kt │ │ │ ├── EmptyStatePreview.kt │ │ │ ├── FloatingActionButtonPreview.kt │ │ │ ├── IconButtonPreview.kt │ │ │ ├── IconPreview.kt │ │ │ ├── IconToggleButtonPreview.kt │ │ │ ├── IndicatorPreview.kt │ │ │ ├── LikePreview.kt │ │ │ ├── LinkCardPreview.kt │ │ │ ├── LinkPreview.kt │ │ │ ├── ListItemPreview.kt │ │ │ ├── ListItemSkeletonPreview.kt │ │ │ ├── MenuListPreview.kt │ │ │ ├── MessagePreview.kt │ │ │ ├── ModalPreview.kt │ │ │ ├── Preview.kt │ │ │ ├── RadioButtonPreview.kt │ │ │ ├── RadioGroupPreview.kt │ │ │ ├── RatingPreview.kt │ │ │ ├── RatingToggleButtonPreview.kt │ │ │ ├── RoundedRectWithCutoutPreview.kt │ │ │ ├── SearchPreview.kt │ │ │ ├── SharePreview.kt │ │ │ ├── SkeletonPreview.kt │ │ │ ├── SnackbarPreview.kt │ │ │ ├── StatusCardPreview.kt │ │ │ ├── SwitchGroupPreview.kt │ │ │ ├── SwitchPreview.kt │ │ │ ├── TabRowPreview.kt │ │ │ ├── TextFieldPreview.kt │ │ │ ├── TextPreview.kt │ │ │ ├── TopAppBarPreview.kt │ │ │ ├── WidgetCardGroupPreview.kt │ │ │ └── WidgetCardPreview.kt │ │ │ ├── theater │ │ │ ├── BackstageFragment.kt │ │ │ ├── Director.kt │ │ │ ├── EndScreenActor.kt │ │ │ ├── Ext.kt │ │ │ ├── FlamingoLogo.kt │ │ │ ├── FlamingoStage.kt │ │ │ └── TheaterFragment.kt │ │ │ ├── utils │ │ │ ├── Boast.kt │ │ │ ├── ExhaustiveWhen.kt │ │ │ └── FragmentViewBindingDelegate.kt │ │ │ └── view │ │ │ ├── CardElevationDemoFragment.kt │ │ │ ├── FontsDemoFragment.kt │ │ │ ├── GradientsDemoFragment.kt │ │ │ └── theme │ │ │ ├── AttrDoc.kt │ │ │ ├── AttrDocsAdapter.kt │ │ │ ├── AttrType.kt │ │ │ └── ThemeDemoFragment.kt │ └── res │ │ ├── drawable │ │ ├── flamingo_logo.xml │ │ ├── flamingo_logo_gray.xml │ │ ├── flamingo_logo_gray_no_circle.xml │ │ ├── flamingo_logo_no_circle.xml │ │ ├── ic_accessible_24.xml │ │ ├── ic_alpha_i_circle.xml │ │ ├── ic_animation_24.xml │ │ ├── ic_apps_box.xml │ │ ├── ic_baseline_colorize_24.xml │ │ ├── ic_baseline_filter_alt_24.xml │ │ ├── ic_baseline_format_size_24.xml │ │ ├── ic_baseline_gradient_24.xml │ │ ├── ic_baseline_image_24.xml │ │ ├── ic_baseline_lab_flask_alt_24.xml │ │ ├── ic_baseline_palette_24.xml │ │ ├── ic_box_shadow.xml │ │ ├── ic_format_font.xml │ │ ├── ic_function.xml │ │ ├── ic_gesture_tap_button.xml │ │ ├── ic_launcher_background.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── ic_pencil_ruler.xml │ │ ├── text_view_border.xml │ │ └── typical_usage_empty_state_divider.xml │ │ ├── layout │ │ ├── card.xml │ │ ├── compose_demo_fragment.xml │ │ ├── demo_list_item.xml │ │ ├── flamingo_playground_activity.xml │ │ ├── font_divider.xml │ │ ├── fonts_demo_fragment.xml │ │ ├── fragment_dsc_details.xml │ │ ├── icon_demo_list_item.xml │ │ ├── item_gradient.xml │ │ ├── item_theme_attr_doc.xml │ │ ├── theme_demo_fragment.xml │ │ ├── typical_usage_alert_message.xml │ │ ├── typical_usage_avatar.xml │ │ ├── typical_usage_button.xml │ │ ├── typical_usage_empty_state.xml │ │ └── typical_usage_indicator.xml │ │ ├── mipmap-anydpi-v26 │ │ └── ic_launcher.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-ru │ │ └── strings.xml │ │ ├── values │ │ └── strings.xml │ │ └── xml │ │ ├── card_elevation_demo.xml │ │ ├── design_demos_preferences.xml │ │ ├── states_playroom_alert_message.xml │ │ ├── states_playroom_alert_message_compose.xml │ │ ├── states_playroom_avatar.xml │ │ ├── states_playroom_avatar_compose.xml │ │ ├── states_playroom_badge.xml │ │ ├── states_playroom_button.xml │ │ ├── states_playroom_button_compose.xml │ │ ├── states_playroom_card.xml │ │ ├── states_playroom_checkbox.xml │ │ ├── states_playroom_checkbox_group.xml │ │ ├── states_playroom_chip.xml │ │ ├── states_playroom_chip_group.xml │ │ ├── states_playroom_circular_progress.xml │ │ ├── states_playroom_counter.xml │ │ ├── states_playroom_divider.xml │ │ ├── states_playroom_drawer.xml │ │ ├── states_playroom_dropdown.xml │ │ ├── states_playroom_empty_state.xml │ │ ├── states_playroom_floating_action_button.xml │ │ ├── states_playroom_icon_button.xml │ │ ├── states_playroom_icon_button_compose.xml │ │ ├── states_playroom_indicator.xml │ │ ├── states_playroom_indicator_compose.xml │ │ ├── states_playroom_likedislike.xml │ │ ├── states_playroom_link.xml │ │ ├── states_playroom_listitem.xml │ │ ├── states_playroom_listitem_skeleton.xml │ │ ├── states_playroom_menulist.xml │ │ ├── states_playroom_modal.xml │ │ ├── states_playroom_radio_group.xml │ │ ├── states_playroom_rating.xml │ │ ├── states_playroom_rating_toggle_button.xml │ │ ├── states_playroom_search.xml │ │ ├── states_playroom_socialbutton.xml │ │ ├── states_playroom_switch_group.xml │ │ ├── states_playroom_text_field.xml │ │ └── states_playroom_top_app_bar.xml │ └── test │ └── java │ └── ru │ └── sberbank │ └── flamingo │ └── playground │ ├── FlamingoComponentTest.kt │ └── view │ ├── IconsDemoFragmentTest.kt │ └── theme │ └── ThemeDemoFragmentTest.kt ├── flamingo-roboto-font ├── README.md ├── build.gradle ├── lint-baseline.xml ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── flamingo │ │ └── roboto │ │ ├── RobotoTypography.kt │ │ └── TextStyle.kt │ └── res │ ├── font │ └── roboto_bold.ttf │ └── values │ └── text_appearance.xml ├── flamingo ├── build.gradle ├── lint-baseline.xml ├── proguard-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ ├── baseline-prof.txt │ ├── java │ │ └── com │ │ │ └── flamingo │ │ │ ├── EasterEggs.kt │ │ │ ├── Flamingo.kt │ │ │ ├── InternalComponents.kt │ │ │ ├── Modifiers.kt │ │ │ ├── Shadow.kt │ │ │ ├── Team.kt │ │ │ ├── UiTestingTag.kt │ │ │ ├── annotations │ │ │ ├── DelicateFlamingoApi.kt │ │ │ ├── FlamingoComponent.kt │ │ │ ├── LocalFlamingoComponent.kt │ │ │ ├── TeamMarker.kt │ │ │ ├── UseNonFlamingoComponent.kt │ │ │ ├── UsedInsteadOf.kt │ │ │ └── view │ │ │ │ ├── DsIconSet.kt │ │ │ │ └── FlamingoComponent.kt │ │ │ ├── components │ │ │ ├── ActionGroup.kt │ │ │ ├── Avatar.kt │ │ │ ├── Badge.kt │ │ │ ├── BookmarkToggleButton.kt │ │ │ ├── Card.kt │ │ │ ├── Checkbox.kt │ │ │ ├── Chip.kt │ │ │ ├── CircularLoader.kt │ │ │ ├── CornerRadius.kt │ │ │ ├── Divider.kt │ │ │ ├── EmptyState.kt │ │ │ ├── FlamingoComponent.kt │ │ │ ├── GroupComponentsBase.kt │ │ │ ├── Icon.kt │ │ │ ├── IconButton.kt │ │ │ ├── IconToggleButton.kt │ │ │ ├── Indicator.kt │ │ │ ├── Link.kt │ │ │ ├── LinkCard.kt │ │ │ ├── Placeholder.kt │ │ │ ├── RadioButton.kt │ │ │ ├── RatingToggleButton.kt │ │ │ ├── RoundedRectWithCutoutShape.kt │ │ │ ├── Search.kt │ │ │ ├── Skeleton.kt │ │ │ ├── StatusCard.kt │ │ │ ├── Switch.kt │ │ │ ├── Text.kt │ │ │ ├── TextField.kt │ │ │ ├── alertmessage │ │ │ │ ├── AlertMessage.kt │ │ │ │ └── AlertMessageActionsLayout.kt │ │ │ ├── attachment │ │ │ │ ├── Attachment.kt │ │ │ │ ├── AttachmentModel.kt │ │ │ │ ├── Attachments.kt │ │ │ │ └── FilePickerButton.kt │ │ │ ├── button │ │ │ │ ├── Button.kt │ │ │ │ ├── ButtonColorCalculation.kt │ │ │ │ ├── ButtonLayout.kt │ │ │ │ ├── ButtonPaddings.kt │ │ │ │ └── ButtonWidthPolicy.kt │ │ │ ├── checkboxgroup │ │ │ │ └── CheckBoxGroup.kt │ │ │ ├── chipgroup │ │ │ │ ├── ChipGroup.kt │ │ │ │ └── ChipGroupContentLayout.kt │ │ │ ├── counter │ │ │ │ └── Counter.kt │ │ │ ├── drawer │ │ │ │ └── Drawer.kt │ │ │ ├── dropdown │ │ │ │ └── Dropdown.kt │ │ │ ├── fab │ │ │ │ └── FloatingActionButton.kt │ │ │ ├── listitem │ │ │ │ ├── ListItem.kt │ │ │ │ ├── ListItemLayout.kt │ │ │ │ ├── ListItemTextLayout.kt │ │ │ │ └── Skeleton.kt │ │ │ ├── menulist │ │ │ │ ├── MenuList.kt │ │ │ │ └── MenuListHeaderLayout.kt │ │ │ ├── modal │ │ │ │ ├── Modal.kt │ │ │ │ └── ModalHeaderLayout.kt │ │ │ ├── radiogroup │ │ │ │ └── RadioGroup.kt │ │ │ ├── rating │ │ │ │ ├── Modifiers.kt │ │ │ │ └── Rating.kt │ │ │ ├── snackbar │ │ │ │ └── Snackbar.kt │ │ │ ├── socialgroup │ │ │ │ ├── SocialGroup.kt │ │ │ │ ├── SocialGroupLayout.kt │ │ │ │ ├── button │ │ │ │ │ ├── Message.kt │ │ │ │ │ ├── Share.kt │ │ │ │ │ └── SocialButton.kt │ │ │ │ └── likedislike │ │ │ │ │ ├── Dislike.kt │ │ │ │ │ ├── Like.kt │ │ │ │ │ └── LikeDislike.kt │ │ │ ├── switchgroup │ │ │ │ └── SwitchGroup.kt │ │ │ ├── tabrow │ │ │ │ ├── Tab.kt │ │ │ │ ├── TabRow.kt │ │ │ │ └── TabRowBase.kt │ │ │ ├── topappbar │ │ │ │ ├── TopAppBar.kt │ │ │ │ └── model.kt │ │ │ └── widgetcard │ │ │ │ ├── WidgetCard.kt │ │ │ │ ├── WidgetCardGroup.kt │ │ │ │ └── WidgetCardSize.kt │ │ │ ├── featureflags │ │ │ ├── FeatureFlag.kt │ │ │ └── FeatureFlagProvider.kt │ │ │ ├── overlay │ │ │ ├── DebugOverlay.kt │ │ │ └── DebugOverlayConfigForComponent.kt │ │ │ ├── theme │ │ │ ├── FlamingoIcon.kt │ │ │ ├── FlamingoRippleTheme.kt │ │ │ ├── Theme.kt │ │ │ ├── colors │ │ │ │ ├── Colors.kt │ │ │ │ ├── FlamingoColorPalette.kt │ │ │ │ └── FlamingoColors.kt │ │ │ └── typography │ │ │ │ ├── FlamingoTypography.kt │ │ │ │ ├── FlamingoTypographyManager.kt │ │ │ │ ├── FlamingoTypographyProvider.kt │ │ │ │ └── RobotoTypographyProvider.kt │ │ │ ├── utils │ │ │ ├── ExhaustiveWhen.kt │ │ │ ├── Ext.kt │ │ │ ├── GenerateProgressDrawable.kt │ │ │ ├── Margin.kt │ │ │ ├── NightTheme.kt │ │ │ ├── ResolveColorAttr.kt │ │ │ ├── SdkVersionCodes.kt │ │ │ ├── TextView.kt │ │ │ ├── UIntExtensions.kt │ │ │ ├── UnitConversions.kt │ │ │ └── ViewVisibility.kt │ │ │ └── view │ │ │ ├── AvatarTarget.kt │ │ │ ├── Deprecation.kt │ │ │ ├── Icons.kt │ │ │ └── components │ │ │ ├── AlertMessage.kt │ │ │ ├── Avatar.kt │ │ │ ├── Button.kt │ │ │ ├── EmptyState.kt │ │ │ ├── FlamingoComponent.kt │ │ │ ├── IconButton.kt │ │ │ └── Indicator.kt │ └── res │ │ ├── animator │ │ ├── button_state_list_anim.xml │ │ └── button_state_list_anim_v21.xml │ │ ├── color-night │ │ ├── contained_button_default_color_bg_selector.xml │ │ ├── primary_text_color_selector.xml │ │ ├── secondary_text_color_selector.xml │ │ └── tertiary_text_color_selector.xml │ │ ├── color │ │ ├── contained_button_default_color_bg_selector.xml │ │ ├── contained_button_default_color_text_selector.xml │ │ ├── contained_button_error_color_bg_selector.xml │ │ ├── contained_button_error_color_text_selector.xml │ │ ├── contained_button_opaque_black_color_bg_selector.xml │ │ ├── contained_button_opaque_black_color_text_selector.xml │ │ ├── contained_button_opaque_primary_ripple_color.xml │ │ ├── contained_button_primary_color_bg_selector.xml │ │ ├── contained_button_primary_color_text_selector.xml │ │ ├── primary_text_color_selector.xml │ │ ├── secondary_text_color_selector.xml │ │ └── tertiary_text_color_selector.xml │ │ ├── drawable │ │ ├── ds_gradient_blue.xml │ │ ├── ds_gradient_green.xml │ │ ├── ds_gradient_orange.xml │ │ ├── ds_gradient_pink.xml │ │ ├── ds_gradient_purple.xml │ │ ├── ds_gradient_red.xml │ │ ├── ds_gradient_yellow.xml │ │ ├── ds_ic_activity.xml │ │ ├── ds_ic_agile.xml │ │ ├── ds_ic_airplay.xml │ │ ├── ds_ic_alert_circle.xml │ │ ├── ds_ic_alert_octagon.xml │ │ ├── ds_ic_alert_triangle.xml │ │ ├── ds_ic_alert_triangle_filled.xml │ │ ├── ds_ic_align_center.xml │ │ ├── ds_ic_align_justify.xml │ │ ├── ds_ic_align_left.xml │ │ ├── ds_ic_align_right.xml │ │ ├── ds_ic_anchor.xml │ │ ├── ds_ic_android.xml │ │ ├── ds_ic_aperture.xml │ │ ├── ds_ic_archive.xml │ │ ├── ds_ic_arrow_down.xml │ │ ├── ds_ic_arrow_down_circle.xml │ │ ├── ds_ic_arrow_down_left.xml │ │ ├── ds_ic_arrow_down_right.xml │ │ ├── ds_ic_arrow_drop_down.xml │ │ ├── ds_ic_arrow_left.xml │ │ ├── ds_ic_arrow_left_circle.xml │ │ ├── ds_ic_arrow_right.xml │ │ ├── ds_ic_arrow_right_circle.xml │ │ ├── ds_ic_arrow_up.xml │ │ ├── ds_ic_arrow_up_circle.xml │ │ ├── ds_ic_arrow_up_left.xml │ │ ├── ds_ic_arrow_up_right.xml │ │ ├── ds_ic_at_sign.xml │ │ ├── ds_ic_atm_card.xml │ │ ├── ds_ic_award.xml │ │ ├── ds_ic_baby.xml │ │ ├── ds_ic_bar_chart.xml │ │ ├── ds_ic_bar_chart_2.xml │ │ ├── ds_ic_battery.xml │ │ ├── ds_ic_battery_charging.xml │ │ ├── ds_ic_bell.xml │ │ ├── ds_ic_bell_off.xml │ │ ├── ds_ic_bluetooth.xml │ │ ├── ds_ic_bold.xml │ │ ├── ds_ic_book.xml │ │ ├── ds_ic_book_open.xml │ │ ├── ds_ic_bookmark.xml │ │ ├── ds_ic_bookmark_filled.xml │ │ ├── ds_ic_box.xml │ │ ├── ds_ic_briefcase.xml │ │ ├── ds_ic_briefcase_filled_v2.xml │ │ ├── ds_ic_briefcase_v2.xml │ │ ├── ds_ic_calendar.xml │ │ ├── ds_ic_camera.xml │ │ ├── ds_ic_camera_filled.xml │ │ ├── ds_ic_camera_off.xml │ │ ├── ds_ic_cancel_in_circle_filled.xml │ │ ├── ds_ic_cast.xml │ │ ├── ds_ic_chart_square.xml │ │ ├── ds_ic_check.xml │ │ ├── ds_ic_check_circle.xml │ │ ├── ds_ic_check_circle_v3.xml │ │ ├── ds_ic_check_square.xml │ │ ├── ds_ic_check_square_minus_v2.xml │ │ ├── ds_ic_check_square_minus_v3.xml │ │ ├── ds_ic_check_square_v3.xml │ │ ├── ds_ic_chevron_down.xml │ │ ├── ds_ic_chevron_left.xml │ │ ├── ds_ic_chevron_right.xml │ │ ├── ds_ic_chevron_up.xml │ │ ├── ds_ic_chevrons_down.xml │ │ ├── ds_ic_chevrons_left.xml │ │ ├── ds_ic_chevrons_right.xml │ │ ├── ds_ic_chevrons_up.xml │ │ ├── ds_ic_chrome.xml │ │ ├── ds_ic_circle.xml │ │ ├── ds_ic_circle_v2.xml │ │ ├── ds_ic_clipboard.xml │ │ ├── ds_ic_clock.xml │ │ ├── ds_ic_cloud.xml │ │ ├── ds_ic_cloud_drizzle.xml │ │ ├── ds_ic_cloud_lightning.xml │ │ ├── ds_ic_cloud_off.xml │ │ ├── ds_ic_cloud_rain.xml │ │ ├── ds_ic_cloud_snow.xml │ │ ├── ds_ic_code.xml │ │ ├── ds_ic_codepen.xml │ │ ├── ds_ic_codesandbox.xml │ │ ├── ds_ic_coffee.xml │ │ ├── ds_ic_columns.xml │ │ ├── ds_ic_command.xml │ │ ├── ds_ic_compass.xml │ │ ├── ds_ic_copy.xml │ │ ├── ds_ic_corner_down_left.xml │ │ ├── ds_ic_corner_down_right.xml │ │ ├── ds_ic_corner_left_down.xml │ │ ├── ds_ic_corner_left_up.xml │ │ ├── ds_ic_corner_right_down.xml │ │ ├── ds_ic_corner_right_up.xml │ │ ├── ds_ic_corner_up_left.xml │ │ ├── ds_ic_corner_up_right.xml │ │ ├── ds_ic_cpu.xml │ │ ├── ds_ic_credit_card.xml │ │ ├── ds_ic_crop.xml │ │ ├── ds_ic_crosshair.xml │ │ ├── ds_ic_database.xml │ │ ├── ds_ic_delete.xml │ │ ├── ds_ic_disc.xml │ │ ├── ds_ic_divide.xml │ │ ├── ds_ic_divide_circle.xml │ │ ├── ds_ic_divide_square.xml │ │ ├── ds_ic_dollar_sign.xml │ │ ├── ds_ic_done_in_circle_filled.xml │ │ ├── ds_ic_download.xml │ │ ├── ds_ic_download_cloud.xml │ │ ├── ds_ic_draggable.xml │ │ ├── ds_ic_dribbble.xml │ │ ├── ds_ic_droplet.xml │ │ ├── ds_ic_edit.xml │ │ ├── ds_ic_edit_2.xml │ │ ├── ds_ic_edit_3.xml │ │ ├── ds_ic_external_link.xml │ │ ├── ds_ic_eye.xml │ │ ├── ds_ic_eye_off.xml │ │ ├── ds_ic_face_id.xml │ │ ├── ds_ic_facebook.xml │ │ ├── ds_ic_fast_forward.xml │ │ ├── ds_ic_feather.xml │ │ ├── ds_ic_feedback.xml │ │ ├── ds_ic_feedback_service.xml │ │ ├── ds_ic_figma.xml │ │ ├── ds_ic_file.xml │ │ ├── ds_ic_file_minus.xml │ │ ├── ds_ic_file_plus.xml │ │ ├── ds_ic_file_text.xml │ │ ├── ds_ic_film.xml │ │ ├── ds_ic_filter.xml │ │ ├── ds_ic_flag.xml │ │ ├── ds_ic_folder.xml │ │ ├── ds_ic_folder_filled.xml │ │ ├── ds_ic_folder_minus.xml │ │ ├── ds_ic_folder_plus.xml │ │ ├── ds_ic_framer.xml │ │ ├── ds_ic_frown.xml │ │ ├── ds_ic_gift.xml │ │ ├── ds_ic_git_branch.xml │ │ ├── ds_ic_git_commit.xml │ │ ├── ds_ic_git_merge.xml │ │ ├── ds_ic_git_pull_request.xml │ │ ├── ds_ic_github.xml │ │ ├── ds_ic_gitlab.xml │ │ ├── ds_ic_globe.xml │ │ ├── ds_ic_globe_search.xml │ │ ├── ds_ic_grid.xml │ │ ├── ds_ic_grid_filled_v2.xml │ │ ├── ds_ic_grid_v2.xml │ │ ├── ds_ic_h2.xml │ │ ├── ds_ic_h3.xml │ │ ├── ds_ic_hard_drive.xml │ │ ├── ds_ic_hash.xml │ │ ├── ds_ic_headphones.xml │ │ ├── ds_ic_heart.xml │ │ ├── ds_ic_heart_filled.xml │ │ ├── ds_ic_help_circle.xml │ │ ├── ds_ic_help_circle_filled.xml │ │ ├── ds_ic_hexagon.xml │ │ ├── ds_ic_home.xml │ │ ├── ds_ic_home_filled.xml │ │ ├── ds_ic_home_filled_v2.xml │ │ ├── ds_ic_home_v2.xml │ │ ├── ds_ic_idea.xml │ │ ├── ds_ic_image.xml │ │ ├── ds_ic_inbox.xml │ │ ├── ds_ic_inbox_filled.xml │ │ ├── ds_ic_incognito.xml │ │ ├── ds_ic_info.xml │ │ ├── ds_ic_instagram.xml │ │ ├── ds_ic_ios.xml │ │ ├── ds_ic_italic.xml │ │ ├── ds_ic_key.xml │ │ ├── ds_ic_layers.xml │ │ ├── ds_ic_layout.xml │ │ ├── ds_ic_life_buoy.xml │ │ ├── ds_ic_link.xml │ │ ├── ds_ic_link_2.xml │ │ ├── ds_ic_linkedin.xml │ │ ├── ds_ic_list.xml │ │ ├── ds_ic_list_number.xml │ │ ├── ds_ic_loader.xml │ │ ├── ds_ic_lock.xml │ │ ├── ds_ic_lock_filled.xml │ │ ├── ds_ic_log_in.xml │ │ ├── ds_ic_log_out.xml │ │ ├── ds_ic_mail.xml │ │ ├── ds_ic_map.xml │ │ ├── ds_ic_map_pin.xml │ │ ├── ds_ic_maximize.xml │ │ ├── ds_ic_maximize_2.xml │ │ ├── ds_ic_meh.xml │ │ ├── ds_ic_menu.xml │ │ ├── ds_ic_message_circle.xml │ │ ├── ds_ic_message_square.xml │ │ ├── ds_ic_message_square_filled.xml │ │ ├── ds_ic_mic.xml │ │ ├── ds_ic_mic_off.xml │ │ ├── ds_ic_minimize.xml │ │ ├── ds_ic_minimize_2.xml │ │ ├── ds_ic_minus.xml │ │ ├── ds_ic_minus_circle.xml │ │ ├── ds_ic_minus_square.xml │ │ ├── ds_ic_monitor.xml │ │ ├── ds_ic_moon.xml │ │ ├── ds_ic_more_horizontal.xml │ │ ├── ds_ic_more_vertical.xml │ │ ├── ds_ic_mouse_pointer.xml │ │ ├── ds_ic_move.xml │ │ ├── ds_ic_music.xml │ │ ├── ds_ic_navigation.xml │ │ ├── ds_ic_navigation_2.xml │ │ ├── ds_ic_octagon.xml │ │ ├── ds_ic_orgchart.xml │ │ ├── ds_ic_package.xml │ │ ├── ds_ic_paperclip.xml │ │ ├── ds_ic_pause.xml │ │ ├── ds_ic_pause_circle.xml │ │ ├── ds_ic_pen_tool.xml │ │ ├── ds_ic_percent.xml │ │ ├── ds_ic_phone.xml │ │ ├── ds_ic_phone_call.xml │ │ ├── ds_ic_phone_forwarded.xml │ │ ├── ds_ic_phone_incoming.xml │ │ ├── ds_ic_phone_missed.xml │ │ ├── ds_ic_phone_off.xml │ │ ├── ds_ic_phone_outgoing.xml │ │ ├── ds_ic_pie_chart.xml │ │ ├── ds_ic_pin_filled.xml │ │ ├── ds_ic_pin_outline.xml │ │ ├── ds_ic_play.xml │ │ ├── ds_ic_play_circle.xml │ │ ├── ds_ic_plus.xml │ │ ├── ds_ic_plus_circle.xml │ │ ├── ds_ic_plus_square.xml │ │ ├── ds_ic_pocket.xml │ │ ├── ds_ic_power.xml │ │ ├── ds_ic_printer.xml │ │ ├── ds_ic_qr.xml │ │ ├── ds_ic_radio.xml │ │ ├── ds_ic_refresh_ccw.xml │ │ ├── ds_ic_refresh_cw.xml │ │ ├── ds_ic_repeat.xml │ │ ├── ds_ic_replace.xml │ │ ├── ds_ic_reply.xml │ │ ├── ds_ic_repost.xml │ │ ├── ds_ic_rewind.xml │ │ ├── ds_ic_rotate_ccw.xml │ │ ├── ds_ic_rotate_cw.xml │ │ ├── ds_ic_rss.xml │ │ ├── ds_ic_salute.xml │ │ ├── ds_ic_save.xml │ │ ├── ds_ic_sber.xml │ │ ├── ds_ic_sberchat.xml │ │ ├── ds_ic_scissors.xml │ │ ├── ds_ic_search.xml │ │ ├── ds_ic_send.xml │ │ ├── ds_ic_server.xml │ │ ├── ds_ic_settings.xml │ │ ├── ds_ic_share.xml │ │ ├── ds_ic_share_2.xml │ │ ├── ds_ic_shield.xml │ │ ├── ds_ic_shield_off.xml │ │ ├── ds_ic_shopping_bag.xml │ │ ├── ds_ic_shopping_cart.xml │ │ ├── ds_ic_shuffle.xml │ │ ├── ds_ic_sidebar.xml │ │ ├── ds_ic_sidebar_filled.xml │ │ ├── ds_ic_skip_back.xml │ │ ├── ds_ic_skip_forward.xml │ │ ├── ds_ic_slack.xml │ │ ├── ds_ic_slash.xml │ │ ├── ds_ic_sliders.xml │ │ ├── ds_ic_smartphone.xml │ │ ├── ds_ic_smile.xml │ │ ├── ds_ic_sort.xml │ │ ├── ds_ic_speaker.xml │ │ ├── ds_ic_square.xml │ │ ├── ds_ic_square_v2.xml │ │ ├── ds_ic_star.xml │ │ ├── ds_ic_star_filled.xml │ │ ├── ds_ic_star_half_filled.xml │ │ ├── ds_ic_stop_circle.xml │ │ ├── ds_ic_sun.xml │ │ ├── ds_ic_sunrise.xml │ │ ├── ds_ic_sunset.xml │ │ ├── ds_ic_tablet.xml │ │ ├── ds_ic_tag.xml │ │ ├── ds_ic_target.xml │ │ ├── ds_ic_terminal.xml │ │ ├── ds_ic_thermometer.xml │ │ ├── ds_ic_thumbs_down.xml │ │ ├── ds_ic_thumbs_down_filled.xml │ │ ├── ds_ic_thumbs_up.xml │ │ ├── ds_ic_thumbs_up_filled.xml │ │ ├── ds_ic_toggle_left.xml │ │ ├── ds_ic_toggle_right.xml │ │ ├── ds_ic_tool.xml │ │ ├── ds_ic_touch_id.xml │ │ ├── ds_ic_trash.xml │ │ ├── ds_ic_trash_2.xml │ │ ├── ds_ic_trello.xml │ │ ├── ds_ic_trending_down.xml │ │ ├── ds_ic_trending_up.xml │ │ ├── ds_ic_triangle.xml │ │ ├── ds_ic_truck.xml │ │ ├── ds_ic_tv.xml │ │ ├── ds_ic_twitch.xml │ │ ├── ds_ic_twitter.xml │ │ ├── ds_ic_type.xml │ │ ├── ds_ic_umbrella.xml │ │ ├── ds_ic_underline.xml │ │ ├── ds_ic_unlock.xml │ │ ├── ds_ic_upload.xml │ │ ├── ds_ic_upload_cloud.xml │ │ ├── ds_ic_user.xml │ │ ├── ds_ic_user_admin.xml │ │ ├── ds_ic_user_check.xml │ │ ├── ds_ic_user_filled.xml │ │ ├── ds_ic_user_minus.xml │ │ ├── ds_ic_user_plus.xml │ │ ├── ds_ic_user_x.xml │ │ ├── ds_ic_users.xml │ │ ├── ds_ic_video.xml │ │ ├── ds_ic_video_horizontally.xml │ │ ├── ds_ic_video_off.xml │ │ ├── ds_ic_video_square.xml │ │ ├── ds_ic_video_stretch.xml │ │ ├── ds_ic_voicemail.xml │ │ ├── ds_ic_volume.xml │ │ ├── ds_ic_volume_1.xml │ │ ├── ds_ic_volume_2.xml │ │ ├── ds_ic_volume_off.xml │ │ ├── ds_ic_volume_x.xml │ │ ├── ds_ic_watch.xml │ │ ├── ds_ic_widget.xml │ │ ├── ds_ic_wifi.xml │ │ ├── ds_ic_wifi_off.xml │ │ ├── ds_ic_wind.xml │ │ ├── ds_ic_windows.xml │ │ ├── ds_ic_x.xml │ │ ├── ds_ic_x_circle.xml │ │ ├── ds_ic_x_octagon.xml │ │ ├── ds_ic_x_square.xml │ │ ├── ds_ic_youtube.xml │ │ ├── ds_ic_zap.xml │ │ ├── ds_ic_zap_filled_v2.xml │ │ ├── ds_ic_zap_off.xml │ │ ├── ds_ic_zap_v2.xml │ │ ├── ds_ic_zoom_in.xml │ │ ├── ds_ic_zoom_out.xml │ │ ├── ds_image_calendar.xml │ │ ├── ds_image_community.xml │ │ ├── ds_image_crash.xml │ │ ├── ds_image_empty.xml │ │ ├── ds_image_feed.xml │ │ ├── ds_image_lock.xml │ │ ├── ds_image_maintenance.xml │ │ ├── ds_image_no_network.xml │ │ ├── ds_image_not_installed.xml │ │ ├── ds_image_notification.xml │ │ ├── ds_image_people.xml │ │ ├── ds_image_search.xml │ │ ├── ds_image_shield.xml │ │ ├── ds_image_updates.xml │ │ ├── ds_image_web.xml │ │ ├── empty_state_divider.xml │ │ ├── fail.xml │ │ ├── ic_dropdown_collapse.xml │ │ ├── ic_dropdown_expand.xml │ │ ├── logo_addressbook.xml │ │ ├── logo_apps.xml │ │ ├── logo_friend.xml │ │ ├── logo_mail.xml │ │ ├── logo_media.xml │ │ ├── logo_otp.xml │ │ ├── logo_sber_hd.xml │ │ ├── logo_sber_hed.xml │ │ ├── logo_sber_heg.xml │ │ ├── logo_sber_hew.xml │ │ ├── logo_sber_hg.xml │ │ ├── logo_sber_hrd.xml │ │ ├── logo_sber_hrg.xml │ │ ├── logo_sber_hrw.xml │ │ ├── logo_sber_hw.xml │ │ ├── logo_sber_vrd.xml │ │ ├── logo_sber_vrg.xml │ │ ├── logo_sber_vrw.xml │ │ ├── logo_video.xml │ │ └── success.xml │ │ ├── layout │ │ ├── alert_message.xml │ │ ├── avatar_layout.xml │ │ └── button.xml │ │ ├── values-en │ │ └── strings.xml │ │ ├── values-night │ │ ├── dimens.xml │ │ └── themes.xml │ │ └── values │ │ ├── attr_alert_message.xml │ │ ├── attr_avatar.xml │ │ ├── attr_button.xml │ │ ├── attr_empty_state.xml │ │ ├── attr_icon_button.xml │ │ ├── attr_indicator.xml │ │ ├── attr_text_button.xml │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ └── themes.xml │ └── test │ └── java │ └── ru │ └── sberbank │ └── flamingo │ ├── IconsConsistencyTest.kt │ └── overlay │ └── LocalDebugOverlayTest.kt ├── gradle.properties ├── gradle ├── dependencies.gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── images ├── components-gallery-dark.png ├── components-gallery-light.png ├── header.jpg └── playground-screens.png ├── jitpack.yml ├── settings.gradle └── theater ├── README.md ├── build.gradle ├── docsImages └── hidden-stage.jpg ├── lint-baseline.xml ├── proguard-rules.pro └── src └── main ├── AndroidManifest.xml ├── java └── com │ └── theater │ ├── Actor.kt │ ├── Backstage.kt │ ├── Density.kt │ ├── Knobs.kt │ ├── Orchestra.kt │ ├── Plot.kt │ ├── PlotScope.kt │ ├── Rotatable.kt │ ├── Stage.kt │ ├── Theater.kt │ ├── TheaterPackage.kt │ └── TheaterPlay.kt └── res ├── values-ru └── strings.xml └── values └── strings.xml /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/ 5 | .DS_Store 6 | build/ 7 | /captures 8 | .externalNativeBuild 9 | .cxx 10 | local.properties 11 | keystore 12 | keystore.properties 13 | -------------------------------------------------------------------------------- /crab/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'kotlin' 2 | 3 | compileKotlin { 4 | kotlinOptions.freeCompilerArgs += ["-Xexplicit-api=strict"] 5 | } 6 | 7 | dependencies { 8 | implementation deps.kotlin.stdlib 9 | implementation "com.google.devtools.ksp:symbol-processing-api:${versions.ksp}" 10 | 11 | //testRuntimeOnly deps.junit5.engine 12 | } 13 | 14 | test { 15 | useJUnitPlatform() 16 | } -------------------------------------------------------------------------------- /crab/src/main/java/com/flamingo/crab/Options.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.crab 2 | 3 | @Suppress("UnnecessaryAbstractClass") 4 | internal abstract class Options(options: Map) { 5 | protected val prefix = "crab." 6 | 7 | val moduleName = 8 | options.getOrElse("${prefix}moduleName") { Errors.noModuleNameInOptions(prefix) } 9 | 10 | val rootProjectDir: String = options.getOrElse("${prefix}rootProjectDir") { 11 | Errors.noRootProjectDirInOptions(prefix) 12 | } 13 | 14 | val isDemoModule: Boolean = options.getOrElse("${prefix}demoModule") { "noo" } == "yaas" 15 | } 16 | -------------------------------------------------------------------------------- /crab/src/main/java/com/flamingo/crab/utils.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.crab 2 | 3 | import java.security.MessageDigest 4 | 5 | internal fun String.escapeForSourceCode(): String = replace(THREE_QUOTES, "'''") 6 | 7 | internal fun sha256(str: String): String { 8 | return MessageDigest.getInstance("SHA-256").digest(str.toByteArray()).toHex() 9 | } 10 | 11 | internal fun ByteArray.toHex() = joinToString(separator = "") { byte -> "%02x".format(byte) } 12 | 13 | internal const val THREE_QUOTES = "\"\"\"" 14 | -------------------------------------------------------------------------------- /crab/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider: -------------------------------------------------------------------------------- 1 | com.flamingo.crab.MetadataExtractorProvider 2 | com.flamingo.crab.RegistryGeneratorProvider 3 | -------------------------------------------------------------------------------- /flamingo-component-demo-api/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo-component-demo-api/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | 5 | # If your project uses WebView with JS, uncomment the following 6 | # and specify the fully qualified class name to the JavaScript interface 7 | # class: 8 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 9 | # public *; 10 | #} 11 | 12 | # Uncomment this to preserve the line number information for 13 | # debugging stack traces. 14 | #-keepattributes SourceFile,LineNumberTable 15 | 16 | # If you keep the line number information, uncomment this to 17 | # hide the original source file name. 18 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /flamingo-component-demo-api/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /flamingo-component-demo-api/src/main/java/com/flamingo/demoapi/LongSummaryPreference.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.demoapi 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import android.widget.TextView 6 | import androidx.preference.Preference 7 | import androidx.preference.PreferenceViewHolder 8 | 9 | /** 10 | * Preference that allows to set a very long [Preference.setSummary]. 11 | */ 12 | public class LongSummaryPreference( 13 | context: Context?, 14 | attrs: AttributeSet?, 15 | ) : Preference(context, attrs) { 16 | 17 | override fun onBindViewHolder(holder: PreferenceViewHolder) { 18 | super.onBindViewHolder(holder) 19 | holder.itemView.findViewById(android.R.id.summary).apply { 20 | isSingleLine = false 21 | maxLines = Int.MAX_VALUE 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /flamingo-component-demo-api/src/main/java/com/flamingo/demoapi/String.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.demoapi 2 | 3 | /** @return `"value"` or `"" (empty string)` */ 4 | public fun String.wrapWithBraces(): String = buildString { 5 | append("\"") 6 | append(this@wrapWithBraces) 7 | append("\"") 8 | if (this@wrapWithBraces.isEmpty()) append(" (empty string)") 9 | } 10 | 11 | public fun String.parceNull(): String? = if (this == "null") null else this 12 | -------------------------------------------------------------------------------- /flamingo-component-demo-api/src/main/res/drawable/example_doctor.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/flamingo-component-demo-api/src/main/res/drawable/example_doctor.webp -------------------------------------------------------------------------------- /flamingo-component-demo-api/src/main/res/drawable/example_dog.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/flamingo-component-demo-api/src/main/res/drawable/example_dog.webp -------------------------------------------------------------------------------- /flamingo-component-demo-api/src/main/res/drawable/example_human.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/flamingo-component-demo-api/src/main/res/drawable/example_human.webp -------------------------------------------------------------------------------- /flamingo-component-demo-api/src/main/res/drawable/example_plant.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/flamingo-component-demo-api/src/main/res/drawable/example_plant.webp -------------------------------------------------------------------------------- /flamingo-component-demo-api/src/main/res/drawable/preview_border_rounded.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /flamingo-component-demo-api/src/main/res/layout/demo_preference.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | 19 | -------------------------------------------------------------------------------- /flamingo-lint/.gitignore: -------------------------------------------------------------------------------- 1 | /src/main/resources/KspWrongComponentAlternatives.csv -------------------------------------------------------------------------------- /flamingo-lint/src/main/resources/META-INF/services/com.android.tools.lint.client.api.IssueRegistry: -------------------------------------------------------------------------------- 1 | com.flamingo.lint.FlamingoIssueRegistry -------------------------------------------------------------------------------- /flamingo-lint/src/test/java/com/flamingo/WrongComponentAlternativeDetectorTest.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo 2 | 3 | import com.flamingo.lint.WrongComponentAlternativeDetector 4 | import org.junit.Assert 5 | import org.junit.Test 6 | 7 | class WrongComponentAlternativeDetectorTest { 8 | @Test 9 | fun `Config is present and content is valid`() { 10 | val config = WrongComponentAlternativeDetector.loadConfigFromResources() 11 | Assert.assertTrue(config.first().first().contains("com.flamingo.components")) 12 | } 13 | } -------------------------------------------------------------------------------- /flamingo-playground-app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | 5 | # If your project uses WebView with JS, uncomment the following 6 | # and specify the fully qualified class name to the JavaScript interface 7 | # class: 8 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 9 | # public *; 10 | #} 11 | 12 | # Uncomment this to preserve the line number information for 13 | # debugging stack traces. 14 | #-keepattributes SourceFile,LineNumberTable 15 | 16 | # If you keep the line number information, uncomment this to 17 | # hide the original source file name. 18 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /flamingo-playground/.gitignore: -------------------------------------------------------------------------------- 1 | /src/main/assets/themes.xml 2 | /src/test/resources/themes.xml -------------------------------------------------------------------------------- /flamingo-playground/README.md: -------------------------------------------------------------------------------- 1 | # Flamingo Playground 2 | 3 | This is a module that contains code examples, typical usage examples of all Flamingo components. 4 | Flamingo Playground App is built from this module, using `flamingo-playground-app` module. 5 | 6 | Main screen is built using __androidx.preference__ framework. All content of the main screen is 7 | controlled by 2 files: 8 | 1. [design_demos_preferences.xml](/flamingo-playground/src/main/res/xml/design_demos_preferences.xml) 9 | 2. [DesignDemosFragment.kt](/flamingo-playground/src/main/java/com/flamingo/playground/DesignDemosFragment.kt) 10 | -------------------------------------------------------------------------------- /flamingo-playground/aboutLibrariesConfig/libraries/lib_feather_icons.json: -------------------------------------------------------------------------------- 1 | { 2 | "uniqueId": "feather-icons", 3 | "website": "https://feathericons.com", 4 | "description": "Feather is a collection of simply beautiful open source icons. Each icon is designed on a 24x24 grid with an emphasis on simplicity, consistency, and flexibility", 5 | "name": "Feather Icons", 6 | "licenses": [ 7 | "MIT" 8 | ] 9 | } -------------------------------------------------------------------------------- /flamingo-playground/aboutLibrariesConfig/libraries/lib_image_dog.json: -------------------------------------------------------------------------------- 1 | { 2 | "website": "https://unsplash.com/photos/urs_y9NwFcc", 3 | "description": "Photo from Unsplash", 4 | "name": "Photo of a Dog", 5 | "uniqueId": "dog-photo", 6 | "licenses": [ 7 | "unsplash" 8 | ] 9 | } -------------------------------------------------------------------------------- /flamingo-playground/aboutLibrariesConfig/libraries/lib_image_human.json: -------------------------------------------------------------------------------- 1 | { 2 | "website": "https://unsplash.com/photos/kJjr5f_iJi8", 3 | "description": "Photo from Unsplash", 4 | "name": "Photo of a Human", 5 | "uniqueId": "human-photo", 6 | "licenses": [ 7 | "unsplash" 8 | ] 9 | } -------------------------------------------------------------------------------- /flamingo-playground/aboutLibrariesConfig/libraries/lib_image_plant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uniqueId": "plant-photo", 3 | "website": "https://unsplash.com/photos/UwooAVFu6SI", 4 | "description": "Photo from Unsplash", 5 | "name": "Photo of a Plant", 6 | "licenses": [ 7 | "unsplash" 8 | ] 9 | } -------------------------------------------------------------------------------- /flamingo-playground/aboutLibrariesConfig/libraries/lib_ksp.json: -------------------------------------------------------------------------------- 1 | { 2 | "uniqueId": "com.google.devtools.ksp:symbol-processing-api", 3 | "website": "https://github.com/google/ksp", 4 | "description": "Kotlin Symbol Processing (KSP) is an API that you can use to develop lightweight compiler plugins.", 5 | "name": "Kotlin Symbol Processing API", 6 | "licenses": [ 7 | "Apache-2.0" 8 | ] 9 | } -------------------------------------------------------------------------------- /flamingo-playground/aboutLibrariesConfig/libraries/lib_lint.json: -------------------------------------------------------------------------------- 1 | { 2 | "uniqueId": "com.android.tools.lint:lint", 3 | "website": "https://mvnrepository.com/artifact/com.android.tools.lint/lint", 4 | "description": "Android Lint is a new tool introduced in ADT 16 (and Tools 16) which scans Android project sources for potential bugs.", 5 | "name": "Android Lint", 6 | "licenses": [ 7 | "Apache-2.0" 8 | ] 9 | } -------------------------------------------------------------------------------- /flamingo-playground/aboutLibrariesConfig/licenses/lic_unsplash.json: -------------------------------------------------------------------------------- 1 | { 2 | "content": "Unsplash grants you an irrevocable, nonexclusive, worldwide copyright license to download, copy, modify, distribute, perform, and use photos from Unsplash for free, including for commercial purposes, without permission from or attributing the photographer or Unsplash. This license does not include the right to compile photos from Unsplash to replicate a similar or competing service.", 3 | "hash": "unsplash", 4 | "url": "https://unsplash.com/license", 5 | "name": "Unsplash License" 6 | } -------------------------------------------------------------------------------- /flamingo-playground/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | 5 | # If your project uses WebView with JS, uncomment the following 6 | # and specify the fully qualified class name to the JavaScript interface 7 | # class: 8 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 9 | # public *; 10 | #} 11 | 12 | # Uncomment this to preserve the line number information for 13 | # debugging stack traces. 14 | #-keepattributes SourceFile,LineNumberTable 15 | 16 | # If you keep the line number information, uncomment this to 17 | # hide the original source file name. 18 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/StagingFragmentContainer.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground 2 | 3 | import androidx.fragment.app.Fragment 4 | 5 | interface StagingFragmentContainer { 6 | fun openFragment(fragment: Fragment, tag: String? = null) 7 | } 8 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/components/ButtonTypicalUsage.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.components 2 | 3 | import android.os.Bundle 4 | import android.view.View 5 | import androidx.fragment.app.Fragment 6 | import com.flamingo.playground.R 7 | import com.flamingo.demoapi.TypicalUsageDemo 8 | 9 | @TypicalUsageDemo 10 | class ButtonTypicalUsage : Fragment(R.layout.typical_usage_button) { 11 | 12 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 13 | super.onViewCreated(view, savedInstanceState) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/components/EmptyStateTypicalUsage.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.components 2 | 3 | import android.os.Bundle 4 | import android.view.View 5 | import androidx.fragment.app.Fragment 6 | import com.flamingo.playground.R 7 | import com.flamingo.demoapi.TypicalUsageDemo 8 | 9 | @TypicalUsageDemo 10 | class EmptyStateTypicalUsage : Fragment(R.layout.typical_usage_empty_state) { 11 | 12 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 13 | super.onViewCreated(view, savedInstanceState) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/components/IndicatorTypicalUsage.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.components 2 | 3 | import androidx.fragment.app.Fragment 4 | import com.flamingo.playground.R 5 | import com.flamingo.demoapi.TypicalUsageDemo 6 | import com.flamingo.playground.databinding.TypicalUsageIndicatorBinding 7 | import com.flamingo.playground.utils.viewBinding 8 | 9 | @TypicalUsageDemo 10 | class IndicatorTypicalUsage : Fragment(R.layout.typical_usage_indicator) { 11 | 12 | private val b by viewBinding(TypicalUsageIndicatorBinding::bind) 13 | } 14 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/components/skeleton/Square.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress( 2 | "ModifierOrdering", 3 | "CommentSpacing", 4 | "NoBlankLineBeforeRbrace", 5 | "ModifierOrdering", 6 | "NoConsecutiveBlankLines", 7 | "MagicNumber", 8 | "FunctionName", 9 | "MatchingDeclarationName", 10 | "LongParameterList", 11 | "LongMethod", 12 | "ComplexMethod", 13 | "SpacingAroundParens" 14 | ) 15 | 16 | package com.flamingo.playground.components.skeleton 17 | 18 | import androidx.compose.foundation.layout.requiredSize 19 | import androidx.compose.runtime.Composable 20 | import androidx.compose.ui.Modifier 21 | import androidx.compose.ui.unit.dp 22 | import com.flamingo.components.Skeleton 23 | 24 | @Composable 25 | internal fun Square() { 26 | Skeleton(modifier = Modifier.requiredSize(60.dp, 60.dp)) 27 | } 28 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/components/tabrow/TwoSmallTabs.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("FunctionNaming") 2 | 3 | package com.flamingo.playground.components.tabrow 4 | 5 | import androidx.compose.runtime.Composable 6 | import androidx.compose.runtime.getValue 7 | import androidx.compose.runtime.mutableStateOf 8 | import androidx.compose.runtime.saveable.rememberSaveable 9 | import androidx.compose.runtime.setValue 10 | import androidx.compose.ui.tooling.preview.Preview 11 | import com.flamingo.components.tabrow.TabRow 12 | 13 | @Preview 14 | @Composable 15 | fun TwoSmallTabs() { 16 | var index by rememberSaveable { mutableStateOf(0) } 17 | TabRow(tabs = listOf("One", "Two"), selectedTabIndex = index, onTabSelect = { index = it }) 18 | } 19 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/components/topappbar/LazyColumnScrollingShadowSample.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.components.topappbar 2 | 3 | import androidx.compose.foundation.layout.Column 4 | import androidx.compose.foundation.lazy.LazyColumn 5 | import androidx.compose.foundation.lazy.rememberLazyListState 6 | import androidx.compose.runtime.Composable 7 | import androidx.compose.ui.tooling.preview.Preview 8 | import com.flamingo.playground.preview.ListItemPreview 9 | import com.flamingo.playground.preview.TopAppBarPreview 10 | 11 | @Preview 12 | @Composable 13 | fun LazyColumnScrollingShadowSample() = Column { 14 | val listState = rememberLazyListState() 15 | TopAppBarPreview(listState = listState) 16 | LazyColumn(state = listState) { items(100) { ListItemPreview() } } 17 | } 18 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/components/topappbar/ScrollingShadowSample.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.components.topappbar 2 | 3 | import androidx.compose.foundation.layout.Column 4 | import androidx.compose.foundation.rememberScrollState 5 | import androidx.compose.foundation.verticalScroll 6 | import androidx.compose.runtime.Composable 7 | import androidx.compose.ui.Modifier 8 | import androidx.compose.ui.tooling.preview.Preview 9 | import com.flamingo.playground.preview.ListItemPreview 10 | import com.flamingo.playground.preview.TopAppBarPreview2 11 | 12 | @Preview 13 | @Composable 14 | fun ScrollingShadowSample() = Column { 15 | val state = rememberScrollState() 16 | TopAppBarPreview2(scrollState = state) 17 | Column(Modifier.verticalScroll(state)) { repeat(30) { ListItemPreview() } } 18 | } 19 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/components/topappbar/TopAppBarLazyListScrollDemo.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.components.topappbar 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.ViewGroup 6 | import androidx.fragment.app.Fragment 7 | import com.flamingo.playground.Compose 8 | import com.flamingo.demoapi.FlamingoComponentDemoName 9 | import com.flamingo.demoapi.TypicalUsageDemo 10 | 11 | @TypicalUsageDemo 12 | @FlamingoComponentDemoName("Scrolling in LazyColumn with Shadow") 13 | class TopAppBarLazyListScrollDemo : Fragment() { 14 | 15 | override fun onCreateView( 16 | inflater: LayoutInflater, 17 | container: ViewGroup?, 18 | savedInstanceState: Bundle?, 19 | ) = Compose { LazyColumnScrollingShadowSample() } 20 | } 21 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/components/topappbar/TopAppBarScrollDemo.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.components.topappbar 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.ViewGroup 6 | import androidx.fragment.app.Fragment 7 | import com.flamingo.playground.Compose 8 | import com.flamingo.demoapi.FlamingoComponentDemoName 9 | import com.flamingo.demoapi.TypicalUsageDemo 10 | 11 | @TypicalUsageDemo 12 | @FlamingoComponentDemoName("Scrolling with Shadow") 13 | class TopAppBarScrollDemo : Fragment() { 14 | 15 | override fun onCreateView( 16 | inflater: LayoutInflater, 17 | container: ViewGroup?, 18 | savedInstanceState: Bundle?, 19 | ) = Compose { ScrollingShadowSample() } 20 | } 21 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/components/widgetcardgroup/sample1.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.components.widgetcardgroup 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.tooling.preview.Preview 5 | import com.flamingo.components.widgetcard.WidgetCard 6 | import com.flamingo.components.widgetcard.WidgetCardGroup 7 | import com.flamingo.loremIpsum 8 | 9 | @Composable 10 | @Preview(showBackground = true) 11 | fun Sample1() { 12 | WidgetCardGroup { 13 | WidgetCard(title = loremIpsum(3)) 14 | WidgetCard(title = loremIpsum(3)) 15 | WidgetCard(title = loremIpsum(3)) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/conf/TechPause.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.conf 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | /** 18 | * # Техническая пауза 19 | * ### Пожалуйста, ожидайте 20 | */ 21 | class TechPause 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/overlay/DebugOverlayConfigImpl.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.overlay 2 | 3 | import androidx.compose.foundation.BorderStroke 4 | import androidx.compose.ui.graphics.Color 5 | import com.flamingo.overlay.DebugOverlay 6 | 7 | class DebugOverlayConfigImpl( 8 | override val borderStroke: BorderStroke, 9 | override val backgroundColor: Color, 10 | override val text: String, 11 | ) : DebugOverlay.Config 12 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/BadgePreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.tooling.preview.Preview 5 | import com.flamingo.components.Badge 6 | import com.flamingo.components.BadgeColor 7 | 8 | @Preview 9 | @Composable 10 | @Suppress("FunctionNaming") 11 | fun BadgePreview() = Badge(label = "Badge", color = BadgeColor.Gradient.RED) 12 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/BookmarkToggleButtonPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.runtime.getValue 5 | import androidx.compose.runtime.mutableStateOf 6 | import androidx.compose.runtime.remember 7 | import androidx.compose.runtime.setValue 8 | import androidx.compose.ui.tooling.preview.Preview 9 | import com.flamingo.components.BookmarkToggleButton 10 | 11 | @Preview 12 | @Composable 13 | @Suppress("FunctionNaming") 14 | fun BookmarkToggleButtonPreview() { 15 | var state by remember { mutableStateOf(true) } 16 | BookmarkToggleButton( 17 | checked = state, 18 | onCheckedChange = { state = it }, 19 | ) 20 | } 21 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/CardPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.foundation.layout.Spacer 4 | import androidx.compose.foundation.layout.requiredSize 5 | import androidx.compose.runtime.Composable 6 | import androidx.compose.ui.Modifier 7 | import androidx.compose.ui.tooling.preview.Preview 8 | import androidx.compose.ui.unit.dp 9 | import com.flamingo.components.Card 10 | import com.flamingo.components.Elevation 11 | 12 | @Preview 13 | @Composable 14 | @Suppress("FunctionNaming") 15 | fun CardPreview() = Card(elevation = Elevation.Solid.Medium) { 16 | Spacer(modifier = Modifier.requiredSize(100.dp)) 17 | } 18 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/ChipPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.tooling.preview.Preview 5 | import com.flamingo.components.Chip 6 | import com.flamingo.playground.boast 7 | 8 | @Preview 9 | @Composable 10 | @Suppress("FunctionNaming") 11 | fun ChipPreview() = Chip( 12 | label = "Chip", 13 | onClick = boast(msg = "onClick"), 14 | onDelete = boast(msg = "onDelete"), 15 | ) 16 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/CircularLoaderPreview.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress( 2 | "ModifierOrdering", 3 | "CommentSpacing", 4 | "NoBlankLineBeforeRbrace", 5 | "ModifierOrdering", 6 | "NoConsecutiveBlankLines", 7 | "MagicNumber", 8 | "FunctionName", 9 | "MatchingDeclarationName", 10 | "LongParameterList", 11 | "LongMethod", 12 | "ComplexMethod", 13 | "SpacingAroundParens" 14 | ) 15 | 16 | package com.flamingo.playground.preview 17 | 18 | import androidx.compose.runtime.Composable 19 | import androidx.compose.ui.tooling.preview.Preview 20 | import com.flamingo.components.CircularLoader 21 | 22 | @Composable 23 | @Preview 24 | fun CircularLoaderPreview() = CircularLoader() 25 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/CounterPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.tooling.preview.Preview 5 | import com.flamingo.components.counter.Counter 6 | 7 | @Preview 8 | @Composable 9 | fun CounterPreview() { 10 | Counter(maxCount = 10, onCountChange = { 11 | 12 | }) 13 | } -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/DislikePreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.runtime.getValue 5 | import androidx.compose.runtime.mutableStateOf 6 | import androidx.compose.runtime.remember 7 | import androidx.compose.runtime.setValue 8 | import androidx.compose.ui.tooling.preview.Preview 9 | import com.flamingo.components.socialgroup.SocialGroup 10 | import com.flamingo.components.socialgroup.likedislike.Dislike 11 | 12 | @Composable 13 | @Preview 14 | fun DislikePreview() { 15 | var checked by remember { mutableStateOf(false) } 16 | SocialGroup.Dislike( 17 | checked = checked, 18 | onCheckedChange = { checked = it }, 19 | counter = (if (checked) 75 else 74).toString(), 20 | ) 21 | } 22 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/DividerPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.tooling.preview.Preview 5 | import com.flamingo.components.Divider 6 | 7 | @Preview 8 | @Composable 9 | @Suppress("FunctionNaming") 10 | fun DividerPreview() = Divider() 11 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/IconPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.tooling.preview.Preview 5 | import com.flamingo.Flamingo 6 | import com.flamingo.components.Icon 7 | 8 | @Composable 9 | @Preview 10 | @Suppress("FunctionNaming") 11 | fun IconPreview() = Icon(icon = Flamingo.icons.Bell) 12 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/IconToggleButtonPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.tooling.preview.Preview 5 | import com.flamingo.playground.components.icontogglebutton.Heart 6 | 7 | @Preview 8 | @Composable 9 | @Suppress("FunctionNaming") 10 | fun IconToggleButtonPreview() = Heart() 11 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/LikePreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.runtime.getValue 5 | import androidx.compose.runtime.mutableStateOf 6 | import androidx.compose.runtime.remember 7 | import androidx.compose.runtime.setValue 8 | import androidx.compose.ui.tooling.preview.Preview 9 | import com.flamingo.components.socialgroup.SocialGroup 10 | import com.flamingo.components.socialgroup.likedislike.Like 11 | 12 | @Composable 13 | @Preview 14 | fun LikePreview() { 15 | var checked by remember { mutableStateOf(false) } 16 | SocialGroup.Like( 17 | checked = checked, 18 | onCheckedChange = { checked = it }, 19 | counter = (if (checked) 75 else 74).toString(), 20 | ) 21 | } 22 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/LinkPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.platform.LocalContext 5 | import androidx.compose.ui.tooling.preview.Preview 6 | import com.flamingo.Flamingo 7 | import com.flamingo.playground.boast 8 | import com.flamingo.playground.utils.Boast 9 | 10 | @Composable 11 | @Preview 12 | fun LinkPreview() { 13 | com.flamingo.components.Link( 14 | label = "LongLongLongLink.com", 15 | onClick = boast("click"), 16 | startIcon = Flamingo.icons.Link, 17 | endIcon = Flamingo.icons.Command 18 | ) 19 | } -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/MessagePreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.tooling.preview.Preview 5 | import com.flamingo.components.socialgroup.SocialGroup 6 | import com.flamingo.components.socialgroup.button.Message 7 | import com.flamingo.playground.boast 8 | 9 | @Composable 10 | @Preview 11 | fun MessagePreview() = SocialGroup.Message( 12 | onClick = boast(), 13 | counter = "75", 14 | ) 15 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/RatingPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.runtime.getValue 5 | import androidx.compose.runtime.mutableStateOf 6 | import androidx.compose.runtime.remember 7 | import androidx.compose.runtime.setValue 8 | import androidx.compose.ui.tooling.preview.Preview 9 | import com.flamingo.components.rating.Rating 10 | import com.flamingo.components.rating.RatingSize 11 | 12 | @Preview 13 | @Composable 14 | fun RatingPreview() { 15 | var state by remember { mutableStateOf(0u) } 16 | Rating( 17 | value = state, 18 | onSelected = { state = it }, 19 | size = RatingSize.LARGE, 20 | ) 21 | } 22 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/RatingToggleButtonPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.runtime.getValue 5 | import androidx.compose.runtime.mutableStateOf 6 | import androidx.compose.runtime.remember 7 | import androidx.compose.runtime.setValue 8 | import androidx.compose.ui.tooling.preview.Preview 9 | import com.flamingo.components.RatingToggleButton 10 | 11 | @Preview 12 | @Composable 13 | @Suppress("FunctionNaming") 14 | fun RatingToggleButtonPreview() { 15 | var state by remember { mutableStateOf(true) } 16 | RatingToggleButton( 17 | checked = state, 18 | onCheckedChange = { state = it }, 19 | ) 20 | } 21 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/RoundedRectWithCutoutPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.tooling.preview.Preview 5 | import com.flamingo.playground.components.roundedrectwithcutout.RoundedRectWithCutoutShapeSample 6 | 7 | @Preview 8 | @Composable 9 | fun RoundedRectWithCutoutPreview() = RoundedRectWithCutoutShapeSample() 10 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/SharePreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.tooling.preview.Preview 5 | import com.flamingo.components.socialgroup.SocialGroup 6 | import com.flamingo.components.socialgroup.button.Share 7 | import com.flamingo.playground.boast 8 | 9 | @Composable 10 | @Preview 11 | fun SharePreview() = SocialGroup.Share( 12 | onClick = boast(), 13 | counter = "75", 14 | ) 15 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/TabRowPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.tooling.preview.Preview 5 | import com.flamingo.playground.components.tabrow.ComplexTabs 6 | 7 | @Preview 8 | @Composable 9 | @Suppress("FunctionNaming") 10 | fun TabRowPreview() = ComplexTabs() 11 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/preview/TextPreview.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.preview 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.text.style.TextAlign 5 | import androidx.compose.ui.tooling.preview.Preview 6 | import com.flamingo.components.Text 7 | import com.flamingo.loremIpsum 8 | 9 | @Composable 10 | @Preview 11 | @Suppress("FunctionNaming", "MagicNumber") 12 | fun TextPreview() = Text(loremIpsum(15), textAlign = TextAlign.Center) 13 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/theater/Director.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.theater 2 | 3 | import androidx.annotation.StringRes 4 | import com.flamingo.playground.R 5 | 6 | enum class Director(@StringRes val fullName: Int) { 7 | AntonPopov(R.string.theater_director_anton_popov), 8 | AlekseyBublyaev(R.string.theater_director_aleksey_bublyaev) 9 | } 10 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/theater/Ext.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.theater 2 | 3 | import com.flamingo.annotations.FlamingoComponent 4 | import com.flamingo.crab.FlamingoComponentRecord 5 | import com.flamingo.crab.FlamingoRegistry 6 | import com.theater.TheaterPackage 7 | 8 | /** 9 | * @return [FlamingoComponentRecord] of the component in which [TheaterPackage] is referenced in 10 | * [FlamingoComponent.theaterPackage]. 11 | */ 12 | fun TheaterPackage.componentRecord(): FlamingoComponentRecord { 13 | return FlamingoRegistry.components.find { it.theaterPackage == this::class }!! 14 | } 15 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/utils/ExhaustiveWhen.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.utils 2 | 3 | /** 4 | * Used in combination with "when" statements to turn them into expressions. Then compiler requires 5 | * to provide all possible branches to the "when" statement. Example: 6 | * 7 | * ``` 8 | * when(section) { 9 | * TYPE_ONE -> ... 10 | * TYPE_TWO -> ... 11 | * TYPE_THREE -> ... 12 | * }.exhaustive 13 | * ``` 14 | * @see (https://youtu.be/OyIRuxjBORY?t=107) 15 | */ 16 | internal val T.exhaustive: T get() = this 17 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/java/com/flamingo/playground/view/theme/AttrType.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.view.theme 2 | 3 | enum class AttrType { 4 | COLOR, OTHER; 5 | 6 | companion object { 7 | 8 | fun fromEmoji(emoji: String) = when (emoji) { 9 | "🎨" -> COLOR 10 | "\uD83E\uDD37" -> OTHER // 🤷 11 | else -> OTHER 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_alpha_i_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_apps_box.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_baseline_colorize_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_baseline_filter_alt_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_baseline_format_size_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_baseline_gradient_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_baseline_image_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_baseline_lab_flask_alt_24.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_box_shadow.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_format_font.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_function.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 13 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/ic_pencil_ruler.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/text_view_border.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/drawable/typical_usage_empty_state_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/layout/card.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 18 | 19 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/layout/compose_demo_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/layout/font_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/flamingo-playground/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/flamingo-playground/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/flamingo-playground/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/flamingo-playground/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/flamingo-playground/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/xml/states_playroom_alert_message.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | 17 | 18 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/xml/states_playroom_card.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | 18 | 19 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/xml/states_playroom_checkbox.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 16 | 17 | 23 | 24 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/xml/states_playroom_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/xml/states_playroom_dropdown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/xml/states_playroom_indicator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | 18 | 19 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/xml/states_playroom_rating_toggle_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /flamingo-playground/src/main/res/xml/states_playroom_socialbutton.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 17 | 18 | 23 | 24 | -------------------------------------------------------------------------------- /flamingo-playground/src/test/java/ru/sberbank/flamingo/playground/view/IconsDemoFragmentTest.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.playground.view 2 | 3 | import org.junit.jupiter.api.Assertions.assertTrue 4 | import org.junit.jupiter.api.Test 5 | import com.flamingo.playground.IconsDemoFragment 6 | 7 | internal class IconsDemoFragmentTest { 8 | @Test 9 | fun `load icons using reflection`() = assertTrue(IconsDemoFragment.loadIcons().isNotEmpty()) 10 | } 11 | -------------------------------------------------------------------------------- /flamingo-roboto-font/README.md: -------------------------------------------------------------------------------- 1 | This module is used to add roboto-based typography in the Flamingo Design System. 2 | 3 | You __MUST__: 4 | 1. add this module to your app 5 | 2. call `initRobotoTypography()` before the first call to the `FlamingoTheme` 6 | 7 | to use Flamingo. 8 | 9 | Usage of the Flamingo font styles in XML layouts is __STRONGLY DISCOURAGED__; no support will be 10 | provided to this part of Flamingo. 11 | -------------------------------------------------------------------------------- /flamingo-roboto-font/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo-roboto-font/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | 5 | # If your project uses WebView with JS, uncomment the following 6 | # and specify the fully qualified class name to the JavaScript interface 7 | # class: 8 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 9 | # public *; 10 | #} 11 | 12 | # Uncomment this to preserve the line number information for 13 | # debugging stack traces. 14 | #-keepattributes SourceFile,LineNumberTable 15 | 16 | # If you keep the line number information, uncomment this to 17 | # hide the original source file name. 18 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /flamingo-roboto-font/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /flamingo-roboto-font/src/main/res/font/roboto_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/flamingo-roboto-font/src/main/res/font/roboto_bold.ttf -------------------------------------------------------------------------------- /flamingo/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | 5 | # If your project uses WebView with JS, uncomment the following 6 | # and specify the fully qualified class name to the JavaScript interface 7 | # class: 8 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 9 | # public *; 10 | #} 11 | 12 | # Uncomment this to preserve the line number information for 13 | # debugging stack traces. 14 | #-keepattributes SourceFile,LineNumberTable 15 | 16 | # If you keep the line number information, uncomment this to 17 | # hide the original source file name. 18 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /flamingo/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /flamingo/src/main/baseline-prof.txt: -------------------------------------------------------------------------------- 1 | Lcom/flamingo/Flamingo; 2 | HSPLcom/flamingo/theme/**->**(**)** 3 | HSPLcom/flamingo/components/**->**(**)** 4 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/Team.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo 2 | 3 | import com.flamingo.annotations.LocalFlamingoComponent 4 | import com.flamingo.annotations.TeamMarker 5 | 6 | /** 7 | * Each class that represents a team in the project must be annotated with [TeamMarker] and must 8 | * implement [Team]. 9 | * 10 | * @see LocalFlamingoComponent.team 11 | */ 12 | public interface Team 13 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/annotations/DelicateFlamingoApi.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.annotations 2 | 3 | @RequiresOptIn( 4 | """This is a delicate API and its use requires care! In many cases, there are restrictions 5 | in terms of defined behaviour and backwards compatibility of this API. Make sure you fully read and 6 | understood documentation of the declaration that is marked as a delicate API""", 7 | level = RequiresOptIn.Level.ERROR 8 | ) 9 | @MustBeDocumented 10 | @Retention(value = AnnotationRetention.BINARY) 11 | public annotation class DelicateFlamingoApi 12 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/annotations/TeamMarker.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.annotations 2 | 3 | import com.flamingo.Team 4 | 5 | /** 6 | * Each class that represents a team in the project must be annotated with [TeamMarker] and must 7 | * implement [Team]. 8 | * 9 | * Note, that because of [AnnotationRetention.SOURCE], info about teams will be excluded from the 10 | * production apk. 11 | * 12 | * @see LocalFlamingoComponent.team 13 | */ 14 | @Retention(AnnotationRetention.SOURCE) 15 | @MustBeDocumented 16 | @Target(AnnotationTarget.CLASS) 17 | public annotation class TeamMarker( 18 | val displayName: String, 19 | val jiraKey: String, 20 | ) 21 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/annotations/UsedInsteadOf.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.annotations 2 | 3 | /** 4 | * Flamingo components can be marked with [UsedInsteadOf] to indicate that [wrongComponentName] 5 | * components should not be used in the app. Instead, this flamingo component should be used. 6 | * 7 | * Also, there is a lint check [com.flamingo.lint.WrongComponentAlternativeDetector] that 8 | * forbids usage of [wrongComponentName] components. Details on how it works can be found in KDocs 9 | * of [com.flamingo.lint.WrongComponentAlternativeDetector] 10 | * 11 | * [More info](https://confluence.companyname.ru/x/UwcyeQE) 12 | */ 13 | @MustBeDocumented 14 | @Retention(AnnotationRetention.SOURCE) 15 | @Target(AnnotationTarget.FUNCTION) 16 | internal annotation class UsedInsteadOf(vararg val wrongComponentName: String) 17 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/annotations/view/DsIconSet.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.annotations.view 2 | 3 | import androidx.annotation.DrawableRes 4 | 5 | /** 6 | * Denotes that an [Int] is a [DrawableRes] from the design system icon set. 7 | * 8 | * @param otherIconsAllowed if true, setting [DrawableRes] not from a design system icon set will 9 | * not result in a crash 10 | */ 11 | @Retention(AnnotationRetention.SOURCE) 12 | @MustBeDocumented 13 | public annotation class DsIconSet(val otherIconsAllowed: Boolean = false) 14 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/components/ActionGroup.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.components 2 | 3 | import com.flamingo.components.button.ButtonWidthPolicy 4 | 5 | public data class Action( 6 | val label: String, 7 | val onClick: () -> Unit, 8 | val loading: Boolean = false, 9 | val disabled: Boolean = false, 10 | val widthPolicy: ButtonWidthPolicy = ButtonWidthPolicy.MULTILINE, 11 | ) 12 | 13 | public data class ActionGroup( 14 | val firstAction: Action, 15 | val secondAction: Action? = null, 16 | ) 17 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/components/CornerRadius.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.components 2 | 3 | import androidx.compose.foundation.shape.RoundedCornerShape 4 | import androidx.compose.ui.unit.Dp 5 | import androidx.compose.ui.unit.dp 6 | 7 | public enum class CornerRadius(public val dp: Dp) { 8 | NO(0.dp), SMALL(8.dp), MEDIUM(12.dp), LARGE(20.dp); 9 | 10 | public val shape: RoundedCornerShape = RoundedCornerShape(dp) 11 | } 12 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/components/attachment/FilePickerButton.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.components.attachment 2 | 3 | import android.content.Context 4 | import com.flamingo.R 5 | import com.flamingo.components.button.ButtonColor 6 | 7 | /** 8 | * Click on this button must open the native file picker. 9 | */ 10 | public data class FilePickerButton( 11 | val context: Context, 12 | val onClick: () -> Unit, 13 | val label: String = context.getString(R.string.attachment_file_picker_button_text), 14 | /** 15 | * If true — [ButtonColor.Primary], else - [ButtonColor.Default] 16 | */ 17 | val isPrimary: Boolean = false, 18 | /** 19 | * If true, [onClick] would not be called 20 | */ 21 | val disabled: Boolean = false, 22 | ) 23 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/components/socialgroup/SocialGroup.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.components.socialgroup 2 | 3 | /** 4 | * Used as an extension receiver to quickly discover all components from the "SocialGroup" category. 5 | */ 6 | public object SocialGroup 7 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/components/widgetcard/WidgetCardSize.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.components.widgetcard 2 | 3 | import androidx.compose.foundation.layout.aspectRatio 4 | import androidx.compose.foundation.layout.fillMaxWidth 5 | import androidx.compose.foundation.layout.requiredHeight 6 | import androidx.compose.ui.Modifier 7 | import androidx.compose.ui.unit.dp 8 | 9 | public enum class WidgetCardSize(internal val aspectRatio: Float?) { 10 | SQUARE(aspectRatio = 1f / 1f), 11 | MONOLITH(aspectRatio = 3f / 4f), 12 | BRICK(aspectRatio = 2f / 1f), 13 | FIXED_HEIGHT_BRICK(aspectRatio = null), 14 | ; 15 | } 16 | 17 | internal fun Modifier.cardSize(size: WidgetCardSize): Modifier = 18 | if (size.aspectRatio != null) this.aspectRatio(size.aspectRatio) 19 | else this.fillMaxWidth().requiredHeight(168.dp) -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/featureflags/FeatureFlag.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.featureflags 2 | 3 | import com.flamingo.Flamingo 4 | 5 | public enum class FeatureFlag(public val enabledByDefault: Boolean = false) { 6 | /** 7 | * Button on Jetpack Compose 8 | * Implementation of the flamingo component Button on Jetpack Compose 9 | */ 10 | BUTTON_COMPOSE_IMPL, 11 | ; 12 | 13 | /** 14 | * @return true, if [FeatureFlag] is enabled, false otherwise 15 | */ 16 | public operator fun invoke(): Boolean = Flamingo.featureFlagProvider.enabled(this) 17 | } 18 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/featureflags/FeatureFlagProvider.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.featureflags 2 | 3 | /** 4 | * Allows library users to overwrite [FeatureFlag.enabledByDefault] for every [FeatureFlag]. 5 | * Enums can be dynamically listed on the feature flags settings screen of the app that uses 6 | * flamingo. 7 | */ 8 | public interface FeatureFlagProvider { 9 | public fun enabled(featureFlag: FeatureFlag): Boolean = featureFlag.enabledByDefault 10 | } 11 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/theme/typography/FlamingoTypographyProvider.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.theme.typography 2 | 3 | import com.flamingo.theme.colors.FlamingoColors 4 | 5 | public fun interface FlamingoTypographyProvider : (FlamingoColors) -> FlamingoTypography 6 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/utils/ExhaustiveWhen.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.utils 2 | 3 | /** 4 | * Used in combination with "when" statements to turn them into expressions. Then compiler requires 5 | * to provide all possible branches to the "when" statement. Example: 6 | * 7 | * ``` 8 | * when(section) { 9 | * TYPE_ONE -> ... 10 | * TYPE_TWO -> ... 11 | * TYPE_THREE -> ... 12 | * }.exhaustive 13 | * ``` 14 | * @see (https://youtu.be/OyIRuxjBORY?t=107) 15 | */ 16 | internal val T.exhaustive: T get() = this 17 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/utils/GenerateProgressDrawable.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.utils 2 | 3 | import android.content.Context 4 | import androidx.swiperefreshlayout.widget.CircularProgressDrawable 5 | 6 | @Suppress("MagicNumber") 7 | public fun generateProgressDrawable( 8 | context: Context, 9 | progressColor: Int, 10 | progressRadiusPx: Float, 11 | progressStrokePx: Float, 12 | ): CircularProgressDrawable = CircularProgressDrawable(context).apply { 13 | setStyle(CircularProgressDrawable.DEFAULT) 14 | setColorSchemeColors(progressColor) 15 | centerRadius = progressRadiusPx 16 | strokeWidth = progressStrokePx 17 | val size = (centerRadius + strokeWidth).toInt() * 2 18 | setBounds(0, -3, size, size) 19 | } 20 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/utils/Margin.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.utils 2 | 3 | import android.view.View 4 | import android.view.ViewGroup 5 | import androidx.core.view.marginBottom 6 | import androidx.core.view.marginLeft 7 | import androidx.core.view.marginRight 8 | import androidx.core.view.marginTop 9 | import androidx.core.view.updateLayoutParams 10 | import androidx.core.view.updateMargins 11 | 12 | public fun View.updateMargins( 13 | left: Int = marginLeft, 14 | top: Int = marginTop, 15 | right: Int = marginRight, 16 | bottom: Int = marginBottom 17 | ): Unit = 18 | updateLayoutParams { updateMargins(left, top, right, bottom) } 19 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/utils/NightTheme.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.utils 2 | 3 | import android.content.Context 4 | import android.content.res.Configuration.UI_MODE_NIGHT_MASK 5 | import android.content.res.Configuration.UI_MODE_NIGHT_YES 6 | import android.view.View 7 | 8 | /** @return true, if night mode is currently enabled, false otherwise */ 9 | public fun View.isNightMode(): Boolean = context.isNightMode() 10 | 11 | /** @return true, if night mode is currently enabled, false otherwise */ 12 | public fun Context.isNightMode(): Boolean { 13 | return resources.configuration.uiMode and UI_MODE_NIGHT_MASK == UI_MODE_NIGHT_YES 14 | } 15 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/utils/SdkVersionCodes.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.utils 2 | 3 | public const val SDK_18: Int = 18 4 | public const val SDK_20: Int = 20 5 | public const val SDK_21: Int = 21 6 | public const val SDK_22: Int = 22 7 | public const val SDK_23: Int = 23 8 | public const val SDK_24: Int = 24 9 | public const val SDK_25: Int = 25 10 | public const val SDK_26: Int = 26 11 | public const val SDK_27: Int = 27 12 | public const val SDK_28: Int = 28 13 | public const val SDK_29: Int = 29 14 | public const val SDK_30: Int = 30 15 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/utils/UIntExtensions.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.utils 2 | 3 | import androidx.compose.runtime.Stable 4 | import androidx.compose.ui.unit.Dp 5 | 6 | @Stable 7 | public inline operator fun Dp.div(other: UInt): Dp = Dp(value = value / other.toInt()) 8 | 9 | @Stable 10 | public inline operator fun Dp.times(other: UInt): Dp = Dp(value = value * other.toInt()) 11 | -------------------------------------------------------------------------------- /flamingo/src/main/java/com/flamingo/view/Deprecation.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.view 2 | 3 | internal const val VIEW_DEPRECATION_MSG: String = 4 | "View-based flamingo components are deprecated. Use @Composable ones instead!" 5 | -------------------------------------------------------------------------------- /flamingo/src/main/res/animator/button_state_list_anim_v21.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color-night/contained_button_default_color_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color-night/primary_text_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color-night/secondary_text_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color-night/tertiary_text_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/contained_button_default_color_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/contained_button_default_color_text_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/contained_button_error_color_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/contained_button_error_color_text_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/contained_button_opaque_black_color_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/contained_button_opaque_black_color_text_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/contained_button_opaque_primary_ripple_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/contained_button_primary_color_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/contained_button_primary_color_text_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/primary_text_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/secondary_text_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /flamingo/src/main/res/color/tertiary_text_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_activity.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_airplay.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_arrow_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_arrow_down_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_arrow_down_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_arrow_drop_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_arrow_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_arrow_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_arrow_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_arrow_up_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_arrow_up_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_at_sign.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_atm_card.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_award.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_battery.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_bell.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_bluetooth.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_bold.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_book.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_book_open.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_bookmark.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_bookmark_filled.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_briefcase_filled_v2.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_check.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_check_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_check_circle_v3.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_check_square.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_check_square_minus_v2.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_check_square_minus_v3.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_check_square_v3.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_chevron_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_chevron_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_chevron_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_chevron_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_chevrons_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_chevrons_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_chevrons_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_chevrons_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_circle_v2.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_clock.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_cloud.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_cloud_lightning.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_cloud_off.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_code.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_columns.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_command.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_compass.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_corner_down_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_corner_down_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_corner_left_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_corner_left_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_corner_right_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_corner_right_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_corner_up_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_corner_up_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_credit_card.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_crop.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_disc.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_dollar_sign.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_done_in_circle_filled.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_droplet.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_edit_2.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_edit_3.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_eye.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_facebook.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_fast_forward.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_file.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_filter.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_flag.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_folder.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_folder_filled.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_folder_minus.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_framer.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_github.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_gitlab.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_heart.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_hexagon.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_home.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_home_filled.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_home_filled_v2.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_key.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_link_2.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_lock_filled.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_map_pin.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_maximize.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_message_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_message_square.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_message_square_filled.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_minimize.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_minus.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_minus_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_moon.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_mouse_pointer.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_navigation.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_navigation_2.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_octagon.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_paperclip.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_pause.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_pie_chart.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_play.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_play_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_plus.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_pocket.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_power.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_repost.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_rewind.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_rotate_ccw.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_rotate_cw.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_send.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_shield.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_sidebar.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_sidebar_filled.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_skip_back.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_skip_forward.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_slash.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_sort.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_square.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_square_v2.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_star.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_stop_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_tablet.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_tag.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_terminal.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_thermometer.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_thumbs_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_thumbs_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_tool.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_trash.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_trending_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_trending_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_triangle.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_tv.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_twitch.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_twitter.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_umbrella.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_underline.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_user.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_user_filled.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_video_horizontally.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_volume.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_volume_1.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_volume_2.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_wind.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_x.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_zap.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ds_ic_zap_filled_v2.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/empty_state_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ic_dropdown_collapse.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /flamingo/src/main/res/drawable/ic_dropdown_expand.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /flamingo/src/main/res/values-en/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Search 4 | Choose a file 5 | Expand 6 | Collapse 7 | -------------------------------------------------------------------------------- /flamingo/src/main/res/values-night/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3dp 4 | -------------------------------------------------------------------------------- /flamingo/src/main/res/values/attr_alert_message.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /flamingo/src/main/res/values/attr_indicator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /flamingo/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8dp 4 | 12dp 5 | 20dp 6 | 7 | 4dp 8 | 8dp 9 | 12dp 10 | 16dp 11 | 20dp 12 | 24dp 13 | 32dp 14 | 15 | 48dp 16 | 17 | 12dp 18 | -------------------------------------------------------------------------------- /flamingo/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Найти 4 | Выберите файл 5 | Подробнее 6 | Скрыть 7 | -------------------------------------------------------------------------------- /flamingo/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /flamingo/src/test/java/ru/sberbank/flamingo/overlay/LocalDebugOverlayTest.kt: -------------------------------------------------------------------------------- 1 | package com.flamingo.overlay 2 | 3 | import org.junit.jupiter.api.Assertions.assertEquals 4 | import org.junit.jupiter.api.Test 5 | 6 | internal class LocalDebugOverlayTest { 7 | 8 | @Test 9 | fun currentFunctionNameTest() = assertEquals( 10 | "com.flamingo.overlay.currentFunctionNameTest", currentFunctionName(0) 11 | ) 12 | 13 | @Test 14 | fun currentFunctionNameDepthTest() = assertEquals( 15 | "com.flamingo.overlay.currentFunctionNameDepthTest", proxy() 16 | ) 17 | 18 | private fun proxy(): String = currentFunctionName(callDepth = 1) 19 | } 20 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Jan 25 12:51:36 MSK 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /images/components-gallery-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/images/components-gallery-dark.png -------------------------------------------------------------------------------- /images/components-gallery-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/images/components-gallery-light.png -------------------------------------------------------------------------------- /images/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/images/header.jpg -------------------------------------------------------------------------------- /images/playground-screens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/images/playground-screens.png -------------------------------------------------------------------------------- /jitpack.yml: -------------------------------------------------------------------------------- 1 | jdk: 2 | - openjdk11 -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | google() 5 | mavenCentral() 6 | } 7 | } 8 | dependencyResolutionManagement { 9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 10 | repositories { 11 | google() 12 | mavenCentral() 13 | } 14 | } 15 | rootProject.name = "flamingo" 16 | include ':app' 17 | include ':theater' 18 | include ':crab' 19 | include ':flamingo' 20 | include ':flamingo-roboto-font' 21 | include ':flamingo-component-demo-api' 22 | include ':flamingo-lint' 23 | include ':flamingo-playground' 24 | include ':flamingo-playground-app' -------------------------------------------------------------------------------- /theater/docsImages/hidden-stage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flamingo-ux/flamingo-android/16cc87f9335777c6e4d0fbd7fdb5f0490f4f44f8/theater/docsImages/hidden-stage.jpg -------------------------------------------------------------------------------- /theater/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /theater/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | 5 | # If your project uses WebView with JS, uncomment the following 6 | # and specify the fully qualified class name to the JavaScript interface 7 | # class: 8 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 9 | # public *; 10 | #} 11 | 12 | # Uncomment this to preserve the line number information for 13 | # debugging stack traces. 14 | #-keepattributes SourceFile,LineNumberTable 15 | 16 | # If you keep the line number information, uncomment this to 17 | # hide the original source file name. 18 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /theater/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /theater/src/main/java/com/theater/Plot.kt: -------------------------------------------------------------------------------- 1 | package com.theater 2 | 3 | /** 4 | * [Plot] of the [TheaterPlay]. See [PlotScope] to learn about APIs, available to write [Plot]s. 5 | */ 6 | public fun interface Plot { 7 | public suspend fun PlotScope.plot() 8 | } 9 | -------------------------------------------------------------------------------- /theater/src/main/java/com/theater/Stage.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("SpacingAroundParens", "FunctionNaming") 2 | 3 | package com.theater 4 | 5 | import androidx.compose.foundation.layout.BoxScope 6 | import androidx.compose.material.MaterialTheme 7 | import androidx.compose.runtime.Composable 8 | import com.theater.Stage.Companion.DefaultStage 9 | 10 | /** 11 | * Wraps the content of the play. Can be used to apply an overlay or call theme function 12 | * (like [MaterialTheme]). 13 | * 14 | * If nothing like that is needed, use [DefaultStage]. 15 | */ 16 | public interface Stage { 17 | @Composable 18 | public fun BoxScope.Stage(content: @Composable () -> Unit) { 19 | content() 20 | } 21 | 22 | public companion object { 23 | public val DefaultStage: Stage = object : Stage {} 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /theater/src/main/java/com/theater/TheaterPackage.kt: -------------------------------------------------------------------------------- 1 | package com.theater 2 | 3 | /** 4 | * Wrapper for the [TheaterPlay]. Needed to: 5 | * 1. hide generic parameter types; 6 | * 2. be a referencable entry point to the [TheaterPlay]. 7 | * 8 | * [TheaterPackage] is used to play the [TheaterPlay] in [Theater]. 9 | */ 10 | public interface TheaterPackage { 11 | public val play: TheaterPlay<*, *> 12 | } 13 | -------------------------------------------------------------------------------- /theater/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Ошибка при воспроизведении музыки 4 | -------------------------------------------------------------------------------- /theater/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Error while playing music 4 | --------------------------------------------------------------------------------