[Compound] Implement platform components (Switch, RadioButton, Checkbox) (#982)
* Create our custom Switch component * Update RadioButton colors * Update Checkbox colors * Fix padding in `ReplyToContent` * Add `indeterminate` and `hasError` parameters to `CheckBox`. Improve previews. * Improve Switch previews. * Improve RadioButton previews. --------- Co-authored-by: ElementBot <benoitm+elementbot@element.io>
This commit is contained in:
parent
ede935cdd9
commit
914235228d
52 changed files with 282 additions and 157 deletions
|
|
@ -479,7 +479,7 @@ private fun ReplyToContent(
|
|||
val paddings = if (attachmentThumbnailInfo != null) {
|
||||
PaddingValues(start = 4.dp, end = 12.dp, top = 4.dp, bottom = 4.dp)
|
||||
} else {
|
||||
PaddingValues(start = 12.dp, end = 12.dp, top = 8.dp, bottom = 4.dp)
|
||||
PaddingValues(horizontal = 12.dp, vertical = 4.dp)
|
||||
}
|
||||
Row(
|
||||
modifier
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ import androidx.compose.foundation.layout.padding
|
|||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Announcement
|
||||
import androidx.compose.material3.Switch
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
|
|
@ -37,6 +36,7 @@ import androidx.compose.ui.unit.dp
|
|||
import io.element.android.libraries.designsystem.components.preferences.components.PreferenceIcon
|
||||
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
|
||||
import io.element.android.libraries.designsystem.preview.PreviewGroup
|
||||
import io.element.android.libraries.designsystem.theme.components.Switch
|
||||
import io.element.android.libraries.designsystem.theme.components.Text
|
||||
import io.element.android.libraries.designsystem.toEnabledColor
|
||||
import io.element.android.libraries.designsystem.toSecondaryEnabledColor
|
||||
|
|
|
|||
|
|
@ -17,15 +17,25 @@
|
|||
package io.element.android.libraries.designsystem.theme.components
|
||||
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.material3.CheckboxColors
|
||||
import androidx.compose.material3.CheckboxDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.state.ToggleableState
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
|
||||
import io.element.android.libraries.designsystem.preview.PreviewGroup
|
||||
import io.element.android.libraries.theme.ElementTheme
|
||||
|
||||
// Designs in https://www.figma.com/file/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?type=design&mode=design&t=qb99xBP5mwwCtGkN-1
|
||||
|
||||
@Composable
|
||||
fun Checkbox(
|
||||
|
|
@ -33,12 +43,22 @@ fun Checkbox(
|
|||
onCheckedChange: ((Boolean) -> Unit)?,
|
||||
modifier: Modifier = Modifier,
|
||||
enabled: Boolean = true,
|
||||
colors: CheckboxColors = CheckboxDefaults.colors(),
|
||||
hasError: Boolean = false,
|
||||
indeterminate: Boolean = false,
|
||||
colors: CheckboxColors = if (hasError) compoundErrorCheckBoxColors() else compoundCheckBoxColors(),
|
||||
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }
|
||||
) {
|
||||
androidx.compose.material3.Checkbox(
|
||||
checked = checked,
|
||||
onCheckedChange = onCheckedChange,
|
||||
var indeterminateState by remember { mutableStateOf(indeterminate) }
|
||||
androidx.compose.material3.TriStateCheckbox(
|
||||
state = if (!checked && indeterminateState) ToggleableState.Indeterminate else ToggleableState(checked),
|
||||
onClick = if (onCheckedChange != null) {
|
||||
{
|
||||
indeterminateState = false
|
||||
onCheckedChange(!checked)
|
||||
}
|
||||
} else {
|
||||
null
|
||||
},
|
||||
modifier = modifier,
|
||||
enabled = enabled,
|
||||
colors = colors,
|
||||
|
|
@ -46,6 +66,30 @@ fun Checkbox(
|
|||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun compoundCheckBoxColors(): CheckboxColors {
|
||||
return CheckboxDefaults.colors(
|
||||
checkedColor = ElementTheme.materialColors.primary,
|
||||
uncheckedColor = ElementTheme.colors.borderInteractivePrimary,
|
||||
checkmarkColor = ElementTheme.materialColors.onPrimary,
|
||||
disabledUncheckedColor = ElementTheme.colors.borderDisabled,
|
||||
disabledCheckedColor = ElementTheme.colors.iconDisabled,
|
||||
disabledIndeterminateColor = ElementTheme.colors.iconDisabled,
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun compoundErrorCheckBoxColors(): CheckboxColors {
|
||||
return CheckboxDefaults.colors(
|
||||
checkedColor = ElementTheme.materialColors.error,
|
||||
uncheckedColor = ElementTheme.materialColors.error,
|
||||
checkmarkColor = ElementTheme.materialColors.onPrimary,
|
||||
disabledUncheckedColor = ElementTheme.colors.borderDisabled,
|
||||
disabledCheckedColor = ElementTheme.colors.iconDisabled,
|
||||
disabledIndeterminateColor = ElementTheme.colors.iconDisabled,
|
||||
)
|
||||
}
|
||||
|
||||
@Preview(group = PreviewGroup.Toggles)
|
||||
@Composable
|
||||
internal fun CheckboxesPreview() = ElementThemedPreview(vertical = false) { ContentToPreview() }
|
||||
|
|
@ -53,9 +97,33 @@ internal fun CheckboxesPreview() = ElementThemedPreview(vertical = false) { Cont
|
|||
@Composable
|
||||
private fun ContentToPreview() {
|
||||
Column {
|
||||
Checkbox(onCheckedChange = {}, enabled = true, checked = true)
|
||||
Checkbox(onCheckedChange = {}, enabled = true, checked = false)
|
||||
Checkbox(onCheckedChange = {}, enabled = false, checked = true)
|
||||
Checkbox(onCheckedChange = {}, enabled = false, checked = false)
|
||||
// Unchecked
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
Checkbox(onCheckedChange = {}, enabled = true, checked = false)
|
||||
Checkbox(onCheckedChange = {}, enabled = false, checked = false)
|
||||
}
|
||||
// Checked
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
Checkbox(onCheckedChange = {}, enabled = true, checked = true)
|
||||
Checkbox(onCheckedChange = {}, enabled = false, checked = true)
|
||||
}
|
||||
// Indeterminate
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
Checkbox(onCheckedChange = {}, enabled = true, checked = false, indeterminate = true)
|
||||
Checkbox(onCheckedChange = {}, enabled = false, checked = false, indeterminate = true)
|
||||
}
|
||||
// Error
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
Checkbox(hasError = true, onCheckedChange = {}, checked = false)
|
||||
Checkbox(hasError = true, onCheckedChange = {}, enabled = false, checked = false)
|
||||
}
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
Checkbox(hasError = true, onCheckedChange = {}, enabled = true, checked = true)
|
||||
Checkbox(hasError = true, onCheckedChange = {}, enabled = false, checked = true)
|
||||
}
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
Checkbox(onCheckedChange = {}, enabled = true, checked = false, indeterminate = true, hasError = true)
|
||||
Checkbox(onCheckedChange = {}, enabled = false, checked = false, indeterminate = true, hasError = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,15 +17,21 @@
|
|||
package io.element.android.libraries.designsystem.theme.components
|
||||
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.material3.RadioButtonColors
|
||||
import androidx.compose.material3.RadioButtonDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
|
||||
import io.element.android.libraries.designsystem.preview.PreviewGroup
|
||||
import io.element.android.libraries.theme.ElementTheme
|
||||
|
||||
// Designs in https://www.figma.com/file/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?type=design&node-id=425%3A24202&mode=design&t=qb99xBP5mwwCtGkN-1
|
||||
|
||||
@Composable
|
||||
fun RadioButton(
|
||||
|
|
@ -33,7 +39,7 @@ fun RadioButton(
|
|||
onClick: (() -> Unit)?,
|
||||
modifier: Modifier = Modifier,
|
||||
enabled: Boolean = true,
|
||||
colors: RadioButtonColors = RadioButtonDefaults.colors(),
|
||||
colors: RadioButtonColors = compoundRadioButtonColors(),
|
||||
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }
|
||||
) {
|
||||
androidx.compose.material3.RadioButton(
|
||||
|
|
@ -46,6 +52,15 @@ fun RadioButton(
|
|||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
internal fun compoundRadioButtonColors(): RadioButtonColors {
|
||||
return RadioButtonDefaults.colors(
|
||||
unselectedColor = ElementTheme.colors.borderInteractivePrimary,
|
||||
disabledUnselectedColor = ElementTheme.colors.borderDisabled,
|
||||
disabledSelectedColor = ElementTheme.colors.iconDisabled,
|
||||
)
|
||||
}
|
||||
|
||||
@Preview(group = PreviewGroup.Toggles)
|
||||
@Composable
|
||||
internal fun RadioButtonPreview() = ElementThemedPreview(vertical = false) { ContentToPreview() }
|
||||
|
|
@ -53,9 +68,13 @@ internal fun RadioButtonPreview() = ElementThemedPreview(vertical = false) { Con
|
|||
@Composable
|
||||
private fun ContentToPreview() {
|
||||
Column {
|
||||
RadioButton(selected = false, onClick = {})
|
||||
RadioButton(selected = true, onClick = {})
|
||||
RadioButton(selected = false, enabled = false, onClick = {})
|
||||
RadioButton(selected = true, enabled = false, onClick = {})
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
RadioButton(selected = false, onClick = {})
|
||||
RadioButton(selected = false, enabled = false, onClick = {})
|
||||
}
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
RadioButton(selected = true, onClick = {})
|
||||
RadioButton(selected = true, enabled = false, onClick = {})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
* Copyright (c) 2023 New Vector Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.designsystem.theme.components
|
||||
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.SwitchColors
|
||||
import androidx.compose.material3.SwitchDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
|
||||
import io.element.android.libraries.designsystem.preview.PreviewGroup
|
||||
import io.element.android.libraries.theme.ElementTheme
|
||||
import androidx.compose.material3.Switch as Material3Switch
|
||||
|
||||
// Designs in https://www.figma.com/file/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?type=design&node-id=425%3A24203&mode=design&t=qb99xBP5mwwCtGkN-1
|
||||
|
||||
@Composable
|
||||
fun Switch(
|
||||
checked: Boolean,
|
||||
onCheckedChange: ((Boolean) -> Unit)?,
|
||||
modifier: Modifier = Modifier,
|
||||
enabled: Boolean = true,
|
||||
colors: SwitchColors = compoundSwitchColors(),
|
||||
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
||||
thumbContent: (@Composable () -> Unit)? = null,
|
||||
) {
|
||||
Material3Switch(
|
||||
checked = checked,
|
||||
onCheckedChange = onCheckedChange,
|
||||
modifier = modifier,
|
||||
enabled = enabled,
|
||||
colors = colors,
|
||||
interactionSource = interactionSource,
|
||||
thumbContent = thumbContent
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
internal fun compoundSwitchColors() = SwitchDefaults.colors(
|
||||
uncheckedThumbColor = ElementTheme.colors.bgActionPrimaryRest,
|
||||
uncheckedTrackColor = Color.Transparent,
|
||||
disabledUncheckedBorderColor = ElementTheme.colors.borderDisabled,
|
||||
disabledUncheckedThumbColor = ElementTheme.colors.iconDisabled,
|
||||
disabledCheckedTrackColor = ElementTheme.colors.iconDisabled,
|
||||
disabledCheckedBorderColor = ElementTheme.colors.iconDisabled,
|
||||
)
|
||||
|
||||
@Preview(group = PreviewGroup.Toggles)
|
||||
@Composable
|
||||
internal fun SwitchPreview() {
|
||||
var checked by remember { mutableStateOf(false) }
|
||||
ElementThemedPreview {
|
||||
Column(modifier = Modifier.padding(10.dp), verticalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
Switch(checked = checked, onCheckedChange = { checked = !checked })
|
||||
Switch(enabled = false, checked = checked, onCheckedChange = { checked = !checked })
|
||||
}
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
Switch(checked = !checked, onCheckedChange = { checked = !checked })
|
||||
Switch(enabled = false, checked = !checked, onCheckedChange = { checked = !checked })
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2023 New Vector Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.designsystem.theme.components.previews
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.outlined.Check
|
||||
import androidx.compose.material3.Switch
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
|
||||
import io.element.android.libraries.designsystem.preview.PreviewGroup
|
||||
import io.element.android.libraries.designsystem.theme.components.Icon
|
||||
|
||||
@Preview(group = PreviewGroup.Toggles)
|
||||
@Composable
|
||||
internal fun SwitchPreview() {
|
||||
ElementThemedPreview {
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
var checked by remember { mutableStateOf(false) }
|
||||
Switch(checked = checked, onCheckedChange = { checked = !checked })
|
||||
Switch(checked = checked, onCheckedChange = { checked = !checked }, thumbContent = {
|
||||
Icon(imageVector = Icons.Outlined.Check, contentDescription = null)
|
||||
})
|
||||
Switch(checked = checked, enabled = false, onCheckedChange = { checked = !checked })
|
||||
Switch(checked = checked, enabled = false, onCheckedChange = { checked = !checked }, thumbContent = {
|
||||
Icon(imageVector = Icons.Outlined.Check, contentDescription = null)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d47034cafef80cdac5d702e52092f07ebc0bb96dbdd7f9f0c1ea2e302cbe9917
|
||||
size 33858
|
||||
oid sha256:7b42afece0186cbbcb9ca5b716c3c535147d27bf1c57cabf033339fe9100edeb
|
||||
size 33889
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:84ea420320bd406588cb4d9aa3fea79d63ec37fc31a00d4fa77a06a7c8499145
|
||||
size 35452
|
||||
oid sha256:248817743f94c09d5bb02580687f5d9150dcf22b1670289955197491f375ad65
|
||||
size 35640
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d01eaadfd0b9508c44145ba2e6cd85a6a24fdb43f665188404f9da1cf3e03321
|
||||
size 86292
|
||||
oid sha256:a4f987d8b03013d3aacbcc2b5a7374148c29d2c24dc41211781db15a06f3d52a
|
||||
size 86365
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:45f4c5a3edbf61d815a7b1221a73123b09c8767d15ae2d9ae04f11ae3defe697
|
||||
size 67911
|
||||
oid sha256:90a7a6bc46fea5d6a02c9e3b6a29018e51fe270fc5034fdd7f9045f6fbbbc1d9
|
||||
size 67916
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6811324cfc868722c57a02f2544ffcbbb2f2247fc9284e4e6fe869e33447c7b1
|
||||
size 69939
|
||||
oid sha256:037e24e82436183ed2ff4138a997c232e331076dd5374958e11efcfa8063b4d2
|
||||
size 69962
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0169cdedfc56ba1b55f133ed41146a0ec3597123a88ed086f7584f06d235da26
|
||||
size 57732
|
||||
oid sha256:3cb08dc14db764d1bc432dc58374cad50da83c5e30e7e48077b6f400aa7a3c9b
|
||||
size 57811
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a0cdeea89592fbad03e1ad29aa1616bd779403f022097ca11510ff9cda3457aa
|
||||
size 83656
|
||||
oid sha256:d0a9c923401980b00b756159f9c77f153892b79cc2b806150734b6bd8f67fe4d
|
||||
size 83675
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f61e37505ee1276d894641647ec34323f415f4a3cdc699de01579a92255c2a4e
|
||||
size 60941
|
||||
oid sha256:4e543f94df5f2de717e7e870fe043ecf72b29aeaca23d33b9b16af76e2cc1636
|
||||
size 61222
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:630fa772c15d8f16461655b2c2763d8ca85dc29812fea7d01366d68e3a446eaf
|
||||
size 86660
|
||||
oid sha256:1b94a9fdcf1f2c62fa2a0f574210b85de96ba068ba17ba562af79f21d7a38f8f
|
||||
size 86854
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:911217e791dc46e76b4866efc7eed59dc721795b0434f0a985078a9847347980
|
||||
size 26652
|
||||
oid sha256:71cee553053649ba9c83f5219d367d860897bc1ca3a5a0c35a234563d6bb5c16
|
||||
size 26604
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c1ccba126f5fef03ee24c6089088b2014911452a7c54eeab3caa49389b9859d3
|
||||
size 26253
|
||||
oid sha256:599e2496f9364d55dcc0cdb48b4b4919c052b0a66634d69bbb40834b03559b97
|
||||
size 26204
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:093b9faa97e65ad0108882964e8e8af7a980a2fdbde32d8ff83d8420cf8b6f95
|
||||
size 26425
|
||||
oid sha256:4561451a8bbd583ffd2bb38be5c41fe9ae787b54500cc4c14af8d85989558fec
|
||||
size 26387
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:093b9faa97e65ad0108882964e8e8af7a980a2fdbde32d8ff83d8420cf8b6f95
|
||||
size 26425
|
||||
oid sha256:4561451a8bbd583ffd2bb38be5c41fe9ae787b54500cc4c14af8d85989558fec
|
||||
size 26387
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:093b9faa97e65ad0108882964e8e8af7a980a2fdbde32d8ff83d8420cf8b6f95
|
||||
size 26425
|
||||
oid sha256:4561451a8bbd583ffd2bb38be5c41fe9ae787b54500cc4c14af8d85989558fec
|
||||
size 26387
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:162b68e63538b71e1b3a265281bebd7f56df3cd624caeafa94ab80d46326e2d4
|
||||
size 28162
|
||||
oid sha256:d3383f2ec12b187ad1d6402fb852c98d8041376c6ecee372e91529554bd30994
|
||||
size 28286
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:775effbea7088ea32b6eef036968d0be99bc267d4fdea2269d3ab1101f0ee240
|
||||
size 27542
|
||||
oid sha256:6665acc104fcc5477be20460ea5b3ba7cd75491bcd3c7df6fa244747ab55706c
|
||||
size 27690
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:95313cb1717aabbb275b4ed039741da2ddf95af02d177f426b354701cc9badd9
|
||||
size 27947
|
||||
oid sha256:00e3ad9d2805d4d8e856e30226e0da4297ef5ae25c1e3b5760bf23e0611a7b97
|
||||
size 27977
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:95313cb1717aabbb275b4ed039741da2ddf95af02d177f426b354701cc9badd9
|
||||
size 27947
|
||||
oid sha256:00e3ad9d2805d4d8e856e30226e0da4297ef5ae25c1e3b5760bf23e0611a7b97
|
||||
size 27977
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:95313cb1717aabbb275b4ed039741da2ddf95af02d177f426b354701cc9badd9
|
||||
size 27947
|
||||
oid sha256:00e3ad9d2805d4d8e856e30226e0da4297ef5ae25c1e3b5760bf23e0611a7b97
|
||||
size 27977
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c00bf46d1ef6337bad18f6454cf4601141ed2190c6a697ddc46d5a156d4997ca
|
||||
size 127950
|
||||
oid sha256:26878fecd5785eed15a1fa46fabb0b2942139bf86dbce15ae544bfa5edf791e5
|
||||
size 127652
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:88cd76c95c31061bf4e9e7528ed5d66a8b49813d868f21b2d2615e77318a9706
|
||||
size 133068
|
||||
oid sha256:cbdc89d08cd8e689bb603437dbbbeccab2870740752af313cd8b60ae48aee839
|
||||
size 132950
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ba708a48280a4f42196d61b0cfbb7f0bf6e4a818b8e76ba981e5cbacff37c9dd
|
||||
size 25493
|
||||
oid sha256:e8c4254a13c72f1e6e710caafb173623697b3aba5472ddbf14a9a8a8a16722d1
|
||||
size 25454
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8b75a4207e4dc3fc0e3a124574e0352eeb7e731558d90b4d19060d3a046b76e7
|
||||
size 26656
|
||||
oid sha256:bfa0258b099d0fb6451eddcf38dc2184bad611355f56054ede8c874ea28b9fe8
|
||||
size 26579
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6c0a16524e1017274eeb0f07a50a47c6351af9a901355b54cccbc9ec799e79f4
|
||||
size 45174
|
||||
oid sha256:4a9a3902dd33ab3e528fa9c534302228113cc468914025766a21397ad3eda9e2
|
||||
size 45064
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6c0a16524e1017274eeb0f07a50a47c6351af9a901355b54cccbc9ec799e79f4
|
||||
size 45174
|
||||
oid sha256:4a9a3902dd33ab3e528fa9c534302228113cc468914025766a21397ad3eda9e2
|
||||
size 45064
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:abb7854a1e47764a907434cdf32e138b95c947bab682da485eea86f9726cf3b9
|
||||
size 49946
|
||||
oid sha256:cd1cc710443af62efddf0ea165a6289912f471f669803255368d3266b872f5f6
|
||||
size 49829
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:abb7854a1e47764a907434cdf32e138b95c947bab682da485eea86f9726cf3b9
|
||||
size 49946
|
||||
oid sha256:cd1cc710443af62efddf0ea165a6289912f471f669803255368d3266b872f5f6
|
||||
size 49829
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:07e1283e5ac86cf9c77b0695a6622682e7257abce1e7787440f50c8f42ca0291
|
||||
size 64632
|
||||
oid sha256:5ef9e33bf65764ef25b4184c9f49be8befe4f6fad77d5f6fafc5ffcb7c09fb51
|
||||
size 64682
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:dac098de353f8dce2d8eea77bccdcebf997c642f05afaa15c02a9bcf230fa37a
|
||||
size 200158
|
||||
oid sha256:a7f9a86df68cb0595c23c86e7b91f73af55531dd0495f0409471fb94165bdeb6
|
||||
size 200178
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c4b2f7af207e8d2f951474575de12969e0fdf0831ce68fdfde5b67b364c67156
|
||||
size 55013
|
||||
oid sha256:4ce0000ec9242c0b65fb06d1fea4622143bda5bebb691f8114890edf47f341ec
|
||||
size 55166
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:91fcd5dc74788d4f597dfc265a1d6a7511e5f4db47323d930f7c54c7df7d62bd
|
||||
size 67464
|
||||
oid sha256:cbe0ca40022613ac7df059bad8a8cb3f60b1242a0d28b3cd2b5a59a7a26d828d
|
||||
size 67488
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3583a0758b9c02c7e165dc593f7a090a54d70bcfa0f39853ba3bddb42850d404
|
||||
size 204354
|
||||
oid sha256:d10808329ac9280334c5bad3230eace88eb768a9e13b7d736c4e99cc74124c84
|
||||
size 204325
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3dac3ed1e6c46265e8b0f7bb479042271668178ff2ad34baae3cb2d777c7902a
|
||||
size 59091
|
||||
oid sha256:bd04de63275687ad4a905a3438f47898f864ff75591f6fc191d074550787661d
|
||||
size 59880
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cc5794eba22329603285fa264519fd9c4c7dae4ddb867ebe54f5c87f4af646fb
|
||||
size 45438
|
||||
oid sha256:da3f4846d648ab399604db869980c41243ba6e7f91f16365cdae00305ce5723e
|
||||
size 45416
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f67bdbeedafdaf59f1bb643d86dbfdf10442900d7d426e2e31cf62ed5fe43d9d
|
||||
size 38555
|
||||
oid sha256:0fc4fe77d849f04f55c5142f95493a1a05cf2ba44293b5fe81414336d1687dad
|
||||
size 38540
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:af4c302e55c391b0aa69a418f80f8df514157a9c30d3f33b28cf6c322c458182
|
||||
size 46942
|
||||
oid sha256:d1b2742a29099293462ef6a020f4440143db9512b70b5638d09af685c012bb11
|
||||
size 46910
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:aca6a614db1bcaec2a0b8ad4c3a64c761fda757e32865f535e75f470fda97774
|
||||
size 40683
|
||||
oid sha256:0a5e412535f5c0fc384983f0b58319151c2e60a7b30f4f1e89a4411717ed93eb
|
||||
size 40701
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:265ddc2f480f343efbb8717a66f5f933714e5320e837f0d26d825ed595612f2d
|
||||
size 21039
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:eb51ba92db07682afe5727078f8e8b0a44cad16566b97430ca92132689bf25e7
|
||||
size 10188
|
||||
oid sha256:30dc47ea866c8d8c1faab02ce12e9d00441a70b778bb267a3c52a5eb8635e6ad
|
||||
size 16686
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ae7c673ab96eaa30a72ffa4b960b93f7c5971be1155aba7d03ac4c43652098ca
|
||||
size 16361
|
||||
oid sha256:88c7be1a8cff74b057ee0f7ba09922c814c8c0b6a3dbaa69ea58ec287c425fca
|
||||
size 14357
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3812e3a220997be68aca7817c6c93987009f81079aa979161f297d529b91d8a1
|
||||
size 21505
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:254850b3a638c4d54d9f6642c15caf3e4037c47ce50ae48102e2346df6e8947f
|
||||
size 29282
|
||||
oid sha256:b49f3a925c6652957bbb90c71d2dc47618d47cf76ceec50d71d9ee8758a41ea8
|
||||
size 29262
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b8f5077f75ee156faae31e73d464840fda51f82b0666f0a8e661295eb193b133
|
||||
size 27442
|
||||
oid sha256:3a12ecd968f65e56fb995dcc05f7c9e3160a37dc1d9a95c8b6c52ba488fb1b22
|
||||
size 27454
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4f59b518dafea7d576a888661d740afeb1a6e72d432527a5f27d4a0a695eab35
|
||||
size 29718
|
||||
oid sha256:f428d22f64900a84904f02d7f49c0c7e9b295facaba3b86cec7175d98385dca9
|
||||
size 29663
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7988848232d0f44f6fd04b1a8a8ce17681659be7e63a9f68f4f3743d51f3a679
|
||||
size 29382
|
||||
oid sha256:26a2304fe3e5ad79241843a8dfdb9cb81d47a8cd4b4c9ce7cc0552d8be91d03d
|
||||
size 29404
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3f6792f7963608fd167889be3e657ac6ca6eafa6949bfbf03fa21f9a07b34573
|
||||
size 115873
|
||||
oid sha256:d192c21d0da760d33517a226e93d8e994d6a83bbcebc422deae1dcca7e512f71
|
||||
size 115822
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue