Skip to content

Commit

Permalink
Introduce QuackTag component (#691)
Browse files Browse the repository at this point in the history
* Introduce QuackTag component

* Write a document

* Regenerate tag sugar components

* Generate CasaModels

* Update Catalog

* Regenerate aide rules

* Add missing details

* Write test code & Generate components snapshot

* Add a snapshot verify step to GitHub actions

* Prepare a new version

* Make spotless happy
  • Loading branch information
jisungbin committed May 17, 2023
1 parent cd19cba commit 635c84e
Show file tree
Hide file tree
Showing 23 changed files with 1,720 additions and 52 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/android-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ jobs:
- name: Run test
run: ./gradlew test --stacktrace

- name: Verify components snapshot
run: ./gradlew :ui:verifyRoborazziDebug

- name: Run ui test on ui module via gmd
if: contains(github.event.pull_request.labels.*.name, 'ui')
run: ./gradlew :ui:pixel4api30aospatdDebugAndroidTest -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ internal val aideModifiers: Map<String, List<String>> = run {
aide["button"] = listOf("icons")
aide["_icons"] = emptyList()

aide["tag"] = listOf("trailingIcon")
aide["_trailingIcon"] = emptyList()

aide["text"] = listOf("span", "highlight")
aide["_span"] = emptyList()
aide["_highlight"] = emptyList()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@ internal val quackComponents: Map<String, String> = run {
aide["QuackSecondarySmallButton"] = "button"
aide["QuackSecondaryRoundSmallButton"] = "button"

aide["QuackOutlinedTag"] = "tag"
aide["QuackFilledTag"] = "tag"
aide["QuackGrayscaleFlatTag"] = "tag"
aide["QuackGrayscaleOutlinedTag"] = "tag"
aide["QuackTag"] = "tag"
aide["QuackBaseTag"] = "tag"

aide["QuackBody1"] = "text"
aide["QuackBody2"] = "text"
aide["QuackBody3"] = "text"
Expand Down
2 changes: 1 addition & 1 deletion bom/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.0-alpha02
2023.05.17
154 changes: 154 additions & 0 deletions catalog/src/main/kotlin/team/duckie/quackquack/catalog/CasaModels.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
// This file was automatically generated by casa-processor.
// Do not modify it manually.
// @formatter:off
@file:Suppress("NoConsecutiveBlankLines", "PackageDirectoryMismatch", "Wrapping",
"TrailingCommaOnCallSite", "ArgumentListWrapping", "RedundantVisibilityModifier",
"UnusedImport", "NoUnusedImports", "SpacingAroundParens", "Indentation", "NoUnitReturn",
"RedundantUnitReturnType", "ModifierParameter", "KDocUnresolvedReference", "NoTrailingSpaces",
"NoMultipleSpaces", "ktlint")
@file:OptIn(ExperimentalQuackQuackApi::class)

import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextOverflow
import kotlin.Boolean
import kotlin.Function0
import kotlin.String
import kotlin.Suppress
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toImmutableList
import team.duckie.quackquack.casa.material.CasaModel
import team.duckie.quackquack.ui.sugar.QuackBody1
import team.duckie.quackquack.ui.sugar.QuackBody2
import team.duckie.quackquack.ui.sugar.QuackBody3
import team.duckie.quackquack.ui.sugar.QuackFilledTag
import team.duckie.quackquack.ui.sugar.QuackGrayscaleFlatTag
import team.duckie.quackquack.ui.sugar.QuackGrayscaleOutlinedTag
import team.duckie.quackquack.ui.sugar.QuackHeadLine1
import team.duckie.quackquack.ui.sugar.QuackHeadLine2
import team.duckie.quackquack.ui.sugar.QuackLarge1
import team.duckie.quackquack.ui.sugar.QuackMediumButton
import team.duckie.quackquack.ui.sugar.QuackOutlinedTag
import team.duckie.quackquack.ui.sugar.QuackPrimaryFilledSmallButton
import team.duckie.quackquack.ui.sugar.QuackPrimaryLargeButton
import team.duckie.quackquack.ui.sugar.QuackPrimaryOutlinedRoundSmallButton
import team.duckie.quackquack.ui.sugar.QuackPrimaryOutlinedSmallButton
import team.duckie.quackquack.ui.sugar.QuackSecondaryLargeButton
import team.duckie.quackquack.ui.sugar.QuackSecondaryRoundSmallButton
import team.duckie.quackquack.ui.sugar.QuackSecondarySmallButton
import team.duckie.quackquack.ui.sugar.QuackSubtitle
import team.duckie.quackquack.ui.sugar.QuackSubtitle2
import team.duckie.quackquack.ui.sugar.QuackTitle1
import team.duckie.quackquack.ui.sugar.QuackTitle2
import team.duckie.quackquack.ui.util.ExperimentalQuackQuackApi

private val buttonQuackButtonCasaModel: CasaModel = CasaModel(
name = "QuackButton",
domain = "button",
kdocDefaultSection = "버튼을 그립니다.",
components = persistentListOf<Pair<String, @Composable () -> Unit>>(
"QuackPrimaryLargeButton" to { QuackPrimaryLargeButton(
text = "QuackButton is experimental",
onClick = {},
) },
"QuackSecondaryLargeButton" to { QuackSecondaryLargeButton(
text = "QuackButton is experimental",
onClick = {},
) },
"QuackMediumButton" to { QuackMediumButton(
text = "QuackButton is experimental",
onClick = {},
) },
"QuackPrimaryFilledSmallButton" to { QuackPrimaryFilledSmallButton(
text = "QuackButton is experimental",
onClick = {},
) },
"QuackPrimaryOutlinedSmallButton" to { QuackPrimaryOutlinedSmallButton(
text = "QuackButton is experimental",
onClick = {},
) },
"QuackPrimaryOutlinedRoundSmallButton" to { QuackPrimaryOutlinedRoundSmallButton(
text = "QuackButton is experimental",
onClick = {},
) },
"QuackSecondarySmallButton" to { QuackSecondarySmallButton(
text = "QuackButton is experimental",
onClick = {},
) },
"QuackSecondaryRoundSmallButton" to { QuackSecondaryRoundSmallButton(
text = "QuackButton is experimental",
onClick = {},
) },
).toImmutableList(),
)


private val tagQuackTagCasaModel: CasaModel = CasaModel(
name = "QuackTag",
domain = "tag",
kdocDefaultSection = "태그를 그립니다.",
components = persistentListOf<Pair<String, @Composable () -> Unit>>(
"QuackOutlinedTag" to { QuackOutlinedTag(
text = "QuackTagPreview",
onClick = {},
) },
"QuackFilledTag" to { QuackFilledTag(
text = "QuackTagPreview",
onClick = {},
) },
"QuackGrayscaleFlatTag" to { QuackGrayscaleFlatTag(
text = "QuackTagPreview",
onClick = {},
) },
"QuackGrayscaleOutlinedTag" to { QuackGrayscaleOutlinedTag(
text = "QuackTagPreview",
onClick = {},
) },
).toImmutableList(),
)

private val textQuackTextCasaModel: CasaModel = CasaModel(
name = "QuackText",
domain = "text",
kdocDefaultSection = "텍스트를 그립니다.",
components = persistentListOf<Pair<String, @Composable () -> Unit>>(
"QuackBody1" to { QuackBody1(
text = "QuackText",
) },
"QuackBody2" to { QuackBody2(
text = "QuackText",
) },
"QuackBody3" to { QuackBody3(
text = "QuackText",
) },
"QuackHeadLine1" to { QuackHeadLine1(
text = "QuackText",
) },
"QuackHeadLine2" to { QuackHeadLine2(
text = "QuackText",
) },
"QuackLarge1" to { QuackLarge1(
text = "QuackText",
) },
"QuackSubtitle" to { QuackSubtitle(
text = "QuackText",
) },
"QuackSubtitle2" to { QuackSubtitle2(
text = "QuackText",
) },
"QuackTitle1" to { QuackTitle1(
text = "QuackText",
) },
"QuackTitle2" to { QuackTitle2(
text = "QuackText",
) },
).toImmutableList(),
)

public val casaModels: ImmutableList<CasaModel> = persistentListOf(
buttonQuackButtonCasaModel,
tagQuackTagCasaModel,
textQuackTextCasaModel,
)

Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
* Please see full license: https://github.com/duckie-team/quack-quack-android/blob/master/LICENSE
*/

@file:OptIn(ExperimentalQuackQuackApi::class)
@file:Suppress("UnnecessaryOptInAnnotation")

package team.duckie.quackquack.catalog

import android.os.Bundle
Expand All @@ -18,43 +21,31 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import casaModels
import team.duckie.quackquack.casa.ui.CasaScreen
import team.duckie.quackquack.casa.ui.theme.CasaTheme
import team.duckie.quackquack.ui.util.ExperimentalQuackQuackApi

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
CasaTheme {
// CasaScreen(models = casaModels)
CasaScreen(models = casaModels)
}
/*Preview {
var showIcons by remember { mutableStateOf(true) }
var enabled by remember { mutableStateOf(true) }
QuackButton(
modifier = Modifier.then(Modifier).applyIf(showIcons) {
icons(
leadingIcon = QuackIcon.Heart,
trailingIcon = QuackIcon.Heart,
)
},
enabled = enabled,
style = QuackButtonStyle.Large,
text = "Hello, World!",
) {
toast("Hello, World!")
}
QuackButton(
style = QuackButtonStyle.Medium,
text = "enabled state: $enabled",
) {
enabled = !enabled
}
QuackButton(
style = QuackButtonStyle.Small,
text = "showIcons state: $showIcons",
) {
showIcons = !showIcons
}
// var showTrailingIcon by remember { mutableStateOf(true) }
var selected by remember { mutableStateOf(true) }
QuackTag(
modifier = Modifier
.then(Modifier)
.trailingIcon(QuackIcon.Heart) { toast("HI: $selected") },
text = "QuackTagPreview",
style = QuackTagStyle.Filled,
selected = selected,
) {
selected = !selected
}
}*/
}
}
Expand Down
Loading

0 comments on commit 635c84e

Please sign in to comment.