diff --git a/app/pages/auth/callback.vue b/app/pages/auth/callback.vue index 3160815..037f835 100644 --- a/app/pages/auth/callback.vue +++ b/app/pages/auth/callback.vue @@ -17,7 +17,14 @@ onMounted(() => { min-height: 100dvh; display: grid; place-items: center; - color: #6b7280; - font: 500 1rem/1.4 system-ui, sans-serif; + background: #f4f1ea; + color: #837a6b; + font: 500 1rem/1.4 "Spline Sans", system-ui, sans-serif; +} +@media (prefers-color-scheme: dark) { + .callback { + background: #181410; + color: #9d9281; + } } diff --git a/app/pages/index.vue b/app/pages/index.vue index 5ffd6f6..18543a4 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -24,10 +24,18 @@ const error = ref(null); const title = ref(""); const description = ref(""); +const showNote = ref(false); const adding = ref(false); +const titleInput = ref(null); const selectedList = computed(() => lists.value.find((l) => l.id === selectedId.value) ?? null); +const today = new Intl.DateTimeFormat(undefined, { + weekday: "long", + month: "long", + day: "numeric", +}).format(new Date()); + async function refreshLists() { loadingLists.value = true; error.value = null; @@ -79,6 +87,8 @@ async function addTask() { tasks.value = [...tasks.value, created]; title.value = ""; description.value = ""; + showNote.value = false; + titleInput.value?.focus(); } catch (e) { error.value = (e as Error).message; } finally { @@ -86,6 +96,11 @@ async function addTask() { } } +function toggleNote() { + showNote.value = !showNote.value; + if (!showNote.value) description.value = ""; +} + onMounted(() => { // The auth plugin gates before mount, so this is normally authenticated. // Safety net: if not, drive login instead of calling the API (no 401 banner). @@ -96,12 +111,16 @@ onMounted(() => {