[go: nahoru, domu]

blob: c50dec9417dfeff4c2c36bdc343a046f8607c99e [file] [log] [blame]
/*
* Copyright 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@file:Suppress("COMPOSABLE_FUNCTION_REFERENCE")
package androidx.compose.material3.catalog.library.model
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.material3.adaptive.navigation.suite.samples.NavigationSuiteScaffoldCustomConfigSample
import androidx.compose.material3.adaptive.navigation.suite.samples.NavigationSuiteScaffoldSample
import androidx.compose.material3.catalog.library.util.AdaptiveNavigationSuiteSampleSourceUrl
import androidx.compose.material3.catalog.library.util.SampleSourceUrl
import androidx.compose.material3.samples.AlertDialogSample
import androidx.compose.material3.samples.AlertDialogWithIconSample
import androidx.compose.material3.samples.AnimatedExtendedFloatingActionButtonSample
import androidx.compose.material3.samples.AssistChipSample
import androidx.compose.material3.samples.BasicAlertDialogSample
import androidx.compose.material3.samples.BottomAppBarWithFAB
import androidx.compose.material3.samples.BottomSheetScaffoldNestedScrollSample
import androidx.compose.material3.samples.ButtonSample
import androidx.compose.material3.samples.ButtonWithIconSample
import androidx.compose.material3.samples.CardSample
import androidx.compose.material3.samples.CheckboxSample
import androidx.compose.material3.samples.CheckboxWithTextSample
import androidx.compose.material3.samples.ChipGroupReflowSample
import androidx.compose.material3.samples.ChipGroupSingleLineSample
import androidx.compose.material3.samples.CircularProgressIndicatorSample
import androidx.compose.material3.samples.ClickableCardSample
import androidx.compose.material3.samples.ClickableElevatedCardSample
import androidx.compose.material3.samples.ClickableOutlinedCardSample
import androidx.compose.material3.samples.DateInputSample
import androidx.compose.material3.samples.DatePickerDialogSample
import androidx.compose.material3.samples.DatePickerSample
import androidx.compose.material3.samples.DatePickerWithDateSelectableDatesSample
import androidx.compose.material3.samples.DateRangePickerSample
import androidx.compose.material3.samples.DismissibleNavigationDrawerSample
import androidx.compose.material3.samples.DockedSearchBarSample
import androidx.compose.material3.samples.EditableExposedDropdownMenuSample
import androidx.compose.material3.samples.ElevatedAssistChipSample
import androidx.compose.material3.samples.ElevatedButtonSample
import androidx.compose.material3.samples.ElevatedCardSample
import androidx.compose.material3.samples.ElevatedFilterChipSample
import androidx.compose.material3.samples.ElevatedSuggestionChipSample
import androidx.compose.material3.samples.EnterAlwaysTopAppBar
import androidx.compose.material3.samples.ExitAlwaysBottomAppBar
import androidx.compose.material3.samples.ExitUntilCollapsedLargeTopAppBar
import androidx.compose.material3.samples.ExitUntilCollapsedMediumTopAppBar
import androidx.compose.material3.samples.ExposedDropdownMenuSample
import androidx.compose.material3.samples.ExtendedFloatingActionButtonSample
import androidx.compose.material3.samples.ExtendedFloatingActionButtonTextSample
import androidx.compose.material3.samples.FancyIndicatorContainerTabs
import androidx.compose.material3.samples.FancyIndicatorTabs
import androidx.compose.material3.samples.FancyTabs
import androidx.compose.material3.samples.FilledIconButtonSample
import androidx.compose.material3.samples.FilledIconToggleButtonSample
import androidx.compose.material3.samples.FilledTonalButtonSample
import androidx.compose.material3.samples.FilledTonalIconButtonSample
import androidx.compose.material3.samples.FilledTonalIconToggleButtonSample
import androidx.compose.material3.samples.FilterChipSample
import androidx.compose.material3.samples.FilterChipWithLeadingIconSample
import androidx.compose.material3.samples.FloatingActionButtonSample
import androidx.compose.material3.samples.IconButtonSample
import androidx.compose.material3.samples.IconToggleButtonSample
import androidx.compose.material3.samples.IndeterminateCircularProgressIndicatorSample
import androidx.compose.material3.samples.IndeterminateLinearProgressIndicatorSample
import androidx.compose.material3.samples.InputChipSample
import androidx.compose.material3.samples.InputChipWithAvatarSample
import androidx.compose.material3.samples.LargeFloatingActionButtonSample
import androidx.compose.material3.samples.LeadingIconTabs
import androidx.compose.material3.samples.LinearProgressIndicatorSample
import androidx.compose.material3.samples.MenuSample
import androidx.compose.material3.samples.MenuWithScrollStateSample
import androidx.compose.material3.samples.ModalBottomSheetSample
import androidx.compose.material3.samples.ModalNavigationDrawerSample
import androidx.compose.material3.samples.NavigationBarItemWithBadge
import androidx.compose.material3.samples.NavigationBarSample
import androidx.compose.material3.samples.NavigationBarWithOnlySelectedLabelsSample
import androidx.compose.material3.samples.NavigationRailBottomAlignSample
import androidx.compose.material3.samples.NavigationRailSample
import androidx.compose.material3.samples.NavigationRailWithOnlySelectedLabelsSample
import androidx.compose.material3.samples.OneLineListItem
import androidx.compose.material3.samples.OutlinedButtonSample
import androidx.compose.material3.samples.OutlinedCardSample
import androidx.compose.material3.samples.OutlinedIconButtonSample
import androidx.compose.material3.samples.OutlinedIconToggleButtonSample
import androidx.compose.material3.samples.OutlinedTextFieldSample
import androidx.compose.material3.samples.PasswordTextField
import androidx.compose.material3.samples.PermanentNavigationDrawerSample
import androidx.compose.material3.samples.PinnedTopAppBar
import androidx.compose.material3.samples.PlainTooltipSample
import androidx.compose.material3.samples.PlainTooltipWithManualInvocationSample
import androidx.compose.material3.samples.PrimaryIconTabs
import androidx.compose.material3.samples.PrimaryTextTabs
import androidx.compose.material3.samples.RadioButtonSample
import androidx.compose.material3.samples.RadioGroupSample
import androidx.compose.material3.samples.RangeSliderSample
import androidx.compose.material3.samples.RangeSliderWithCustomComponents
import androidx.compose.material3.samples.RichTooltipSample
import androidx.compose.material3.samples.RichTooltipWithManualInvocationSample
import androidx.compose.material3.samples.ScaffoldWithCoroutinesSnackbar
import androidx.compose.material3.samples.ScaffoldWithCustomSnackbar
import androidx.compose.material3.samples.ScaffoldWithIndefiniteSnackbar
import androidx.compose.material3.samples.ScaffoldWithMultilineSnackbar
import androidx.compose.material3.samples.ScaffoldWithSimpleSnackbar
import androidx.compose.material3.samples.ScrollingFancyIndicatorContainerTabs
import androidx.compose.material3.samples.ScrollingPrimaryTextTabs
import androidx.compose.material3.samples.ScrollingSecondaryTextTabs
import androidx.compose.material3.samples.SearchBarSample
import androidx.compose.material3.samples.SecondaryIconTabs
import androidx.compose.material3.samples.SecondaryTextTabs
import androidx.compose.material3.samples.SegmentedButtonMultiSelectSample
import androidx.compose.material3.samples.SegmentedButtonSingleSelectSample
import androidx.compose.material3.samples.SimpleBottomAppBar
import androidx.compose.material3.samples.SimpleBottomSheetScaffoldSample
import androidx.compose.material3.samples.SimpleCenterAlignedTopAppBar
import androidx.compose.material3.samples.SimpleOutlinedTextFieldSample
import androidx.compose.material3.samples.SimpleTextFieldSample
import androidx.compose.material3.samples.SimpleTopAppBar
import androidx.compose.material3.samples.SliderSample
import androidx.compose.material3.samples.SliderWithCustomThumbSample
import androidx.compose.material3.samples.SliderWithCustomTrackAndThumb
import androidx.compose.material3.samples.SmallFloatingActionButtonSample
import androidx.compose.material3.samples.StepRangeSliderSample
import androidx.compose.material3.samples.StepsSliderSample
import androidx.compose.material3.samples.SuggestionChipSample
import androidx.compose.material3.samples.SwitchSample
import androidx.compose.material3.samples.SwitchWithThumbIconSample
import androidx.compose.material3.samples.TextAndIconTabs
import androidx.compose.material3.samples.TextArea
import androidx.compose.material3.samples.TextButtonSample
import androidx.compose.material3.samples.TextFieldSample
import androidx.compose.material3.samples.TextFieldWithErrorState
import androidx.compose.material3.samples.TextFieldWithHideKeyboardOnImeAction
import androidx.compose.material3.samples.TextFieldWithIcons
import androidx.compose.material3.samples.TextFieldWithPlaceholder
import androidx.compose.material3.samples.TextFieldWithPrefixAndSuffix
import androidx.compose.material3.samples.TextFieldWithSupportingText
import androidx.compose.material3.samples.ThreeLineListItemWithExtendedSupporting
import androidx.compose.material3.samples.ThreeLineListItemWithOverlineAndSupporting
import androidx.compose.material3.samples.TimeInputSample
import androidx.compose.material3.samples.TimePickerSample
import androidx.compose.material3.samples.TimePickerSwitchableSample
import androidx.compose.material3.samples.TriStateCheckboxSample
import androidx.compose.material3.samples.TwoLineListItem
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
data class Example(
val name: String,
val description: String,
val sourceUrl: String,
val content: @Composable () -> Unit
)
private const val BadgeExampleDescription = "Badge examples"
private const val BadgeExampleSourceUrl = "$SampleSourceUrl/BadgeSamples.kt"
val BadgeExamples =
listOf(
Example(
name = ::NavigationBarItemWithBadge.name,
description = BadgeExampleDescription,
sourceUrl = BadgeExampleSourceUrl
) { NavigationBarItemWithBadge() }
)
private const val BottomSheetExampleDescription = "Bottom Sheet examples"
private const val BottomSheetExampleSourceUrl = "$SampleSourceUrl/BottomSheetSamples.kt"
val BottomSheetExamples =
listOf(
Example(
name = ::ModalBottomSheetSample.name,
description = BottomSheetExampleDescription,
sourceUrl = BottomSheetExampleSourceUrl
) { ModalBottomSheetSample() },
Example(
name = ::SimpleBottomSheetScaffoldSample.name,
description = BottomSheetExampleDescription,
sourceUrl = BottomSheetExampleSourceUrl
) { SimpleBottomSheetScaffoldSample() },
Example(
name = ::BottomSheetScaffoldNestedScrollSample.name,
description = BottomSheetExampleDescription,
sourceUrl = BottomSheetExampleSourceUrl
) { BottomSheetScaffoldNestedScrollSample() }
)
private const val ButtonsExampleDescription = "Button examples"
private const val ButtonsExampleSourceUrl = "$SampleSourceUrl/ButtonSamples.kt"
val ButtonsExamples =
listOf(
Example(
name = ::ButtonSample.name,
description = ButtonsExampleDescription,
sourceUrl = ButtonsExampleSourceUrl,
) { ButtonSample() },
Example(
name = ::ElevatedButtonSample.name,
description = ButtonsExampleDescription,
sourceUrl = ButtonsExampleSourceUrl,
) { ElevatedButtonSample() },
Example(
name = ::FilledTonalButtonSample.name,
description = ButtonsExampleDescription,
sourceUrl = ButtonsExampleSourceUrl,
) { FilledTonalButtonSample() },
Example(
name = ::OutlinedButtonSample.name,
description = ButtonsExampleDescription,
sourceUrl = ButtonsExampleSourceUrl,
) { OutlinedButtonSample() },
Example(
name = ::TextButtonSample.name,
description = ButtonsExampleDescription,
sourceUrl = ButtonsExampleSourceUrl,
) { TextButtonSample() },
Example(
name = ::ButtonWithIconSample.name,
description = ButtonsExampleDescription,
sourceUrl = ButtonsExampleSourceUrl,
) { ButtonWithIconSample() }
)
private const val CardsExampleDescription = "Cards examples"
private const val CardsExampleSourceUrl = "$SampleSourceUrl/CardSamples.kt"
val CardExamples = listOf(
Example(
name = ::CardSample.name,
description = CardsExampleDescription,
sourceUrl = CardsExampleSourceUrl
) {
CardSample()
},
Example(
name = ::ClickableCardSample.name,
description = CardsExampleDescription,
sourceUrl = CardsExampleSourceUrl
) {
ClickableCardSample()
},
Example(
name = ::ElevatedCardSample.name,
description = CardsExampleDescription,
sourceUrl = CardsExampleSourceUrl
) {
ElevatedCardSample()
},
Example(
name = ::ClickableElevatedCardSample.name,
description = CardsExampleDescription,
sourceUrl = CardsExampleSourceUrl
) {
ClickableElevatedCardSample()
},
Example(
name = ::OutlinedCardSample.name,
description = CardsExampleDescription,
sourceUrl = CardsExampleSourceUrl
) {
OutlinedCardSample()
},
Example(
name = ::ClickableOutlinedCardSample.name,
description = CardsExampleDescription,
sourceUrl = CardsExampleSourceUrl
) {
ClickableOutlinedCardSample()
}
)
private const val CheckboxesExampleDescription = "Checkboxes examples"
private const val CheckboxesExampleSourceUrl = "$SampleSourceUrl/CheckboxSamples.kt"
val CheckboxesExamples = listOf(
Example(
name = ::CheckboxSample.name,
description = CheckboxesExampleDescription,
sourceUrl = CheckboxesExampleSourceUrl
) {
CheckboxSample()
},
Example(
name = ::CheckboxWithTextSample.name,
description = CheckboxesExampleDescription,
sourceUrl = CheckboxesExampleSourceUrl
) {
CheckboxWithTextSample()
},
Example(
name = ::TriStateCheckboxSample.name,
description = CheckboxesExampleDescription,
sourceUrl = CheckboxesExampleSourceUrl
) {
TriStateCheckboxSample()
}
)
private const val ChipsExampleDescription = "Chips examples"
private const val ChipsExampleSourceUrl = "$SampleSourceUrl/ChipSamples.kt"
val ChipsExamples = listOf(
Example(
name = ::AssistChipSample.name,
description = ChipsExampleDescription,
sourceUrl = ChipsExampleSourceUrl
) {
AssistChipSample()
},
Example(
name = ::ElevatedAssistChipSample.name,
description = ChipsExampleDescription,
sourceUrl = ChipsExampleSourceUrl
) {
ElevatedAssistChipSample()
},
Example(
name = ::FilterChipSample.name,
description = ChipsExampleDescription,
sourceUrl = ChipsExampleSourceUrl
) {
FilterChipSample()
},
Example(
name = ::ElevatedFilterChipSample.name,
description = ChipsExampleDescription,
sourceUrl = ChipsExampleSourceUrl
) {
ElevatedFilterChipSample()
},
Example(
name = ::FilterChipWithLeadingIconSample.name,
description = ChipsExampleDescription,
sourceUrl = ChipsExampleSourceUrl
) {
FilterChipWithLeadingIconSample()
},
Example(
name = ::InputChipSample.name,
description = ChipsExampleDescription,
sourceUrl = ChipsExampleSourceUrl
) {
InputChipSample()
},
Example(
name = ::InputChipWithAvatarSample.name,
description = ChipsExampleDescription,
sourceUrl = ChipsExampleSourceUrl
) {
InputChipWithAvatarSample()
},
Example(
name = ::SuggestionChipSample.name,
description = ChipsExampleDescription,
sourceUrl = ChipsExampleSourceUrl
) {
SuggestionChipSample()
},
Example(
name = ::ElevatedSuggestionChipSample.name,
description = ChipsExampleDescription,
sourceUrl = ChipsExampleSourceUrl
) {
ElevatedSuggestionChipSample()
},
Example(
name = ::ChipGroupSingleLineSample.name,
description = ChipsExampleDescription,
sourceUrl = ChipsExampleSourceUrl
) {
ChipGroupSingleLineSample()
},
Example(
name = ::ChipGroupReflowSample.name,
description = ChipsExampleDescription,
sourceUrl = ChipsExampleSourceUrl
) {
ChipGroupReflowSample()
}
)
private const val DatePickerExampleDescription = "Date picker examples"
private const val DatePickerExampleSourceUrl = "$SampleSourceUrl/DatePickerSamples.kt"
val DatePickerExamples = listOf(
Example(
name = ::DatePickerSample.name,
description = DatePickerExampleDescription,
sourceUrl = DatePickerExampleSourceUrl
) {
DatePickerSample()
},
Example(
name = ::DatePickerDialogSample.name,
description = DatePickerExampleDescription,
sourceUrl = DatePickerExampleSourceUrl
) {
DatePickerDialogSample()
},
Example(
name = ::DatePickerWithDateSelectableDatesSample.name,
description = DatePickerExampleDescription,
sourceUrl = DatePickerExampleSourceUrl
) {
DatePickerWithDateSelectableDatesSample()
},
Example(
name = ::DateInputSample.name,
description = DatePickerExampleDescription,
sourceUrl = DatePickerExampleSourceUrl
) {
DateInputSample()
},
Example(
name = ::DateRangePickerSample.name,
description = DatePickerExampleDescription,
sourceUrl = DatePickerExampleSourceUrl
) {
DateRangePickerSample()
},
)
private const val DialogExampleDescription = "Dialog examples"
private const val DialogExampleSourceUrl = "$SampleSourceUrl/AlertDialogSamples.kt"
val DialogExamples =
listOf(
Example(
name = ::AlertDialogSample.name,
description = DialogExampleDescription,
sourceUrl = DialogExampleSourceUrl,
) { AlertDialogSample() },
Example(
name = ::AlertDialogWithIconSample.name,
description = DialogExampleDescription,
sourceUrl = DialogExampleSourceUrl,
) { AlertDialogWithIconSample() },
Example(
name = ::BasicAlertDialogSample.name,
description = DialogExampleDescription,
sourceUrl = DialogExampleSourceUrl,
) { BasicAlertDialogSample() },
)
private const val BottomAppBarsExampleDescription = "Bottom app bar examples"
private const val BottomAppBarsExampleSourceUrl = "$SampleSourceUrl/AppBarSamples.kt"
val BottomAppBarsExamples = listOf(
Example(
name = ::SimpleBottomAppBar.name,
description = BottomAppBarsExampleDescription,
sourceUrl = BottomAppBarsExampleSourceUrl,
) { SimpleBottomAppBar() },
Example(
name = ::BottomAppBarWithFAB.name,
description = BottomAppBarsExampleDescription,
sourceUrl = BottomAppBarsExampleSourceUrl,
) { BottomAppBarWithFAB() },
Example(
name = ::ExitAlwaysBottomAppBar.name,
description = BottomAppBarsExampleDescription,
sourceUrl = BottomAppBarsExampleSourceUrl,
) { ExitAlwaysBottomAppBar() }
)
private const val TopAppBarExampleDescription = "Top app bar examples"
private const val TopAppBarExampleSourceUrl = "$SampleSourceUrl/AppBarSamples.kt"
val TopAppBarExamples =
listOf(
Example(
name = ::SimpleTopAppBar.name,
description = TopAppBarExampleDescription,
sourceUrl = TopAppBarExampleSourceUrl,
) { SimpleTopAppBar() },
Example(
name = ::SimpleCenterAlignedTopAppBar.name,
description = TopAppBarExampleDescription,
sourceUrl = TopAppBarExampleSourceUrl,
) { SimpleCenterAlignedTopAppBar() },
Example(
name = ::PinnedTopAppBar.name,
description = TopAppBarExampleDescription,
sourceUrl = TopAppBarExampleSourceUrl,
) { PinnedTopAppBar() },
Example(
name = ::EnterAlwaysTopAppBar.name,
description = TopAppBarExampleDescription,
sourceUrl = TopAppBarExampleSourceUrl,
) { EnterAlwaysTopAppBar() },
Example(
name = ::ExitUntilCollapsedMediumTopAppBar.name,
description = TopAppBarExampleDescription,
sourceUrl = TopAppBarExampleSourceUrl,
) { ExitUntilCollapsedMediumTopAppBar() },
Example(
name = ::ExitUntilCollapsedLargeTopAppBar.name,
description = TopAppBarExampleDescription,
sourceUrl = TopAppBarExampleSourceUrl,
) { ExitUntilCollapsedLargeTopAppBar() },
)
private const val ExtendedFABExampleDescription = "Extended FAB examples"
private const val ExtendedFABExampleSourceUrl = "$SampleSourceUrl/FloatingActionButtonSamples.kt"
val ExtendedFABExamples =
listOf(
Example(
name = ::ExtendedFloatingActionButtonSample.name,
description = ExtendedFABExampleDescription,
sourceUrl = ExtendedFABExampleSourceUrl,
) { ExtendedFloatingActionButtonSample() },
Example(
name = ::ExtendedFloatingActionButtonTextSample.name,
description = ExtendedFABExampleDescription,
sourceUrl = ExtendedFABExampleSourceUrl,
) { ExtendedFloatingActionButtonTextSample() },
Example(
name = ::AnimatedExtendedFloatingActionButtonSample.name,
description = ExtendedFABExampleDescription,
sourceUrl = ExtendedFABExampleSourceUrl,
) { AnimatedExtendedFloatingActionButtonSample() },
)
private const val FloatingActionButtonsExampleDescription = "Floating action button examples"
private const val FloatingActionButtonsExampleSourceUrl =
"$SampleSourceUrl/FloatingActionButtonSamples.kt"
val FloatingActionButtonsExamples =
listOf(
Example(
name = ::FloatingActionButtonSample.name,
description = FloatingActionButtonsExampleDescription,
sourceUrl = FloatingActionButtonsExampleSourceUrl,
) { FloatingActionButtonSample() },
Example(
name = ::LargeFloatingActionButtonSample.name,
description = FloatingActionButtonsExampleDescription,
sourceUrl = FloatingActionButtonsExampleSourceUrl,
) { LargeFloatingActionButtonSample() },
Example(
name = ::SmallFloatingActionButtonSample.name,
description = FloatingActionButtonsExampleDescription,
sourceUrl = FloatingActionButtonsExampleSourceUrl,
) { SmallFloatingActionButtonSample() }
)
private const val ListsExampleDescription = "List examples"
private const val ListsExampleSourceUrl = "$SampleSourceUrl/ListSamples.kt"
val ListsExamples = listOf(
Example(
name = ::OneLineListItem.name,
description = ListsExampleDescription,
sourceUrl = ListsExampleSourceUrl
) {
OneLineListItem()
},
Example(
name = ::TwoLineListItem.name,
description = ListsExampleDescription,
sourceUrl = ListsExampleSourceUrl
) {
TwoLineListItem()
},
Example(
name = ::ThreeLineListItemWithOverlineAndSupporting.name,
description = ListsExampleDescription,
sourceUrl = ListsExampleSourceUrl
) {
ThreeLineListItemWithOverlineAndSupporting()
},
Example(
name = ::ThreeLineListItemWithExtendedSupporting.name,
description = ListsExampleDescription,
sourceUrl = ListsExampleSourceUrl
) {
ThreeLineListItemWithExtendedSupporting()
},
)
private const val IconButtonExampleDescription = "Icon button examples"
private const val IconButtonExampleSourceUrl = "$SampleSourceUrl/IconButtonSamples.kt"
val IconButtonExamples =
listOf(
Example(
name = ::IconButtonSample.name,
description = IconButtonExampleDescription,
sourceUrl = IconButtonExampleSourceUrl,
) { IconButtonSample() },
Example(
name = ::IconToggleButtonSample.name,
description = IconButtonExampleDescription,
sourceUrl = IconButtonExampleSourceUrl,
) { IconToggleButtonSample() },
Example(
name = ::FilledIconButtonSample.name,
description = IconButtonExampleDescription,
sourceUrl = IconButtonExampleSourceUrl,
) { FilledIconButtonSample() },
Example(
name = ::FilledIconToggleButtonSample.name,
description = IconButtonExampleDescription,
sourceUrl = IconButtonExampleSourceUrl,
) { FilledIconToggleButtonSample() },
Example(
name = ::FilledTonalIconButtonSample.name,
description = IconButtonExampleDescription,
sourceUrl = IconButtonExampleSourceUrl,
) { FilledTonalIconButtonSample() },
Example(
name = ::FilledTonalIconToggleButtonSample.name,
description = IconButtonExampleDescription,
sourceUrl = IconButtonExampleSourceUrl,
) { FilledTonalIconToggleButtonSample() },
Example(
name = ::OutlinedIconButtonSample.name,
description = IconButtonExampleDescription,
sourceUrl = IconButtonExampleSourceUrl,
) { OutlinedIconButtonSample() },
Example(
name = ::OutlinedIconToggleButtonSample.name,
description = IconButtonExampleDescription,
sourceUrl = IconButtonExampleSourceUrl,
) { OutlinedIconToggleButtonSample() }
)
private const val MenusExampleDescription = "Menus examples"
private const val MenusExampleSourceUrl = "$SampleSourceUrl/MenuSamples.kt"
val MenusExamples = listOf(
Example(
name = ::MenuSample.name,
description = MenusExampleDescription,
sourceUrl = MenusExampleSourceUrl
) {
MenuSample()
},
Example(
name = ::MenuWithScrollStateSample.name,
description = MenusExampleDescription,
sourceUrl = MenusExampleSourceUrl
) {
MenuWithScrollStateSample()
},
Example(
name = ::ExposedDropdownMenuSample.name,
description = MenusExampleDescription,
sourceUrl = MenusExampleSourceUrl
) {
ExposedDropdownMenuSample()
},
Example(
name = ::EditableExposedDropdownMenuSample.name,
description = MenusExampleDescription,
sourceUrl = MenusExampleSourceUrl
) {
EditableExposedDropdownMenuSample()
},
)
private const val NavigationBarExampleDescription = "Navigation bar examples"
private const val NavigationBarExampleSourceUrl = "$SampleSourceUrl/NavigationBarSamples.kt"
val NavigationBarExamples =
listOf(
Example(
name = ::NavigationBarSample.name,
description = NavigationBarExampleDescription,
sourceUrl = NavigationBarExampleSourceUrl,
) { NavigationBarSample() },
Example(
name = ::NavigationBarWithOnlySelectedLabelsSample.name,
description = NavigationBarExampleDescription,
sourceUrl = NavigationBarExampleSourceUrl,
) { NavigationBarWithOnlySelectedLabelsSample() },
)
private const val NavigationRailExampleDescription = "Navigation rail examples"
private const val NavigationRailExampleSourceUrl = "$SampleSourceUrl/NavigationRailSamples.kt"
val NavigationRailExamples =
listOf(
Example(
name = ::NavigationRailSample.name,
description = NavigationRailExampleDescription,
sourceUrl = NavigationRailExampleSourceUrl,
) { NavigationRailSample() },
Example(
name = ::NavigationRailWithOnlySelectedLabelsSample.name,
description = NavigationRailExampleDescription,
sourceUrl = NavigationRailExampleSourceUrl,
) { NavigationRailWithOnlySelectedLabelsSample() },
Example(
name = ::NavigationRailBottomAlignSample.name,
description = NavigationRailExampleDescription,
sourceUrl = NavigationRailExampleSourceUrl,
) { NavigationRailBottomAlignSample() },
)
private const val NavigationDrawerExampleDescription = "Navigation drawer examples"
private const val NavigationDrawerExampleSourceUrl = "$SampleSourceUrl/DrawerSamples.kt"
val NavigationDrawerExamples = listOf(
Example(
name = ::ModalNavigationDrawerSample.name,
description = NavigationDrawerExampleDescription,
sourceUrl = NavigationDrawerExampleSourceUrl
) {
ModalNavigationDrawerSample()
},
Example(
name = ::PermanentNavigationDrawerSample.name,
description = NavigationDrawerExampleDescription,
sourceUrl = NavigationDrawerExampleSourceUrl
) {
PermanentNavigationDrawerSample()
},
Example(
name = ::DismissibleNavigationDrawerSample.name,
description = NavigationDrawerExampleDescription,
sourceUrl = NavigationDrawerExampleSourceUrl
) {
DismissibleNavigationDrawerSample()
}
)
private const val NavigationSuiteScaffoldExampleDescription = "Navigation suite scaffold examples"
private const val NavigationSuiteScaffoldExampleSourceUrl =
"$AdaptiveNavigationSuiteSampleSourceUrl/NavigationSuiteScaffoldSamples.kt"
val NavigationSuiteScaffoldExamples =
listOf(
Example(
name = ::NavigationSuiteScaffoldSample.name,
description = NavigationSuiteScaffoldExampleDescription,
sourceUrl = NavigationSuiteScaffoldExampleSourceUrl,
) { NavigationSuiteScaffoldSample() },
Example(
name = ::NavigationSuiteScaffoldCustomConfigSample.name,
description = NavigationSuiteScaffoldExampleDescription,
sourceUrl = NavigationSuiteScaffoldExampleSourceUrl,
) { NavigationSuiteScaffoldCustomConfigSample() },
)
private const val ProgressIndicatorsExampleDescription = "Progress indicators examples"
private const val ProgressIndicatorsExampleSourceUrl = "$SampleSourceUrl/" +
"ProgressIndicatorSamples.kt"
val ProgressIndicatorsExamples = listOf(
Example(
name = ::LinearProgressIndicatorSample.name,
description = ProgressIndicatorsExampleDescription,
sourceUrl = ProgressIndicatorsExampleSourceUrl
) {
LinearProgressIndicatorSample()
},
Example(
name = ::IndeterminateLinearProgressIndicatorSample.name,
description = ProgressIndicatorsExampleDescription,
sourceUrl = ProgressIndicatorsExampleSourceUrl
) {
IndeterminateLinearProgressIndicatorSample()
},
Example(
name = ::CircularProgressIndicatorSample.name,
description = ProgressIndicatorsExampleDescription,
sourceUrl = ProgressIndicatorsExampleSourceUrl
) {
CircularProgressIndicatorSample()
},
Example(
name = ::IndeterminateCircularProgressIndicatorSample.name,
description = ProgressIndicatorsExampleDescription,
sourceUrl = ProgressIndicatorsExampleSourceUrl
) {
IndeterminateCircularProgressIndicatorSample()
}
)
private const val RadioButtonsExampleDescription = "Radio buttons examples"
private const val RadioButtonsExampleSourceUrl = "$SampleSourceUrl/RadioButtonSamples.kt"
val RadioButtonsExamples = listOf(
Example(
name = ::RadioButtonSample.name,
description = RadioButtonsExampleDescription,
sourceUrl = RadioButtonsExampleSourceUrl
) {
RadioButtonSample()
},
Example(
name = ::RadioGroupSample.name,
description = RadioButtonsExampleDescription,
sourceUrl = RadioButtonsExampleSourceUrl
) {
RadioGroupSample()
},
)
private const val SearchBarExampleDescription = "Search bar examples"
private const val SearchBarExampleSourceUrl = "$SampleSourceUrl/SearchBarSamples.kt"
val SearchBarExamples = listOf(
Example(
name = ::SearchBarSample.name,
description = SearchBarExampleDescription,
sourceUrl = SearchBarExampleSourceUrl
) {
SearchBarSample()
},
Example(
name = ::DockedSearchBarSample.name,
description = SearchBarExampleDescription,
sourceUrl = SearchBarExampleSourceUrl
) {
DockedSearchBarSample()
}
)
private const val SegmentedButtonExampleDescription = "Segmented Button examples"
private const val SegmentedButtonSourceUrl = "$SampleSourceUrl/SegmentedButtonSamples.kt"
val SegmentedButtonExamples = listOf(
Example(
name = ::SegmentedButtonSingleSelectSample.name,
description = SegmentedButtonExampleDescription,
sourceUrl = SegmentedButtonSourceUrl
) {
SegmentedButtonSingleSelectSample()
},
Example(
name = ::SegmentedButtonMultiSelectSample.name,
description = SegmentedButtonExampleDescription,
sourceUrl = SegmentedButtonSourceUrl
) {
SegmentedButtonMultiSelectSample()
},
)
private const val SlidersExampleDescription = "Sliders examples"
private const val SlidersExampleSourceUrl = "$SampleSourceUrl/SliderSamples.kt"
val SlidersExamples = listOf(
Example(
name = ::SliderSample.name,
description = SlidersExampleDescription,
sourceUrl = SlidersExampleSourceUrl
) {
SliderSample()
},
Example(
name = ::StepsSliderSample.name,
description = SlidersExampleDescription,
sourceUrl = SlidersExampleSourceUrl
) {
StepsSliderSample()
},
Example(
name = ::SliderWithCustomThumbSample.name,
description = SlidersExampleDescription,
sourceUrl = SlidersExampleSourceUrl
) {
SliderWithCustomThumbSample()
},
Example(
name = ::SliderWithCustomTrackAndThumb.name,
description = SlidersExampleDescription,
sourceUrl = SlidersExampleSourceUrl
) {
SliderWithCustomTrackAndThumb()
},
Example(
name = ::RangeSliderSample.name,
description = SlidersExampleDescription,
sourceUrl = SlidersExampleSourceUrl
) {
RangeSliderSample()
},
Example(
name = ::StepRangeSliderSample.name,
description = SlidersExampleDescription,
sourceUrl = SlidersExampleSourceUrl
) {
StepRangeSliderSample()
},
Example(
name = ::RangeSliderWithCustomComponents.name,
description = SlidersExampleDescription,
sourceUrl = SlidersExampleSourceUrl
) {
RangeSliderWithCustomComponents()
}
)
private const val SnackbarsExampleDescription = "Snackbars examples"
private const val SnackbarsExampleSourceUrl = "$SampleSourceUrl/ScaffoldSamples.kt"
val SnackbarsExamples = listOf(
Example(
name = ::ScaffoldWithSimpleSnackbar.name,
description = SnackbarsExampleDescription,
sourceUrl = SnackbarsExampleSourceUrl
) {
ScaffoldWithSimpleSnackbar()
},
Example(
name = ::ScaffoldWithIndefiniteSnackbar.name,
description = SnackbarsExampleDescription,
sourceUrl = SnackbarsExampleSourceUrl
) {
ScaffoldWithIndefiniteSnackbar()
},
Example(
name = ::ScaffoldWithCustomSnackbar.name,
description = SnackbarsExampleDescription,
sourceUrl = SnackbarsExampleSourceUrl
) {
ScaffoldWithCustomSnackbar()
},
Example(
name = ::ScaffoldWithCoroutinesSnackbar.name,
description = SnackbarsExampleDescription,
sourceUrl = SnackbarsExampleSourceUrl
) {
ScaffoldWithCoroutinesSnackbar()
},
Example(
name = ::ScaffoldWithMultilineSnackbar.name,
description = SnackbarsExampleDescription,
sourceUrl = SnackbarsExampleSourceUrl
) {
ScaffoldWithMultilineSnackbar()
}
)
private const val SwitchExampleDescription = "Switch examples"
private const val SwitchExampleSourceUrl = "$SampleSourceUrl/SwitchSamples.kt"
val SwitchExamples = listOf(
Example(
name = ::SwitchSample.name,
description = SwitchExampleDescription,
sourceUrl = SwitchExampleSourceUrl
) {
SwitchSample()
},
Example(
name = ::SwitchWithThumbIconSample.name,
description = SwitchExampleDescription,
sourceUrl = SwitchExampleSourceUrl
) {
SwitchWithThumbIconSample()
},
)
private const val TabsExampleDescription = "Tabs examples"
private const val TabsExampleSourceUrl = "$SampleSourceUrl/TabSamples.kt"
val TabsExamples = listOf(
Example(
name = ::PrimaryTextTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
PrimaryTextTabs()
},
Example(
name = ::PrimaryIconTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
PrimaryIconTabs()
},
Example(
name = ::SecondaryTextTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
SecondaryTextTabs()
},
Example(
name = ::SecondaryIconTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
SecondaryIconTabs()
},
Example(
name = ::TextAndIconTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
TextAndIconTabs()
},
Example(
name = ::LeadingIconTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
LeadingIconTabs()
},
Example(
name = ::ScrollingPrimaryTextTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
ScrollingPrimaryTextTabs()
},
Example(
name = ::ScrollingSecondaryTextTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
ScrollingSecondaryTextTabs()
},
Example(
name = ::FancyTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
FancyTabs()
},
Example(
name = ::FancyIndicatorTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
FancyIndicatorTabs()
},
Example(
name = ::FancyIndicatorContainerTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
FancyIndicatorContainerTabs()
},
Example(
name = ::ScrollingFancyIndicatorContainerTabs.name,
description = TabsExampleDescription,
sourceUrl = TabsExampleSourceUrl
) {
ScrollingFancyIndicatorContainerTabs()
}
)
private const val TimePickerDescription = "Time Picker examples"
private const val TimePickerSourceUrl = "$SampleSourceUrl/TimePicker.kt"
val TimePickerExamples = listOf(
Example(
name = ::TimePickerSample.name,
description = TimePickerDescription,
sourceUrl = TimePickerSourceUrl
) {
TimePickerSample()
},
Example(
name = ::TimeInputSample.name,
description = TimePickerDescription,
sourceUrl = TimePickerSourceUrl
) {
TimeInputSample()
},
Example(
name = ::TimePickerSwitchableSample.name,
description = TimePickerDescription,
sourceUrl = TimePickerSourceUrl
) {
TimePickerSwitchableSample()
},
)
private const val TextFieldsExampleDescription = "Text fields examples"
private const val TextFieldsExampleSourceUrl = "$SampleSourceUrl/TextFieldSamples.kt"
val TextFieldsExamples = listOf(
Example(
name = ::SimpleTextFieldSample.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
SimpleTextFieldSample()
},
Example(
name = ::TextFieldSample.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
TextFieldSample()
},
Example(
name = ::SimpleOutlinedTextFieldSample.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
SimpleOutlinedTextFieldSample()
},
Example(
name = ::OutlinedTextFieldSample.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
OutlinedTextFieldSample()
},
Example(
name = ::TextFieldWithIcons.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
TextFieldWithIcons()
},
Example(
name = ::TextFieldWithPlaceholder.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
TextFieldWithPlaceholder()
},
Example(
name = ::TextFieldWithPrefixAndSuffix.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
TextFieldWithPrefixAndSuffix()
},
Example(
name = ::TextFieldWithErrorState.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
TextFieldWithErrorState()
},
Example(
name = ::TextFieldWithSupportingText.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
TextFieldWithSupportingText()
},
Example(
name = ::PasswordTextField.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
PasswordTextField()
},
Example(
name = ::TextFieldWithHideKeyboardOnImeAction.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
TextFieldWithHideKeyboardOnImeAction()
},
Example(
name = ::TextArea.name,
description = TextFieldsExampleDescription,
sourceUrl = TextFieldsExampleSourceUrl
) {
TextArea()
}
).map {
// By default text field samples are minimal and don't have a `width` modifier to restrict the
// width. As a result, they grow horizontally if enough text is typed. To prevent this behavior
// in Catalog app the code below restricts the width of every text field sample
it.copy(content = {
Box(
Modifier
.wrapContentWidth()
.width(280.dp)
) { it.content() }
})
}
private const val TooltipsExampleDescription = "Tooltips examples"
private const val TooltipsExampleSourceUrl = "$SampleSourceUrl/TooltipSamples.kt"
val TooltipsExamples = listOf(
Example(
name = ::PlainTooltipSample.name,
description = TooltipsExampleDescription,
sourceUrl = TooltipsExampleSourceUrl
) {
PlainTooltipSample()
},
Example(
name = ::PlainTooltipWithManualInvocationSample.name,
description = TooltipsExampleDescription,
sourceUrl = TooltipsExampleSourceUrl
) {
PlainTooltipWithManualInvocationSample()
},
Example(
name = ::RichTooltipSample.name,
description = TooltipsExampleDescription,
sourceUrl = TooltipsExampleSourceUrl
) {
RichTooltipSample()
},
Example(
name = ::RichTooltipWithManualInvocationSample.name,
description = TooltipsExampleDescription,
sourceUrl = TooltipsExampleSourceUrl
) {
RichTooltipWithManualInvocationSample()
}
)