Implementation samples for Glimmer Button component

When creating a Glimmer Button component, refer to the following implementation samples in ButtonSamples.kt:

/*
 * Copyright 2025 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.
 */

package androidx.xr.glimmer.samples

import androidx.annotation.Sampled
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.xr.glimmer.Button
import androidx.xr.glimmer.ButtonSize
import androidx.xr.glimmer.GlimmerTheme
import androidx.xr.glimmer.Icon
import androidx.xr.glimmer.Text
import androidx.xr.glimmer.list.GlimmerLazyColumn

@Composable
fun ButtonSampleUsage() {
    GlimmerLazyColumn(
        horizontalAlignment = Alignment.CenterHorizontally,
        modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.Center),
    ) {
        item { ButtonSample() }
        item { ButtonWithLeadingIconSample() }
        item { ButtonWithTrailingIconSample() }
        item { ButtonWithLeadingAndTrailingIconSample() }
        item { LargeButtonSample() }
        item { LargeButtonWithLeadingIconSample() }
        item { LargeButtonWithTrailingIconSample() }
        item { LargeButtonWithLeadingAndTrailingIconSample() }
    }
}

@Sampled
@Composable
fun ButtonSample() {
    Button(onClick = {}) { Text("Send") }
}

@Sampled
@Composable
fun ButtonWithLeadingIconSample() {
    Button(onClick = {}, leadingIcon = { Icon(FavoriteIcon, "Localized description") }) {
        Text("Send")
    }
}

@Composable
private fun ButtonWithTrailingIconSample() {
    Button(onClick = {}, trailingIcon = { Icon(FavoriteIcon, "Localized description") }) {
        Text("Send")
    }
}

@Composable
private fun ButtonWithLeadingAndTrailingIconSample() {
    Button(
        onClick = {},
        leadingIcon = { Icon(FavoriteIcon, "Localized description") },
        trailingIcon = { Icon(FavoriteIcon, "Localized description") },
    ) {
        Text("Send")
    }
}

@Sampled
@Composable
fun LargeButtonSample() {
    Button(onClick = {}, buttonSize = ButtonSize.Large) { Text("Send") }
}

@Composable
private fun LargeButtonWithLeadingIconSample() {
    Button(
        onClick = {},
        buttonSize = ButtonSize.Large,
        leadingIcon = { Icon(FavoriteIcon, "Localized description") },
    ) {
        Text("Send")
    }
}

@Composable
private fun LargeButtonWithTrailingIconSample() {
    Button(
        onClick = {},
        buttonSize = ButtonSize.Large,
        trailingIcon = { Icon(FavoriteIcon, "Localized description") },
    ) {
        Text("Send")
    }
}

@Composable
private fun LargeButtonWithLeadingAndTrailingIconSample() {
    Button(
        onClick = {},
        buttonSize = ButtonSize.Large,
        leadingIcon = { Icon(FavoriteIcon, "Localized description") },
        trailingIcon = { Icon(FavoriteIcon, "Localized description") },
    ) {
        Text("Send")
    }
}

@Preview
@Composable
private fun ButtonPreview() {
    GlimmerTheme { ButtonSample() }
}

@Preview
@Composable
private fun ButtonWithLeadingIconPreview() {
    GlimmerTheme { ButtonWithLeadingIconSample() }
}

@Preview
@Composable
private fun ButtonWithTrailingIconPreview() {
    GlimmerTheme { ButtonWithTrailingIconSample() }
}

@Preview
@Composable
private fun ButtonWithLeadingAndTrailingIconPreview() {
    GlimmerTheme { ButtonWithLeadingAndTrailingIconSample() }
}

@Preview
@Composable
private fun LargeButtonPreview() {
    GlimmerTheme { LargeButtonSample() }
}

@Preview
@Composable
private fun LargeButtonWithLeadingIconPreview() {
    GlimmerTheme { LargeButtonWithLeadingIconSample() }
}

@Preview
@Composable
private fun LargeButtonWithTrailingIconPreview() {
    GlimmerTheme { LargeButtonWithTrailingIconSample() }
}

@Preview
@Composable
private fun LargeButtonWithLeadingAndTrailingIconPreview() {
    GlimmerTheme { LargeButtonWithLeadingAndTrailingIconSample() }
}