Add base styling and Button component
This commit is contained in:
34
src/app.css
Normal file
34
src/app.css
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
:root {
|
||||||
|
--background-color: #1b1b20;
|
||||||
|
--font-family: Verdana, Geneva, Tahoma, sans-serif;
|
||||||
|
|
||||||
|
--primary-color: #2e3042;
|
||||||
|
--primary-accent-color: #263447;
|
||||||
|
|
||||||
|
--secondary-color: #dfdfe9;
|
||||||
|
--secondary-accent-color: #adadbb;
|
||||||
|
|
||||||
|
--danger-color: #be3329;
|
||||||
|
--danger-accent-color: #ddaeb2;
|
||||||
|
--danger-active-color: #b69092;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: var(--background-color);
|
||||||
|
font-family: Verdana, Geneva, Tahoma, sans-serif;
|
||||||
|
color: white;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
border: none;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
70
src/lib/components/Button.svelte
Normal file
70
src/lib/components/Button.svelte
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { colors } from '$lib/theme';
|
||||||
|
|
||||||
|
type ButtonType = 'primary' | 'secondary' | 'tertiary' | 'danger';
|
||||||
|
|
||||||
|
export let variant: ButtonType;
|
||||||
|
|
||||||
|
function getStyles(buttonType: ButtonType) {
|
||||||
|
switch (buttonType) {
|
||||||
|
case 'primary':
|
||||||
|
return {
|
||||||
|
backgroundColor: colors.primaryColor,
|
||||||
|
color: colors.secondaryColor,
|
||||||
|
activeColor: colors.primaryAccentColor
|
||||||
|
};
|
||||||
|
case 'secondary':
|
||||||
|
return {
|
||||||
|
backgroundColor: colors.secondaryColor,
|
||||||
|
color: colors.primaryColor,
|
||||||
|
activeColor: colors.secondaryAccentColor
|
||||||
|
};
|
||||||
|
case 'tertiary':
|
||||||
|
return {
|
||||||
|
backgroundColor: 'transparent',
|
||||||
|
color: colors.secondaryColor,
|
||||||
|
activeColor: colors.primaryAccentColor
|
||||||
|
};
|
||||||
|
case 'danger':
|
||||||
|
return {
|
||||||
|
backgroundColor: colors.dangerAccentColor,
|
||||||
|
color: colors.dangerColor,
|
||||||
|
activeColor: colors.dangerActivecolor
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const { backgroundColor, color, activeColor } = getStyles(variant);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<button
|
||||||
|
style:--color={color}
|
||||||
|
style:--background-color={backgroundColor}
|
||||||
|
style:--active={activeColor}
|
||||||
|
on:click
|
||||||
|
>
|
||||||
|
<slot />
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
button {
|
||||||
|
border-style: none;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 2px 10px 2px 10px;
|
||||||
|
font-family: var(--font-family);
|
||||||
|
height: 40px;
|
||||||
|
max-height: 40px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: var(--color);
|
||||||
|
border: 1px solid;
|
||||||
|
background-color: var(--background-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:active {
|
||||||
|
background-color: var(--active);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
13
src/lib/theme.ts
Normal file
13
src/lib/theme.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
export const colors = {
|
||||||
|
backgroundColor: '#1b1b20',
|
||||||
|
|
||||||
|
primaryColor: '#2e3042',
|
||||||
|
primaryAccentColor: '#263447',
|
||||||
|
|
||||||
|
secondaryColor: '#dfdfe9',
|
||||||
|
secondaryAccentColor: ' #adadbb',
|
||||||
|
|
||||||
|
dangerColor: '#be3329',
|
||||||
|
dangerAccentColor: '#ddaeb2',
|
||||||
|
dangerActivecolor: '#b69092'
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user