diff --git a/design/tententen-ui.sketch b/design/tententen-ui.sketch index 22aa34c..8b69dcd 100644 Binary files a/design/tententen-ui.sketch and b/design/tententen-ui.sketch differ diff --git a/src/const/color.ts b/src/const/color.ts index 3ee2e65..e62d0ac 100644 --- a/src/const/color.ts +++ b/src/const/color.ts @@ -1,2 +1,5 @@ -export const VERY_DARK_GRAYISH_BLUE = 'hsla(220, 20%, 30%, 1)' export const GRAYISH_BLUE_ALPHA80 = 'hsla(220, 20%, 80%, 0.8)' +export const LIGHT_GRAYISH_LIME_GREEN = '#DFF2DC' +export const MOSTLY_BLACK = '#282828' +export const VERY_DARK_GRAYISH_BLUE = 'hsla(220, 20%, 30%, 1)' +export const VERY_SOFT_RED = '#DFB0B0' diff --git a/src/const/event.ts b/src/const/event.ts index f4849a8..be99e08 100644 --- a/src/const/event.ts +++ b/src/const/event.ts @@ -1,3 +1,13 @@ export const INIT_CANVAS_CONTROLS = 'init-canvas-controls' export const LIST_MODAL_OPEN = 'list-modal-open' export const TOAST = 'toast' + +export type MessageVariant = 'success' | 'danger' + + +export type ToastMessage = { + message: string, + variant: MessageVariant, +} + +export type ToastEvent = CustomEvent diff --git a/src/main.ts b/src/main.ts index 0cc4643..489c1ca 100644 --- a/src/main.ts +++ b/src/main.ts @@ -414,17 +414,10 @@ export class MainFooterControls { @on.click.at('.save-btn') @pub('save') save() { - this.toast() - } - - @pub(Event.TOAST) - toast() { - return { message: 'toast' } } @on.click.at('.list-btn') - //@pub(Event.LIST_MODAL_OPEN) + @pub(Event.LIST_MODAL_OPEN) list() { - this.toast() } } diff --git a/src/toast.ts b/src/toast.ts index ab9f13d..b642a98 100644 --- a/src/toast.ts +++ b/src/toast.ts @@ -1,5 +1,6 @@ import { component, is, on, prep, sub } from 'capsid' import { css } from 'emotion' +import { LIGHT_GRAYISH_LIME_GREEN, MOSTLY_BLACK, VERY_SOFT_RED } from './const/color' import * as Event from './const/event' import { defer } from './util/async' @@ -9,10 +10,15 @@ export class ToastProvider { el?: HTMLElement @on(Event.TOAST) - onToast(e: CustomEvent) { + onToast(e: Event.ToastEvent) { const toast = document.createElement('div') toast.classList.add('toast') toast.textContent = e.detail.message + if (e.detail.variant === 'success') { + toast.classList.add('is-success') + } else if (e.detail.variant === 'danger') { + toast.classList.add('is-danger') + } this.el!.appendChild(toast) prep('toast', this.el) } @@ -31,13 +37,20 @@ export class ToastProvider { transition-property: opacity; transition-duration: 500ms; text-align: center; - background-color: gray; - color: white; + background-color: ${MOSTLY_BLACK}; padding: 8px; &.show { opacity: 0.9; } + + &.is-success { + background-color: ${LIGHT_GRAYISH_LIME_GREEN}; + } + + &.is-danger { + background-color: ${VERY_SOFT_RED} + } `) export class Toast { el?: HTMLElement