iceshrimp-legacy/src/client/app/common/views/components/ui/button.vue
2018-09-26 20:19:35 +09:00

83 lines
1.2 KiB
Vue

<template>
<div class="ui-button" :class="[styl]">
<button :type="type" @click="$emit('click')">
<slot></slot>
</button>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
props: {
type: {
type: String,
required: false
}
},
data() {
return {
styl: 'fill'
};
},
inject: {
isCardChild: { default: false }
},
created() {
if (this.isCardChild) {
this.styl = 'line';
}
}
});
</script>
<style lang="stylus" scoped>
root(isDark, fill)
> button
display block
width 100%
margin 0
padding 0
font-weight bold
font-size 16px
line-height 44px
border none
border-radius 6px
outline none
box-shadow none
if fill
color var(--primaryForeground)
background var(--primary)
&:hover
background var(--primaryLighten5)
&:active
background var(--primaryDarken5)
else
color var(--primary)
background none
&:hover
color var(--primaryDarken5)
&:active
background var(--primaryAlpha03)
.ui-button[data-darkmode]
&.fill
root(true, true)
&:not(.fill)
root(true, false)
.ui-button:not([data-darkmode])
&.fill
root(false, true)
&:not(.fill)
root(false, false)
</style>