diff --git a/.github/workflows/deployLibraryYDS.yml b/.github/workflows/deployLibraryYDS.yml index ea9c2cd6..c9faf9b5 100644 --- a/.github/workflows/deployLibraryYDS.yml +++ b/.github/workflows/deployLibraryYDS.yml @@ -46,4 +46,4 @@ jobs: release_name: Release ${{ steps.release_version.outputs.value }} - name: Upload to Slack - run: curl -F file=@"app/storybook/build/outputs/bundle/productionRelease/YDS-StoryBook-${{ steps.release_version.outputs.value }}($BUILD_NUMBER)-production-release.aab" -F "initial_comment=YDS ${{ steps.release_version.outputs.value }} 라이브러리가 등록되었슈~ https://jitpack.io/#yourssu/YDS-Android/${{ steps.release_version.outputs.value }} aab 파일은 스토어에 업로드 해유~" -F "channels=${{ secrets.SLACK_CHANNEL_ID }}" -H "Authorization:Bearer ${{ secrets.SLACK_WORKSPACE_TOKEN }}" https://slack.com/api/files.upload \ No newline at end of file + run: curl -F file=@"app/storybook/build/outputs/bundle/productionRelease/YDS-StoryBook-${{ steps.release_version.outputs.value }}($BUILD_NUMBER)-production-release.aab" -F "initial_comment=YDS ${{ steps.release_version.outputs.value }} 라이브러리가 등록되었슈~ https://jitpack.io/#yourssu/YDS-Android aab 파일은 스토어에 업로드 해유~" -F "channels=${{ secrets.SLACK_CHANNEL_ID }}" -H "Authorization:Bearer ${{ secrets.SLACK_WORKSPACE_TOKEN }}" https://slack.com/api/files.upload \ No newline at end of file diff --git a/.github/workflows/deployStoryBook.yml b/.github/workflows/deployStoryBook.yml index 83f34a9b..a70965fc 100644 --- a/.github/workflows/deployStoryBook.yml +++ b/.github/workflows/deployStoryBook.yml @@ -33,7 +33,9 @@ jobs: - name: Grant execute permission for gradlew run: chmod +x gradlew + - name: Build with Gradle run: ./gradlew --no-daemon :app:storybook:assembleDevRelease + - name: Upload to Slack - run: curl -F file=@"app/storybook/build/outputs/apk/dev/release/YDS-StoryBook-${{ steps.release_version.outputs.value }}($BUILD_NUMBER)-dev-release.apk" -F "initial_comment=개발중인 YDS StoryBook이 나왔슈~" -F "channels=${{ secrets.SLACK_CHANNEL_ID }}" -H "Authorization:Bearer ${{ secrets.SLACK_WORKSPACE_TOKEN }}" https://slack.com/api/files.upload \ No newline at end of file + run: curl -F file=@"app/storybook/build/outputs/apk/dev/release/YDS-StoryBook-${{ steps.release_version.outputs.value }}($BUILD_NUMBER)-dev-release.apk" -F "initial_comment=개발중인 YDS StoryBook이 나왔슈~" -F "channels=${{ secrets.SLACK_CHANNEL_ID_ANDROID }}" -H "Authorization:Bearer ${{ secrets.SLACK_WORKSPACE_TOKEN }}" https://slack.com/api/files.upload \ No newline at end of file diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/GlobalRule.kt b/DesignSystem/src/main/java/com/yourssu/design/system/GlobalRule.kt deleted file mode 100644 index ca730957..00000000 --- a/DesignSystem/src/main/java/com/yourssu/design/system/GlobalRule.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.yourssu.design.system - -/** - * YDS 를 사용하는 앱은 manifest 에 application theme 를 - * android:theme="@style/Theme.YourssuDesignSystem" - * 로 지정해야 한다 - */ - -/** - * 관리를 위해서 YDS 의 패키지 구조는 Figma 와 동일 혹은 유사해야한다 - */ - -/** - * 정적인 값은 가능하면 xml 에 정의하고 적용은 xml 에서 값을 가져와서 적용하는 형태를 취한다 - */ - -/** - * 뷰에 대해서 디자이너가 지정해준 (외부에서 정해주는) 속성은 DataBinding 을 지원할 수 있도록 해야한다 - * 일반적으론 get set 메소드를 만들어 줘야 하지만 코틀린은 property 를 통한 set 을 할 수 있으므로 - var value: Int = defaultValue - set(value) { - field = typo - } - * 위와 같은 형태로 제공한다 - */ - -/** - * 뷰를 생성하는 방법은 xml 을 통한 일반적인 방법과 코드를 통해 런타임에서 생성하는법 두가지를 제공해야한다 - * 이때 코드를 통한 런타임 제공 방식은 YDSL(YourssuDesignSystemLanguage) 방식을 따라야한다 - * 이에 대한 자세한 설명은 InfoYDSL 파일에 언급한다 - */ \ No newline at end of file diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/atom/BoxButton.kt b/DesignSystem/src/main/java/com/yourssu/design/system/atom/BoxButton.kt index ab151757..04643359 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/atom/BoxButton.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/atom/BoxButton.kt @@ -240,7 +240,7 @@ class BoxButton : LinearLayout { Small -> { layoutParams.height = context.dpToIntPx(32F) binding.text.typo = Typo.Button4 - binding.leftIcon.size = IconView.Small + binding.leftIcon.size = IconView.ExtraSmall binding.boxButtonFrame.setPadding( context.dpToIntPx(12F), 0, diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/atom/Divider.kt b/DesignSystem/src/main/java/com/yourssu/design/system/atom/Divider.kt index b3ecd681..72dd27ae 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/atom/Divider.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/atom/Divider.kt @@ -1,12 +1,9 @@ package com.yourssu.design.system.atom import android.content.Context -import android.graphics.Canvas -import android.graphics.drawable.ShapeDrawable import android.util.AttributeSet import android.view.View import androidx.annotation.* -import androidx.core.content.ContextCompat import androidx.databinding.BindingAdapter import com.yourssu.design.R import com.yourssu.design.undercarriage.size.dpToIntPx @@ -36,51 +33,34 @@ class Divider : View { requestLayout() } - @ColorInt - private var dividerColor: Int = ContextCompat.getColor(context, R.color.borderNormal) - @Px private var dividerThicknessInPx: Int = 0 - private var dividerDrawable: ShapeDrawable = ShapeDrawable() - private fun setDividerInfo() { val thickness = getThickness(thickness) val color = getDividerColor(this.thickness) - dividerThicknessInPx = - context.dpToIntPx(resources.getDimensionPixelSize(thickness).toFloat()) - dividerColor = context.getColor(color) - } - - override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { - val width = MeasureSpec.getSize(widthMeasureSpec) - val height = MeasureSpec.getSize(heightMeasureSpec) + setBackgroundColor(context.getColor(color)) - if (direction == HORIZONTAL) { - setMeasuredDimension(width, dividerThicknessInPx) - } else { - setMeasuredDimension(dividerThicknessInPx, height) - } + dividerThicknessInPx = if (this.thickness == THIN) + 1 // THIN 일 경우만 예외적으로 1px 사용해야함 + else + context.dpToIntPx(thickness) } - override fun onDraw(canvas: Canvas) { - super.onDraw(canvas) + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { if (direction == HORIZONTAL) { - dividerDrawable.setBounds(0, 0, width, dividerThicknessInPx) + setMeasuredDimension(widthMeasureSpec, dividerThicknessInPx) } else { - dividerDrawable.setBounds(0, 0, dividerThicknessInPx, height) + setMeasuredDimension(dividerThicknessInPx, heightMeasureSpec) } - dividerDrawable.paint.color = dividerColor - dividerDrawable.draw(canvas) } - @DimenRes private fun getThickness(thickness: Int) = when (thickness) { - THIN -> R.dimen.thin - THICK -> R.dimen.thick - else -> R.dimen.thin + THIN -> 1f + THICK -> 8f + else -> 1f } @ColorRes diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/atom/EditText.kt b/DesignSystem/src/main/java/com/yourssu/design/system/atom/EditText.kt new file mode 100644 index 00000000..4b8242b8 --- /dev/null +++ b/DesignSystem/src/main/java/com/yourssu/design/system/atom/EditText.kt @@ -0,0 +1,120 @@ +package com.yourssu.design.system.atom + +import android.content.Context +import android.graphics.Color +import android.util.AttributeSet +import android.util.Log +import androidx.appcompat.widget.AppCompatEditText +import androidx.core.content.ContextCompat +import androidx.databinding.BindingAdapter +import com.yourssu.design.R +import com.yourssu.design.system.foundation.Typo +import com.yourssu.design.system.foundation.Typography +import com.yourssu.design.undercarriage.size.getDimenFloat + +class EditText @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : AppCompatEditText(context, attrs, defStyleAttr) { + + init { + setTextColor(ContextCompat.getColor(context, R.color.textPrimary)) + setBackgroundColor(Color.TRANSPARENT) + setHintTextColor(ContextCompat.getColor(context, R.color.textTertiary)) + isFocusableInTouchMode = true + } + + private var text: String = "" + set(text) { + field = text + changeText() + } + + private var hint: String = "" + set(text) { + field = text + changeHint() + } + + @Typography + private var typo: Int = Typo.SubTitle1 + set(@Typography typo) { + field = typo + setTextInfo() + } + + private var editTextType: Int = TITLE + set(value) { + field = value + changeEditTextType() + } + + private fun changeHint() { + setHint(hint) + } + + private fun setTextInfo() { + setTextAppearance(Typo.getStyle(typo)) + + // 폰트의 커스텀 padding 제거 + includeFontPadding = false + + // 폰트가 가지고 있는 lineHeight 값 추출 + val fontLineHeight = paint.getFontMetrics(paint.fontMetrics) + + // 디자이너가 요청한 lineHeight 값 + val figmaLineHeight = context.getDimenFloat(Typo.getLineHeight(typo)) + + // 줄 간 간격인 lineSpacing 이자 (topPadding, bottomPadding) 의 합 + val lineSpacing = figmaLineHeight - fontLineHeight + + setPadding(0, lineSpacing.toInt() / 2, 0, lineSpacing.toInt() / 2) + setLineSpacing(lineSpacing, 1f) + } + + private fun changeEditTextType() { + typo = when (editTextType) { + TITLE -> { + Typo.SubTitle1 + } + CONTENT -> { + Typo.Body1 + } + else -> { + Typo.SubTitle1 + } + } + Log.d("KWK", Typo.getName(typo)) + } + + private fun changeText() { + setText(text) + requestLayout() + invalidate() + } + + companion object { + const val TITLE = 0 + const val CONTENT = 1 + + @JvmStatic + @BindingAdapter("android:hint") + fun setHint(editText: EditText, hint: String) { + editText.hint = hint + } + + @JvmStatic + @BindingAdapter("android:text") + fun setText(editText: EditText, text: String) { + editText.text = text + } + + @JvmStatic + @BindingAdapter("editTextType") + fun setEditTextType(editText: EditText, editTextType: Int) { + editText.editTextType = editTextType + } + } + +} \ No newline at end of file diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/atom/PasswordTextField.kt b/DesignSystem/src/main/java/com/yourssu/design/system/atom/PasswordTextField.kt index d0458276..3aec05f3 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/atom/PasswordTextField.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/atom/PasswordTextField.kt @@ -81,6 +81,17 @@ class PasswordTextField @JvmOverloads constructor( LayoutInflater.from(context), this, true ) binding.onClickListener = getEyeIconClickListener() + binding.edittext.setOnFocusChangeListener { v, hasFocus -> + binding.eyeIcon.visibility = if (hasFocus) { + if (binding.edittext.text.isNotEmpty()) { + VISIBLE + } else { + GONE + } + } else { + GONE + } + } } @SuppressLint("CustomViewStyleable") @@ -99,6 +110,10 @@ class PasswordTextField @JvmOverloads constructor( } } + override fun setOnEditorActionListener(onEditorActionListener: TextView.OnEditorActionListener) { + binding.edittext.setOnEditorActionListener(onEditorActionListener) + } + override fun extendSelection(index: Int) { binding.edittext.extendSelection(index) } @@ -157,29 +172,37 @@ class PasswordTextField @JvmOverloads constructor( } override fun setDisabledTextColor() { + setEditTextTextColor(R.color.textDisabled) setPlaceholderTextColor(R.color.textDisabled) setFieldLabelTextColor(R.color.textDisabled) setHelperLabelTextColor(R.color.textDisabled) } override fun setPositiveTextColor() { + setEditTextTextColor(R.color.textSecondary) setPlaceholderTextColor(R.color.textTertiary) setFieldLabelTextColor(R.color.textSecondary) setHelperLabelTextColor(R.color.textTertiary) } override fun setNegativeTextColor() { + setEditTextTextColor(R.color.textSecondary) setPlaceholderTextColor(R.color.textTertiary) setFieldLabelTextColor(R.color.textSecondary) setHelperLabelTextColor(R.color.textWarned) } override fun setDefaultTextColor() { + setEditTextTextColor(R.color.textSecondary) setPlaceholderTextColor(R.color.textTertiary) setFieldLabelTextColor(R.color.textSecondary) setHelperLabelTextColor(R.color.textTertiary) } + override fun setEditTextTextColor(color: Int) { + binding.edittext.setTextColor(resources.getColor(color, null)) + } + override fun setPlaceholderTextColor(color: Int) { binding.edittext.setHintTextColor(resources.getColor(color, null)) } diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/atom/PlainButton.kt b/DesignSystem/src/main/java/com/yourssu/design/system/atom/PlainButton.kt index 4dfc426b..4c55b098 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/atom/PlainButton.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/atom/PlainButton.kt @@ -88,7 +88,7 @@ class PlainButton @JvmOverloads constructor( setButtonInfo() } - MotionEvent.ACTION_UP -> { + MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { isPressed = false setButtonInfo() } diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/atom/ProfileImageView.kt b/DesignSystem/src/main/java/com/yourssu/design/system/atom/ProfileImageView.kt index 2dabee5b..7cd673cf 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/atom/ProfileImageView.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/atom/ProfileImageView.kt @@ -126,11 +126,11 @@ class ProfileImageView @JvmOverloads constructor( const val ExtraLarge = 3 const val ExtraSmall = 4 - private const val SmallSize = 36f + private const val SmallSize = 32f private const val MediumSize = 48f private const val LargeSize = 72f private const val ExtraLargeSize = 96f - private const val ExtraSmallSize = 32f + private const val ExtraSmallSize = 24f private const val ExtraMargin = 1f // stoke 가 path 를 기준으로 양쪽에 표시되기 때문에 짤린것처럼 보인다 이를 보안하기 위한 여분의 마진 diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/atom/SearchTextField.kt b/DesignSystem/src/main/java/com/yourssu/design/system/atom/SearchTextField.kt index d1200347..ab4126ad 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/atom/SearchTextField.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/atom/SearchTextField.kt @@ -29,6 +29,15 @@ class SearchTextField @JvmOverloads constructor( searchTextField.setText(text, TextView.BufferType.EDITABLE) } + @JvmStatic + @BindingAdapter("android:onEditorAction") + fun setOnEditorActionListener( + searchTextField: SearchTextField, + onEditorActionListener: TextView.OnEditorActionListener + ) { + searchTextField.binding.edittext.setOnEditorActionListener(onEditorActionListener) + } + @JvmStatic @BindingAdapter("isDisabled") fun setIsDisabled(searchTextField: SearchTextField, isDisabled: Boolean) { @@ -98,6 +107,19 @@ class SearchTextField @JvmOverloads constructor( init { initView(context, attrs) + addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + setIconColor() + } + + override fun afterTextChanged(s: Editable?) { + + } + }) } var isDisabled: Boolean = false @@ -150,6 +172,17 @@ class SearchTextField @JvmOverloads constructor( binding = LayoutSearchTextFieldBinding.inflate( LayoutInflater.from(context), this, true ) + binding.edittext.setOnFocusChangeListener { v, hasFocus -> + binding.btn.visibility = if (hasFocus) { + if (binding.edittext.text.isNotEmpty()) { + VISIBLE + } else { + GONE + } + } else { + GONE + } + } } @SuppressLint("CustomViewStyleable") @@ -219,6 +252,10 @@ class SearchTextField @JvmOverloads constructor( binding.edittext.removeTextChangedListener(watcher) } + private fun setEditTextTextColor(color: Int) { + binding.edittext.setTextColor(resources.getColor(color, null)) + } + private fun setPlaceholderTextColor(color: Int) { binding.edittext.setHintTextColor(resources.getColor(color, null)) } @@ -231,9 +268,6 @@ class SearchTextField @JvmOverloads constructor( setIconColor() setTextColor() binding.edittext.isEnabled = !isDisabled - if (isDisabled) { - setText("", TextView.BufferType.EDITABLE) - } } private fun setIconColor() { @@ -241,18 +275,23 @@ class SearchTextField @JvmOverloads constructor( isDisabled -> { setSearchIconColor(R.color.textDisabled) } - else -> { + binding.edittext.text.isEmpty() -> { setSearchIconColor(R.color.textTertiary) } + else -> { + setSearchIconColor(R.color.textSecondary) + } } } private fun setTextColor() { when { isDisabled -> { + setEditTextTextColor(R.color.textDisabled) setPlaceholderTextColor(R.color.textDisabled) } else -> { + setEditTextTextColor(R.color.textSecondary) setPlaceholderTextColor(R.color.textTertiary) } } diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/atom/SimpleTextField.kt b/DesignSystem/src/main/java/com/yourssu/design/system/atom/SimpleTextField.kt index affac936..74e7e750 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/atom/SimpleTextField.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/atom/SimpleTextField.kt @@ -77,6 +77,17 @@ class SimpleTextField @JvmOverloads constructor( binding = LayoutSimpleTextFieldBinding.inflate( LayoutInflater.from(context), this, true ) + binding.edittext.setOnFocusChangeListener { v, hasFocus -> + binding.btn.visibility = if (hasFocus) { + if (binding.edittext.text.isNotEmpty()) { + VISIBLE + } else { + GONE + } + } else { + GONE + } + } } @SuppressLint("CustomViewStyleable") @@ -99,6 +110,10 @@ class SimpleTextField @JvmOverloads constructor( } } + override fun setOnEditorActionListener(onEditorActionListener: TextView.OnEditorActionListener) { + binding.edittext.setOnEditorActionListener(onEditorActionListener) + } + override fun extendSelection(index: Int) { binding.edittext.extendSelection(index) } @@ -157,29 +172,37 @@ class SimpleTextField @JvmOverloads constructor( } override fun setDisabledTextColor() { + setEditTextTextColor(R.color.textDisabled) setPlaceholderTextColor(R.color.textDisabled) setFieldLabelTextColor(R.color.textDisabled) setHelperLabelTextColor(R.color.textDisabled) } override fun setPositiveTextColor() { + setEditTextTextColor(R.color.textSecondary) setPlaceholderTextColor(R.color.textTertiary) setFieldLabelTextColor(R.color.textSecondary) setHelperLabelTextColor(R.color.textTertiary) } override fun setNegativeTextColor() { + setEditTextTextColor(R.color.textSecondary) setPlaceholderTextColor(R.color.textTertiary) setFieldLabelTextColor(R.color.textSecondary) setHelperLabelTextColor(R.color.textWarned) } override fun setDefaultTextColor() { + setEditTextTextColor(R.color.textSecondary) setPlaceholderTextColor(R.color.textTertiary) setFieldLabelTextColor(R.color.textSecondary) setHelperLabelTextColor(R.color.textTertiary) } + override fun setEditTextTextColor(color: Int) { + binding.edittext.setTextColor(resources.getColor(color, null)) + } + override fun setPlaceholderTextColor(color: Int) { binding.edittext.setHintTextColor(resources.getColor(color, null)) } diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/atom/SuffixTextField.kt b/DesignSystem/src/main/java/com/yourssu/design/system/atom/SuffixTextField.kt index 69df0cc3..ddf3aae2 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/atom/SuffixTextField.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/atom/SuffixTextField.kt @@ -115,6 +115,10 @@ class SuffixTextField @JvmOverloads constructor( } } + override fun setOnEditorActionListener(onEditorActionListener: TextView.OnEditorActionListener) { + binding.edittext.setOnEditorActionListener(onEditorActionListener) + } + override fun extendSelection(index: Int) { binding.edittext.extendSelection(index) } @@ -173,6 +177,7 @@ class SuffixTextField @JvmOverloads constructor( } override fun setDisabledTextColor() { + setEditTextTextColor(R.color.textDisabled) setPlaceholderTextColor(R.color.textDisabled) setFieldLabelTextColor(R.color.textDisabled) setHelperLabelTextColor(R.color.textDisabled) @@ -180,6 +185,7 @@ class SuffixTextField @JvmOverloads constructor( } override fun setPositiveTextColor() { + setEditTextTextColor(R.color.textSecondary) setPlaceholderTextColor(R.color.textTertiary) setFieldLabelTextColor(R.color.textSecondary) setHelperLabelTextColor(R.color.textTertiary) @@ -187,6 +193,7 @@ class SuffixTextField @JvmOverloads constructor( } override fun setNegativeTextColor() { + setEditTextTextColor(R.color.textSecondary) setPlaceholderTextColor(R.color.textTertiary) setFieldLabelTextColor(R.color.textSecondary) setHelperLabelTextColor(R.color.textWarned) @@ -194,12 +201,17 @@ class SuffixTextField @JvmOverloads constructor( } override fun setDefaultTextColor() { + setEditTextTextColor(R.color.textSecondary) setPlaceholderTextColor(R.color.textTertiary) setFieldLabelTextColor(R.color.textSecondary) setHelperLabelTextColor(R.color.textTertiary) setSuffixLabelTextColor(R.color.textTertiary) } + override fun setEditTextTextColor(color: Int) { + binding.edittext.setTextColor(resources.getColor(color, null)) + } + override fun setPlaceholderTextColor(color: Int) { binding.edittext.setHintTextColor(resources.getColor(color, null)) } diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/atom/Text.kt b/DesignSystem/src/main/java/com/yourssu/design/system/atom/Text.kt index c4a23cdb..556412ff 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/atom/Text.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/atom/Text.kt @@ -2,15 +2,13 @@ package com.yourssu.design.system.atom import android.content.Context import android.util.AttributeSet -import android.view.ViewGroup import androidx.appcompat.widget.AppCompatTextView import com.yourssu.design.R import com.yourssu.design.system.foundation.Typo import com.yourssu.design.system.foundation.Typography import com.yourssu.design.undercarriage.size.getDimenFloat -import com.yourssu.design.system.language.ComponentGroup -class Text: AppCompatTextView { +open class Text: AppCompatTextView { constructor(context: Context) : super(context) { initView(context, null) } @@ -41,11 +39,30 @@ class Text: AppCompatTextView { } } + /** 폰트가 가지고 있는 기본 lineHeight (우측 링크 참고) */ // https://velog.io/@tura/typography-sync + /** 디자이너는 Baseline To Cap-Height 를 사용한다 (피그마 기준) + * 반면 개발자가 wrap-content 로 구현하면 폰트가 가지고 있는 기본 lineHeight 의 영향을 받게됨 + * 이 수치는 includeFontPadding 과는 별개의 값임 + * 따라서 폰트의 lineHeight 를 구해서 수치 계산시 차이를 계산하고 차이만큼 padding 을 넣어 보정해줘야함 + * 디자이너가 요청한 LineHeight 값 == figmaLineHeight + * 폰트의 LineHeight 값 == fontLineHeight + * lineSpacing = figmaLineHeight - fontLineHeight + * topPadding == bottomPadding == (lineSpacing / 2) */ private fun setTextInfo() { + // 폰트 적용 setTextAppearance(Typo.getStyle(typo)) + + // 폰트의 커스텀 padding 제거 includeFontPadding = false - val lineHeightPx = context.getDimenFloat(Typo.getLineHeight(typo)) - val lineSpacing = lineHeightPx - textSize.toInt() + + // 폰트가 가지고 있는 lineHeight 값 추출 + val fontLineHeight = paint.getFontMetrics(paint.fontMetrics) + + // 디자이너가 요청한 lineHeight 값 + val figmaLineHeight = context.getDimenFloat(Typo.getLineHeight(typo)) + + // 줄 간 간격인 lineSpacing 이자 (topPadding, bottomPadding) 의 합 + val lineSpacing = figmaLineHeight - fontLineHeight setPadding(0, lineSpacing.toInt() / 2, 0, lineSpacing.toInt() / 2) setLineSpacing(lineSpacing, 1f) diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/atom/TopBarButton.kt b/DesignSystem/src/main/java/com/yourssu/design/system/atom/TopBarButton.kt index 196ee2b4..d8db63b8 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/atom/TopBarButton.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/atom/TopBarButton.kt @@ -41,7 +41,6 @@ class TopBarButton : LinearLayout { var text = "" set(value) { field = value - hasIcon = text == "" binding.topBarButtonText.text = text setTopBarButtonInfo() requestLayout() @@ -54,6 +53,8 @@ class TopBarButton : LinearLayout { if (value != null) { hasIcon = true binding.topBarButtonIcon.icon = value + } else { + hasIcon = false } setTopBarButtonInfo() requestLayout() @@ -73,8 +74,8 @@ class TopBarButton : LinearLayout { } private fun setButtonVisibility() { + binding.topBarButtonText.isVisible = !hasIcon && text.isNotEmpty() binding.topBarButtonIcon.isVisible = hasIcon - binding.topBarButtonText.isVisible = !hasIcon } private fun setButtonColor() { diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/component/BottomBar.kt b/DesignSystem/src/main/java/com/yourssu/design/system/component/BottomBar.kt index 82271c89..bb12289d 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/component/BottomBar.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/component/BottomBar.kt @@ -33,7 +33,10 @@ class BottomBar @JvmOverloads constructor( fun tabLongClicked(itemIndex: Int) } - lateinit var binding: LayoutBottomBarBinding + private val binding: LayoutBottomBarBinding by lazy { + LayoutBottomBarBinding.inflate(LayoutInflater.from(context), this, true) + } + private var isCanChangeTab = true private var tabList = listOf() private var bindingMap: MutableMap = mutableMapOf() @@ -48,7 +51,6 @@ class BottomBar @JvmOverloads constructor( } private fun initialize(attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) { - binding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.layout_bottom_bar, this, true) context.withStyledAttributes(attrs, R.styleable.BottomBar, defStyleAttr, defStyleRes) { bottomTabType.set(getInteger(R.styleable.BottomBar_selectedIndex, 0)) @@ -66,7 +68,7 @@ class BottomBar @JvmOverloads constructor( private fun updateTabStatus() { binding.tabArea.removeAllViews() tabList.forEachIndexed { index, bottomTabInfo -> - val item: ItemBottomTabBinding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.item_bottom_tab, this, false) + val item: ItemBottomTabBinding = ItemBottomTabBinding.inflate(LayoutInflater.from(context), this, false) bindingMap[index] = item diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/component/DoubleTitleTopBar.kt b/DesignSystem/src/main/java/com/yourssu/design/system/component/DoubleTitleTopBar.kt index de219769..12b20ea4 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/component/DoubleTitleTopBar.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/component/DoubleTitleTopBar.kt @@ -12,7 +12,7 @@ import com.yourssu.design.system.foundation.Icon class DoubleTitleTopBar @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, - defStyleAttr: Int = 0 + defStyleAttr: Int = 0, ) : ConstraintLayout(context, attrs, defStyleAttr) { private val binding: LayoutDoubleTitleTopBarBinding = LayoutDoubleTitleTopBarBinding.inflate(LayoutInflater.from(context), this, true) @@ -68,6 +68,24 @@ class DoubleTitleTopBar @JvmOverloads constructor( binding.thirdButton.icon = icon } + var firstText: String = "" + set(value) { + field = value + binding.firstButton.text = value + } + + var secondText: String = "" + set(value) { + field = value + binding.secondButton.text = value + } + + var thirdText: String = "" + set(value) { + field = value + binding.thirdButton.text = value + } + companion object { @JvmStatic @BindingAdapter("title") @@ -99,11 +117,29 @@ class DoubleTitleTopBar @JvmOverloads constructor( doubleTitleTopBar.thirdIcon = icon } + @JvmStatic + @BindingAdapter("firstText") + fun setFirstText(singleTitleTopBar: SingleTitleTopBar, value: String) { + singleTitleTopBar.firstText = value + } + + @JvmStatic + @BindingAdapter("secondText") + fun setSecondText(singleTitleTopBar: SingleTitleTopBar, value: String) { + singleTitleTopBar.secondText = value + } + + @JvmStatic + @BindingAdapter("thirdText") + fun setThirdText(singleTitleTopBar: SingleTitleTopBar, value: String) { + singleTitleTopBar.thirdText = value + } + @JvmStatic @BindingAdapter("firstButtonClickListener") fun setFirstButtonClickListener( doubleTitleTopBar: DoubleTitleTopBar, - onClickListener:OnClickListener + onClickListener: OnClickListener, ) { doubleTitleTopBar.firstButtonListener = onClickListener } @@ -112,7 +148,7 @@ class DoubleTitleTopBar @JvmOverloads constructor( @BindingAdapter("secondButtonClickListener") fun setSecondButtonClickListener( doubleTitleTopBar: DoubleTitleTopBar, - onClickListener:OnClickListener + onClickListener: OnClickListener, ) { doubleTitleTopBar.secondButtonListener = onClickListener } @@ -121,7 +157,7 @@ class DoubleTitleTopBar @JvmOverloads constructor( @BindingAdapter("thirdButtonClickListener") fun setThirdButtonClickListener( doubleTitleTopBar: DoubleTitleTopBar, - onClickListener:OnClickListener + onClickListener: OnClickListener, ) { doubleTitleTopBar.thirdButtonListener = onClickListener } diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/component/SearchTopBar.kt b/DesignSystem/src/main/java/com/yourssu/design/system/component/SearchTopBar.kt new file mode 100644 index 00000000..1691b736 --- /dev/null +++ b/DesignSystem/src/main/java/com/yourssu/design/system/component/SearchTopBar.kt @@ -0,0 +1,190 @@ +package com.yourssu.design.system.component + +import android.annotation.SuppressLint +import android.content.Context +import android.content.res.TypedArray +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.util.AttributeSet +import android.util.Log +import android.view.LayoutInflater +import android.widget.LinearLayout +import android.widget.TextView +import androidx.databinding.BindingAdapter +import androidx.databinding.InverseBindingListener +import androidx.databinding.adapters.ListenerUtil +import com.yourssu.design.R +import com.yourssu.design.databinding.LayoutSearchTopBarBinding +import com.yourssu.design.system.atom.SearchTextField + +class SearchTopBar @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr) { + + private val binding = + LayoutSearchTopBarBinding.inflate(LayoutInflater.from(context), this, true) + + init { + initAttributes(context, attrs) + } + + var leftArrowButtonClickListener: OnClickListener? = null + set(value) { + binding.leftArrowButton.setOnClickListener(value) + } + + var text: Editable + get() { + return binding.searchTextField.text + } + set(value) { + binding.searchTextField.text = value + } + + var isDisabled: Boolean + set(value) { + binding.searchTextField.isDisabled = value + } + get() { + return binding.searchTextField.isDisabled + } + + var placeholderText: CharSequence + get() { + return binding.searchTextField.placeholderText + } + set(value) { + binding.searchTextField.placeholderText = value + } + + var inputType: Int + get() { + return binding.searchTextField.inputType + } + set(value) { + binding.searchTextField.inputType = value + } + + var imeOptions: Int + set(value) { + binding.searchTextField.imeOptions = value + } + get() { + return binding.searchTextField.imeOptions + } + + @SuppressLint("CustomViewStyleable") + private fun initAttributes(context: Context, attrs: AttributeSet?) { + if (attrs != null) { + val typedArray: TypedArray = + context.obtainStyledAttributes(attrs, R.styleable.TextField) + + setText( + typedArray.getString(R.styleable.TextField_android_text) ?: "", + TextView.BufferType.EDITABLE + ) + + typedArray.recycle() + } + } + + fun extendSelection(index: Int) { + binding.searchTextField.extendSelection(index) + } + + fun getFreezesText(): Boolean { + return binding.searchTextField.getFreezesText() + } + + fun selectAll() { + binding.searchTextField.selectAll() + } + + fun setEllipsize(ellipsis: TextUtils.TruncateAt) { + binding.searchTextField.setEllipsize(ellipsis) + } + + fun setSelection(start: Int, stop: Int) { + binding.searchTextField.setSelection(start, stop) + } + + fun setSelection(index: Int) { + binding.searchTextField.setSelection(index) + } + + fun setText(text: CharSequence, type: TextView.BufferType) { + binding.searchTextField.setText(text, type) + } + + fun setText(resid: Int) { + binding.searchTextField.setText(resid) + } + + fun setText(resid: Int, type: TextView.BufferType) { + binding.searchTextField.setText(resid, type) + } + + fun setText(text: CharArray, start: Int, len: Int) { + binding.searchTextField.setText(text, start, len) + } + + companion object { + @JvmStatic + @BindingAdapter("onLeftArrowButtonClick") + fun setOnLeftArrowButtonClickListener( + searchTopBar: SearchTopBar, + leftArrowButtonClickListener: OnClickListener + ) { + searchTopBar.leftArrowButtonClickListener = leftArrowButtonClickListener + } + + @JvmStatic + @BindingAdapter( + value = ["android:beforeTextChanged", "android:onTextChanged", "android:afterTextChanged", "android:textAttrChanged"], + requireAll = false + ) + fun setTextWatcher( + searchTopBar: SearchTopBar, + before: SearchTextField.BeforeTextChanged?, + on: SearchTextField.OnTextChanged?, + after: SearchTextField.AfterTextChanged?, + textAttrChanged: InverseBindingListener? + ) { + SearchTextField.setTextWatcher(searchTopBar.binding.searchTextField, before, on, after, textAttrChanged) + } + + @JvmStatic + @BindingAdapter("android:text") + fun setText(searchTopBar: SearchTopBar, text: String) { + Log.d("hello", text) + searchTopBar.setText(text, TextView.BufferType.EDITABLE) + } + + @JvmStatic + @BindingAdapter("android:onEditorAction") + fun setOnEditorActionListener( + searchTopBar: SearchTopBar, + onEditorActionListener: TextView.OnEditorActionListener + ) { + SearchTextField.setOnEditorActionListener( + searchTopBar.binding.searchTextField, + onEditorActionListener + ) + } + + @JvmStatic + @BindingAdapter("placeholderText") + fun setPlaceHolderText(searchTopBar: SearchTopBar, placeholderText: String) { + searchTopBar.placeholderText = placeholderText + } + + @JvmStatic + @BindingAdapter("isDisabled") + fun setIsDisabled(searchTopBar: SearchTopBar, isDisabled: Boolean) { + searchTopBar.isDisabled = isDisabled + } + } +} \ No newline at end of file diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/component/SingleTitleTopBar.kt b/DesignSystem/src/main/java/com/yourssu/design/system/component/SingleTitleTopBar.kt index 7cd33142..de4d1255 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/component/SingleTitleTopBar.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/component/SingleTitleTopBar.kt @@ -3,9 +3,11 @@ package com.yourssu.design.system.component import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater +import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import androidx.databinding.BindingAdapter import com.yourssu.design.databinding.LayoutSingleTitleTopBarBinding +import com.yourssu.design.system.foundation.Icon class SingleTitleTopBar @JvmOverloads constructor( context: Context, @@ -18,12 +20,65 @@ class SingleTitleTopBar @JvmOverloads constructor( var title: String = "" set(title) { field = title - setTitleText() + binding.title.text = title } - private fun setTitleText() { - binding.title.text = title - } + var firstButtonListener: OnClickListener? = null + set(clickListener) { + field = clickListener + binding.firstButton.setOnClickListener(firstButtonListener) + } + + var secondButtonListener: OnClickListener? = null + set(clickListener) { + field = clickListener + binding.secondButton.setOnClickListener(secondButtonListener) + } + + var thirdButtonListener: OnClickListener? = null + set(clickListener) { + field = clickListener + binding.thirdButton.setOnClickListener(thirdButtonListener) + } + + @Icon.Iconography + var firstIcon: Int? = null + set(icon) { + field = icon + binding.firstButton.icon = icon + } + + @Icon.Iconography + var secondIcon: Int? = null + set(icon) { + field = icon + binding.secondButton.icon = icon + } + + @Icon.Iconography + var thirdIcon: Int? = null + set(icon) { + field = icon + binding.thirdButton.icon = icon + } + + var firstText: String = "" + set(value) { + field = value + binding.firstButton.text = value + } + + var secondText: String = "" + set(value) { + field = value + binding.secondButton.text = value + } + + var thirdText: String = "" + set(value) { + field = value + binding.thirdButton.text = value + } companion object { @JvmStatic @@ -31,5 +86,68 @@ class SingleTitleTopBar @JvmOverloads constructor( fun setTitle(singleTitleTopBar: SingleTitleTopBar, title: String) { singleTitleTopBar.title = title } + + @JvmStatic + @BindingAdapter("firstIcon") + fun setFirstIcon(singleTitleTopBar: SingleTitleTopBar, @Icon.Iconography icon: Int?) { + singleTitleTopBar.firstIcon = icon + } + + @JvmStatic + @BindingAdapter("secondIcon") + fun setSecondIcon(singleTitleTopBar: SingleTitleTopBar, @Icon.Iconography icon: Int?) { + singleTitleTopBar.secondIcon = icon + } + + @JvmStatic + @BindingAdapter("thirdIcon") + fun setThirdIcon(singleTitleTopBar: SingleTitleTopBar, @Icon.Iconography icon: Int?) { + singleTitleTopBar.thirdIcon = icon + } + + @JvmStatic + @BindingAdapter("firstText") + fun setFirstText(singleTitleTopBar: SingleTitleTopBar, value: String) { + singleTitleTopBar.firstText = value + } + + @JvmStatic + @BindingAdapter("secondText") + fun setSecondText(singleTitleTopBar: SingleTitleTopBar, value: String) { + singleTitleTopBar.secondText = value + } + + @JvmStatic + @BindingAdapter("thirdText") + fun setThirdText(singleTitleTopBar: SingleTitleTopBar, value: String) { + singleTitleTopBar.thirdText = value + } + + @JvmStatic + @BindingAdapter("firstButtonClickListener") + fun setFirstButtonClickListener( + singleTitleTopBar: SingleTitleTopBar, + onClickListener: OnClickListener + ) { + singleTitleTopBar.firstButtonListener = onClickListener + } + + @JvmStatic + @BindingAdapter("secondButtonClickListener") + fun setSecondButtonClickListener( + singleTitleTopBar: SingleTitleTopBar, + onClickListener: OnClickListener + ) { + singleTitleTopBar.secondButtonListener = onClickListener + } + + @JvmStatic + @BindingAdapter("thirdButtonClickListener") + fun setThirdButtonClickListener( + singleTitleTopBar: SingleTitleTopBar, + onClickListener: OnClickListener + ) { + singleTitleTopBar.thirdButtonListener = onClickListener + } } } \ No newline at end of file diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/component/TopBar.kt b/DesignSystem/src/main/java/com/yourssu/design/system/component/TopBar.kt new file mode 100644 index 00000000..4dd08bb7 --- /dev/null +++ b/DesignSystem/src/main/java/com/yourssu/design/system/component/TopBar.kt @@ -0,0 +1,144 @@ +package com.yourssu.design.system.component + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.databinding.BindingAdapter +import com.yourssu.design.databinding.LayoutTopbarBinding +import com.yourssu.design.system.foundation.Icon + +class TopBar @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr) { + private val binding: LayoutTopbarBinding = + LayoutTopbarBinding.inflate(LayoutInflater.from(context), this, true) + + var title: String = "" + set(title) { + field = title + setTitleText() + } + + var startButtonClickListener: OnClickListener? = null + set(value) { + binding.startButton.setOnClickListener(value) + } + + var endFirstButtonClickListener: OnClickListener? = null + set(value) { + binding.endFirstButton.setOnClickListener(value) + } + + var endSecondButtonClickListener: OnClickListener? = null + set(value) { + binding.endSecondButton.setOnClickListener(value) + } + + var startText: String = "" + set(value) { + field = value + binding.startButton.text = value + } + + @Icon.Iconography + var startIcon: Int? = null + set(icon) { + field = icon + binding.startButton.icon = icon + } + + var endFirstText: String = "" + set(value) { + field = value + binding.endFirstButton.text = value + } + + var endSecondText: String = "" + set(value) { + field = value + binding.endSecondButton.text = value + } + + @Icon.Iconography + var endFirstIcon: Int? = null + set(icon) { + field = icon + binding.endFirstButton.icon = icon + } + + @Icon.Iconography + var endSecondIcon: Int? = null + set(icon) { + field = icon + binding.endSecondButton.icon = icon + } + + private fun setTitleText() { + binding.title.text = title + } + + companion object { + @JvmStatic + @BindingAdapter("startIcon") + fun setStartIcon(topBar: TopBar, @Icon.Iconography icon: Int?) { + topBar.startIcon = icon + } + + @JvmStatic + @BindingAdapter("startText") + fun setStartText(topBar: TopBar, startText: String) { + topBar.startText = startText + } + + @JvmStatic + @BindingAdapter("endFirstText") + fun setEndFirstText(topBar: TopBar, endFirstText: String) { + topBar.endFirstText = endFirstText + } + + @JvmStatic + @BindingAdapter("endSecondText") + fun setEndSecondText(topBar: TopBar, endSecondText: String) { + topBar.endSecondText = endSecondText + } + + @JvmStatic + @BindingAdapter("endFirstIcon") + fun setEndFirstIcon(topBar: TopBar, @Icon.Iconography icon: Int?) { + topBar.endFirstIcon = icon + } + + @JvmStatic + @BindingAdapter("endSecondIcon") + fun setEndSecondIcon(topBar: TopBar, @Icon.Iconography icon: Int?) { + topBar.endSecondIcon = icon + } + + @JvmStatic + @BindingAdapter("title") + fun setTitle(topBar: TopBar, title: String) { + topBar.title = title + } + + @JvmStatic + @BindingAdapter("onStartIconClick") + fun setStartIconClickListener(topBar: TopBar, onClickListener: OnClickListener) { + topBar.startButtonClickListener = onClickListener + } + + @JvmStatic + @BindingAdapter("onEndFirstClick") + fun setOnEndFirstClickListener(topBar: TopBar, endFirstClickListener: OnClickListener) { + topBar.endFirstButtonClickListener = endFirstClickListener + } + + @JvmStatic + @BindingAdapter("onEndSecondIconClick") + fun setOnEndSecondClickListener(topBar: TopBar, endSecondClickListener: OnClickListener) { + topBar.endSecondButtonClickListener = endSecondClickListener + } + } +} \ No newline at end of file diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/foundation/BasicColors.kt b/DesignSystem/src/main/java/com/yourssu/design/system/foundation/BasicColors.kt index 56e71591..1f10daee 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/foundation/BasicColors.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/foundation/BasicColors.kt @@ -1,6 +1,218 @@ package com.yourssu.design.system.foundation +import com.yourssu.design.R + /** * Basic Color 는 YDS 개발자가 사용하는 컬러 * 정확히는 Semantic Color 의 기반이 되는 팔레트이다 - */ \ No newline at end of file + */ + +data class Color( + val colorName: String, + val colorValue: String, + val color: Int +) + +data class ColorCategory( + val groupName: String, + val colorList: List +) + +val basicColors = listOf( + ColorCategory("Logo", listOf( + Color("logoBlue", "#1653DB", R.drawable.logoBlue), + Color("logoYellow", "#FFC441", R.drawable.logoYellow) + )), + ColorCategory("PointBlue", listOf( + Color("pointBlue050", "#E1F2FE", R.drawable.pointBlue050), + Color("pointBlue100", "#B6DDFE", R.drawable.pointBlue100), + Color("pointBlue200", "#86C8FE", R.drawable.pointBlue200), + Color("pointBlue300", "#4EB2FE", R.drawable.pointBlue300), + Color("pointBlue400", "#00A3FF", R.drawable.pointBlue400), + Color("pointBlue500", "#0092FE", R.drawable.pointBlue500), + Color("pointBlue600", "#0084F0", R.drawable.pointBlue600), + Color("pointBlue700", "#0072DD", R.drawable.pointBlue700), + Color("pointBlue800", "#0060CB", R.drawable.pointBlue800), + Color("pointBlue900", "#0042AB", R.drawable.pointBlue900), + )), + ColorCategory("WarningRed", listOf( + Color("warningRed050", "#FFECEF", R.drawable.warningRed050), + Color("warningRed100", "#FFCED4", R.drawable.warningRed100), + Color("warningRed200", "#F99C9D", R.drawable.warningRed200), + Color("warningRed300", "#F37476", R.drawable.warningRed300), + Color("warningRed400", "#FF5252", R.drawable.warningRed400), + Color("warningRed500", "#FF3E36", R.drawable.warningRed500), + Color("warningRed600", "#F73536", R.drawable.warningRed600), + Color("warningRed700", "#E42930", R.drawable.warningRed700), + Color("warningRed800", "#D72028", R.drawable.warningRed800), + Color("warningRed900", "#C8111C", R.drawable.warningRed900), + )), + ColorCategory("White & Black", listOf( + Color("white000", "#FFFFFF", R.drawable.white000), + Color("black000", "#101112", R.drawable.black000), + Color("realBlack", "#000000", R.drawable.realBlack), + )), + ColorCategory("Gray", listOf( + Color("gray050", "#F8F9FA", R.drawable.gray050), + Color("gray100", "#F3F5F7", R.drawable.gray100), + Color("gray200", "#ECEEF0", R.drawable.gray200), + Color("gray300", "#E2E5E8", R.drawable.gray300), + Color("gray400", "#D4D8DC", R.drawable.gray400), + Color("gray500", "#B5B9BD", R.drawable.gray500), + Color("gray600", "#8E9398", R.drawable.gray600), + Color("gray700", "#505458", R.drawable.gray700), + Color("gray800", "#3A3D40", R.drawable.gray800), + Color("gray900", "#252729", R.drawable.gray900), + )), + ColorCategory("WB Alpha", listOf( + Color("white000A10", "#1AFFFFFF", R.drawable.white000A10), + Color("white000A30", "#4DFFFFFF", R.drawable.white000A30), + Color("white000A70", "#B3FFFFFF", R.drawable.white000A70), + Color("black000A10", "#1A101112", R.drawable.black000A10), + Color("gray900A30", "#4D252729", R.drawable.gray900A30), + Color("gray900A70", "#B3252729", R.drawable.gray900A70), + )), + ColorCategory("Pink", listOf( + Color("pink050", "#FDE6F4", R.drawable.pink050), + Color("pink100", "#FBC1E5", R.drawable.pink100), + Color("pink200", "#FC98D3", R.drawable.pink200), + Color("pink300", "#FF6CBF", R.drawable.pink300), + Color("pink400", "#FF47AD", R.drawable.pink400), + Color("pink500", "#FF1F99", R.drawable.pink500), + Color("pink600", "#F21F93", R.drawable.pink600), + Color("pink700", "#DA1F8B", R.drawable.pink700), + Color("pink800", "#C31F85", R.drawable.pink800), + )), + ColorCategory("Red", listOf( + Color("red050", "#FFEBEE", R.drawable.red050), + Color("red100", "#FFCDD2", R.drawable.red100), + Color("red200", "#EF9A9A", R.drawable.red200), + Color("red300", "#E57373", R.drawable.red300), + Color("red400", "#EF5350", R.drawable.red400), + Color("red500", "#F44236", R.drawable.red500), + Color("red600", "#E53835", R.drawable.red600), + Color("red700", "#D32E2F", R.drawable.red700), + Color("red800", "#C62728", R.drawable.red800), + )), + ColorCategory("Orange", listOf( + Color("orange050", "#FFF1E4", R.drawable.orange050), + Color("orange100", "#FFDBBC", R.drawable.orange100), + Color("orange200", "#FFC492", R.drawable.orange200), + Color("orange300", "#FFAC6C", R.drawable.orange300), + Color("orange400", "#FD9A55", R.drawable.orange400), + Color("orange500", "#FC8A46", R.drawable.orange500), + Color("orange600", "#F67F44", R.drawable.orange600), + Color("orange700", "#EE7141", R.drawable.orange700), + Color("orange800", "#E6623E", R.drawable.orange800), + )), + ColorCategory("Yellow", listOf( + Color("yellow050", "#FFF8DC", R.drawable.yellow050), + Color("yellow100", "#FFF0AB", R.drawable.yellow100), + Color("yellow200", "#FFE672", R.drawable.yellow200), + Color("yellow300", "#FFDC3A", R.drawable.yellow300), + Color("yellow400", "#FFD200", R.drawable.yellow400), + Color("yellow500", "#FBC000", R.drawable.yellow500), + Color("yellow600", "#F6B000", R.drawable.yellow600), + Color("yellow700", "#E1A714", R.drawable.yellow700), + Color("yellow800", "#CC9200", R.drawable.yellow800), + )), + ColorCategory("Lime", listOf( + Color("lime050", "#F9FBE7", R.drawable.lime050), + Color("lime100", "#F0F4C3", R.drawable.lime100), + Color("lime200", "#E5EE9C", R.drawable.lime200), + Color("lime300", "#DBE775", R.drawable.lime300), + Color("lime400", "#D3E157", R.drawable.lime400), + Color("lime500", "#CCDC39", R.drawable.lime500), + Color("lime600", "#BFCA33", R.drawable.lime600), + Color("lime700", "#AEB42B", R.drawable.lime700), + Color("lime800", "#9D9D24", R.drawable.lime800), + )), + ColorCategory("Green", listOf( + Color("green050", "#E5F9EE", R.drawable.green050), + Color("green100", "#BFF0D5", R.drawable.green100), + Color("green200", "#93E7BB", R.drawable.green200), + Color("green300", "#5BDE9F", R.drawable.green300), + Color("green400", "#0BD588", R.drawable.green400), + Color("green500", "#00CC74", R.drawable.green500), + Color("green600", "#00BB68", R.drawable.green600), + Color("green700", "#00A85B", R.drawable.green700), + Color("green800", "#00964F", R.drawable.green800), + )), + ColorCategory("Emerald", listOf( + Color("emerald050", "#E0F8F7", R.drawable.emerald050), + Color("emerald100", "#B3ECEA", R.drawable.emerald100), + Color("emerald200", "#82E0DF", R.drawable.emerald200), + Color("emerald300", "#51D2D4", R.drawable.emerald300), + Color("emerald400", "#2BC9CC", R.drawable.emerald400), + Color("emerald500", "#00BFC7", R.drawable.emerald500), + Color("emerald600", "#00AFB5", R.drawable.emerald600), + Color("emerald700", "#069A9C", R.drawable.emerald700), + Color("emerald800", "#088585", R.drawable.emerald800), + )), + ColorCategory("Aqua", listOf( + Color("aqua050", "#E0F4FD", R.drawable.aqua050), + Color("aqua100", "#B2E3FA", R.drawable.aqua100), + Color("aqua200", "#7FD0F7", R.drawable.aqua200), + Color("aqua300", "#4CBEF3", R.drawable.aqua300), + Color("aqua400", "#26B0F1", R.drawable.aqua400), + Color("aqua500", "#00A2EE", R.drawable.aqua500), + Color("aqua600", "#0095DF", R.drawable.aqua600), + Color("aqua700", "#0182CB", R.drawable.aqua700), + Color("aqua800", "#0171B7", R.drawable.aqua800), + )), + ColorCategory("Blue", listOf( + Color("blue050", "#E4F1FA", R.drawable.blue050), + Color("blue100", "#BEDCF3", R.drawable.blue100), + Color("blue200", "#98C6EC", R.drawable.blue200), + Color("blue300", "#74B0E2", R.drawable.blue300), + Color("blue400", "#489AE7", R.drawable.blue400), + Color("blue500", "#4B90D7", R.drawable.blue500), + Color("blue600", "#4582CA", R.drawable.blue600), + Color("blue700", "#3C71B8", R.drawable.blue700), + Color("blue800", "#3661A5", R.drawable.blue800), + )), + ColorCategory("Indigo", listOf( + Color("indigo050", "#E8EAF6", R.drawable.indigo050), + Color("indigo100", "#C5CAE9", R.drawable.indigo100), + Color("indigo200", "#9FA8DA", R.drawable.indigo200), + Color("indigo300", "#7986CB", R.drawable.indigo300), + Color("indigo400", "#5C6CC0", R.drawable.indigo400), + Color("indigo500", "#3F52B5", R.drawable.indigo500), + Color("indigo600", "#394AAB", R.drawable.indigo600), + Color("indigo700", "#2F409F", R.drawable.indigo700), + Color("indigo800", "#273693", R.drawable.indigo800), + )), + ColorCategory("Violet", listOf( + Color("violet050", "#EDE7F6", R.drawable.violet050), + Color("violet100", "#D1C4E9", R.drawable.violet100), + Color("violet200", "#B39DDB", R.drawable.violet200), + Color("violet300", "#9575CD", R.drawable.violet300), + Color("violet400", "#7E57C2", R.drawable.violet400), + Color("violet500", "#673AB7", R.drawable.violet500), + Color("violet600", "#5E35B1", R.drawable.violet600), + Color("violet700", "#512DA8", R.drawable.violet700), + Color("violet800", "#4527A0", R.drawable.violet800), + )), + ColorCategory("Purple", listOf( + Color("purple050", "#F2E5F5", R.drawable.purple050), + Color("purple100", "#DFBFE7", R.drawable.purple100), + Color("purple200", "#CA95D8", R.drawable.purple200), + Color("purple300", "#B56CC8", R.drawable.purple300), + Color("purple400", "#A54DBB", R.drawable.purple400), + Color("purple500", "#9632AF", R.drawable.purple500), + Color("purple600", "#882EA9", R.drawable.purple600), + Color("purple700", "#7629A0", R.drawable.purple700), + Color("purple800", "#652597", R.drawable.purple800), + )), + ColorCategory("Brown", listOf( + Color("brown050", "#EFEBE9", R.drawable.brown050), + Color("brown100", "#D7CCC8", R.drawable.brown100), + Color("brown200", "#BCAAA4", R.drawable.brown200), + Color("brown300", "#A1887F", R.drawable.brown300), + Color("brown400", "#8D6E63", R.drawable.brown400), + Color("brown500", "#795548", R.drawable.brown500), + Color("brown600", "#6D4C41", R.drawable.brown600), + Color("brown700", "#5D4037", R.drawable.brown700), + Color("brown800", "#4E342E", R.drawable.brown800), + )), +) \ No newline at end of file diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/foundation/Iconography.kt b/DesignSystem/src/main/java/com/yourssu/design/system/foundation/Iconography.kt index 689508c2..3baee350 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/foundation/Iconography.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/foundation/Iconography.kt @@ -34,6 +34,10 @@ object Icon { ic_dotbadge_line, ic_dots_horizontal_line, ic_dots_vertical_line, + ic_download_line, + ic_emojiadd_line, + ic_eyeclosed_line, + ic_eyeopen_line, ic_food_filled, ic_food_line, ic_foodcalendar_filled, @@ -84,7 +88,8 @@ object Icon { ic_trashcan_line, ic_warningcircle_filled, ic_warningcircle_line, - ic_x_line + ic_x_line, + ic_xcircle_filled ]) annotation class Iconography @@ -115,57 +120,62 @@ object Icon { const val ic_dotbadge_line = 24 const val ic_dots_horizontal_line = 25 const val ic_dots_vertical_line = 26 - const val ic_food_filled = 27 - const val ic_food_line = 28 - const val ic_foodcalendar_filled = 29 - const val ic_foodcalendar_line = 30 - const val ic_ground_filled = 31 - const val ic_ground_line = 32 - const val ic_home_filled = 33 - const val ic_home_line = 34 - const val ic_list_line = 35 - const val ic_lock_filled = 36 - const val ic_lock_line = 37 - const val ic_new_filled = 38 - const val ic_new_line = 39 - const val ic_notice_filled = 40 - const val ic_notice_line = 41 - const val ic_pen_filled = 42 - const val ic_pen_line = 43 - const val ic_person_filled = 44 - const val ic_person_line = 45 - const val ic_personcircle_line = 46 - const val ic_picture_filled = 47 - const val ic_picture_line = 48 - const val ic_pin_filled = 49 - const val ic_pin_line = 50 - const val ic_playcircle_filled = 51 - const val ic_playcircle_line = 52 - const val ic_plus_line = 53 - const val ic_rank_filled = 54 - const val ic_rank_line = 55 - const val ic_recomment_line = 56 - const val ic_refresh_line = 57 - const val ic_savecircle_filled = 58 - const val ic_savecircle_line = 59 - const val ic_schoolcalendar_filled = 60 - const val ic_schoolcalendar_line = 61 - const val ic_search_line = 62 - const val ic_sharecircle_filled = 63 - const val ic_sharecircle_line = 64 - const val ic_star_filled = 65 - const val ic_star_line = 66 - const val ic_thumb_down_filled = 67 - const val ic_thumb_down_line = 68 - const val ic_thumb_up_filled = 69 - const val ic_thumb_up_line = 70 - const val ic_timecalendar_filled = 71 - const val ic_timecalendar_line = 72 - const val ic_trashcan_filled = 73 - const val ic_trashcan_line = 74 - const val ic_warningcircle_filled = 75 - const val ic_warningcircle_line = 76 - const val ic_x_line = 77 + const val ic_download_line = 27 + const val ic_emojiadd_line = 28 + const val ic_eyeclosed_line = 29 + const val ic_eyeopen_line = 30 + const val ic_food_filled = 31 + const val ic_food_line = 32 + const val ic_foodcalendar_filled = 33 + const val ic_foodcalendar_line = 34 + const val ic_ground_filled = 35 + const val ic_ground_line = 36 + const val ic_home_filled = 37 + const val ic_home_line = 38 + const val ic_list_line = 39 + const val ic_lock_filled = 40 + const val ic_lock_line = 41 + const val ic_new_filled = 42 + const val ic_new_line = 43 + const val ic_notice_filled = 44 + const val ic_notice_line = 45 + const val ic_pen_filled = 46 + const val ic_pen_line = 47 + const val ic_person_filled = 48 + const val ic_person_line = 49 + const val ic_personcircle_line = 50 + const val ic_picture_filled = 51 + const val ic_picture_line = 52 + const val ic_pin_filled = 53 + const val ic_pin_line = 54 + const val ic_playcircle_filled = 55 + const val ic_playcircle_line = 56 + const val ic_plus_line = 57 + const val ic_rank_filled = 58 + const val ic_rank_line = 59 + const val ic_recomment_line = 60 + const val ic_refresh_line = 61 + const val ic_savecircle_filled = 62 + const val ic_savecircle_line = 63 + const val ic_schoolcalendar_filled = 64 + const val ic_schoolcalendar_line = 65 + const val ic_search_line = 66 + const val ic_sharecircle_filled = 67 + const val ic_sharecircle_line = 68 + const val ic_star_filled = 69 + const val ic_star_line = 70 + const val ic_thumb_down_filled = 71 + const val ic_thumb_down_line = 72 + const val ic_thumb_up_filled = 73 + const val ic_thumb_up_line = 74 + const val ic_timecalendar_filled = 75 + const val ic_timecalendar_line = 76 + const val ic_trashcan_filled = 77 + const val ic_trashcan_line = 78 + const val ic_warningcircle_filled = 79 + const val ic_warningcircle_line = 80 + const val ic_x_line = 81 + const val ic_xcircle_filled= 82 @DrawableRes fun getIconDrawable(@Iconography icon: Int): Int { @@ -197,6 +207,10 @@ object Icon { ic_dotbadge_line -> R.drawable.ic_dotbadge_line ic_dots_horizontal_line -> R.drawable.ic_dots_horizontal_line ic_dots_vertical_line -> R.drawable.ic_dots_vertical_line + ic_download_line -> R.drawable.ic_download_line + ic_emojiadd_line -> R.drawable.ic_emojiadd_line + ic_eyeclosed_line -> R.drawable.ic_eyeclosed_line + ic_eyeopen_line -> R.drawable.ic_eyeopen_line ic_food_filled -> R.drawable.ic_food_filled ic_food_line -> R.drawable.ic_food_line ic_foodcalendar_filled -> R.drawable.ic_foodcalendar_filled @@ -248,6 +262,7 @@ object Icon { ic_warningcircle_filled -> R.drawable.ic_warningcircle_filled ic_warningcircle_line -> R.drawable.ic_warningcircle_line ic_x_line -> R.drawable.ic_x_line + ic_xcircle_filled -> R.drawable.ic_xcircle_filled else -> R.drawable.ic_adbadge_filled } } @@ -281,6 +296,10 @@ object Icon { ic_dotbadge_line -> "ic_dotbadge_line" ic_dots_horizontal_line -> "ic_dots_horizontal_line" ic_dots_vertical_line -> "ic_dots_vertical_line" + ic_download_line -> "ic_download_line" + ic_emojiadd_line -> "ic_emojiadd_line" + ic_eyeclosed_line -> "ic_eyeclosed_line" + ic_eyeopen_line -> "ic_eyeopen_line" ic_food_filled -> "ic_food_filled" ic_food_line -> "ic_food_line" ic_foodcalendar_filled -> "ic_foodcalendar_filled" @@ -332,6 +351,7 @@ object Icon { ic_warningcircle_filled -> "ic_warningcircle_filled" ic_warningcircle_line -> "ic_warningcircle_line" ic_x_line -> "ic_x_line" + ic_xcircle_filled -> "ic_xcircle_filled" else -> "ic_adbadge_filled" } } @@ -365,6 +385,10 @@ object Icon { "ic_dotbadge_line" -> ic_dotbadge_line "ic_dots_horizontal_line" -> ic_dots_horizontal_line "ic_dots_vertical_line" -> ic_dots_vertical_line + "ic_download_line" -> ic_download_line + "ic_emojiadd_line" -> ic_emojiadd_line + "ic_eyeclosed_line" -> ic_eyeclosed_line + "ic_eyeopen_line" -> ic_eyeopen_line "ic_food_filled" -> ic_food_filled "ic_food_line" -> ic_food_line "ic_foodcalendar_filled" -> ic_foodcalendar_filled @@ -416,6 +440,7 @@ object Icon { "ic_warningcircle_filled" -> ic_warningcircle_filled "ic_warningcircle_line" -> ic_warningcircle_line "ic_x_line" -> ic_x_line + "ic_xcircle_filled" -> ic_xcircle_filled else -> ic_adbadge_filled } } @@ -449,6 +474,10 @@ object Icon { ic_dotbadge_line, ic_dots_horizontal_line, ic_dots_vertical_line, + ic_download_line, + ic_emojiadd_line, + ic_eyeclosed_line, + ic_eyeopen_line, ic_food_filled, ic_food_line, ic_foodcalendar_filled, @@ -499,7 +528,8 @@ object Icon { ic_trashcan_line, ic_warningcircle_filled, ic_warningcircle_line, - ic_x_line + ic_x_line, + ic_xcircle_filled ) } } \ No newline at end of file diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/foundation/SemanticColors.kt b/DesignSystem/src/main/java/com/yourssu/design/system/foundation/SemanticColors.kt index aa9004fc..797811d2 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/foundation/SemanticColors.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/foundation/SemanticColors.kt @@ -1,2 +1,112 @@ package com.yourssu.design.system.foundation +import com.yourssu.design.R + +val semanticColors = listOf( + ColorCategory("Background", listOf( + Color("bgNormal", "white000", R.color.bgNormal), + Color("bgElevated", "white000", R.color.bgElevated), + Color("bgRecomment", "gray050", R.color.bgRecomment), + Color("bgSelected", "gray100", R.color.bgSelected), + Color("bgPressed", "gray100", R.color.bgPressed), + Color("bgNormalReversed", "realBlack", R.color.bgNormalReversed), + Color("bgElevatedReversed", "realBlack", R.color.bgElevatedReversed), + )), + ColorCategory("Text", listOf( + Color("textPrimary", "black000", R.color.textPrimary), + Color("textSecondary", "gray900", R.color.textSecondary), + Color("textTertiary", "gray600", R.color.textTertiary), + Color("textDisabled", "gray500", R.color.textDisabled), + Color("textReversed", "white000", R.color.textReversed), + Color("textPointed", "pointBlue400", R.color.textPointed), + Color("textWarned", "warningRed400", R.color.textWarned), + )), + ColorCategory("Dim", listOf( + Color("dimNormal", "gray900A30", R.color.dimNormal), + Color("dimThick", "gray900A70", R.color.dimThick), + Color("dimThickReversed", "white000A70", R.color.dimThickReversed), + )), + ColorCategory("Border", listOf( + Color("borderThin", "gray100", R.color.borderThin), + Color("borderNormal", "black000A10", R.color.borderNormal), + Color("borderThick", "gray500", R.color.borderThick), + )), + ColorCategory("Button", listOf( + Color("buttonNormal", "gray700", R.color.buttonNormal), + Color("buttonNormalPressed", "gray600", R.color.buttonNormalPressed), + Color("buttonBG", "gray200", R.color.buttonBG), + Color("buttonEmojiBG", "gray100", R.color.buttonEmojiBG), + Color("buttonReversed", "white000", R.color.buttonReversed), + Color("buttonDisabled", "gray500", R.color.buttonDisabled), + Color("buttonDisabledBG", "gray200", R.color.buttonDisabledBG), + Color("buttonPoint", "pointBlue400", R.color.buttonPoint), + Color("buttonPointPressed", "pointBlue300", R.color.buttonPointPressed), + Color("buttonPointBG", "pointBlue050", R.color.buttonPointBG), + Color("buttonWarned", "warningRed400", R.color.buttonWarned), + Color("buttonWarnedPressed", "warningRed300", R.color.buttonWarnedPressed), + Color("buttonWarnedBG", "warningRed050", R.color.buttonWarnedBG), + )), + ColorCategory("BottomBar", listOf( + Color("bottomBarNormal", "gray600", R.color.bottomBarNormal), + Color("bottomBarSelected", "gray800", R.color.bottomBarSelected), + )), + ColorCategory("inputField", listOf( + Color("inputFieldNormal", "white000", R.color.inputFieldNormal), + Color("inputFieldElevated", "gray100", R.color.inputFieldElevated), + )), + ColorCategory("Toast", listOf( + Color("toastBG", "gray700", R.color.toastBG), + )), + ColorCategory("Pressed", listOf( + Color("pressed", "black000A10", R.color.pressed), + )), + ColorCategory("Shadow", listOf( + Color("shadowThin", "gray400", R.color.shadowThin), + Color("shadowNormal", "gray500", R.color.shadowNormal), + )), + ColorCategory("MonoItem", listOf( + Color("monoItemPrimary", "gray700", R.color.monoItemPrimary), + Color("monoItemBG", "gray100", R.color.monoItemBG), + Color("monoItemText", "gray800", R.color.monoItemText), + )), + ColorCategory("GreenItem", listOf( + Color("greenItemPrimary", "green300", R.color.greenItemPrimary), + Color("greenItemBG", "green050", R.color.greenItemBG), + Color("greenItemText", "green800", R.color.greenItemText), + )), + ColorCategory("EmeraldItem", listOf( + Color("emeraldItemPrimary", "emerald300", R.color.emeraldItemPrimary), + Color("emeraldItemBG", "emerald050", R.color.emeraldItemBG), + Color("emeraldItemText", "emerald800", R.color.emeraldItemText), + )), + ColorCategory("AquaItem", listOf( + Color("aquaItemPrimary", "aqua300", R.color.aquaItemPrimary), + Color("aquaItemBG", "aqua050", R.color.aquaItemBG), + Color("aquaItemText", "aqua700", R.color.aquaItemText), + )), + ColorCategory("BlueItem", listOf( + Color("blueItemPrimary", "blue300", R.color.blueItemPrimary), + Color("blueItemBG", "blue050", R.color.blueItemBG), + Color("blueItemText", "blue700", R.color.blueItemText), + )), + ColorCategory("IndigoItem", listOf( + Color("indigoItemPrimary", "indigo300", R.color.indigoItemPrimary), + Color("indigoItemBG", "indigo050", R.color.indigoItemBG), + Color("indigoItemText", "indigo400", R.color.indigoItemText), + )), + ColorCategory("VioletItem", listOf( + Color("violetItemPrimary", "violet300", R.color.violetItemPrimary), + Color("violetItemBG", "violet050", R.color.violetItemBG), + Color("violetItemText", "violet400", R.color.violetItemText), + )), + ColorCategory("PurpleItem", listOf( + Color("purpleItemPrimary", "purple300", R.color.purpleItemPrimary), + Color("purpleItemBG", "purple050", R.color.purpleItemBG), + Color("purpleItemText", "purple400", R.color.purpleItemText), + )), + ColorCategory("PinkItem", listOf( + Color("pinkItemPrimary", "pink300", R.color.pinkItemPrimary), + Color("pinkItemBG", "pink050", R.color.pinkItemBG), + Color("pinkItemText", "pink600", R.color.pinkItemText), + )), +) \ No newline at end of file diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/foundation/Typography.kt b/DesignSystem/src/main/java/com/yourssu/design/system/foundation/Typography.kt index 42c72cd5..d8b66f92 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/system/foundation/Typography.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/system/foundation/Typography.kt @@ -11,6 +11,7 @@ import com.yourssu.design.system.foundation.Typo.Button1 import com.yourssu.design.system.foundation.Typo.Button2 import com.yourssu.design.system.foundation.Typo.Button3 import com.yourssu.design.system.foundation.Typo.Button4 +import com.yourssu.design.system.foundation.Typo.Caption0 import com.yourssu.design.system.foundation.Typo.Caption1 import com.yourssu.design.system.foundation.Typo.Caption2 import com.yourssu.design.system.foundation.Typo.SubTitle1 @@ -22,7 +23,7 @@ import com.yourssu.design.system.foundation.Typo.Title3 @Retention(AnnotationRetention.SOURCE) -@IntDef(value = [Title1, Title2, Title3, SubTitle1, SubTitle2, SubTitle3, Body1, Body2, Button0, Button1, Button2, Button3, Button4, Caption1, Caption2]) +@IntDef(value = [Title1, Title2, Title3, SubTitle1, SubTitle2, SubTitle3, Body1, Body2, Button0, Button1, Button2, Button3, Button4, Caption0, Caption1, Caption2]) annotation class Typography object Typo { @@ -39,8 +40,9 @@ object Typo { const val Button2 = 32 const val Button3 = 33 const val Button4 = 34 - const val Caption1 = 40 - const val Caption2 = 41 + const val Caption0 = 40 + const val Caption1 = 41 + const val Caption2 = 42 @StyleRes fun getStyle(@Typography typo: Int): Int = when (typo) { @@ -57,6 +59,7 @@ object Typo { Button2 -> R.style.Text_Button2 Button3 -> R.style.Text_Button3 Button4 -> R.style.Text_Button4 + Caption0 -> R.style.Text_Caption0 Caption1 -> R.style.Text_Caption1 Caption2 -> R.style.Text_Caption2 else -> R.style.Text_Title1 @@ -77,6 +80,7 @@ object Typo { Button2 -> R.dimen.button2_line_height Button3 -> R.dimen.button3_line_height Button4 -> R.dimen.button4_line_height + Caption0 -> R.dimen.caption0_line_height Caption1 -> R.dimen.caption1_line_height Caption2 -> R.dimen.caption2_line_height else -> R.dimen.title1_line_height @@ -84,7 +88,7 @@ object Typo { fun getList(): List { return listOf( - Title1, Title2, Title3, SubTitle1, SubTitle2, SubTitle3, Body1, Body2, Button0, Button1, Button2, Button3, Button4, Caption1, Caption2 + Title1, Title2, Title3, SubTitle1, SubTitle2, SubTitle3, Body1, Body2, Button0, Button1, Button2, Button3, Button4, Caption0, Caption1, Caption2 ) } @@ -103,6 +107,7 @@ object Typo { Button2 -> "Button2" Button3 -> "Button3" Button4 -> "Button4" + Caption0 -> "Caption0" Caption1 -> "Caption1" Caption2 -> "Caption2" else -> "Title1" @@ -124,6 +129,7 @@ object Typo { "Button2" -> Button2 "Button3" -> Button3 "Button4" -> Button4 + "Caption0" -> Caption0 "Caption1" -> Caption1 "Caption2" -> Caption2 else -> Title1 diff --git a/DesignSystem/src/main/java/com/yourssu/design/system/language/InfoYDSL.kt b/DesignSystem/src/main/java/com/yourssu/design/system/language/InfoYDSL.kt deleted file mode 100644 index f24c7012..00000000 --- a/DesignSystem/src/main/java/com/yourssu/design/system/language/InfoYDSL.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.yourssu.design.system.language - -/** - * YDSL 이란 간단한 뷰를 생성할때 굳이 귀찮게 xml로 작성하지 않고 런타임에서 간결하고 쉽게 - * 뷰를 만들어 사용가능한 유어슈의 새로운 언어체계이다 - */ \ No newline at end of file diff --git a/DesignSystem/src/main/java/com/yourssu/design/undercarriage/base/BaseFullDialog.kt b/DesignSystem/src/main/java/com/yourssu/design/undercarriage/base/BaseFullDialog.kt index 6573a2f0..5b98b72a 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/undercarriage/base/BaseFullDialog.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/undercarriage/base/BaseFullDialog.kt @@ -29,15 +29,12 @@ abstract class BaseFullDialog: Dialog { private fun setFullDialog(isAttachWindow: Boolean = false) { if (isAttachWindow && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { window?.setDecorFitsSystemWindows(false) - window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) val insetController: WindowInsetsController? = window?.insetsController // insetController?.hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars()) insetController?.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_BARS_BY_SWIPE } else if (!isAttachWindow && Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) window?.requestFeature(Window.FEATURE_NO_TITLE) - window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) - window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN } diff --git a/DesignSystem/src/main/java/com/yourssu/design/undercarriage/base/TextField.kt b/DesignSystem/src/main/java/com/yourssu/design/undercarriage/base/TextField.kt index 566b0f29..67d68b2f 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/undercarriage/base/TextField.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/undercarriage/base/TextField.kt @@ -24,6 +24,15 @@ abstract class TextField @JvmOverloads constructor( textField.setText(text, TextView.BufferType.EDITABLE) } + @JvmStatic + @BindingAdapter("android:onEditorAction") + fun setOnEditorActionListener( + textField: TextField, + onEditorActionListener: TextView.OnEditorActionListener + ) { + textField.setOnEditorActionListener(onEditorActionListener) + } + @JvmStatic @BindingAdapter("isDisabled") fun setIsDisabled(textField: TextField, isDisabled: Boolean) { @@ -167,6 +176,8 @@ abstract class TextField @JvmOverloads constructor( internal abstract fun initAttributes(context: Context, attrs: AttributeSet?) + abstract fun setOnEditorActionListener(onEditorActionListener: TextView.OnEditorActionListener) + abstract fun extendSelection(index: Int) abstract fun getFreezesText(): Boolean @@ -195,9 +206,6 @@ abstract class TextField @JvmOverloads constructor( setTextColor() setBackground() changeEditTextEnabled() - if (isDisabled) { - setText("", TextView.BufferType.EDITABLE) - } } private fun setTextColor() { @@ -229,6 +237,8 @@ abstract class TextField @JvmOverloads constructor( abstract fun setDefaultTextColor() + abstract fun setEditTextTextColor(color: Int) + abstract fun setPlaceholderTextColor(color: Int) abstract fun setFieldLabelTextColor(color: Int) diff --git a/DesignSystem/src/main/java/com/yourssu/design/undercarriage/size/DpPx.kt b/DesignSystem/src/main/java/com/yourssu/design/undercarriage/size/DpPx.kt index 3691f989..9abec625 100644 --- a/DesignSystem/src/main/java/com/yourssu/design/undercarriage/size/DpPx.kt +++ b/DesignSystem/src/main/java/com/yourssu/design/undercarriage/size/DpPx.kt @@ -3,6 +3,7 @@ package com.yourssu.design.undercarriage.size import android.content.Context import android.util.TypedValue import androidx.annotation.DimenRes +import kotlin.math.roundToInt infix fun Context.dpToPx(dp: Float): Float { val displayMetrics = this.resources.displayMetrics @@ -11,7 +12,7 @@ infix fun Context.dpToPx(dp: Float): Float { infix fun Context.dpToIntPx(dp: Float): Int { val displayMetrics = this.resources.displayMetrics - return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics).toInt() + return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics).roundToInt() } infix fun Context.getDimenFloat(@DimenRes dimenRes: Int): Float = this.resources.getDimension(dimenRes) diff --git a/DesignSystem/src/main/res/drawable/ic_adbadge_filled.xml b/DesignSystem/src/main/res/drawable/ic_adbadge_filled.xml index 8ceb2a6d..324e9ea8 100644 --- a/DesignSystem/src/main/res/drawable/ic_adbadge_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_adbadge_filled.xml @@ -1,15 +1,14 @@ - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_adbadge_line.xml b/DesignSystem/src/main/res/drawable/ic_adbadge_line.xml index f5eae44d..83237919 100644 --- a/DesignSystem/src/main/res/drawable/ic_adbadge_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_adbadge_line.xml @@ -1,15 +1,17 @@ - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_arrow_down_line.xml b/DesignSystem/src/main/res/drawable/ic_arrow_down_line.xml index 3250e04e..76d346f7 100644 --- a/DesignSystem/src/main/res/drawable/ic_arrow_down_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_arrow_down_line.xml @@ -1,9 +1,17 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + - \ No newline at end of file + android:pathData="M21.25,7.75L12,16.25L2.75,7.75" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#252729" + android:strokeLineCap="round"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_arrow_left_line.xml b/DesignSystem/src/main/res/drawable/ic_arrow_left_line.xml index af4350ea..24ad26e7 100644 --- a/DesignSystem/src/main/res/drawable/ic_arrow_left_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_arrow_left_line.xml @@ -1,9 +1,13 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + diff --git a/DesignSystem/src/main/res/drawable/ic_arrow_right_line.xml b/DesignSystem/src/main/res/drawable/ic_arrow_right_line.xml index fe6371b8..31badaee 100644 --- a/DesignSystem/src/main/res/drawable/ic_arrow_right_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_arrow_right_line.xml @@ -1,9 +1,13 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + diff --git a/DesignSystem/src/main/res/drawable/ic_arrow_up_line.xml b/DesignSystem/src/main/res/drawable/ic_arrow_up_line.xml index 5a288ec3..9c110412 100644 --- a/DesignSystem/src/main/res/drawable/ic_arrow_up_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_arrow_up_line.xml @@ -1,9 +1,17 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + - \ No newline at end of file + android:pathData="M2.75,16.25L12,7.75L21.25,16.25" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#252729" + android:strokeLineCap="round"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_bell_filled.xml b/DesignSystem/src/main/res/drawable/ic_bell_filled.xml index 560d5cb6..628a9495 100644 --- a/DesignSystem/src/main/res/drawable/ic_bell_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_bell_filled.xml @@ -1,10 +1,21 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + - \ No newline at end of file + android:pathData="M13.41,18.13V17.38L13.4053,17.38L13.41,18.13ZM16.41,18.13V18.88H16.4523L16.4943,18.8753L16.41,18.13ZM18.02,15.13L17.3436,15.4539L17.3479,15.4629L17.3524,15.4717L18.02,15.13ZM17,13H16.25V13.1703L16.3236,13.3239L17,13ZM17,8H17.75L17.75,7.9972L17,8ZM5,8L4.25,7.999V8H5ZM5,13L5.6777,13.3213L5.75,13.1688V13H5ZM3.99,15.13L4.6461,15.4934L4.6575,15.4727L4.6677,15.4513L3.99,15.13ZM3.7296,16.1206L2.9797,16.1144L3.7296,16.1206ZM5.63,18.21L5.5653,18.9572L5.6038,18.9606L5.6425,18.9599L5.63,18.21ZM8.63,18.16L8.6253,17.41L8.6175,17.4101L8.63,18.16ZM13.41,18.88H16.41V17.38H13.41V18.88ZM16.4943,18.8753C16.9475,18.824 17.3814,18.6636 17.759,18.4078L16.9177,17.166C16.741,17.2857 16.5378,17.3608 16.3257,17.3848L16.4943,18.8753ZM17.759,18.4078C18.1366,18.152 18.4465,17.8085 18.6621,17.4066L17.3404,16.6973C17.2395,16.8854 17.0944,17.0462 16.9177,17.166L17.759,18.4078ZM18.6621,17.4066C18.8778,17.0048 18.9928,16.5566 18.9972,16.1006L17.4973,16.086C17.4952,16.2995 17.4414,16.5092 17.3404,16.6973L18.6621,17.4066ZM18.9972,16.1006C19.0016,15.6446 18.8954,15.1943 18.6876,14.7883L17.3524,15.4717C17.4496,15.6617 17.4994,15.8725 17.4973,16.086L18.9972,16.1006ZM18.6964,14.8061L17.6764,12.6761L16.3236,13.3239L17.3436,15.4539L18.6964,14.8061ZM17.75,13V8H16.25V13H17.75ZM4.25,8V13H5.75V8H4.25ZM4.3223,12.6787L3.3123,14.8087L4.6677,15.4513L5.6777,13.3213L4.3223,12.6787ZM3.3339,14.7666C3.1053,15.1793 2.9836,15.6426 2.9797,16.1144L4.4796,16.1268C4.4814,15.9051 4.5387,15.6873 4.6461,15.4934L3.3339,14.7666ZM2.9797,16.1144C2.9758,16.5862 3.0899,17.0514 3.3116,17.4679L4.6356,16.7629C4.5314,16.5672 4.4778,16.3485 4.4796,16.1268L2.9797,16.1144ZM3.3116,17.4679C3.5333,17.8843 3.8557,18.2387 4.2493,18.4988L5.0763,17.2474C4.8913,17.1251 4.7398,16.9586 4.6356,16.7629L3.3116,17.4679ZM4.2493,18.4988C4.6429,18.7589 5.0952,18.9165 5.5653,18.9572L5.6947,17.4628C5.4739,17.4437 5.2613,17.3696 5.0763,17.2474L4.2493,18.4988ZM5.6425,18.9599L8.6425,18.9099L8.6175,17.4101L5.6175,17.4601L5.6425,18.9599ZM8.6347,18.91L13.4147,18.88L13.4053,17.38L8.6253,17.41L8.6347,18.91ZM5.75,8.001C5.7518,6.6454 6.6288,5.5958 7.8363,4.8423C9.0532,4.0829 10.4163,3.75 11,3.75V2.25C10.0837,2.25 8.4491,2.6918 7.0422,3.5698C5.6258,4.4536 4.2528,5.9041 4.25,7.999L5.75,8.001ZM11,3.75C11.2543,3.75 11.7249,3.8357 12.3199,4.0448C12.9007,4.249 13.5477,4.5524 14.1482,4.9442C15.3834,5.7501 16.2455,6.8042 16.25,8.0028L17.75,7.9972C17.7426,6.0386 16.3547,4.5927 14.9678,3.6879C14.2573,3.2243 13.5003,2.8698 12.8173,2.6297C12.1486,2.3947 11.4957,2.25 11,2.25V3.75Z" + android:fillColor="#252729"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_bell_line.xml b/DesignSystem/src/main/res/drawable/ic_bell_line.xml index f1a81b92..f62d92ed 100644 --- a/DesignSystem/src/main/res/drawable/ic_bell_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_bell_line.xml @@ -1,10 +1,14 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_bellmute_line.xml b/DesignSystem/src/main/res/drawable/ic_bellmute_line.xml index e6aacba7..18ba62ad 100644 --- a/DesignSystem/src/main/res/drawable/ic_bellmute_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_bellmute_line.xml @@ -1,10 +1,24 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + - \ No newline at end of file + android:pathData="M19.1239,3.0534L5.0534,20.8761" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#000000" + android:strokeLineCap="round"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_board_filled.xml b/DesignSystem/src/main/res/drawable/ic_board_filled.xml index 6d352068..4de8aa4e 100644 --- a/DesignSystem/src/main/res/drawable/ic_board_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_board_filled.xml @@ -1,10 +1,20 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + - \ No newline at end of file + android:pathData="M20.334,5.7389H6.384C6.205,5.7389 6.0333,5.8097 5.9067,5.9356C5.7801,6.0615 5.709,6.2322 5.709,6.4103V18.9413C5.7078,19.0298 5.7244,19.1177 5.7579,19.1997C5.7914,19.2816 5.8411,19.3561 5.904,19.4187C5.9669,19.4813 6.0418,19.5307 6.1243,19.564C6.2067,19.5973 6.295,19.6139 6.384,19.6126H17.238L20.01,20.9553C20.1029,20.9983 20.2045,21.0197 20.307,21.0179C20.4341,21.0204 20.5591,20.9862 20.667,20.9195C20.7625,20.8567 20.8411,20.7718 20.896,20.6719C20.9509,20.5721 20.9804,20.4604 20.982,20.3466V6.4103C20.98,6.2374 20.9118,6.0719 20.7915,5.9472C20.6711,5.8225 20.5076,5.748 20.334,5.7389ZM15.384,16.274H9.084C8.905,16.274 8.7333,16.2033 8.6067,16.0774C8.4801,15.9515 8.409,15.7807 8.409,15.6027C8.409,15.4247 8.4801,15.2539 8.6067,15.128C8.7333,15.0021 8.905,14.9314 9.084,14.9314H15.384C15.563,14.9314 15.7347,15.0021 15.8613,15.128C15.9879,15.2539 16.059,15.4247 16.059,15.6027C16.059,15.7807 15.9879,15.9515 15.8613,16.0774C15.7347,16.2033 15.563,16.274 15.384,16.274ZM8.391,12.6937C8.391,12.5157 8.4621,12.3449 8.5887,12.219C8.7153,12.0931 8.887,12.0224 9.066,12.0224H14.043C14.222,12.0224 14.3937,12.0931 14.5203,12.219C14.6469,12.3449 14.718,12.5157 14.718,12.6937C14.718,12.8717 14.6469,13.0425 14.5203,13.1684C14.3937,13.2943 14.222,13.365 14.043,13.365H9.084C8.9927,13.3686 8.9016,13.354 8.816,13.3219C8.7305,13.2899 8.6523,13.2412 8.586,13.1786C8.5197,13.116 8.4667,13.0409 8.4302,12.9576C8.3936,12.8743 8.3741,12.7846 8.373,12.6937H8.391ZM16.797,10.456H9.084C8.905,10.456 8.7333,10.3853 8.6067,10.2594C8.4801,10.1335 8.409,9.9627 8.409,9.7847C8.409,9.6067 8.4801,9.4359 8.6067,9.31C8.7333,9.1841 8.905,9.1134 9.084,9.1134H16.815C16.994,9.1134 17.1657,9.1841 17.2923,9.31C17.4189,9.4359 17.49,9.6067 17.49,9.7847C17.49,9.9627 17.4189,10.1335 17.2923,10.2594C17.1657,10.3853 16.994,10.456 16.815,10.456H16.797Z" + android:fillColor="#252729"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_board_line.xml b/DesignSystem/src/main/res/drawable/ic_board_line.xml index e479eb43..12e2aa11 100644 --- a/DesignSystem/src/main/res/drawable/ic_board_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_board_line.xml @@ -1,10 +1,21 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_book_filled.xml b/DesignSystem/src/main/res/drawable/ic_book_filled.xml index 018546e2..7d2b0a08 100644 --- a/DesignSystem/src/main/res/drawable/ic_book_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_book_filled.xml @@ -1,9 +1,26 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + - \ No newline at end of file + android:pathData="M21.25,17.8L12,19.25V6.2L21.25,4.75V17.8ZM18.5934,9.2947C18.9936,9.1879 19.2315,8.7769 19.1247,8.3766C19.0179,7.9764 18.6069,7.7386 18.2067,7.8454L14.1967,8.9154C13.7964,9.0222 13.5586,9.4332 13.6654,9.8334C13.7722,10.2336 14.1832,10.4714 14.5834,10.3647L18.5934,9.2947ZM19.1247,11.0467C19.2315,11.4469 18.9936,11.8579 18.5934,11.9647L14.5834,13.0347C14.1832,13.1415 13.7722,12.9036 13.6654,12.5034C13.5586,12.1032 13.7964,11.6922 14.1967,11.5854L18.2067,10.5154C18.6069,10.4086 19.0179,10.6465 19.1247,11.0467ZM18.5917,14.6451C18.9921,14.5392 19.231,14.1288 19.1251,13.7283C19.0193,13.3279 18.6088,13.089 18.2083,13.1949L14.1983,14.2549C13.7979,14.3607 13.5591,14.7712 13.6649,15.1717C13.7708,15.5721 14.1812,15.8109 14.5817,15.7051L18.5917,14.6451Z" + android:fillColor="#252729" + android:fillType="evenOdd"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_book_line.xml b/DesignSystem/src/main/res/drawable/ic_book_line.xml index 7b9b75ef..2401d4b1 100644 --- a/DesignSystem/src/main/res/drawable/ic_book_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_book_line.xml @@ -1,27 +1,62 @@ - - - - - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_calendar_filled.xml b/DesignSystem/src/main/res/drawable/ic_calendar_filled.xml index 7bdfff19..1a8168d3 100644 --- a/DesignSystem/src/main/res/drawable/ic_calendar_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_calendar_filled.xml @@ -1,9 +1,26 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_calendar_line.xml b/DesignSystem/src/main/res/drawable/ic_calendar_line.xml index fcfd924d..d8ba1c3f 100644 --- a/DesignSystem/src/main/res/drawable/ic_calendar_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_calendar_line.xml @@ -1,12 +1,22 @@ - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_camera_filled.xml b/DesignSystem/src/main/res/drawable/ic_camera_filled.xml index ea087aab..c2e91d10 100644 --- a/DesignSystem/src/main/res/drawable/ic_camera_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_camera_filled.xml @@ -1,12 +1,25 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + android:pathData="M8,4.75H15.78C15.9927,4.75 16.2034,4.7919 16.3999,4.8733C16.5965,4.9547 16.7751,5.0741 16.9255,5.2245C17.0759,5.3749 17.1953,5.5535 17.2767,5.7501C17.3581,5.9466 17.4,6.1573 17.4,6.37V6.88H6.4V6.37C6.4,5.9438 6.5679,5.5347 6.8674,5.2315C7.1669,4.9283 7.5738,4.7553 8,4.75Z" + android:fillColor="#252729"/> - \ No newline at end of file + android:pathData="M17.39,7.62H6.39C6.1911,7.62 6.0003,7.541 5.8597,7.4003C5.719,7.2597 5.64,7.0689 5.64,6.87V6.36C5.6374,6.0484 5.6965,5.7393 5.8139,5.4507C5.9313,5.1621 6.1047,4.8995 6.3241,4.6783C6.5435,4.457 6.8046,4.2814 7.0922,4.1615C7.3799,4.0417 7.6884,3.98 8,3.98H15.79C16.4159,3.98 17.0162,4.2286 17.4588,4.6712C17.9014,5.1138 18.15,5.7141 18.15,6.34V6.85C18.1513,6.9506 18.1326,7.0505 18.095,7.1439C18.0574,7.2373 18.0017,7.3222 17.931,7.3939C17.8603,7.4655 17.776,7.5224 17.6832,7.5612C17.5903,7.6 17.4906,7.62 17.39,7.62ZM7.16,6.12H16.61C16.5578,5.9405 16.4486,5.7828 16.2988,5.671C16.1491,5.5591 15.9669,5.4991 15.78,5.5H8C7.8114,5.4969 7.6269,5.5559 7.4752,5.6679C7.3234,5.78 7.2126,5.9388 7.16,6.12Z" + android:fillColor="#252729"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_camera_line.xml b/DesignSystem/src/main/res/drawable/ic_camera_line.xml index acc6c011..a29d5259 100644 --- a/DesignSystem/src/main/res/drawable/ic_camera_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_camera_line.xml @@ -1,15 +1,34 @@ - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_cameracircle_line.xml b/DesignSystem/src/main/res/drawable/ic_cameracircle_line.xml index e707f44e..07a4cdd2 100644 --- a/DesignSystem/src/main/res/drawable/ic_cameracircle_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_cameracircle_line.xml @@ -1,10 +1,26 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_check_line.xml b/DesignSystem/src/main/res/drawable/ic_check_line.xml index c3e26b54..e5b2ee61 100644 --- a/DesignSystem/src/main/res/drawable/ic_check_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_check_line.xml @@ -1,9 +1,13 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + diff --git a/DesignSystem/src/main/res/drawable/ic_checkcircle_filled.xml b/DesignSystem/src/main/res/drawable/ic_checkcircle_filled.xml index 6ff6a18e..130d91bb 100644 --- a/DesignSystem/src/main/res/drawable/ic_checkcircle_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_checkcircle_filled.xml @@ -1,9 +1,14 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_checkcircle_line.xml b/DesignSystem/src/main/res/drawable/ic_checkcircle_line.xml index 15a7a505..5eaa8e10 100644 --- a/DesignSystem/src/main/res/drawable/ic_checkcircle_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_checkcircle_line.xml @@ -1,12 +1,18 @@ - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_clip_line.xml b/DesignSystem/src/main/res/drawable/ic_clip_line.xml index 4ecf0913..0c76cbb4 100644 --- a/DesignSystem/src/main/res/drawable/ic_clip_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_clip_line.xml @@ -1,9 +1,48 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_comment_filled.xml b/DesignSystem/src/main/res/drawable/ic_comment_filled.xml index f4141910..09e2d8d3 100644 --- a/DesignSystem/src/main/res/drawable/ic_comment_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_comment_filled.xml @@ -1,9 +1,14 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_comment_line.xml b/DesignSystem/src/main/res/drawable/ic_comment_line.xml index fe6b4a83..8d3b2478 100644 --- a/DesignSystem/src/main/res/drawable/ic_comment_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_comment_line.xml @@ -1,18 +1,33 @@ - - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_dotbadge_line.xml b/DesignSystem/src/main/res/drawable/ic_dotbadge_line.xml index 23c36a30..f6bdd926 100644 --- a/DesignSystem/src/main/res/drawable/ic_dotbadge_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_dotbadge_line.xml @@ -1,9 +1,9 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + diff --git a/DesignSystem/src/main/res/drawable/ic_dots_horizontal_line.xml b/DesignSystem/src/main/res/drawable/ic_dots_horizontal_line.xml index 68d92523..b607bcc6 100644 --- a/DesignSystem/src/main/res/drawable/ic_dots_horizontal_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_dots_horizontal_line.xml @@ -1,15 +1,19 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + android:pathData="M12,13.5C12.9665,13.5 13.75,12.7165 13.75,11.75C13.75,10.7835 12.9665,10 12,10C11.0335,10 10.25,10.7835 10.25,11.75C10.25,12.7165 11.0335,13.5 12,13.5Z" + android:fillColor="#252729"/> + android:pathData="M20.25,13.5C21.2165,13.5 22,12.7165 22,11.75C22,10.7835 21.2165,10 20.25,10C19.2835,10 18.5,10.7835 18.5,11.75C18.5,12.7165 19.2835,13.5 20.25,13.5Z" + android:fillColor="#252729"/> - \ No newline at end of file + android:pathData="M3.75,13.5C4.7165,13.5 5.5,12.7165 5.5,11.75C5.5,10.7835 4.7165,10 3.75,10C2.7835,10 2,10.7835 2,11.75C2,12.7165 2.7835,13.5 3.75,13.5Z" + android:fillColor="#252729"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_dots_vertical_line.xml b/DesignSystem/src/main/res/drawable/ic_dots_vertical_line.xml index 6788abff..b10e5f69 100644 --- a/DesignSystem/src/main/res/drawable/ic_dots_vertical_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_dots_vertical_line.xml @@ -1,15 +1,19 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + android:pathData="M10.5,12C10.5,12.9665 11.2835,13.75 12.25,13.75C13.2165,13.75 14,12.9665 14,12C14,11.0335 13.2165,10.25 12.25,10.25C11.2835,10.25 10.5,11.0335 10.5,12Z" + android:fillColor="#252729"/> + android:pathData="M10.5,20.25C10.5,21.2165 11.2835,22 12.25,22C13.2165,22 14,21.2165 14,20.25C14,19.2835 13.2165,18.5 12.25,18.5C11.2835,18.5 10.5,19.2835 10.5,20.25Z" + android:fillColor="#252729"/> - \ No newline at end of file + android:pathData="M10.5,3.75C10.5,4.7165 11.2835,5.5 12.25,5.5C13.2165,5.5 14,4.7165 14,3.75C14,2.7835 13.2165,2 12.25,2C11.2835,2 10.5,2.7835 10.5,3.75Z" + android:fillColor="#252729"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_download_line.xml b/DesignSystem/src/main/res/drawable/ic_download_line.xml new file mode 100644 index 00000000..d61a1de1 --- /dev/null +++ b/DesignSystem/src/main/res/drawable/ic_download_line.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_emojiadd_line.xml b/DesignSystem/src/main/res/drawable/ic_emojiadd_line.xml new file mode 100644 index 00000000..2a544756 --- /dev/null +++ b/DesignSystem/src/main/res/drawable/ic_emojiadd_line.xml @@ -0,0 +1,53 @@ + + + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_eyeclosed_line.xml b/DesignSystem/src/main/res/drawable/ic_eyeclosed_line.xml new file mode 100644 index 00000000..fbf4d5a8 --- /dev/null +++ b/DesignSystem/src/main/res/drawable/ic_eyeclosed_line.xml @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_eyeopen_line.xml b/DesignSystem/src/main/res/drawable/ic_eyeopen_line.xml new file mode 100644 index 00000000..d56b9eda --- /dev/null +++ b/DesignSystem/src/main/res/drawable/ic_eyeopen_line.xml @@ -0,0 +1,20 @@ + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_food_filled.xml b/DesignSystem/src/main/res/drawable/ic_food_filled.xml index b4b99b6d..88a744ef 100644 --- a/DesignSystem/src/main/res/drawable/ic_food_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_food_filled.xml @@ -1,9 +1,22 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_food_line.xml b/DesignSystem/src/main/res/drawable/ic_food_line.xml index 92fbb51a..5e13529a 100644 --- a/DesignSystem/src/main/res/drawable/ic_food_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_food_line.xml @@ -1,9 +1,22 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_foodcalendar_filled.xml b/DesignSystem/src/main/res/drawable/ic_foodcalendar_filled.xml index 40153314..d8143f7e 100644 --- a/DesignSystem/src/main/res/drawable/ic_foodcalendar_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_foodcalendar_filled.xml @@ -1,15 +1,70 @@ - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_foodcalendar_line.xml b/DesignSystem/src/main/res/drawable/ic_foodcalendar_line.xml index 3792fc30..8f8ac36a 100644 --- a/DesignSystem/src/main/res/drawable/ic_foodcalendar_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_foodcalendar_line.xml @@ -1,15 +1,50 @@ - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_ground_filled.xml b/DesignSystem/src/main/res/drawable/ic_ground_filled.xml index 660e42ca..acdea0d4 100644 --- a/DesignSystem/src/main/res/drawable/ic_ground_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_ground_filled.xml @@ -1,12 +1,20 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + android:pathData="M14.9552,4.3487C15.8862,4.3557 16.7941,4.6407 17.5634,5.1673C18.3326,5.6939 18.9285,6.4383 19.2751,7.3059C19.6217,8.1735 19.7034,9.125 19.5098,10.0393C19.3163,10.9537 18.8562,11.7895 18.1881,12.4406C18.3504,12.1492 18.4367,11.8214 18.4388,11.4875C18.4317,11.2107 18.3675,10.9384 18.2504,10.6877C18.1333,10.437 17.9657,10.2134 17.7582,10.031C18.2522,9.9363 18.6931,9.6595 18.9942,9.2551C19.2953,8.8507 19.4349,8.3478 19.3855,7.8453C19.3361,7.3428 19.1014,6.877 18.7273,6.5395C18.3533,6.2019 17.8671,6.017 17.3642,6.021H12.1254C11.7909,6.0212 11.4617,6.1046 11.1672,6.2638C11.606,5.6699 12.1771,5.1875 12.8348,4.8549C13.4926,4.5224 14.2188,4.349 14.9552,4.3487ZM10.2537,8.7902L10.3075,8.9071C10.2813,8.9462 10.2602,8.9885 10.2448,9.033C10.2448,8.9521 10.2448,8.8712 10.2448,8.7902H10.2537ZM10.2448,10.5075C10.2619,10.5541 10.2829,10.5992 10.3075,10.6424C10.2813,10.6815 10.2602,10.7238 10.2448,10.7683V10.5075ZM10.2448,12.2428C10.3938,12.6216 10.6527,12.9468 10.9881,13.1761C11.3234,13.4053 11.7197,13.5281 12.1254,13.5285H16.4687C15.9906,13.695 15.4881,13.7801 14.9821,13.7802H10.2448V12.2518V12.2428ZM14.9552,3C13.3512,3 11.8128,3.6391 10.6777,4.777C9.5427,5.9149 8.9039,7.4585 8.9015,9.0689C8.9015,9.0689 8.9015,9.1409 8.9015,9.1768V14.5714C8.9038,14.7201 8.9643,14.8619 9.0699,14.9662C9.1754,15.0705 9.3176,15.1289 9.4657,15.1289H14.9552C16.5584,15.1289 18.0959,14.4895 19.2295,13.3513C20.3631,12.2132 21,10.6695 21,9.06C21,7.4504 20.3631,5.9067 19.2295,4.7686C18.0959,3.6304 16.5584,2.991 14.9552,2.991V3ZM12.1254,8.7183C11.9472,8.7183 11.7764,8.6473 11.6504,8.5208C11.5245,8.3943 11.4537,8.2228 11.4537,8.044C11.4537,7.8651 11.5245,7.6936 11.6504,7.5672C11.7764,7.4407 11.9472,7.3696 12.1254,7.3696H17.391C17.5692,7.3696 17.74,7.4407 17.866,7.5672C17.9919,7.6936 18.0627,7.8651 18.0627,8.044C18.0627,8.2228 17.9919,8.3943 17.866,8.5208C17.74,8.6473 17.5692,8.7183 17.391,8.7183H12.1254ZM12.1254,10.4536C11.9472,10.4536 11.7764,10.3825 11.6504,10.2561C11.5245,10.1296 11.4537,9.9581 11.4537,9.7792C11.4537,9.6004 11.5245,9.4289 11.6504,9.3024C11.7764,9.176 11.9472,9.1049 12.1254,9.1049H15.3403C15.5184,9.1049 15.6893,9.176 15.8152,9.3024C15.9412,9.4289 16.0119,9.6004 16.0119,9.7792C16.0119,9.9581 15.9412,10.1296 15.8152,10.2561C15.6893,10.3825 15.5184,10.4536 15.3403,10.4536H12.1254ZM12.1254,12.1888C11.9472,12.1888 11.7764,12.1178 11.6504,11.9913C11.5245,11.8649 11.4537,11.6933 11.4537,11.5145C11.4537,11.3357 11.5245,11.1641 11.6504,11.0377C11.7764,10.9112 11.9472,10.8402 12.1254,10.8402H16.4239C16.602,10.8402 16.7728,10.9112 16.8988,11.0377C17.0248,11.1641 17.0955,11.3357 17.0955,11.5145C17.0955,11.6933 17.0248,11.8649 16.8988,11.9913C16.7728,12.1178 16.602,12.1888 16.4239,12.1888H12.1254Z" + android:fillColor="#252729"/> - \ No newline at end of file + android:pathData="M8.2013,8.7658C8.3235,9.1174 8.1387,9.5019 7.7885,9.6246C6.9695,9.9116 6.2362,10.4021 5.6568,11.0503C5.0775,11.6984 4.6709,12.4833 4.475,13.3317C4.2791,14.1801 4.3003,15.0645 4.5365,15.9025C4.7727,16.7405 5.2162,17.5048 5.8259,18.1244C6.4356,18.7439 7.1915,19.1985 8.0232,19.4457C8.855,19.6929 9.7355,19.7248 10.5829,19.5384C11.4302,19.352 12.2168,18.9533 12.8693,18.3794C13.5219,17.8056 14.0191,17.0753 14.3149,16.2566C14.4413,15.9065 14.8265,15.7256 15.1753,15.8526C15.524,15.9795 15.7041,16.3663 15.5777,16.7164C15.2047,17.7491 14.5774,18.6702 13.7544,19.394C12.9313,20.1177 11.9392,20.6206 10.8704,20.8558C9.8017,21.0909 8.691,21.0507 7.6419,20.7389C6.5928,20.427 5.6393,19.8537 4.8704,19.0722C4.1014,18.2908 3.5419,17.3267 3.2439,16.2697C2.946,15.2127 2.9193,14.0972 3.1664,13.0271C3.4135,11.957 3.9263,10.9671 4.6571,10.1495C5.3879,9.3319 6.3128,8.7133 7.3458,8.3513C7.6961,8.2286 8.0791,8.4142 8.2013,8.7658Z" + android:fillColor="#252729" + android:fillType="evenOdd"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_ground_line.xml b/DesignSystem/src/main/res/drawable/ic_ground_line.xml index 7cf8c82c..493b970c 100644 --- a/DesignSystem/src/main/res/drawable/ic_ground_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_ground_line.xml @@ -1,21 +1,25 @@ - - - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_home_filled.xml b/DesignSystem/src/main/res/drawable/ic_home_filled.xml index 22765f8e..c96edb18 100644 --- a/DesignSystem/src/main/res/drawable/ic_home_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_home_filled.xml @@ -1,9 +1,13 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + - \ No newline at end of file + android:pathData="M21.84,10.7L12.48,2.2C12.3435,2.0749 12.1651,2.0055 11.98,2.0055C11.7949,2.0055 11.6165,2.0749 11.48,2.2L4.37,8.82L4.13,9.04L2.23,10.81C2.0889,10.9524 2.0098,11.1446 2.0098,11.345C2.0098,11.5454 2.0889,11.7377 2.23,11.88C2.3756,12.0265 2.5735,12.1092 2.78,12.11C2.9697,12.1132 3.153,12.0413 3.29,11.91L3.84,11.38H3.98V19.62C3.9774,19.8389 4.018,20.0561 4.0996,20.2591C4.1813,20.4622 4.3022,20.6471 4.4556,20.8032C4.6089,20.9594 4.7916,21.0836 4.9932,21.1689C5.1947,21.2542 5.4112,21.2987 5.63,21.3H18.48C18.6988,21.2987 18.9153,21.2542 19.1168,21.1689C19.3184,21.0836 19.5011,20.9594 19.6544,20.8032C19.8078,20.6471 19.9288,20.4622 20.0104,20.2591C20.092,20.0561 20.1326,19.8389 20.13,19.62V11.27H20.24L20.85,11.82C20.9906,11.9605 21.1813,12.0394 21.38,12.0394C21.5788,12.0394 21.7694,11.9605 21.91,11.82C21.982,11.7434 22.0375,11.6528 22.0731,11.5539C22.1088,11.455 22.1238,11.3498 22.1172,11.2449C22.1106,11.14 22.0827,11.0375 22.035,10.9438C21.9873,10.8501 21.921,10.7671 21.84,10.7ZM14.67,13.7C14.67,14.2202 14.5158,14.7287 14.2268,15.1612C13.9378,15.5937 13.527,15.9308 13.0465,16.1298C12.5659,16.3289 12.0371,16.381 11.5269,16.2795C11.0167,16.178 10.5481,15.9275 10.1803,15.5597C9.8125,15.1919 9.562,14.7233 9.4605,14.2131C9.3591,13.7029 9.4111,13.1741 9.6102,12.6936C9.8093,12.213 10.1464,11.8023 10.5789,11.5133C11.0114,11.2243 11.5198,11.07 12.04,11.07C12.3888,11.0674 12.7345,11.1341 13.0573,11.2663C13.38,11.3986 13.6732,11.5937 13.9198,11.8403C14.1664,12.0869 14.3615,12.3801 14.4937,12.7028C14.6259,13.0255 14.6927,13.3713 14.69,13.72L14.67,13.7Z" + android:fillColor="#252729"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_home_line.xml b/DesignSystem/src/main/res/drawable/ic_home_line.xml index f2ea8d17..80292f67 100644 --- a/DesignSystem/src/main/res/drawable/ic_home_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_home_line.xml @@ -1,12 +1,22 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + android:pathData="M5.5001,8.5C5.9143,8.5 6.2501,8.8358 6.2501,9.25V19.3306C6.2497,19.3646 6.2554,19.3968 6.2652,19.4245C6.275,19.4522 6.2876,19.4719 6.2984,19.4844C6.3061,19.4934 6.3123,19.4979 6.3155,19.5H17.6845C17.6877,19.4979 17.6939,19.4934 17.7016,19.4844C17.7124,19.4719 17.725,19.4522 17.7348,19.4245C17.7446,19.3968 17.7503,19.3646 17.75,19.3306L17.7499,19.3233L17.75,9.25C17.75,8.8358 18.0857,8.5 18.5,8.5C18.9142,8.5 19.25,8.8358 19.25,9.25V19.3201C19.2515,19.5254 19.2177,19.7307 19.1488,19.9251C19.0795,20.1209 18.975,20.3048 18.8372,20.4644C18.6993,20.6242 18.53,20.7574 18.3358,20.8514C18.1413,20.9456 17.9282,20.9972 17.7095,20.9999L17.7002,21.0001L6.2905,21C6.0718,20.9973 5.8587,20.9456 5.6642,20.8514C5.47,20.7574 5.3007,20.6242 5.1628,20.4644C5.025,20.3048 4.9205,20.1209 4.8512,19.9251C4.7824,19.7307 4.7485,19.5254 4.7501,19.3201V9.25C4.7501,8.8358 5.0858,8.5 5.5001,8.5Z" + android:fillColor="#252729" + android:fillType="evenOdd"/> - \ No newline at end of file + android:pathData="M12,12.25C11.0335,12.25 10.25,13.0335 10.25,14C10.25,14.9665 11.0335,15.75 12,15.75C12.9665,15.75 13.75,14.9665 13.75,14C13.75,13.0335 12.9665,12.25 12,12.25ZM8.75,14C8.75,12.2051 10.2051,10.75 12,10.75C13.7949,10.75 15.25,12.2051 15.25,14C15.25,15.7949 13.7949,17.25 12,17.25C10.2051,17.25 8.75,15.7949 8.75,14Z" + android:fillColor="#252729" + android:fillType="evenOdd"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_list_line.xml b/DesignSystem/src/main/res/drawable/ic_list_line.xml index 27102b13..cee9253c 100644 --- a/DesignSystem/src/main/res/drawable/ic_list_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_list_line.xml @@ -1,10 +1,28 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + - \ No newline at end of file + android:pathData="M4,15.75H17.2" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#252729" + android:strokeLineCap="round"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_lock_filled.xml b/DesignSystem/src/main/res/drawable/ic_lock_filled.xml index 8b827d35..93dbf68c 100644 --- a/DesignSystem/src/main/res/drawable/ic_lock_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_lock_filled.xml @@ -1,9 +1,21 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + - \ No newline at end of file + android:pathData="M19,11H5V21H19V11ZM12,18C13.1046,18 14,17.1046 14,16C14,14.8954 13.1046,14 12,14C10.8954,14 10,14.8954 10,16C10,17.1046 10.8954,18 12,18Z" + android:fillColor="#252729" + android:fillType="evenOdd"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_lock_line.xml b/DesignSystem/src/main/res/drawable/ic_lock_line.xml index 8a730ecb..444e35c9 100644 --- a/DesignSystem/src/main/res/drawable/ic_lock_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_lock_line.xml @@ -1,12 +1,17 @@ - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_new_filled.xml b/DesignSystem/src/main/res/drawable/ic_new_filled.xml index 7efdbb43..584b73f2 100644 --- a/DesignSystem/src/main/res/drawable/ic_new_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_new_filled.xml @@ -1,9 +1,14 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_new_line.xml b/DesignSystem/src/main/res/drawable/ic_new_line.xml index c7ef207a..e534a4be 100644 --- a/DesignSystem/src/main/res/drawable/ic_new_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_new_line.xml @@ -1,12 +1,19 @@ - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_notice_filled.xml b/DesignSystem/src/main/res/drawable/ic_notice_filled.xml index f17a068d..dbdf6bb8 100644 --- a/DesignSystem/src/main/res/drawable/ic_notice_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_notice_filled.xml @@ -1,10 +1,43 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + - \ No newline at end of file + android:pathData="M17.6078,7.3417C18.0861,7.3417 18.5596,7.4359 19.0015,7.6189C19.4433,7.8019 19.8448,8.0702 20.183,8.4083C20.5211,8.7465 20.7894,9.148 20.9724,9.5898C21.1554,10.0317 21.2496,10.5052 21.2496,10.9835C21.2496,11.4617 21.1554,11.9353 20.9724,12.3772C20.7894,12.819 20.5211,13.2205 20.183,13.5587C19.8448,13.8968 19.4433,14.1651 19.0015,14.3481C18.5596,14.5311 18.0861,14.6253 17.6078,14.6253" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#252729" + android:strokeLineCap="round"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_notice_line.xml b/DesignSystem/src/main/res/drawable/ic_notice_line.xml index 59d0ba71..7561779a 100644 --- a/DesignSystem/src/main/res/drawable/ic_notice_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_notice_line.xml @@ -1,15 +1,9 @@ - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + diff --git a/DesignSystem/src/main/res/drawable/ic_pen_filled.xml b/DesignSystem/src/main/res/drawable/ic_pen_filled.xml index a458f5d6..4de07092 100644 --- a/DesignSystem/src/main/res/drawable/ic_pen_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_pen_filled.xml @@ -1,10 +1,27 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_pen_line.xml b/DesignSystem/src/main/res/drawable/ic_pen_line.xml index 77d63a92..96c06ef4 100644 --- a/DesignSystem/src/main/res/drawable/ic_pen_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_pen_line.xml @@ -1,10 +1,22 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_person_filled.xml b/DesignSystem/src/main/res/drawable/ic_person_filled.xml index 67564d32..27db6972 100644 --- a/DesignSystem/src/main/res/drawable/ic_person_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_person_filled.xml @@ -1,12 +1,22 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + android:pathData="M4,20.25C3.9658,20.2516 3.9318,20.2452 3.9005,20.2313C3.8693,20.2174 3.8417,20.1964 3.82,20.17C3.7767,20.1238 3.7518,20.0633 3.75,20C3.9001,17.8926 4.827,15.9158 6.3511,14.4527C7.8753,12.9895 9.8882,12.144 12,12.08C14.1118,12.144 16.1247,12.9895 17.6489,14.4527C19.173,15.9158 20.0999,17.8926 20.25,20C20.253,20.0341 20.2492,20.0684 20.2389,20.101C20.2286,20.1336 20.212,20.1638 20.19,20.19C20.1674,20.2153 20.1396,20.2355 20.1086,20.2493C20.0776,20.2631 20.044,20.2702 20.01,20.27L4,20.25Z" + android:fillColor="#252729"/> - \ No newline at end of file + android:pathData="M12,12.83C13.8265,12.8858 15.5745,13.586 16.9343,14.8068C18.2942,16.0275 19.1782,17.69 19.43,19.5H4.57C4.8218,17.69 5.7058,16.0275 7.0657,14.8068C8.4255,13.586 10.1734,12.8858 12,12.83ZM12,11.33C9.7063,11.3948 7.5177,12.3062 5.856,13.8885C4.1943,15.4709 3.1769,17.6122 3,19.9C2.986,20.0395 3.0014,20.1804 3.0454,20.3135C3.0893,20.4466 3.1607,20.569 3.255,20.6727C3.3493,20.7764 3.4644,20.8592 3.5927,20.9156C3.7211,20.9719 3.8598,21.0007 4,21H20C20.1402,21.0007 20.2789,20.9719 20.4073,20.9156C20.5356,20.8592 20.6507,20.7764 20.7449,20.6727C20.8392,20.569 20.9107,20.4466 20.9546,20.3135C20.9986,20.1804 21.014,20.0395 21,19.9C20.8231,17.6122 19.8057,15.4709 18.144,13.8885C16.4822,12.3062 14.2937,11.3948 12,11.33Z" + android:fillColor="#252729"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_person_line.xml b/DesignSystem/src/main/res/drawable/ic_person_line.xml index a0f8f8a7..bc3e6d2e 100644 --- a/DesignSystem/src/main/res/drawable/ic_person_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_person_line.xml @@ -1,12 +1,14 @@ - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_personcircle_line.xml b/DesignSystem/src/main/res/drawable/ic_personcircle_line.xml index dff3ff10..95ef08ee 100644 --- a/DesignSystem/src/main/res/drawable/ic_personcircle_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_personcircle_line.xml @@ -1,10 +1,19 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_picture_filled.xml b/DesignSystem/src/main/res/drawable/ic_picture_filled.xml index 6758f50b..153988fe 100644 --- a/DesignSystem/src/main/res/drawable/ic_picture_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_picture_filled.xml @@ -1,15 +1,28 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + android:pathData="M19.5083,4.4917V5.3271C19.2871,5.0065 19.015,4.7243 18.7028,4.4917H19.5083ZM14.3867,4.4917C13.9902,4.7871 13.6587,5.1609 13.4126,5.5897C13.1665,6.0186 13.0111,6.4934 12.9561,6.9848C12.9011,7.4762 12.9476,7.9736 13.0928,8.4463C13.2379,8.919 13.4787,9.3568 13.8,9.7326L12.5768,10.9856L8.9867,7.5845L7.9326,6.59L6.9381,7.5845L4.5216,9.9911V4.4619H14.4663L14.3867,4.4917ZM19.5878,9.4342V12.7856L17.758,10.7967C18.5006,10.5496 19.1428,10.068 19.5878,9.4243V9.4342ZM20.1746,2.9801H3.9149C3.674,2.9801 3.4428,3.0751 3.2715,3.2445C3.1002,3.414 3.0026,3.6441 3,3.8851V13.5812L7.9724,8.6586L12.6265,13.1039L15.242,10.3989L20.5525,16.0873L21,16.5348V3.905C21,3.6649 20.9047,3.4348 20.7349,3.265C20.5652,3.0953 20.335,3 20.095,3L20.1746,2.9801ZM16.6243,9.484C16.2025,9.4938 15.7874,9.3776 15.4322,9.15C15.0769,8.9225 14.7977,8.594 14.6303,8.2068C14.4629,7.8195 14.415,7.3911 14.4926,6.9764C14.5703,6.5617 14.77,6.1797 15.0662,5.8793C15.3623,5.5788 15.7415,5.3737 16.155,5.2901C16.5685,5.2065 16.9976,5.2483 17.3872,5.4101C17.7768,5.5719 18.1092,5.8464 18.3418,6.1984C18.5744,6.5503 18.6967,6.9637 18.6928,7.3856C18.6928,7.9474 18.4696,8.4862 18.0724,8.8834C17.6752,9.2807 17.1364,9.5039 16.5746,9.5039L16.6243,9.484Z" + android:fillColor="#252729"/> + android:pathData="M3.9149,20.2542C3.8718,20.2468 3.8331,20.223 3.8072,20.1878C3.7812,20.1525 3.7699,20.1086 3.7757,20.0652V15.9978L8.032,11.7713L12.726,16.2265L15.232,13.631L18.9613,17.6586L20.284,18.9812V20.0652C20.2853,20.0869 20.2822,20.1087 20.2748,20.1292C20.2674,20.1496 20.2559,20.1684 20.241,20.1842C20.2261,20.2001 20.2081,20.2127 20.1881,20.2213C20.1681,20.2299 20.1466,20.2343 20.1248,20.2343L3.9149,20.2542Z" + android:fillColor="#252729"/> - \ No newline at end of file + android:pathData="M8.0121,12.8254L11.6519,16.2564L12.716,17.2508L13.7105,16.1967L15.1624,14.6951L18.3547,18.1459L19.4387,19.2299V19.4486H4.4917V16.2663L8.0121,12.7658V12.8254ZM8.0121,10.6873L3.0398,15.6597V20.0652C3.0398,20.3079 3.1362,20.5406 3.3077,20.7122C3.4793,20.8837 3.712,20.9801 3.9547,20.9801H20.095C20.3359,20.9775 20.5661,20.88 20.7355,20.7087C20.905,20.5374 21,20.3061 21,20.0652V18.673L19.4784,17.1514L15.2221,12.547L12.726,15.1724L8.032,10.747L8.0121,10.6873Z" + android:fillColor="#252729"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_picture_line.xml b/DesignSystem/src/main/res/drawable/ic_picture_line.xml index 463f0cb1..5011e136 100644 --- a/DesignSystem/src/main/res/drawable/ic_picture_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_picture_line.xml @@ -1,12 +1,23 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + android:pathData="M3.9,13.75L7.97,9.71L12.65,14.13L15.23,11.46L20,16.63" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#252729"/> - \ No newline at end of file + android:pathData="M16.54,8.77C17.3021,8.77 17.92,8.1522 17.92,7.39C17.92,6.6279 17.3021,6.01 16.54,6.01C15.7778,6.01 15.16,6.6279 15.16,7.39C15.16,8.1522 15.7778,8.77 16.54,8.77Z" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#252729"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_pin_filled.xml b/DesignSystem/src/main/res/drawable/ic_pin_filled.xml index 6fa44b46..9133f718 100644 --- a/DesignSystem/src/main/res/drawable/ic_pin_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_pin_filled.xml @@ -1,10 +1,10 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + diff --git a/DesignSystem/src/main/res/drawable/ic_pin_line.xml b/DesignSystem/src/main/res/drawable/ic_pin_line.xml index 5b796f1e..54ef0365 100644 --- a/DesignSystem/src/main/res/drawable/ic_pin_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_pin_line.xml @@ -1,10 +1,10 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + diff --git a/DesignSystem/src/main/res/drawable/ic_playcircle_filled.xml b/DesignSystem/src/main/res/drawable/ic_playcircle_filled.xml index f1d940df..bec7a0aa 100644 --- a/DesignSystem/src/main/res/drawable/ic_playcircle_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_playcircle_filled.xml @@ -1,9 +1,14 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_playcircle_line.xml b/DesignSystem/src/main/res/drawable/ic_playcircle_line.xml index 91ad718c..81301119 100644 --- a/DesignSystem/src/main/res/drawable/ic_playcircle_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_playcircle_line.xml @@ -1,12 +1,17 @@ - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_plus_line.xml b/DesignSystem/src/main/res/drawable/ic_plus_line.xml index bbfd380b..ff8ed0b8 100644 --- a/DesignSystem/src/main/res/drawable/ic_plus_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_plus_line.xml @@ -1,9 +1,20 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_recomment_line.xml b/DesignSystem/src/main/res/drawable/ic_recomment_line.xml index 8e004dd0..9b4eba7b 100644 --- a/DesignSystem/src/main/res/drawable/ic_recomment_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_recomment_line.xml @@ -1,14 +1,18 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + android:pathData="M3.75,1C4.1642,1 4.5,1.3358 4.5,1.75V16.25C4.5,16.5815 4.6317,16.8995 4.8661,17.1339C5.1005,17.3683 5.4185,17.5 5.75,17.5H18.4393L15.4697,14.5303C15.1768,14.2374 15.1768,13.7626 15.4697,13.4697C15.7626,13.1768 16.2374,13.1768 16.5303,13.4697L20.7803,17.7197C20.9948,17.9342 21.059,18.2568 20.9429,18.537C20.8268,18.8173 20.5533,19 20.25,19H5.75C5.0206,19 4.3212,18.7103 3.8055,18.1945C3.2897,17.6788 3,16.9793 3,16.25V1.75C3,1.3358 3.3358,1 3.75,1Z" + android:fillColor="#252729" + android:fillType="evenOdd"/> - \ No newline at end of file + android:pathData="M20.8124,17.7538C21.0864,18.0644 21.0568,18.5383 20.7462,18.8124L16.4962,22.5624C16.1856,22.8364 15.7117,22.8068 15.4376,22.4962C15.1636,22.1856 15.1932,21.7117 15.5038,21.4376L19.7538,17.6876C20.0644,17.4136 20.5383,17.4432 20.8124,17.7538Z" + android:fillColor="#252729" + android:fillType="evenOdd"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_refresh_line.xml b/DesignSystem/src/main/res/drawable/ic_refresh_line.xml index 211d8b5a..4626ccbe 100644 --- a/DesignSystem/src/main/res/drawable/ic_refresh_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_refresh_line.xml @@ -1,9 +1,23 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + - \ No newline at end of file + android:pathData="M13,21.75L10.5,19.25L13,16.75" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#000000" + android:strokeLineCap="round"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_savecircle_filled.xml b/DesignSystem/src/main/res/drawable/ic_savecircle_filled.xml index 2c767c29..680a2922 100644 --- a/DesignSystem/src/main/res/drawable/ic_savecircle_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_savecircle_filled.xml @@ -1,9 +1,18 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + - \ No newline at end of file + android:pathData="M12,20.5C16.6944,20.5 20.5,16.6944 20.5,12C20.5,7.3056 16.6944,3.5 12,3.5C7.3056,3.5 3.5,7.3056 3.5,12C3.5,16.6944 7.3056,20.5 12,20.5ZM22,12C22,17.5228 17.5228,22 12,22C6.4771,22 2,17.5228 2,12C2,6.4771 6.4771,2 12,2C17.5228,2 22,6.4771 22,12Z" + android:fillColor="#252729" + android:fillType="evenOdd"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_savecircle_line.xml b/DesignSystem/src/main/res/drawable/ic_savecircle_line.xml index 39b27cd1..5871587b 100644 --- a/DesignSystem/src/main/res/drawable/ic_savecircle_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_savecircle_line.xml @@ -1,15 +1,29 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + android:pathData="M16,9L12,13L8,9" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#252729" + android:strokeLineCap="round"/> + android:pathData="M16,15L8,15" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#252729" + android:strokeLineCap="round"/> - \ No newline at end of file + android:pathData="M12,2.75C6.8914,2.75 2.75,6.8914 2.75,12C2.75,17.1086 6.8914,21.25 12,21.25C17.1086,21.25 21.25,17.1086 21.25,12C21.25,6.8914 17.1086,2.75 12,2.75Z" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#231F20"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_schoolcalendar_filled.xml b/DesignSystem/src/main/res/drawable/ic_schoolcalendar_filled.xml index 5d228983..9f81c0ef 100644 --- a/DesignSystem/src/main/res/drawable/ic_schoolcalendar_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_schoolcalendar_filled.xml @@ -1,15 +1,47 @@ - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_schoolcalendar_line.xml b/DesignSystem/src/main/res/drawable/ic_schoolcalendar_line.xml index ee66e469..09267b42 100644 --- a/DesignSystem/src/main/res/drawable/ic_schoolcalendar_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_schoolcalendar_line.xml @@ -1,15 +1,30 @@ - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_search_line.xml b/DesignSystem/src/main/res/drawable/ic_search_line.xml index 702d63be..64251612 100644 --- a/DesignSystem/src/main/res/drawable/ic_search_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_search_line.xml @@ -1,9 +1,24 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + - \ No newline at end of file + android:pathData="M15.25,15.24L20.25,20.25" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#252729" + android:strokeLineCap="round"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_sharecircle_filled.xml b/DesignSystem/src/main/res/drawable/ic_sharecircle_filled.xml index 57eedfdc..59e8b496 100644 --- a/DesignSystem/src/main/res/drawable/ic_sharecircle_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_sharecircle_filled.xml @@ -1,9 +1,14 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_sharecircle_line.xml b/DesignSystem/src/main/res/drawable/ic_sharecircle_line.xml index 305c0c44..a7d050ec 100644 --- a/DesignSystem/src/main/res/drawable/ic_sharecircle_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_sharecircle_line.xml @@ -1,15 +1,25 @@ - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_star_filled.xml b/DesignSystem/src/main/res/drawable/ic_star_filled.xml index 0e2919ae..754bfc0d 100644 --- a/DesignSystem/src/main/res/drawable/ic_star_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_star_filled.xml @@ -1,9 +1,16 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + - \ No newline at end of file + android:pathData="M11.9502,5.6527L13.5882,9.0727C13.7205,9.3402 13.9119,9.5709 14.1464,9.7455C14.3809,9.9202 14.6518,10.0338 14.9366,10.0769L18.5565,10.6074L15.9593,13.2885C15.756,13.5032 15.6047,13.7657 15.5181,14.0541C15.4315,14.3425 15.4121,14.6485 15.4615,14.9463L16.095,18.7358L12.8552,16.9548C12.6043,16.816 12.3245,16.7444 12.0407,16.7463C11.7475,16.7465 11.4586,16.8213 11.1991,16.9642L7.9774,18.7642L8.5656,14.9748C8.6112,14.6769 8.5882,14.3718 8.4985,14.0851C8.4088,13.7984 8.2549,13.5383 8.0498,13.3263L5.4163,10.6737L9.0362,10.1053C9.3204,10.0564 9.5894,9.9372 9.8208,9.7576C10.0522,9.578 10.2393,9.3432 10.3665,9.0727L11.9593,5.6337L11.9502,5.6527ZM11.9593,2.9811C11.8789,2.9797 11.7999,3.0032 11.7322,3.0487C11.6646,3.0942 11.6113,3.1597 11.5792,3.2369L9.1538,8.4569C9.1235,8.5204 9.0787,8.5751 9.0236,8.6164C8.9683,8.6577 8.9043,8.6842 8.8371,8.6937L3.362,9.5748C3.2838,9.587 3.2104,9.6218 3.1501,9.6753C3.0897,9.7288 3.0448,9.7988 3.0204,9.8775C2.9959,9.9562 2.9929,10.0405 3.0117,10.1209C3.0305,10.2013 3.0703,10.2746 3.1267,10.3327L7.1267,14.3495C7.1765,14.4003 7.2133,14.4633 7.2339,14.5328C7.2544,14.6023 7.258,14.6761 7.2443,14.7474L6.3394,20.4316C6.3287,20.4948 6.3315,20.5597 6.3476,20.6217C6.3637,20.6837 6.3926,20.7412 6.4324,20.79C6.4722,20.8389 6.5218,20.878 6.5777,20.9045C6.6336,20.9309 6.6943,20.9442 6.7557,20.9432C6.8208,20.9617 6.8896,20.9617 6.9548,20.9432L11.8416,18.2053C11.9103,18.191 11.981,18.191 12.0498,18.2053C12.112,18.188 12.1775,18.188 12.2398,18.2053L17.1629,20.8674C17.2232,20.9048 17.292,20.9244 17.362,20.9242C17.4241,20.9224 17.4852,20.9067 17.541,20.8781C17.5969,20.8494 17.6462,20.8086 17.6857,20.7583C17.7251,20.708 17.7538,20.6494 17.7698,20.5865C17.7858,20.5236 17.7887,20.4579 17.7783,20.3937L16.8009,14.7095C16.7872,14.6382 16.7908,14.5644 16.8114,14.4949C16.8319,14.4254 16.8688,14.3624 16.9185,14.3116L20.8643,10.2379C20.9208,10.1793 20.9605,10.1052 20.9788,10.0241C20.9972,9.943 20.9934,9.8581 20.968,9.7792C20.9425,9.7002 20.8964,9.6303 20.8348,9.5774C20.7733,9.5245 20.6988,9.4908 20.6199,9.48L15.1357,8.6842C15.0665,8.6737 15.0007,8.6458 14.944,8.6029C14.8873,8.56 14.8413,8.5034 14.81,8.4379L12.3303,3.2558C12.2942,3.1825 12.2398,3.1209 12.1728,3.0775C12.1059,3.0341 12.029,3.0106 11.9502,3.0095L11.9593,2.9811Z" + android:fillColor="#252729"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_star_line.xml b/DesignSystem/src/main/res/drawable/ic_star_line.xml index 87c2db72..de8e3501 100644 --- a/DesignSystem/src/main/res/drawable/ic_star_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_star_line.xml @@ -1,9 +1,13 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + - \ No newline at end of file + android:pathData="M11.97,6L13.47,9.12C13.6059,9.4052 13.8104,9.6522 14.0652,9.8389C14.32,10.0257 14.6171,10.1463 14.93,10.19L18.37,10.69L15.85,13.26C15.641,13.4819 15.4855,13.7486 15.3954,14.0398C15.3053,14.3309 15.2829,14.6388 15.33,14.94L15.94,18.5L12.94,16.89C12.6604,16.7392 12.3477,16.6602 12.03,16.66C11.7051,16.6633 11.3859,16.7456 11.1,16.9L8.1,18.56L8.73,15C8.7732,14.6965 8.746,14.3872 8.6507,14.0959C8.5553,13.8046 8.3943,13.5391 8.18,13.32L5.63,10.74L9.07,10.2C9.3868,10.1488 9.6867,10.0222 9.9443,9.8307C10.2019,9.6393 10.4097,9.3886 10.55,9.1L11.97,6ZM11.97,3C11.889,2.9995 11.8098,3.023 11.7421,3.0675C11.6745,3.1119 11.6216,3.1755 11.59,3.25L9.15,8.47C9.1217,8.5322 9.0787,8.5865 9.0247,8.6284C8.9707,8.6702 8.9073,8.6982 8.84,8.71L3.36,9.59C3.28,9.6059 3.2058,9.6432 3.1454,9.698C3.085,9.7528 3.0406,9.823 3.017,9.901C2.9934,9.979 2.9914,10.062 3.0113,10.1411C3.0312,10.2202 3.0722,10.2924 3.13,10.35L7.13,14.35C7.1798,14.4009 7.2174,14.4625 7.2399,14.53C7.2624,14.5976 7.2693,14.6694 7.26,14.74L6.36,20.46C6.3467,20.5218 6.3473,20.5858 6.3616,20.6474C6.3759,20.709 6.4036,20.7667 6.4428,20.8163C6.4819,20.866 6.5315,20.9064 6.5881,20.9347C6.6447,20.963 6.7068,20.9784 6.77,20.98C6.8396,20.9787 6.908,20.9616 6.97,20.93L11.86,18.19C11.9214,18.1567 11.9901,18.1393 12.06,18.1393C12.1298,18.1393 12.1986,18.1567 12.26,18.19L17.18,20.85C17.2362,20.888 17.3022,20.9088 17.37,20.91C17.4345,20.9084 17.4979,20.8927 17.5556,20.8639C17.6134,20.8351 17.6641,20.794 17.7042,20.7434C17.7442,20.6928 17.7727,20.634 17.7875,20.5712C17.8024,20.5084 17.8032,20.4431 17.79,20.38L16.79,14.67C16.7761,14.6001 16.7798,14.5279 16.8008,14.4598C16.8217,14.3918 16.8593,14.33 16.91,14.28L20.85,10.2C20.9086,10.1429 20.9501,10.0706 20.9699,9.9913C20.9896,9.9119 20.9869,9.8286 20.962,9.7507C20.9371,9.6728 20.8909,9.6034 20.8287,9.5503C20.7666,9.4972 20.6908,9.4625 20.61,9.45L15.12,8.65C15.0509,8.6397 14.9855,8.6124 14.9296,8.5705C14.8737,8.5286 14.8292,8.4734 14.8,8.41L12.33,3.25C12.2995,3.1746 12.2469,3.1104 12.179,3.0657C12.1111,3.021 12.0312,2.9981 11.95,3H11.97Z" + android:fillColor="#252729"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_thumb_down_filled.xml b/DesignSystem/src/main/res/drawable/ic_thumb_down_filled.xml index 8723cee0..74d50d26 100644 --- a/DesignSystem/src/main/res/drawable/ic_thumb_down_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_thumb_down_filled.xml @@ -1,9 +1,47 @@ - + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + + - \ No newline at end of file + android:pathData="M13.32,15C14.8579,14.9984 16.3353,14.4003 17.4413,13.3316C18.5472,12.263 19.1956,10.807 19.25,9.27C19.25,5.68 16.59,2.76 13.32,2.76" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#252729" + android:strokeLineCap="round"/> + + diff --git a/DesignSystem/src/main/res/drawable/ic_thumb_down_line.xml b/DesignSystem/src/main/res/drawable/ic_thumb_down_line.xml index 7081d2fb..2c4ebb2c 100644 --- a/DesignSystem/src/main/res/drawable/ic_thumb_down_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_thumb_down_line.xml @@ -1,9 +1,34 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_thumb_up_filled.xml b/DesignSystem/src/main/res/drawable/ic_thumb_up_filled.xml index 100045bd..32802c8d 100644 --- a/DesignSystem/src/main/res/drawable/ic_thumb_up_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_thumb_up_filled.xml @@ -1,9 +1,43 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_thumb_up_line.xml b/DesignSystem/src/main/res/drawable/ic_thumb_up_line.xml index 39d3a449..14a6017f 100644 --- a/DesignSystem/src/main/res/drawable/ic_thumb_up_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_thumb_up_line.xml @@ -1,9 +1,34 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_timecalendar_filled.xml b/DesignSystem/src/main/res/drawable/ic_timecalendar_filled.xml index b93c60e9..935ac48b 100644 --- a/DesignSystem/src/main/res/drawable/ic_timecalendar_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_timecalendar_filled.xml @@ -1,15 +1,38 @@ - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_timecalendar_line.xml b/DesignSystem/src/main/res/drawable/ic_timecalendar_line.xml index a3c6dd05..d71b69dd 100644 --- a/DesignSystem/src/main/res/drawable/ic_timecalendar_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_timecalendar_line.xml @@ -1,18 +1,30 @@ - - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_trashcan_filled.xml b/DesignSystem/src/main/res/drawable/ic_trashcan_filled.xml index c9fb47c1..d78baae6 100644 --- a/DesignSystem/src/main/res/drawable/ic_trashcan_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_trashcan_filled.xml @@ -1,10 +1,26 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_trashcan_line.xml b/DesignSystem/src/main/res/drawable/ic_trashcan_line.xml index dc76b61e..f7476d5a 100644 --- a/DesignSystem/src/main/res/drawable/ic_trashcan_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_trashcan_line.xml @@ -1,10 +1,30 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_warningcircle_filled.xml b/DesignSystem/src/main/res/drawable/ic_warningcircle_filled.xml index 315dab3c..d095a5b5 100644 --- a/DesignSystem/src/main/res/drawable/ic_warningcircle_filled.xml +++ b/DesignSystem/src/main/res/drawable/ic_warningcircle_filled.xml @@ -1,9 +1,14 @@ - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_warningcircle_line.xml b/DesignSystem/src/main/res/drawable/ic_warningcircle_line.xml index 1662fa55..9385ffc9 100644 --- a/DesignSystem/src/main/res/drawable/ic_warningcircle_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_warningcircle_line.xml @@ -1,15 +1,21 @@ - - - - - \ No newline at end of file + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + diff --git a/DesignSystem/src/main/res/drawable/ic_x_line.xml b/DesignSystem/src/main/res/drawable/ic_x_line.xml index e9cce0a4..5f4e736b 100644 --- a/DesignSystem/src/main/res/drawable/ic_x_line.xml +++ b/DesignSystem/src/main/res/drawable/ic_x_line.xml @@ -1,9 +1,24 @@ - + + + - \ No newline at end of file + android:pathData="M7.1664,7.1643L18.8336,18.8316" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#252729" + android:strokeLineCap="round"/> + + + diff --git a/DesignSystem/src/main/res/drawable/ic_xcircle_filled.xml b/DesignSystem/src/main/res/drawable/ic_xcircle_filled.xml new file mode 100644 index 00000000..ddf42987 --- /dev/null +++ b/DesignSystem/src/main/res/drawable/ic_xcircle_filled.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/DesignSystem/src/main/res/layout/layout_bottom_sheet.xml b/DesignSystem/src/main/res/layout/layout_bottom_sheet.xml index 2b49d2cd..53ab99d5 100644 --- a/DesignSystem/src/main/res/layout/layout_bottom_sheet.xml +++ b/DesignSystem/src/main/res/layout/layout_bottom_sheet.xml @@ -16,7 +16,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" - android:orientation="vertical"> + android:orientation="vertical" + android:fitsSystemWindows="true"> @@ -32,33 +31,34 @@ android:layout_marginBottom="8dp" android:textColor="@color/textPrimary" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintRight_toLeftOf="@id/first_button" app:layout_constraintStart_toStartOf="parent" app:typo="title2" tools:text="타이틀" /> - - - - + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + diff --git a/DesignSystem/src/main/res/layout/layout_password_text_field.xml b/DesignSystem/src/main/res/layout/layout_password_text_field.xml index 0b4889d3..6233213e 100644 --- a/DesignSystem/src/main/res/layout/layout_password_text_field.xml +++ b/DesignSystem/src/main/res/layout/layout_password_text_field.xml @@ -45,7 +45,6 @@ android:id="@+id/input_field" android:layout_width="match_parent" android:layout_height="48dp" - android:paddingHorizontal="16dp" android:gravity="center_vertical" android:background="@drawable/text_field_background" android:orientation="horizontal" @@ -59,6 +58,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:background="@null" + android:paddingHorizontal="16dp" android:fontFamily="@font/spoqa_han_sans_neo_regular" android:inputType="textPassword" android:maxLines="1" @@ -68,14 +68,24 @@ android:textSize="15dp" tools:hint="플레이스 홀더" /> - + android:visibility="@{edittext.text.toString().empty || !edittext.hasFocus() ? View.GONE : View.VISIBLE}"> + + + diff --git a/DesignSystem/src/main/res/layout/layout_plain_button.xml b/DesignSystem/src/main/res/layout/layout_plain_button.xml index a77ce93e..0fdbb6f0 100644 --- a/DesignSystem/src/main/res/layout/layout_plain_button.xml +++ b/DesignSystem/src/main/res/layout/layout_plain_button.xml @@ -17,48 +17,37 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - - - + + + + + + + + + + + \ No newline at end of file diff --git a/DesignSystem/src/main/res/layout/layout_search_text_field.xml b/DesignSystem/src/main/res/layout/layout_search_text_field.xml index 0efeea35..0c9a2290 100644 --- a/DesignSystem/src/main/res/layout/layout_search_text_field.xml +++ b/DesignSystem/src/main/res/layout/layout_search_text_field.xml @@ -20,7 +20,7 @@ android:id="@+id/input_field" android:layout_width="match_parent" android:layout_height="40dp" - android:paddingHorizontal="16dp" + android:paddingStart="16dp" android:background="@drawable/text_field_background" android:gravity="center_vertical" android:orientation="horizontal" @@ -52,13 +52,24 @@ android:textSize="15dp" tools:hint="플레이스 홀더" /> - a + android:visibility="@{edittext.text.toString().empty || !edittext.hasFocus() ? View.GONE : View.VISIBLE}"> + + + diff --git a/DesignSystem/src/main/res/layout/layout_search_top_bar.xml b/DesignSystem/src/main/res/layout/layout_search_top_bar.xml new file mode 100644 index 00000000..0737491f --- /dev/null +++ b/DesignSystem/src/main/res/layout/layout_search_top_bar.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DesignSystem/src/main/res/layout/layout_simple_text_field.xml b/DesignSystem/src/main/res/layout/layout_simple_text_field.xml index de962d3f..573e1224 100644 --- a/DesignSystem/src/main/res/layout/layout_simple_text_field.xml +++ b/DesignSystem/src/main/res/layout/layout_simple_text_field.xml @@ -41,10 +41,10 @@ android:id="@+id/input_field" android:layout_width="match_parent" android:layout_height="48dp" - android:paddingHorizontal="16dp" - android:gravity="center_vertical" android:background="@drawable/text_field_background" + android:gravity="center_vertical" android:orientation="horizontal" + android:paddingStart="16dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/field_label_area"> @@ -64,13 +64,25 @@ android:textSize="15dp" tools:hint="플레이스 홀더" /> - + android:visibility="@{edittext.text.toString().empty || !edittext.hasFocus() ? View.GONE : View.VISIBLE}"> + + + + diff --git a/DesignSystem/src/main/res/layout/layout_single_title_top_bar.xml b/DesignSystem/src/main/res/layout/layout_single_title_top_bar.xml index 2341a8c8..98660923 100644 --- a/DesignSystem/src/main/res/layout/layout_single_title_top_bar.xml +++ b/DesignSystem/src/main/res/layout/layout_single_title_top_bar.xml @@ -4,7 +4,9 @@ xmlns:tools="http://schemas.android.com/tools"> + + @@ -18,38 +20,38 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="16dp" android:layout_marginBottom="8dp" + android:maxLines="1" android:textColor="@color/textPrimary" + app:layout_constrainedWidth="true" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintRight_toLeftOf="@id/first_button" + app:layout_constraintEnd_toStartOf="@+id/buttonPanel" app:layout_constraintStart_toStartOf="parent" app:typo="title2" tools:text="타이틀" /> - - - - - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + diff --git a/DesignSystem/src/main/res/layout/layout_suffix_text_field.xml b/DesignSystem/src/main/res/layout/layout_suffix_text_field.xml index ff246159..36758f48 100644 --- a/DesignSystem/src/main/res/layout/layout_suffix_text_field.xml +++ b/DesignSystem/src/main/res/layout/layout_suffix_text_field.xml @@ -54,6 +54,7 @@ android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" + android:layout_marginRight="4dp" android:background="@null" android:fontFamily="@font/spoqa_han_sans_neo_regular" android:inputType="text" diff --git a/DesignSystem/src/main/res/layout/layout_top_bar_button.xml b/DesignSystem/src/main/res/layout/layout_top_bar_button.xml index d181c06b..24bf7f39 100644 --- a/DesignSystem/src/main/res/layout/layout_top_bar_button.xml +++ b/DesignSystem/src/main/res/layout/layout_top_bar_button.xml @@ -18,21 +18,22 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" - android:orientation="horizontal" - android:paddingStart="12dp" - android:paddingEnd="12dp"> + android:orientation="horizontal"> + android:layout_marginLeft="12dp" + android:layout_marginRight="12dp" + app:size="@{IconView.Medium}" /> diff --git a/DesignSystem/src/main/res/layout/layout_topbar.xml b/DesignSystem/src/main/res/layout/layout_topbar.xml new file mode 100644 index 00000000..a3ba87a0 --- /dev/null +++ b/DesignSystem/src/main/res/layout/layout_topbar.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + diff --git a/DesignSystem/src/main/res/values/foundation_basic_colors.xml b/DesignSystem/src/main/res/values/foundation_basic_colors.xml index 2291d716..d8da7fde 100644 --- a/DesignSystem/src/main/res/values/foundation_basic_colors.xml +++ b/DesignSystem/src/main/res/values/foundation_basic_colors.xml @@ -6,6 +6,8 @@ 사용자가 컬러로 사용할 수 없도록 drawable 로 만들고 color 정의에선 reference type 으로 강제 한다 다크모드도 잘 동작한다 --> + + @@ -38,7 +40,8 @@ #FFFFFF - #111111 + #101112 + #000000 #F8F9FA @@ -56,7 +59,7 @@ #1AFFFFFF #4DFFFFFF #B3FFFFFF - #1A252729 + #1A101112 #4D252729 #B3252729 diff --git a/DesignSystem/src/main/res/values/foundation_semantic_colors.xml b/DesignSystem/src/main/res/values/foundation_semantic_colors.xml index 7ff1f25d..5d43fa75 100644 --- a/DesignSystem/src/main/res/values/foundation_semantic_colors.xml +++ b/DesignSystem/src/main/res/values/foundation_semantic_colors.xml @@ -2,17 +2,22 @@ + + @drawable/white000 @drawable/white000 + @drawable/gray050 @drawable/gray100 @drawable/gray100 + @drawable/realBlack + @drawable/realBlack - @drawable/gray900 - @drawable/gray800 + @drawable/black000 + @drawable/gray900 @drawable/gray600 @drawable/gray500 @drawable/white000 @@ -26,13 +31,14 @@ @drawable/gray100 - @drawable/gray400 + @drawable/black000A10 @drawable/gray500 @drawable/gray700 @drawable/gray600 @drawable/gray200 + @drawable/gray100 @drawable/white000 @drawable/gray500 @drawable/gray200 @@ -55,7 +61,7 @@ @drawable/gray700 - @drawable/gray900A10 + @drawable/black000A10 @drawable/gray400 diff --git a/DesignSystem/src/main/res/values/foundation_typo.xml b/DesignSystem/src/main/res/values/foundation_typo.xml index 549df7a3..707c17df 100644 --- a/DesignSystem/src/main/res/values/foundation_typo.xml +++ b/DesignSystem/src/main/res/values/foundation_typo.xml @@ -42,13 +42,13 @@ 15dp @font/spoqa_han_sans_neo_regular - 24dp + 22.5dp - 22.4dp + 21dp 12dp + + 15.6dp + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..22f079ef --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 yourssu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..be48ae56 --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +![Thumbnail](https://user-images.githubusercontent.com/39309953/141672549-f87d542d-27ed-450f-bbce-fc4ab9942e39.png) + +![Platform](https://img.shields.io/badge/Platform-Android-orange.svg) +![API](https://img.shields.io/badge/API-23%2B-green.svg) +[![JitPack](https://jitpack.io/v/yourssu/YDS-Android.svg)](https://jitpack.io/#yourssu/YDS-Android) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + +## 🎨 YDS란 +YDS는 숭실대학교 동아리 유어슈에서 사용하는 디자인 시스템입니다. 뷰 컴포넌트 재사용성을 높여 코드 작성에 걸리는 시간을 단축함과 동시에 일관된 디자인 퀄리티를 보장하기 위해 고안됐습니다. + +## 📝 문서 +[YDS Wiki](https://yourssu.notion.site/Yourssu-Design-System-00577fab034e46cb8aeb330247376a15) +YDS 문서는 노션 페이지에서 관리됩니다. +컴포넌트 정보와 사용 예시 등을 확인할 수 있습니다. + +## 🛠 설치 방법 +#### gradle Project +```groovy +allprojects { + repositories { + '...' + maven { url 'https://jitpack.io' } + } +} +``` +#### gradle app +```groovy +implementation "com.github.yourssu:YDS-Android:${YDSVersion}" +``` +#### theme + + + +다크 테마는 추가예정 + +## 🧪 샘플 어플리케이션 + + +## 🖥 YDS 개발자 규칙 +[YDS 개발 수칙](https://www.notion.so/yourssu/Android-309726587b1943a4bfb3f501e3ed672a) + +## 💻 타 버전 저장소 +[YDS-iOS](https://github.com/yourssu/YDS-iOS) +[YDS-Web](https://github.com/yourssu/YDS-Web) \ No newline at end of file diff --git a/app/storybook/src/main/java/com/yourssu/storybook/DetailActivity.kt b/app/storybook/src/main/java/com/yourssu/storybook/DetailActivity.kt index 29123eb3..40bccba8 100644 --- a/app/storybook/src/main/java/com/yourssu/storybook/DetailActivity.kt +++ b/app/storybook/src/main/java/com/yourssu/storybook/DetailActivity.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.View import androidx.databinding.DataBindingUtil import androidx.fragment.app.Fragment import com.yourssu.storybook.databinding.ActivityDetailBinding @@ -36,8 +37,9 @@ class DetailActivity : BaseActivity() { } private fun setPageName() { - val name = intent.getStringExtra(DetailPageName) - binding.pageName.text = name + intent.getStringExtra(DetailPageName)?.let { + binding.topBar.title = it + } } private fun setFragment() { @@ -49,7 +51,7 @@ class DetailActivity : BaseActivity() { } private fun setBackButton() { - binding.backButton.setOnClickListener { + binding.topBar.startButtonClickListener = View.OnClickListener { finish() } } diff --git a/app/storybook/src/main/java/com/yourssu/storybook/MainActivity.kt b/app/storybook/src/main/java/com/yourssu/storybook/MainActivity.kt index 1a5b7d8c..06717be6 100644 --- a/app/storybook/src/main/java/com/yourssu/storybook/MainActivity.kt +++ b/app/storybook/src/main/java/com/yourssu/storybook/MainActivity.kt @@ -1,26 +1,27 @@ package com.yourssu.storybook import android.annotation.SuppressLint -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.fragment.app.Fragment -import com.yourssu.design.system.atom.Checkbox import com.yourssu.design.system.component.Toast.Companion.toast import com.yourssu.design.system.foundation.Typo import com.yourssu.design.system.language.* import com.yourssu.design.undercarriage.size.dpToIntPx import com.yourssu.storybook.DetailActivity.Companion.navigateToDetail import com.yourssu.storybook.atom.* -import com.yourssu.storybook.component.BottomBarFragment -import com.yourssu.storybook.component.ToastFragment +import com.yourssu.storybook.component.* +import com.yourssu.storybook.foundation.BaseColorFragment +import com.yourssu.storybook.foundation.SemanticColorFragment +import com.yourssu.storybook.foundation.VibrationFragment import com.yourssu.storybook.transform.ActivityAnimType class MainActivity : BaseActivity() { /** 추가시 여기에만 선언하면 됨 */ private val foundationList = listOf>>( - "SemanticColor" to Fragment::class.java, - "Vibration" to Fragment::class.java + "BasicColor" to BaseColorFragment::class.java, + "SemanticColor" to SemanticColorFragment::class.java, + "Vibration" to VibrationFragment::class.java ) private val atomList = listOf>> ( "Text" to TextFragment::class.java, @@ -39,9 +40,10 @@ class MainActivity : BaseActivity() { ) private val componentList = listOf>>( "Toast" to ToastFragment::class.java, - "TopBar" to Fragment::class.java, - "SingleTitleTopBar" to Fragment::class.java, - "DoubleTitleTopBar" to Fragment::class.java, + "TopBar" to TopBarFragment::class.java, + "SingleTitleTopBar" to SingleTitleTopBarFragment::class.java, + "DoubleTitleTopBar" to DoubleTitleTopBarFragment::class.java, + "SearchTopBar" to SearchTopBarFragment::class.java, "BottomBar" to BottomBarFragment::class.java ) /** 추가시 여기에만 선언하면 됨 */ diff --git a/app/storybook/src/main/java/com/yourssu/storybook/component/DoubleTitleTopBarFragment.kt b/app/storybook/src/main/java/com/yourssu/storybook/component/DoubleTitleTopBarFragment.kt new file mode 100644 index 00000000..de7a6150 --- /dev/null +++ b/app/storybook/src/main/java/com/yourssu/storybook/component/DoubleTitleTopBarFragment.kt @@ -0,0 +1,121 @@ +package com.yourssu.storybook.component + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.viewModels +import com.yourssu.design.system.atom.Picker +import com.yourssu.design.system.foundation.Icon +import com.yourssu.design.system.foundation.Typo +import com.yourssu.design.system.language.bottomSheet +import com.yourssu.design.system.language.picker +import com.yourssu.design.system.language.setLayout +import com.yourssu.design.system.language.text +import com.yourssu.design.undercarriage.size.dpToIntPx +import com.yourssu.storybook.databinding.FragmentDoubleTitleTopBarBinding + +class DoubleTitleTopBarFragment : Fragment() { + private lateinit var binding: FragmentDoubleTitleTopBarBinding + private val viewModel: DoubleTitleTopBarViewModel by viewModels() + private val iconList = Icon.getList().map { Icon.getName(it) } + + private val onFirstIconValueChangeListener = object : Picker.OnValueChangeListener { + override fun onValueChange( + firstValue: String, + secondValue: String, + thirdValue: String, + totalValue: String, + ) { + viewModel.firstIconText.value = firstValue + viewModel.firstIcon.value = Icon.getValueByName(firstValue) + } + } + + private val onSecondIconValueChangeListener = object : Picker.OnValueChangeListener { + override fun onValueChange( + firstValue: String, + secondValue: String, + thirdValue: String, + totalValue: String, + ) { + viewModel.secondIconText.value = firstValue + viewModel.secondIcon.value = Icon.getValueByName(firstValue) + } + } + + private val onThirdIconValueChangeListener = object : Picker.OnValueChangeListener { + override fun onValueChange( + firstValue: String, + secondValue: String, + thirdValue: String, + totalValue: String, + ) { + viewModel.thirdIconText.value = firstValue + viewModel.thirdIcon.value = Icon.getValueByName(firstValue) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + // Inflate the layout for this fragment + binding = FragmentDoubleTitleTopBarBinding.inflate(inflater, container, false) + binding.viewModel = viewModel + binding.lifecycleOwner = viewLifecycleOwner + initView() + return binding.root + } + + private fun initView() { + binding.firstIconSelect.setOnClickListener { + bottomSheet { + text { + text = "First Icon" + typo = Typo.SubTitle2 + + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + picker { + setFirstRow(iconList) + setFirstRowPosition(iconList.indexOf(viewModel.firstIconText.value)) + this.onValueChangeListener = onFirstIconValueChangeListener + } + } + } + + binding.secondIconSelect.setOnClickListener { + bottomSheet { + text { + text = "Second Icon" + typo = Typo.SubTitle2 + + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + picker { + setFirstRow(iconList) + setFirstRowPosition(iconList.indexOf(viewModel.secondIconText.value)) + this.onValueChangeListener = onSecondIconValueChangeListener + } + } + } + + binding.thirdIconSelect.setOnClickListener { + bottomSheet { + text { + text = "Third Icon" + typo = Typo.SubTitle2 + + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + picker { + setFirstRow(iconList) + setFirstRowPosition(iconList.indexOf(viewModel.thirdIconText.value)) + this.onValueChangeListener = onThirdIconValueChangeListener + } + } + } + } +} \ No newline at end of file diff --git a/app/storybook/src/main/java/com/yourssu/storybook/component/DoubleTitleTopBarViewModel.kt b/app/storybook/src/main/java/com/yourssu/storybook/component/DoubleTitleTopBarViewModel.kt new file mode 100644 index 00000000..21e1b4ac --- /dev/null +++ b/app/storybook/src/main/java/com/yourssu/storybook/component/DoubleTitleTopBarViewModel.kt @@ -0,0 +1,86 @@ +package com.yourssu.storybook.component + +import android.app.Application +import androidx.lifecycle.MutableLiveData +import com.yourssu.design.system.atom.Toggle +import com.yourssu.design.system.foundation.Icon +import com.yourssu.design.undercarriage.base.TextField +import com.yourssu.storybook.BaseViewModel + +class DoubleTitleTopBarViewModel(application: Application) : BaseViewModel(application) { + val title = MutableLiveData("Title") + val subTitle = MutableLiveData("SubTitle") + + val firstText = MutableLiveData("닫기") + + val firstIconText = MutableLiveData("ic_arrow_left_line") + val firstIcon: MutableLiveData = MutableLiveData(Icon.ic_arrow_left_line) + val firstIconVisibility = MutableLiveData(true) + + val secondText = MutableLiveData("알림") + + val secondIconText = MutableLiveData("ic_arrow_left_line") + val secondIcon: MutableLiveData = MutableLiveData(Icon.ic_arrow_left_line) + val secondIconVisibility = MutableLiveData(true) + + val thirdText = MutableLiveData("검색") + + val thirdIconText = MutableLiveData("ic_arrow_left_line") + val thirdIcon: MutableLiveData = MutableLiveData(Icon.ic_arrow_left_line) + val thirdIconVisibility = MutableLiveData(true) + + + val onTitleTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { title.value = it } + } + } + + val onSubTitleTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { subTitle.value = it } + } + } + + val firstTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { + firstText.value = it + } + } + } + + val secondTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { + secondText.value = it + } + } + } + + val thirdTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { + thirdText.value = it + } + } + } + + val firstIconSelectListener = object : Toggle.SelectedListener { + override fun onSelected(boolean: Boolean) { + firstIconVisibility.value = boolean + } + } + + val secondIconSelectListener = object : Toggle.SelectedListener { + override fun onSelected(boolean: Boolean) { + secondIconVisibility.value = boolean + } + } + + val thirdIconSelectListener = object : Toggle.SelectedListener { + override fun onSelected(boolean: Boolean) { + thirdIconVisibility.value = boolean + } + } +} \ No newline at end of file diff --git a/app/storybook/src/main/java/com/yourssu/storybook/component/SearchTopBarFragment.kt b/app/storybook/src/main/java/com/yourssu/storybook/component/SearchTopBarFragment.kt new file mode 100644 index 00000000..73764cd7 --- /dev/null +++ b/app/storybook/src/main/java/com/yourssu/storybook/component/SearchTopBarFragment.kt @@ -0,0 +1,56 @@ +package com.yourssu.storybook.component + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import androidx.lifecycle.lifecycleScope +import com.yourssu.design.system.component.Toast.Companion.toast +import com.yourssu.storybook.databinding.FragmentSearchTopBarBinding +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.launch + +class SearchTopBarFragment : Fragment() { + + private lateinit var binding: FragmentSearchTopBarBinding + private val viewModel: SearchTopBarViewModel by viewModels() + private lateinit var collectEventJob: Job + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSearchTopBarBinding.inflate(LayoutInflater.from(context), container, false) + binding.lifecycleOwner = this + binding.viewModel = viewModel + return binding.root + } + + override fun onStart() { + super.onStart() + collectEventJob = lifecycleScope.launch { + viewModel.eventFlow.collect { handleEvent(it) } + } + } + + override fun onStop() { + super.onStop() + collectEventJob.cancel() + } + + private fun handleEvent(event: SearchTopBarViewModel.Event) = when(event) { + SearchTopBarViewModel.Event.LeftArrowButtonClicked -> showButtonClickedToast() + is SearchTopBarViewModel.Event.KeyboardAction -> showEditorActionToast(event.actionId) + } + + private fun showButtonClickedToast() { + toast("Left arrow button was clicked.") + } + + private fun showEditorActionToast(actionId: Int) { + toast("Editor action event has occurred. actionId = $actionId") + } +} \ No newline at end of file diff --git a/app/storybook/src/main/java/com/yourssu/storybook/component/SearchTopBarViewModel.kt b/app/storybook/src/main/java/com/yourssu/storybook/component/SearchTopBarViewModel.kt new file mode 100644 index 00000000..04737e22 --- /dev/null +++ b/app/storybook/src/main/java/com/yourssu/storybook/component/SearchTopBarViewModel.kt @@ -0,0 +1,58 @@ +package com.yourssu.storybook.component + +import android.app.Application +import android.view.KeyEvent +import android.widget.TextView +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.viewModelScope +import com.yourssu.design.system.atom.Toggle +import com.yourssu.storybook.BaseViewModel +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.launch + +class SearchTopBarViewModel(application: Application): BaseViewModel(application) { + private val _eventFlow = MutableSharedFlow() + val eventFlow: SharedFlow = _eventFlow + private val _textInSearchTopBar = MutableLiveData("") + val textInSearchTopBar: LiveData = _textInSearchTopBar + private val _placeholderText = MutableLiveData("") + val placeholderText: LiveData = _placeholderText + val initText = "initText" + private val _isDisable = MutableLiveData(false) + val isDisable: LiveData = _isDisable + val enableSelectListener = object : Toggle.SelectedListener { + override fun onSelected(boolean: Boolean) { + _isDisable.value = boolean + } + } + + fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + _textInSearchTopBar.value = s.toString() + } + + fun onPlaceholderTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + _placeholderText.value = s.toString() + } + + fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean { + event(Event.KeyboardAction(actionId)) + return true + } + + fun onLeftArrowButtonClicked() { + event(Event.LeftArrowButtonClicked) + } + + private fun event(event: Event) { + viewModelScope.launch { + _eventFlow.emit(event) + } + } + + sealed class Event { + object LeftArrowButtonClicked: Event() + class KeyboardAction(val actionId: Int): Event() + } +} \ No newline at end of file diff --git a/app/storybook/src/main/java/com/yourssu/storybook/component/SingleTitleTopBarFragment.kt b/app/storybook/src/main/java/com/yourssu/storybook/component/SingleTitleTopBarFragment.kt new file mode 100644 index 00000000..930587ab --- /dev/null +++ b/app/storybook/src/main/java/com/yourssu/storybook/component/SingleTitleTopBarFragment.kt @@ -0,0 +1,121 @@ +package com.yourssu.storybook.component + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.viewModels +import com.yourssu.design.system.atom.Picker +import com.yourssu.design.system.foundation.Icon +import com.yourssu.design.system.foundation.Typo +import com.yourssu.design.system.language.bottomSheet +import com.yourssu.design.system.language.picker +import com.yourssu.design.system.language.setLayout +import com.yourssu.design.system.language.text +import com.yourssu.design.undercarriage.size.dpToIntPx +import com.yourssu.storybook.databinding.FragmentSingleTitleTopBarBinding + +class SingleTitleTopBarFragment : Fragment() { + private lateinit var binding: FragmentSingleTitleTopBarBinding + private val viewModel: SingleTitleTopBarViewModel by viewModels() + private val iconList = Icon.getList().map { Icon.getName(it) } + + private val onFirstIconValueChangeListener = object : Picker.OnValueChangeListener { + override fun onValueChange( + firstValue: String, + secondValue: String, + thirdValue: String, + totalValue: String, + ) { + viewModel.firstIconText.value = firstValue + viewModel.firstIcon.value = Icon.getValueByName(firstValue) + } + } + + private val onSecondIconValueChangeListener = object : Picker.OnValueChangeListener { + override fun onValueChange( + firstValue: String, + secondValue: String, + thirdValue: String, + totalValue: String, + ) { + viewModel.secondIconText.value = firstValue + viewModel.secondIcon.value = Icon.getValueByName(firstValue) + } + } + + private val onThirdIconValueChangeListener = object : Picker.OnValueChangeListener { + override fun onValueChange( + firstValue: String, + secondValue: String, + thirdValue: String, + totalValue: String, + ) { + viewModel.thirdIconText.value = firstValue + viewModel.thirdIcon.value = Icon.getValueByName(firstValue) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + // Inflate the layout for this fragment + binding = FragmentSingleTitleTopBarBinding.inflate(inflater, container, false) + binding.viewModel = viewModel + binding.lifecycleOwner = viewLifecycleOwner + initView() + return binding.root + } + + private fun initView() { + binding.firstIconSelect.setOnClickListener { + bottomSheet { + text { + text = "First Icon" + typo = Typo.SubTitle2 + + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + picker { + setFirstRow(iconList) + setFirstRowPosition(iconList.indexOf(viewModel.firstIconText.value)) + this.onValueChangeListener = onFirstIconValueChangeListener + } + } + } + + binding.secondIconSelect.setOnClickListener { + bottomSheet { + text { + text = "Second Icon" + typo = Typo.SubTitle2 + + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + picker { + setFirstRow(iconList) + setFirstRowPosition(iconList.indexOf(viewModel.secondIconText.value)) + this.onValueChangeListener = onSecondIconValueChangeListener + } + } + } + + binding.thirdIconSelect.setOnClickListener { + bottomSheet { + text { + text = "Third Icon" + typo = Typo.SubTitle2 + + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + picker { + setFirstRow(iconList) + setFirstRowPosition(iconList.indexOf(viewModel.thirdIconText.value)) + this.onValueChangeListener = onThirdIconValueChangeListener + } + } + } + } +} \ No newline at end of file diff --git a/app/storybook/src/main/java/com/yourssu/storybook/component/SingleTitleTopBarViewModel.kt b/app/storybook/src/main/java/com/yourssu/storybook/component/SingleTitleTopBarViewModel.kt new file mode 100644 index 00000000..93a1387f --- /dev/null +++ b/app/storybook/src/main/java/com/yourssu/storybook/component/SingleTitleTopBarViewModel.kt @@ -0,0 +1,79 @@ +package com.yourssu.storybook.component + +import android.app.Application +import androidx.lifecycle.MutableLiveData +import com.yourssu.design.system.atom.Toggle +import com.yourssu.design.system.foundation.Icon +import com.yourssu.design.undercarriage.base.TextField +import com.yourssu.storybook.BaseViewModel + +class SingleTitleTopBarViewModel(application: Application) : BaseViewModel(application) { + val title = MutableLiveData("Title") + + val firstText = MutableLiveData("닫기") + + val firstIconText = MutableLiveData("ic_arrow_left_line") + val firstIcon: MutableLiveData = MutableLiveData(Icon.ic_arrow_left_line) + val firstIconVisibility = MutableLiveData(true) + + val secondText = MutableLiveData("알림") + + val secondIconText = MutableLiveData("ic_arrow_left_line") + val secondIcon: MutableLiveData = MutableLiveData(Icon.ic_arrow_left_line) + val secondIconVisibility = MutableLiveData(true) + + val thirdText = MutableLiveData("검색") + + val thirdIconText = MutableLiveData("ic_arrow_left_line") + val thirdIcon: MutableLiveData = MutableLiveData(Icon.ic_arrow_left_line) + val thirdIconVisibility = MutableLiveData(true) + + + val onTitleTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { title.value = it } + } + } + + val firstTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { + firstText.value = it + } + } + } + + val secondTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { + secondText.value = it + } + } + } + + val thirdTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { + thirdText.value = it + } + } + } + + val firstIconSelectListener = object : Toggle.SelectedListener { + override fun onSelected(boolean: Boolean) { + firstIconVisibility.value = boolean + } + } + + val secondIconSelectListener = object : Toggle.SelectedListener { + override fun onSelected(boolean: Boolean) { + secondIconVisibility.value = boolean + } + } + + val thirdIconSelectListener = object : Toggle.SelectedListener { + override fun onSelected(boolean: Boolean) { + thirdIconVisibility.value = boolean + } + } +} \ No newline at end of file diff --git a/app/storybook/src/main/java/com/yourssu/storybook/component/TopBarFragment.kt b/app/storybook/src/main/java/com/yourssu/storybook/component/TopBarFragment.kt new file mode 100644 index 00000000..7dec2f38 --- /dev/null +++ b/app/storybook/src/main/java/com/yourssu/storybook/component/TopBarFragment.kt @@ -0,0 +1,121 @@ +package com.yourssu.storybook.component + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.viewModels +import com.yourssu.design.system.atom.Picker +import com.yourssu.design.system.foundation.Icon +import com.yourssu.design.system.foundation.Typo +import com.yourssu.design.system.language.bottomSheet +import com.yourssu.design.system.language.picker +import com.yourssu.design.system.language.setLayout +import com.yourssu.design.system.language.text +import com.yourssu.design.undercarriage.size.dpToIntPx +import com.yourssu.storybook.databinding.FragmentTopBarBinding + +class TopBarFragment : Fragment() { + private lateinit var binding: FragmentTopBarBinding + private val viewModel: TopBarViewModel by viewModels() + private val iconList = Icon.getList().map { Icon.getName(it) } + + private val onStartIconValueChangeListener = object : Picker.OnValueChangeListener { + override fun onValueChange( + firstValue: String, + secondValue: String, + thirdValue: String, + totalValue: String, + ) { + viewModel.startIconText.value = firstValue + viewModel.startIcon.value = Icon.getValueByName(firstValue) + } + } + + private val onEndFirstIconValueChangeListener = object : Picker.OnValueChangeListener { + override fun onValueChange( + firstValue: String, + secondValue: String, + thirdValue: String, + totalValue: String, + ) { + viewModel.endFirstIconText.value = firstValue + viewModel.endFirstIcon.value = Icon.getValueByName(firstValue) + } + } + + private val onEndSecondIconValueChangeListener = object : Picker.OnValueChangeListener { + override fun onValueChange( + firstValue: String, + secondValue: String, + thirdValue: String, + totalValue: String, + ) { + viewModel.endSecondIconText.value = firstValue + viewModel.endSecondIcon.value = Icon.getValueByName(firstValue) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + // Inflate the layout for this fragment + binding = FragmentTopBarBinding.inflate(inflater, container, false) + binding.viewModel = viewModel + binding.lifecycleOwner = viewLifecycleOwner + initView() + return binding.root + } + + private fun initView() { + binding.startIconSelect.setOnClickListener { + bottomSheet { + text { + text = "startIcon" + typo = Typo.SubTitle2 + + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + picker { + setFirstRow(iconList) + setFirstRowPosition(iconList.indexOf(viewModel.startIconText.value)) + this.onValueChangeListener = onStartIconValueChangeListener + } + } + } + + binding.endFirstIconSelect.setOnClickListener { + bottomSheet { + text { + text = "endFirstIcon" + typo = Typo.SubTitle2 + + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + picker { + setFirstRow(iconList) + setFirstRowPosition(iconList.indexOf(viewModel.startIconText.value)) + this.onValueChangeListener = onEndFirstIconValueChangeListener + } + } + } + + binding.endSecondIconSelect.setOnClickListener { + bottomSheet { + text { + text = "endSecondIcon" + typo = Typo.SubTitle2 + + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + picker { + setFirstRow(iconList) + setFirstRowPosition(iconList.indexOf(viewModel.startIconText.value)) + this.onValueChangeListener = onEndSecondIconValueChangeListener + } + } + } + } +} \ No newline at end of file diff --git a/app/storybook/src/main/java/com/yourssu/storybook/component/TopBarViewModel.kt b/app/storybook/src/main/java/com/yourssu/storybook/component/TopBarViewModel.kt new file mode 100644 index 00000000..2283f7c0 --- /dev/null +++ b/app/storybook/src/main/java/com/yourssu/storybook/component/TopBarViewModel.kt @@ -0,0 +1,78 @@ +package com.yourssu.storybook.component + +import android.app.Application +import androidx.lifecycle.MutableLiveData +import com.yourssu.design.system.atom.Toggle +import com.yourssu.design.system.foundation.Icon +import com.yourssu.design.undercarriage.base.TextField +import com.yourssu.storybook.BaseViewModel + +class TopBarViewModel(application: Application) : BaseViewModel(application) { + val titleLiveData = MutableLiveData("Title") + + val startIcon: MutableLiveData = MutableLiveData(Icon.ic_arrow_left_line) + val startIconText: MutableLiveData = MutableLiveData("ic_arrow_left_line") + val startIconVisibility: MutableLiveData = MutableLiveData(true) + + val startText: MutableLiveData = MutableLiveData("닫기") + + val endFirstIcon: MutableLiveData = MutableLiveData(Icon.ic_search_line) + val endFirstIconText: MutableLiveData = MutableLiveData("ic_search_line") + val endFirstIconVisibility: MutableLiveData = MutableLiveData(true) + + val endFirstText: MutableLiveData = MutableLiveData("알림") + + val endSecondIcon: MutableLiveData = MutableLiveData(Icon.ic_bell_line) + val endSecondIconText: MutableLiveData = MutableLiveData("ic_bell_line") + val endSecondIconVisibility: MutableLiveData = MutableLiveData(true) + + val endSecondText: MutableLiveData = MutableLiveData("검색") + + val onTitleTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { titleLiveData.value = it } + } + } + + val onStartTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { + startText.value = it + } + } + } + + val onEndFirstTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { + endFirstText.value = it + } + } + } + + val onEndSecondTextChangedListener = object : TextField.OnTextChanged { + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + s?.toString()?.let { + endSecondText.value = it + } + } + } + + val startIconSelectListener = object : Toggle.SelectedListener { + override fun onSelected(boolean: Boolean) { + startIconVisibility.value = boolean + } + } + + val endFirstIconSelectListener = object : Toggle.SelectedListener { + override fun onSelected(boolean: Boolean) { + endFirstIconVisibility.value = boolean + } + } + + val endSecondIconSelectListener = object : Toggle.SelectedListener { + override fun onSelected(boolean: Boolean) { + endSecondIconVisibility.value = boolean + } + } +} \ No newline at end of file diff --git a/app/storybook/src/main/java/com/yourssu/storybook/foundation/BaseColorFragment.kt b/app/storybook/src/main/java/com/yourssu/storybook/foundation/BaseColorFragment.kt new file mode 100644 index 00000000..6fec6f62 --- /dev/null +++ b/app/storybook/src/main/java/com/yourssu/storybook/foundation/BaseColorFragment.kt @@ -0,0 +1,80 @@ +package com.yourssu.storybook.foundation + +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.yourssu.design.system.atom.ProfileImageView +import com.yourssu.design.system.foundation.Typo +import com.yourssu.design.system.foundation.basicColors +import com.yourssu.design.system.language.* +import com.yourssu.design.undercarriage.size.dpToIntPx +import com.yourssu.storybook.R + +class BaseColorFragment: Fragment() { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return context?.scrollView { + verticalLayout { + basicColors.forEach { colorCategory -> + text { + text = colorCategory.groupName + typo = Typo.SubTitle3 + + backgroundColor(R.color.dimNormal) + setLayout( + width = MATCH_PARENT, + leftPaddingPx = context.dpToIntPx(16f), + topPaddingPx = context.dpToIntPx(2f), + bottomPaddingPx = context.dpToIntPx(2f) + ) + } + colorCategory.colorList.forEach { basicColor -> + horizontalLayout { + profileImageView { + setImageResource(basicColor.color) + size = ProfileImageView.Medium + gravity = Gravity.CENTER_VERTICAL + + setLayout( + leftMarginPx = context.dpToIntPx(16f), + rightMarginPx = context.dpToIntPx(16f), + ) + } + verticalLayout { + text { + text = basicColor.colorName + typo = Typo.SubTitle2 + + setLayout( + width = MATCH_PARENT, + topPaddingPx = context.dpToIntPx(16f) + ) + } + text { + text = basicColor.colorValue + typo = Typo.Body2 + textColor(R.color.textDisabled) + + setLayout( + width = MATCH_PARENT, + topPaddingPx = context.dpToIntPx(4f), + bottomPaddingPx = context.dpToIntPx(16f) + ) + } + } + } + divider { + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + } + } + } + } + } +} \ No newline at end of file diff --git a/app/storybook/src/main/java/com/yourssu/storybook/foundation/SemanticColorFragment.kt b/app/storybook/src/main/java/com/yourssu/storybook/foundation/SemanticColorFragment.kt new file mode 100644 index 00000000..2ef50f9f --- /dev/null +++ b/app/storybook/src/main/java/com/yourssu/storybook/foundation/SemanticColorFragment.kt @@ -0,0 +1,80 @@ +package com.yourssu.storybook.foundation + +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.yourssu.design.system.atom.ProfileImageView +import com.yourssu.design.system.foundation.Typo +import com.yourssu.design.system.foundation.semanticColors +import com.yourssu.design.system.language.* +import com.yourssu.design.undercarriage.size.dpToIntPx +import com.yourssu.storybook.R + +class SemanticColorFragment: Fragment() { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return context?.scrollView { + verticalLayout { + semanticColors.forEach { colorCategory -> + text { + text = colorCategory.groupName + typo = Typo.SubTitle3 + + backgroundColor(R.color.dimNormal) + setLayout( + width = MATCH_PARENT, + leftPaddingPx = context.dpToIntPx(16f), + topPaddingPx = context.dpToIntPx(2f), + bottomPaddingPx = context.dpToIntPx(2f) + ) + } + colorCategory.colorList.forEach { basicColor -> + horizontalLayout { + profileImageView { + setImageResource(basicColor.color) + size = ProfileImageView.Medium + gravity = Gravity.CENTER_VERTICAL + + setLayout( + leftMarginPx = context.dpToIntPx(16f), + rightMarginPx = context.dpToIntPx(16f), + ) + } + verticalLayout { + text { + text = basicColor.colorName + typo = Typo.SubTitle2 + + setLayout( + width = MATCH_PARENT, + topPaddingPx = context.dpToIntPx(16f) + ) + } + text { + text = basicColor.colorValue + typo = Typo.Body2 + textColor(R.color.textDisabled) + + setLayout( + width = MATCH_PARENT, + topPaddingPx = context.dpToIntPx(4f), + bottomPaddingPx = context.dpToIntPx(16f) + ) + } + } + } + divider { + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + } + } + } + } + } +} \ No newline at end of file diff --git a/app/storybook/src/main/java/com/yourssu/storybook/foundation/VibrationFragment.kt b/app/storybook/src/main/java/com/yourssu/storybook/foundation/VibrationFragment.kt new file mode 100644 index 00000000..72808f1d --- /dev/null +++ b/app/storybook/src/main/java/com/yourssu/storybook/foundation/VibrationFragment.kt @@ -0,0 +1,49 @@ +package com.yourssu.storybook.foundation + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.yourssu.design.system.component.Toast.Companion.shortToast +import com.yourssu.design.system.foundation.Typo +import com.yourssu.design.system.language.* +import com.yourssu.design.system.rule.Vibration +import com.yourssu.design.system.rule.vibe +import com.yourssu.design.undercarriage.size.dpToIntPx + +class VibrationFragment: Fragment() { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return context?.scrollView { + verticalLayout { + Vibration.values().forEach { vibration -> + text { + text = vibration.name + typo = Typo.Body1 + setOnClickListener { + shortToast( + vibration.name + "\n" + + "Timings : [${vibration.timings.joinToString()}]" + "\n" + + "Amplitudes: [${vibration.amplitudes.joinToString()}]" + ) + context.vibe(vibration) + } + setLayout( + width = MATCH_PARENT, + leftPaddingPx = context.dpToIntPx(16f), + topPaddingPx = context.dpToIntPx(16f), + bottomPaddingPx = context.dpToIntPx(16f) + ) + } + divider { + setLayout(leftMarginPx = context.dpToIntPx(16f)) + } + } + } + } + } +} \ No newline at end of file diff --git a/app/storybook/src/main/res/layout/activity_detail.xml b/app/storybook/src/main/res/layout/activity_detail.xml index 0d632a58..79035398 100644 --- a/app/storybook/src/main/res/layout/activity_detail.xml +++ b/app/storybook/src/main/res/layout/activity_detail.xml @@ -13,31 +13,12 @@ android:layout_height="match_parent" tools:context=".DetailActivity"> - - - - - - - + app:layout_constraintTop_toTopOf="parent" + app:startIcon="@{Icon.ic_arrow_left_line}" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/storybook/src/main/res/layout/fragment_password_text_field.xml b/app/storybook/src/main/res/layout/fragment_password_text_field.xml index 9b66df47..d30d4cdf 100644 --- a/app/storybook/src/main/res/layout/fragment_password_text_field.xml +++ b/app/storybook/src/main/res/layout/fragment_password_text_field.xml @@ -25,9 +25,10 @@ android:background="@{viewModel.componentBackgroundColor}"> diff --git a/app/storybook/src/main/res/layout/fragment_search_top_bar.xml b/app/storybook/src/main/res/layout/fragment_search_top_bar.xml new file mode 100644 index 00000000..e3ff464b --- /dev/null +++ b/app/storybook/src/main/res/layout/fragment_search_top_bar.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/storybook/src/main/res/layout/fragment_simple_text_field.xml b/app/storybook/src/main/res/layout/fragment_simple_text_field.xml index 1c1ca0e6..9c1a09e5 100644 --- a/app/storybook/src/main/res/layout/fragment_simple_text_field.xml +++ b/app/storybook/src/main/res/layout/fragment_simple_text_field.xml @@ -25,9 +25,10 @@ android:background="@{viewModel.componentBackgroundColor}"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/storybook/src/main/res/layout/fragment_suffix_text_field.xml b/app/storybook/src/main/res/layout/fragment_suffix_text_field.xml index bbea19ce..5b2dc18c 100644 --- a/app/storybook/src/main/res/layout/fragment_suffix_text_field.xml +++ b/app/storybook/src/main/res/layout/fragment_suffix_text_field.xml @@ -25,9 +25,10 @@ android:background="@{viewModel.componentBackgroundColor}"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/yds-ui-tester/src/main/AndroidManifest.xml b/app/yds-ui-tester/src/main/AndroidManifest.xml index 902a0631..e454f888 100644 --- a/app/yds-ui-tester/src/main/AndroidManifest.xml +++ b/app/yds-ui-tester/src/main/AndroidManifest.xml @@ -9,12 +9,17 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Light.YourssuDesignSystem"> - + + + + @@ -22,12 +27,10 @@ - + - - - + diff --git a/app/yds-ui-tester/src/main/java/com/yourssu/yds_ui_tester/EditTextActivity.kt b/app/yds-ui-tester/src/main/java/com/yourssu/yds_ui_tester/EditTextActivity.kt new file mode 100644 index 00000000..55945a6b --- /dev/null +++ b/app/yds-ui-tester/src/main/java/com/yourssu/yds_ui_tester/EditTextActivity.kt @@ -0,0 +1,19 @@ +package com.yourssu.yds_ui_tester + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import androidx.databinding.DataBindingUtil +import com.yourssu.design.system.foundation.Typo +import com.yourssu.yds_ui_tester.databinding.ActivityCheckBoxBinding +import com.yourssu.yds_ui_tester.databinding.ActivityEditTextBinding + +class EditTextActivity : AppCompatActivity() { + private lateinit var binding: ActivityEditTextBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + binding = DataBindingUtil.setContentView(this, R.layout.activity_edit_text) + } +} \ No newline at end of file diff --git a/app/yds-ui-tester/src/main/java/com/yourssu/yds_ui_tester/TopBarActivity.kt b/app/yds-ui-tester/src/main/java/com/yourssu/yds_ui_tester/TopBarActivity.kt index 195ef0ec..d377fcba 100644 --- a/app/yds-ui-tester/src/main/java/com/yourssu/yds_ui_tester/TopBarActivity.kt +++ b/app/yds-ui-tester/src/main/java/com/yourssu/yds_ui_tester/TopBarActivity.kt @@ -14,8 +14,5 @@ class TopBarActivity : AppCompatActivity() { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_top_bar) - binding.doubleTitleTopBar.firstButtonListener = View.OnClickListener { - Toast.makeText(it.context, "firstButtonClick!", Toast.LENGTH_SHORT).show() - } } } \ No newline at end of file diff --git a/app/yds-ui-tester/src/main/res/layout/activity_edit_text.xml b/app/yds-ui-tester/src/main/res/layout/activity_edit_text.xml new file mode 100644 index 00000000..d0c72f87 --- /dev/null +++ b/app/yds-ui-tester/src/main/res/layout/activity_edit_text.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/app/yds-ui-tester/src/main/res/layout/activity_top_bar.xml b/app/yds-ui-tester/src/main/res/layout/activity_top_bar.xml index 7a3eb557..2e218d35 100644 --- a/app/yds-ui-tester/src/main/res/layout/activity_top_bar.xml +++ b/app/yds-ui-tester/src/main/res/layout/activity_top_bar.xml @@ -5,31 +5,107 @@ + + - + android:layout_height="match_parent" + android:orientation="vertical"> - + + + + + + + + + + + + + - + + + + + + + + + + + + diff --git a/app/yds-ui-tester/src/main/res/values/strings.xml b/app/yds-ui-tester/src/main/res/values/strings.xml index 028ecd60..68e1aed8 100644 --- a/app/yds-ui-tester/src/main/res/values/strings.xml +++ b/app/yds-ui-tester/src/main/res/values/strings.xml @@ -1,3 +1,5 @@ YDS-UI-Tester + 제목을 입력해주세요. + 내용을 입력해주세요. \ No newline at end of file diff --git a/build.gradle b/build.gradle index 72341920..fc91dffa 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { classpath "com.android.tools.build:gradle:4.1.3" - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20" classpath "com.github.dcendents:android-maven-gradle-plugin:2.1" // NOTE: Do not place your application dependencies here; they belong diff --git a/version.properties b/version.properties index f907bd11..807131ed 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ -versionName=0.9.0 +versionName=2.0.0 #자동 배포를 위해서 버전은 여기 한 군데에서 관리하면 된다 \ No newline at end of file