From 22af888ec059eac53827d07f498de1edf8859abf Mon Sep 17 00:00:00 2001
From: Martin Dvorak
Date: Thu, 8 Oct 2026 19:19:20 +0000
Subject: [PATCH] Redesign the quick-action CTAs: two ways in (study deck vs.
homework)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Library empty state ("Your icebox")
- Replace the single "Make your first deck" button with two quick-action
cards: "Create interactive test" (primary, ice-gradient icon + subtle
accent border) and "Help me with my homework" (glass card, sparkles
icon). Stacked on phones, side by side from 640px up; both >=44px tall.
/create
- Replace the "Got homework instead of notes?" banner with a two-card mode
switcher above "1. Add your notes": "Study Deck & Quizzes" (the current
view — aria-current, accent tint, ice icon) and "Homework Solver" (a
shortcut to /homework). Icon-on-top tiles on phones, inline rows from
640px up; glass tokens + backdrop blur in both themes.
Strings
- New keys in both dictionaries: emptyStateCreateDeck, emptyStateHomework,
actionStudyDeck, actionHomework. Drop the now-unused homework.entry and
library.makeFirst keys.
Drive-by AA fix (light mode, /create only)
- The "New folder" dashed button and the difficulty blurbs move from
frost-500 to frost-600 (4.0:1 -> ~6:1). Dark mode is unchanged.
Service worker: freezmo-v8.
Verified: redesign suite 32/32 (stacked/side-by-side layouts, 360/390/1280,
dark+light, en+cs, >=44px targets, both cards navigate, no overflow, axe
contrast), mobile 49/49, i18n 27/27, desktop regression 73/73. Lint + build
clean.
---
components/LibraryScreen.tsx | 37 +++++++++++++++++++++---
components/UploadScreen.tsx | 54 +++++++++++++++++++++++-------------
lib/i18n-dict.ts | 16 ++++++++---
public/sw.js | 2 +-
4 files changed, 81 insertions(+), 28 deletions(-)
diff --git a/components/LibraryScreen.tsx b/components/LibraryScreen.tsx
index ec618ea..2beeea5 100644
--- a/components/LibraryScreen.tsx
+++ b/components/LibraryScreen.tsx
@@ -5,7 +5,7 @@ import { useMemo, useRef, useState, useSyncExternalStore } from "react";
import { DeckCard } from "@/components/DeckCard";
import { FolderBar } from "@/components/FolderBar";
-import { FolderIcon, UploadIcon } from "@/components/icons";
+import { FolderIcon, SnowflakeIcon, SparklesIcon, UploadIcon } from "@/components/icons";
import { Button, EmptyState } from "@/components/ui";
import { folderStore, renameFolder } from "@/lib/folders";
import { useI18n } from "@/lib/i18n";
@@ -224,9 +224,38 @@ export function LibraryScreen() {
- {t("library.makeFirst")}
-
+ /* Two ways in: build a study deck from notes, or hand over an
+ assignment. Stacked on phones, side by side from 640px up. */
+