+ {/* Display */}
+
+
+ {/* Memory row */}
+
+
+
+
+
+
+
+
+
+ {/* Keypad — 4 columns × 5 rows */}
+
+ {/* Row 1: utility */}
+ applyUnary('percent')} />
+
+
+
+
+ {/* Row 2: unary + divide */}
+ applyUnary('reciprocal')} />
+ applyUnary('square')} />
+ applyUnary('sqrt')} />
+ chooseOperator('divide')} />
+
+ {/* Row 3: 7 8 9 × */}
+ inputDigit('7')} />
+ inputDigit('8')} />
+ inputDigit('9')} />
+ chooseOperator('multiply')} />
+
+ {/* Row 4: 4 5 6 − */}
+ inputDigit('4')} />
+ inputDigit('5')} />
+ inputDigit('6')} />
+ chooseOperator('subtract')} />
+
+ {/* Row 5: 1 2 3 + */}
+ inputDigit('1')} />
+ inputDigit('2')} />
+ inputDigit('3')} />
+ chooseOperator('add')} />
+
+ {/* Row 6: +/- 0 , = */}
+
+ inputDigit('0')} />
+
+
+
+
+ );
+}
diff --git a/apps/web/src/messages/de.json b/apps/web/src/messages/de.json
index 034cefe..374f008 100644
--- a/apps/web/src/messages/de.json
+++ b/apps/web/src/messages/de.json
@@ -192,6 +192,38 @@
"description": "Freitext-Notizen mit Markdown",
"defaultTitle": "Notiz",
"autosaveError": "Speichern fehlgeschlagen"
+ },
+ "calculator": {
+ "name": "Taschenrechner",
+ "description": "Grundrechenarten mit Tastatureingabe"
+ },
+ "favorites": {
+ "name": "Favoriten",
+ "description": "Schnellzugriff auf Links",
+ "loading": "Favoriten werden geladen...",
+ "empty": "Noch keine Favoriten.",
+ "addTitle": "Titel",
+ "addUrl": "URL",
+ "addButton": "Hinzufuegen",
+ "listView": "Liste",
+ "gridView": "Kacheln",
+ "editButton": "Favorit bearbeiten",
+ "deleteButton": "Favorit loeschen",
+ "saveButton": "Speichern",
+ "cancelButton": "Abbrechen",
+ "error": "Fehler beim Laden der Favoriten"
+ },
+ "link": {
+ "name": "Link",
+ "description": "Einzelner Schnellzugriff-Link"
+ },
+ "stopwatch": {
+ "name": "Stoppuhr",
+ "description": "Zeitmessung mit Rundenzeiten",
+ "start": "Start",
+ "stop": "Stop",
+ "reset": "Reset",
+ "lap": "Runde"
}
},
"admin": {
diff --git a/apps/web/src/messages/en.json b/apps/web/src/messages/en.json
index f653fa6..7a4d63f 100644
--- a/apps/web/src/messages/en.json
+++ b/apps/web/src/messages/en.json
@@ -192,6 +192,38 @@
"description": "Free-text notes with Markdown",
"defaultTitle": "Note",
"autosaveError": "Save failed"
+ },
+ "calculator": {
+ "name": "Calculator",
+ "description": "Basic arithmetic with keyboard support"
+ },
+ "favorites": {
+ "name": "Favorites",
+ "description": "Quick-access links",
+ "loading": "Loading favorites...",
+ "empty": "No favorites yet.",
+ "addTitle": "Title",
+ "addUrl": "URL",
+ "addButton": "Add",
+ "listView": "List",
+ "gridView": "Grid",
+ "editButton": "Edit favorite",
+ "deleteButton": "Delete favorite",
+ "saveButton": "Save",
+ "cancelButton": "Cancel",
+ "error": "Error loading favorites"
+ },
+ "link": {
+ "name": "Link",
+ "description": "Single quick-access link"
+ },
+ "stopwatch": {
+ "name": "Stopwatch",
+ "description": "Time measurement with lap times",
+ "start": "Start",
+ "stop": "Stop",
+ "reset": "Reset",
+ "lap": "Lap"
}
},
"admin": {