mirror of
https://codeberg.org/Kankys/doxa.git
synced 2026-11-11 06:44:36 +01:00
new-doxa-monorepo
This commit is contained in:
1 parent
b4401527a3
commit
5eacbb0182
162 files changed
+21820
-2
No files matched your search
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M184 120C184 89.1 209.1 64 240 64L264 64C281.7 64 296 78.3 296 96L296 544C296 561.7 281.7 576 264 576L232 576C202.2 576 177.1 555.6 170 528C169.3 528 168.7 528 168 528C123.8 528 88 492.2 88 448C88 430 94 413.4 104 400C84.6 385.4 72 362.2 72 336C72 305.1 89.6 278.2 115.2 264.9C108.1 252.9 104 238.9 104 224C104 179.8 139.8 144 184 144L184 120zM456 120L456 144C500.2 144 536 179.8 536 224C536 239 531.9 253 524.8 264.9C550.5 278.2 568 305 568 336C568 362.2 555.4 385.4 536 400C546 413.4 552 430 552 448C552 492.2 516.2 528 472 528C471.3 528 470.7 528 470 528C462.9 555.6 437.8 576 408 576L376 576C358.3 576 344 561.7 344 544L344 96C344 78.3 358.3 64 376 64L400 64C430.9 64 456 89.1 456 120z"/></svg>
|
||||
|
After Width: | Height: | Size: 920 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.6 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 658 KiB |
Whitespace-only changes.
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"notes": []
|
||||
}
|
||||
Whitespace-only changes.
@@ -0,0 +1,72 @@
|
||||
// Tento skript by měl být v HTML vložen PŘED hlavním script.js
|
||||
|
||||
// Globální překladová funkce, kterou bude používat i script.js
|
||||
let translations = {};
|
||||
window.t = (key, params = {}) => {
|
||||
let text = translations[key] || key;
|
||||
for (const p in params) {
|
||||
text = text.replace(`{${p}}`, params[p]);
|
||||
}
|
||||
return text;
|
||||
};
|
||||
|
||||
/**
|
||||
* Načte překlady pro daný jazyk a aplikuje je na DOM.
|
||||
* @param {string} lang - Kód jazyka (např. 'en', 'cs').
|
||||
*/
|
||||
window.setLanguage = async function(lang) {
|
||||
// 1. Uloží preferenci uživatele
|
||||
localStorage.setItem('doxa_lang', lang);
|
||||
|
||||
// Nastaví atribut 'lang' na <html> elementu
|
||||
document.documentElement.lang = lang;
|
||||
|
||||
// 2. Načte a uloží překlady
|
||||
try {
|
||||
const response = await fetch(`assets/locales/${lang}.json`);
|
||||
if (!response.ok) {
|
||||
console.error(`Chyba: Nepodařilo se načíst soubor s překlady: ${lang}.json`);
|
||||
translations = {};
|
||||
} else {
|
||||
translations = await response.json();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Chyba při načítání překladů pro jazyk ${lang}:`, error);
|
||||
translations = {};
|
||||
}
|
||||
|
||||
// 3. Přeloží všechny statické prvky v DOM
|
||||
document.querySelectorAll('[data-i18n-key]').forEach(el => {
|
||||
const key = el.getAttribute('data-i18n-key');
|
||||
const translation = window.t(key);
|
||||
|
||||
// Přeloží specifický atribut (např. placeholder, title), pokud je definován
|
||||
const attr = el.getAttribute('data-i18n-attr');
|
||||
if (attr) {
|
||||
el.setAttribute(attr, translation);
|
||||
} else {
|
||||
// Jinak přeloží obsah elementu
|
||||
el.innerHTML = translation;
|
||||
}
|
||||
});
|
||||
|
||||
// 4. DŮLEŽITÉ: Znovu inicializuje části aplikace, které používají dynamický text
|
||||
if (typeof window.updateDynamicUIText === 'function') {
|
||||
window.updateDynamicUIText();
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const userLang = localStorage.getItem('doxa_lang') || navigator.language.split('-')[0];
|
||||
const langToLoad = ['en', 'cs'].includes(userLang) ? userLang : 'cs';
|
||||
window.setLanguage(langToLoad);
|
||||
|
||||
const langToggleBtn = document.getElementById('langToggle');
|
||||
if (langToggleBtn) {
|
||||
langToggleBtn.addEventListener('click', () => {
|
||||
const currentLang = localStorage.getItem('doxa_lang') || 'cs';
|
||||
const nextLang = currentLang === 'cs' ? 'en' : 'cs';
|
||||
window.setLanguage(nextLang);
|
||||
});
|
||||
}
|
||||
});
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"webTitle": "DOXA Notes — Workspace",
|
||||
"ogLocale": "cs_CZ",
|
||||
"navLink": "Web DOXA Notes, Návody, Manifest",
|
||||
"themeToggleLabel": "Přepnout motiv",
|
||||
"mainTitle": "DOXA Notes 🦅",
|
||||
"mainSubtitle": "Local-First Notes & Sovereignty",
|
||||
"noteTitlePlaceholder": "Název poznámky",
|
||||
"noteTagsPlaceholder": "Tagy (oddělujte čárkou, např: práce, citaty)",
|
||||
"noteFolderPlaceholder": "Složka (nepovinné)",
|
||||
"toolbarH1": "Nadpis H1",
|
||||
"toolbarH2": "Nadpis H2",
|
||||
"toolbarH3": "Nadpis H3",
|
||||
"toolbarBold": "Tučné (Ctrl+B)",
|
||||
"toolbarItalic": "Kurzíva (Ctrl+I)",
|
||||
"toolbarStrike": "Přeškrtnutí",
|
||||
"toolbarUl": "Odrážkový seznam",
|
||||
"toolbarOl": "Číslovaný seznam",
|
||||
"toolbarTask": "Úkol (checkbox)",
|
||||
"toolbarQuote": "Citace",
|
||||
"toolbarHr": "Vodorovná čára",
|
||||
"toolbarCode": "Inline kód",
|
||||
"toolbarCodeblock": "Blok kódu",
|
||||
"toolbarLink": "Vložit odkaz",
|
||||
"toolbarImage": "Vložit obrázek",
|
||||
"toolbarTable": "Vložit tabulku",
|
||||
"toolbarPreview": "Náhled",
|
||||
"noteInputPlaceholder": "Zapiš poznámku... Použij / pro rychlé vyhledávání příkazů",
|
||||
"saveNowButton": "Uložit nyní",
|
||||
"exportJsonButton": "Exportovat JSON",
|
||||
"exportMarkdownButton": "Exportovat do Markdown",
|
||||
"importJsonButton": "Importovat JSON",
|
||||
"newNoteButton": "➕ Nová poznámka",
|
||||
"filterAllFolders": "📁 Všechny složky",
|
||||
"searchInputPlaceholder": "🔍 Vyhledat podle názvu, obsahu, tagu nebo složky...",
|
||||
"dragHint": "Přetáhněte poznámky pro změnu pořadí nebo použijte šipky vedle položek.",
|
||||
"slashDate": "📅 Vložit datum",
|
||||
"slashTime": "🕚 Vložit čas",
|
||||
"slashCode": "📝 Vložit kód",
|
||||
"slashCodeblock": "📄 Vložit blok kódu",
|
||||
"slashLink": "🔗 Vložit odkaz",
|
||||
"slashImage": "🖼️ Vložit obrázek",
|
||||
"slashTable": "📊 Vložit tabulku",
|
||||
"slashQuote": "❝ Vložit citaci",
|
||||
"slashHr": "🖋️ Vodorovná čára",
|
||||
"slashTask": "☑️ Vložit úkol",
|
||||
"slashList": "📋 Vložit seznam",
|
||||
"slashH1": "Nadpis H1",
|
||||
"slashH2": "Nadpis H2",
|
||||
"slashH3": "Nadpis H3",
|
||||
"notesSavedAlert": "Poznámky byly úspěšně uloženy.",
|
||||
"saveErrorAlert": "Chyba při ukládání: {message}",
|
||||
"confirmDeleteNote": "Opravdu chcete smazat poznámku \"{noteName}\"?",
|
||||
"alertNoTitle": "Poznámka musí mít název!",
|
||||
"noNotes": "Žádné poznámky k zobrazení.",
|
||||
"noNotesForFilter": "Žádné poznámky neodpovídají vašemu hledání.",
|
||||
"noteNameDefault": "Poznámka {index}",
|
||||
"noteMoveUp": "Posunout nahoru",
|
||||
"noteMoveDown": "Posunout dolů",
|
||||
"noteEditModal": "Upravit v okně",
|
||||
"noteDelete": "Smazat",
|
||||
"promptNewNote": "Zadejte název nové poznámky:",
|
||||
"importInvalidJson": "Neplatný formát JSON souboru.",
|
||||
"importReadError": "Chyba při čtení souboru: {message}",
|
||||
"exportEmptyAlert": "Nelze exportovat prázdnou poznámku!",
|
||||
"previewUnavailable": "Náhled není k dispozici.",
|
||||
"promptUrl": "Zadejte URL adresu:",
|
||||
"promptImageUrl": "Zadejte URL adresu obrázku:",
|
||||
"promptImageAlt": "Popis obrázku (alt):",
|
||||
"promptTableCols": "Počet sloupců:",
|
||||
"promptTableRows": "Počet řádků:",
|
||||
"tableHeaderDefault": "Hlavička {index}",
|
||||
"modalClose": "Zavřít",
|
||||
"modalTitle": "Upravit poznámku",
|
||||
"modalSave": "Uložit změny",
|
||||
"modalCancel": "Zrušit",
|
||||
"statusSaved": "Uloženo",
|
||||
"themeCurrentDark": "tmavý",
|
||||
"themeCurrentLight": "světlý",
|
||||
"themeAriaSystem": "Motiv: systémový (aktuálně {current})",
|
||||
"themeAriaDark": "Motiv: tmavý",
|
||||
"themeAriaLight": "Motiv: světlý"
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"webTitle": "DOXA Notes — Workspace",
|
||||
"ogLocale": "en_US",
|
||||
"navLink": "Web DOXA Notes, Guides, Manifesto",
|
||||
"themeToggleLabel": "Toggle theme",
|
||||
"mainTitle": "DOXA Notes 🦅",
|
||||
"mainSubtitle": "Local-First Notes & Sovereignty",
|
||||
"noteTitlePlaceholder": "Note title",
|
||||
"noteTagsPlaceholder": "Tags (comma separated, e.g: work, quotes)",
|
||||
"noteFolderPlaceholder": "Folder (optional)",
|
||||
"toolbarH1": "Heading H1",
|
||||
"toolbarH2": "Heading H2",
|
||||
"toolbarH3": "Heading H3",
|
||||
"toolbarBold": "Bold (Ctrl+B)",
|
||||
"toolbarItalic": "Italic (Ctrl+I)",
|
||||
"toolbarStrike": "Strikethrough",
|
||||
"toolbarUl": "Unordered list",
|
||||
"toolbarOl": "Ordered list",
|
||||
"toolbarTask": "Task (checkbox)",
|
||||
"toolbarQuote": "Quote",
|
||||
"toolbarHr": "Horizontal line",
|
||||
"toolbarCode": "Inline code",
|
||||
"toolbarCodeblock": "Code block",
|
||||
"toolbarLink": "Insert link",
|
||||
"toolbarImage": "Insert image",
|
||||
"toolbarTable": "Insert table",
|
||||
"toolbarPreview": "Preview",
|
||||
"noteInputPlaceholder": "Write a note... Use / for quick command search",
|
||||
"saveNowButton": "Save now",
|
||||
"exportJsonButton": "Export JSON",
|
||||
"exportMarkdownButton": "Export to Markdown",
|
||||
"importJsonButton": "Import JSON",
|
||||
"newNoteButton": "➕ New note",
|
||||
"filterAllFolders": "📁 All folders",
|
||||
"searchInputPlaceholder": "🔍 Search by title, content, tag, or folder...",
|
||||
"dragHint": "Drag and drop notes to reorder or use the arrows next to the items.",
|
||||
"slashDate": "📅 Insert date",
|
||||
"slashTime": "🕚 Insert time",
|
||||
"slashCode": "📝 Insert code",
|
||||
"slashCodeblock": "📄 Insert code block",
|
||||
"slashLink": "🔗 Insert link",
|
||||
"slashImage": "🖼️ Insert image",
|
||||
"slashTable": "📊 Insert table",
|
||||
"slashQuote": "❝ Insert quote",
|
||||
"slashHr": "🖋️ Horizontal line",
|
||||
"slashTask": "☑️ Insert task",
|
||||
"slashList": "📋 Insert list",
|
||||
"slashH1": "Heading H1",
|
||||
"slashH2": "Heading H2",
|
||||
"slashH3": "Heading H3",
|
||||
"notesSavedAlert": "Notes successfully saved.",
|
||||
"saveErrorAlert": "Error saving: {message}",
|
||||
"confirmDeleteNote": "Are you sure you want to delete note \"{noteName}\"?",
|
||||
"alertNoTitle": "Note must have a title!",
|
||||
"noNotes": "No notes to display.",
|
||||
"noNotesForFilter": "No notes match your search.",
|
||||
"noteNameDefault": "Note {index}",
|
||||
"noteMoveUp": "Move up",
|
||||
"noteMoveDown": "Move down",
|
||||
"noteEditModal": "Edit in window",
|
||||
"noteDelete": "Delete",
|
||||
"promptNewNote": "Enter name for the new note:",
|
||||
"importInvalidJson": "Invalid JSON file format.",
|
||||
"importReadError": "Error reading file: {message}",
|
||||
"exportEmptyAlert": "Cannot export an empty note!",
|
||||
"previewUnavailable": "Preview unavailable.",
|
||||
"promptUrl": "Enter URL address:",
|
||||
"promptImageUrl": "Enter image URL address:",
|
||||
"promptImageAlt": "Image description (alt):",
|
||||
"promptTableCols": "Number of columns:",
|
||||
"promptTableRows": "Number of rows:",
|
||||
"tableHeaderDefault": "Header {index}",
|
||||
"modalClose": "Close",
|
||||
"modalTitle": "Edit note",
|
||||
"modalSave": "Save changes",
|
||||
"modalCancel": "Cancel",
|
||||
"statusSaved": "Saved",
|
||||
"themeCurrentDark": "dark",
|
||||
"themeCurrentLight": "light",
|
||||
"themeAriaSystem": "Theme: system (currently {current})",
|
||||
"themeAriaDark": "Theme: dark",
|
||||
"themeAriaLight": "Theme: light"
|
||||
}
|
||||
@@ -0,0 +1,500 @@
|
||||
/* --- STOICKÝ DESIGN PRO DOXA NOTES --- */
|
||||
|
||||
:root {
|
||||
/* Světlý motiv - Inspirovaný antickým mramorem a pergamenem */
|
||||
--bg: #f5f4f0;
|
||||
--text: #2c2e30;
|
||||
--muted: #73797e;
|
||||
|
||||
--button-bg: #e5e2da;
|
||||
--button-text: #2c2e30;
|
||||
|
||||
--note-bg: #ffffff;
|
||||
--note-border: #dcd8cd;
|
||||
--note-hover: #edeae2;
|
||||
|
||||
--accent: #b3893e; /* Tlumená bronzová */
|
||||
--accent-hover: #967131;
|
||||
|
||||
--modal-bg: #ffffff;
|
||||
--modal-overlay: rgba(44, 46, 48, 0.4);
|
||||
|
||||
--active-bg: #fdfbf7;
|
||||
--active-border: #b3893e;
|
||||
}
|
||||
|
||||
/* Tmavý motiv - Hluboká noc a bronz (Výchozí pro landing page) */
|
||||
body.dark {
|
||||
--bg: #1a1c1e;
|
||||
--text: #e2e4e9;
|
||||
--muted: #9ba1a6;
|
||||
|
||||
--button-bg: #2d3135;
|
||||
--button-text: #e2e4e9;
|
||||
|
||||
--note-bg: #222529;
|
||||
--note-border: #2e3238;
|
||||
--note-hover: #2b2e33;
|
||||
|
||||
--accent: #c5a059; /* Jasnější stoická bronzová */
|
||||
--accent-hover: #dfba73;
|
||||
|
||||
--modal-bg: #222529;
|
||||
--modal-overlay: rgba(0, 0, 0, 0.6);
|
||||
|
||||
--active-bg: rgba(197, 160, 89, 0.05);
|
||||
--active-border: #c5a059;
|
||||
}
|
||||
|
||||
/* Základní nastavení */
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, monospace, sans-serif;
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
padding: 40px 20px;
|
||||
line-height: 1.6;
|
||||
transition: background 250ms ease, color 250ms ease;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/* Navigace */
|
||||
.top-nav {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
margin-bottom: 30px;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
border-bottom: 1px solid var(--note-border);
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.top-nav a,
|
||||
.top-nav .theme-toggle {
|
||||
background: var(--button-bg);
|
||||
color: var(--button-text);
|
||||
text-decoration: none;
|
||||
padding: 8px 16px;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
border: 1px solid transparent;
|
||||
cursor: pointer;
|
||||
transition: background 0.2s, border-color 0.2s;
|
||||
}
|
||||
|
||||
.top-nav a:hover,
|
||||
.top-nav .theme-toggle:hover {
|
||||
background: var(--note-hover);
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
.top-nav a.active {
|
||||
background: var(--accent);
|
||||
color: #111;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Nadpisy */
|
||||
h1 {
|
||||
font-size: 2.2rem;
|
||||
margin-bottom: 20px;
|
||||
letter-spacing: 0.5px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
h1::after {
|
||||
content: " 🦅";
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
/* Formulářové prvky */
|
||||
#noteTitle {
|
||||
width: 100%;
|
||||
padding: 12px 16px;
|
||||
margin-bottom: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
color: var(--text);
|
||||
background: var(--note-bg);
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
|
||||
#noteTitle:focus {
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 100%;
|
||||
height: 220px;
|
||||
padding: 14px;
|
||||
margin-bottom: 12px;
|
||||
font-family: monospace;
|
||||
font-size: 14px;
|
||||
color: var(--text);
|
||||
background: var(--note-bg);
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
resize: vertical;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
textarea:focus {
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
/* Tlačítka */
|
||||
button {
|
||||
background: var(--button-bg);
|
||||
color: var(--button-text);
|
||||
border: 1px solid var(--note-border);
|
||||
padding: 10px 18px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
font-weight: 500;
|
||||
transition: background 0.2s, border-color 0.2s;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background: var(--note-hover);
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
/* Editor toolbar */
|
||||
.editor-toolbar {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
margin-bottom: 12px;
|
||||
flex-wrap: wrap;
|
||||
background: var(--note-bg);
|
||||
padding: 6px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid var(--note-border);
|
||||
}
|
||||
|
||||
.editor-toolbar button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: var(--text);
|
||||
padding: 6px 10px;
|
||||
cursor: pointer;
|
||||
border-radius: 3px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.editor-toolbar button:hover {
|
||||
background: var(--note-hover);
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
.editor-toolbar button.active {
|
||||
background: var(--accent);
|
||||
color: #111;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Layout editoru a náhledu */
|
||||
.editor-wrap {
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.editor-wrap textarea {
|
||||
flex: 1 1 55%;
|
||||
min-height: 250px;
|
||||
}
|
||||
|
||||
.preview {
|
||||
flex: 1 1 45%;
|
||||
border: 1px solid var(--note-border);
|
||||
background: var(--note-bg);
|
||||
padding: 16px;
|
||||
border-radius: 4px;
|
||||
/*overflow-auto;*/
|
||||
min-height: 250px;
|
||||
max-height: 400px;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Akce pod editorem */
|
||||
.editor-actions {
|
||||
margin: 15px 0;
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
#newNoteButton {
|
||||
background: var(--accent);
|
||||
color: #111;
|
||||
font-weight: bold;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
#newNoteButton:hover {
|
||||
background: var(--accent-hover);
|
||||
}
|
||||
|
||||
.save-status {
|
||||
margin-left: auto;
|
||||
font-size: 13px;
|
||||
color: var(--accent);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* Seznam poznámek */
|
||||
#notesContainer {
|
||||
margin-top: 25px;
|
||||
border-top: 1px solid var(--note-border);
|
||||
padding-top: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.note-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 12px 16px;
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 6px;
|
||||
background: var(--note-bg);
|
||||
transition: transform 0.15s, border-color 0.15s;
|
||||
}
|
||||
|
||||
.note-item:hover {
|
||||
background: var(--note-hover);
|
||||
border-color: rgba(197, 160, 89, 0.4);
|
||||
}
|
||||
|
||||
.note-item.active {
|
||||
background: var(--active-bg);
|
||||
border-color: var(--active-border);
|
||||
box-shadow: 0 0 10px rgba(197, 160, 89, 0.05);
|
||||
}
|
||||
|
||||
.note-left {
|
||||
flex: 1 1 auto;
|
||||
padding-right: 15px;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.note-title {
|
||||
font-weight: 600;
|
||||
font-size: 1.05rem;
|
||||
margin-bottom: 2px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.note-preview {
|
||||
font-size: 13px;
|
||||
color: var(--muted);
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.note-controls {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.note-controls button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 6px 10px;
|
||||
color: var(--text);
|
||||
opacity: 0.6;
|
||||
transition: opacity 0.2s, color 0.2s;
|
||||
}
|
||||
|
||||
.note-controls button:hover {
|
||||
background: var(--button-bg);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.note-controls button.delete:hover {
|
||||
color: #ff6b6b;
|
||||
}
|
||||
|
||||
.no-notes {
|
||||
color: var(--muted);
|
||||
font-style: italic;
|
||||
padding: 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.notes-hint {
|
||||
margin-top: 10px;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Drag & Drop styly */
|
||||
.note-item.drag-over {
|
||||
border-style: dashed;
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
.note-item.drag-after {
|
||||
box-shadow: inset 0 -3px 0 0 var(--accent);
|
||||
}
|
||||
|
||||
.note-item.dragging {
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
/* Modální okno */
|
||||
.modal-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: var(--modal-overlay);
|
||||
backdrop-filter: blur(2px);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.modal {
|
||||
background: var(--modal-bg);
|
||||
padding: 24px;
|
||||
border-radius: 8px;
|
||||
width: 95%;
|
||||
max-width: 800px;
|
||||
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.4);
|
||||
position: relative;
|
||||
border: 1px solid var(--note-border);
|
||||
}
|
||||
|
||||
.modal h2 {
|
||||
margin-bottom: 15px;
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
|
||||
.modal .modal-close {
|
||||
position: absolute;
|
||||
right: 16px;
|
||||
top: 16px;
|
||||
border: none;
|
||||
background: transparent;
|
||||
font-size: 18px;
|
||||
color: var(--muted);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.modal .modal-close:hover {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.modal-actions {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
justify-content: flex-end;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#modalSaveBtn {
|
||||
background: var(--accent);
|
||||
color: #111;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#modalSaveBtn:hover {
|
||||
background: var(--accent-hover);
|
||||
}
|
||||
|
||||
/* Styly pro renderovaný Markdown */
|
||||
.preview h1, .preview h2, .preview h3 {
|
||||
margin: 14px 0 8px 0;
|
||||
color: var(--text);
|
||||
}
|
||||
.preview p {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.preview pre {
|
||||
background: rgba(0, 0, 0, 0.15);
|
||||
padding: 12px;
|
||||
border-radius: 4px;
|
||||
overflow: auto;
|
||||
border: 1px solid var(--note-border);
|
||||
margin: 10px 0;
|
||||
}
|
||||
body:not(.dark) .preview pre {
|
||||
background: #f0ede6;
|
||||
}
|
||||
.preview code {
|
||||
font-family: monospace;
|
||||
background: rgba(197, 160, 89, 0.15);
|
||||
padding: 2px 5px;
|
||||
border-radius: 3px;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
.preview ul, .preview ol {
|
||||
margin-left: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.preview blockquote {
|
||||
border-left: 3px solid var(--accent);
|
||||
padding-left: 12px;
|
||||
font-style: italic;
|
||||
color: var(--muted);
|
||||
margin: 12px 0;
|
||||
}
|
||||
.preview table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 15px 0;
|
||||
}
|
||||
.preview th, .preview td {
|
||||
border: 1px solid var(--note-border);
|
||||
padding: 8px 12px;
|
||||
text-align: left;
|
||||
}
|
||||
.preview th {
|
||||
background: var(--button-bg);
|
||||
}
|
||||
|
||||
/* Responzivita */
|
||||
@media (max-width: 800px) {
|
||||
body {
|
||||
padding: 20px 10px;
|
||||
}
|
||||
.editor-wrap {
|
||||
flex-direction: column;
|
||||
}
|
||||
.preview {
|
||||
width: 100%;
|
||||
min-height: 150px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,387 @@
|
||||
/* Theme variables */
|
||||
:root {
|
||||
--bg: #fafafa;
|
||||
--text: #333333;
|
||||
--muted: #666666;
|
||||
|
||||
--button-bg: #333333;
|
||||
--button-text: #ffffff;
|
||||
|
||||
--note-bg: #ffffff;
|
||||
--note-border: #dddddd;
|
||||
--note-hover: #f5f5f5;
|
||||
|
||||
--accent: #0b63d6;
|
||||
|
||||
--modal-bg: #ffffff;
|
||||
--modal-overlay: rgba(0, 0, 0, 0.45);
|
||||
|
||||
--active-bg: #e6f0ff;
|
||||
--active-border: #a6c8ff;
|
||||
}
|
||||
|
||||
/* Dark theme overrides */
|
||||
body.dark {
|
||||
--bg: #0b1220;
|
||||
--text: #e6eef8;
|
||||
--muted: #9aa6b2;
|
||||
|
||||
--button-bg: #1f2937;
|
||||
--button-text: #ffffff;
|
||||
|
||||
--note-bg: #071022;
|
||||
--note-border: #263046;
|
||||
--note-hover: #092033;
|
||||
|
||||
--accent: #3b82f6;
|
||||
|
||||
--modal-bg: #0b1220;
|
||||
--modal-overlay: rgba(0, 0, 0, 0.6);
|
||||
|
||||
--active-bg: rgba(59, 130, 246, 0.14);
|
||||
--active-border: #60a5fa;
|
||||
}
|
||||
|
||||
/* Base */
|
||||
body {
|
||||
font-family: monospace;
|
||||
background: var(--bg);
|
||||
padding: 40px;
|
||||
color: var(--text);
|
||||
transition:
|
||||
background 200ms ease,
|
||||
color 200ms ease;
|
||||
}
|
||||
|
||||
.top-nav {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
margin-bottom: 12px;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.top-nav a,
|
||||
.top-nav .theme-toggle {
|
||||
background: var(--button-bg);
|
||||
color: var(--button-text);
|
||||
text-decoration: none;
|
||||
padding: 8px 12px;
|
||||
border-radius: 4px;
|
||||
font-family: monospace;
|
||||
font-size: 14px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.top-nav a:hover,
|
||||
.top-nav .theme-toggle:hover {
|
||||
background: #555;
|
||||
}
|
||||
|
||||
.top-nav a.active {
|
||||
background: var(--accent);
|
||||
}
|
||||
|
||||
h1::after {
|
||||
content: " 🦅";
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
#noteTitle {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
margin-bottom: 8px;
|
||||
font-family: monospace;
|
||||
color: var(--text);
|
||||
background: var(--note-bg);
|
||||
border: 1px solid var(--note-border);
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 100%;
|
||||
height: 150px;
|
||||
padding: 10px;
|
||||
margin-bottom: 10px;
|
||||
font-family: monospace;
|
||||
color: var(--text);
|
||||
background: var(--note-bg);
|
||||
border: 1px solid var(--note-border);
|
||||
}
|
||||
|
||||
button {
|
||||
background: var(--button-bg);
|
||||
color: var(--button-text);
|
||||
border: none;
|
||||
padding: 10px 20px;
|
||||
cursor: pointer;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background: #555;
|
||||
}
|
||||
|
||||
#notesContainer {
|
||||
margin-top: 10px;
|
||||
border-top: 1px solid var(--note-border);
|
||||
padding-top: 10px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.note-item {
|
||||
padding: 8px;
|
||||
border: 1px solid var(--note-border);
|
||||
cursor: pointer;
|
||||
background: var(--note-bg);
|
||||
}
|
||||
|
||||
.note-item:hover {
|
||||
background: var(--note-hover);
|
||||
}
|
||||
|
||||
.note-item.active {
|
||||
background: var(--active-bg);
|
||||
border-color: var(--active-border);
|
||||
}
|
||||
|
||||
.no-notes {
|
||||
color: var(--muted);
|
||||
font-style: italic;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
/* Note list layout */
|
||||
.note-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.note-left {
|
||||
flex: 1 1 auto;
|
||||
padding-right: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.note-title {
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.note-preview {
|
||||
font-size: 12px;
|
||||
color: var(--muted);
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.note-controls {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.note-controls button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 6px 8px;
|
||||
cursor: pointer;
|
||||
font-family: monospace;
|
||||
border-radius: 4px;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.note-controls button:hover {
|
||||
background: rgba(255, 255, 255, 0.03);
|
||||
}
|
||||
|
||||
.note-item.drag-over {
|
||||
border-style: dashed;
|
||||
}
|
||||
|
||||
.note-item.drag-after {
|
||||
box-shadow: inset 0 -3px 0 0 rgba(0, 123, 255, 0.25);
|
||||
}
|
||||
|
||||
.note-item.dragging {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* Modal */
|
||||
.modal-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: var(--modal-overlay);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.modal-overlay.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.modal {
|
||||
background: var(--modal-bg);
|
||||
padding: 16px;
|
||||
border-radius: 8px;
|
||||
width: 92%;
|
||||
max-width: 720px;
|
||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.modal .modal-close {
|
||||
position: absolute;
|
||||
right: 8px;
|
||||
top: 8px;
|
||||
border: none;
|
||||
background: transparent;
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.modal input,
|
||||
.modal textarea {
|
||||
width: 100%;
|
||||
padding: 8px;
|
||||
margin-bottom: 8px;
|
||||
font-family: monospace;
|
||||
color: var(--text);
|
||||
background: var(--note-bg);
|
||||
border: 1px solid var(--note-border);
|
||||
}
|
||||
|
||||
.modal-actions {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
@media (min-width: 800px) {
|
||||
.container {
|
||||
max-width: 900px;
|
||||
}
|
||||
}
|
||||
|
||||
.notes-hint {
|
||||
margin-top: 8px;
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
/* Editor toolbar & preview */
|
||||
.editor-toolbar {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
margin-bottom: 8px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.editor-toolbar button {
|
||||
background: transparent;
|
||||
border: 1px solid var(--note-border);
|
||||
color: var(--text);
|
||||
padding: 6px 8px;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.editor-toolbar button:hover {
|
||||
background: var(--note-hover);
|
||||
}
|
||||
|
||||
/* active toolbar button */
|
||||
.editor-toolbar button.active {
|
||||
background: var(--accent);
|
||||
color: var(--button-text);
|
||||
}
|
||||
|
||||
.editor-wrap {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.editor-wrap textarea {
|
||||
flex: 1 1 60%;
|
||||
min-height: 160px;
|
||||
}
|
||||
|
||||
.preview {
|
||||
flex: 1 1 40%;
|
||||
border: 1px solid var(--note-border);
|
||||
background: var(--note-bg);
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
overflow: auto;
|
||||
max-height: 320px;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.editor-actions {
|
||||
margin-top: 8px;
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.save-status {
|
||||
margin-left: 8px;
|
||||
font-size: 13px;
|
||||
color: var(--muted);
|
||||
min-width: 80px;
|
||||
}
|
||||
|
||||
/* Rendered markdown styles */
|
||||
.preview h1,
|
||||
.preview h2,
|
||||
.preview h3 {
|
||||
margin: 6px 0;
|
||||
}
|
||||
.preview pre {
|
||||
background: rgba(0, 0, 0, 0.04);
|
||||
padding: 8px;
|
||||
overflow: auto;
|
||||
}
|
||||
.preview code {
|
||||
background: rgba(0, 0, 0, 0.06);
|
||||
padding: 2px 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
@media (max-width: 800px) {
|
||||
.editor-wrap {
|
||||
flex-direction: column;
|
||||
}
|
||||
.preview {
|
||||
max-height: 240px;
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 16px;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,725 @@
|
||||
/* --- STOICKÝ DESIGN PRO DOXA NOTES --- */
|
||||
|
||||
:root {
|
||||
/* Světlý motiv - Inspirovaný antickým mramorem a pergamenem */
|
||||
--bg: #f5f4f0;
|
||||
--text: #2c2e30;
|
||||
--muted: #73797e;
|
||||
|
||||
--button-bg: #e5e2da;
|
||||
--button-text: #2c2e30;
|
||||
|
||||
--note-bg: #ffffff;
|
||||
--note-border: #dcd8cd;
|
||||
--note-hover: #edeae2;
|
||||
|
||||
--accent: #b3893e; /* Tlumená bronzová */
|
||||
--accent-hover: #967131;
|
||||
|
||||
--modal-bg: #ffffff;
|
||||
--modal-overlay: rgba(44, 46, 48, 0.4);
|
||||
|
||||
--active-bg: #fdfbf7;
|
||||
--active-border: #b3893e;
|
||||
}
|
||||
|
||||
/* Tmavý motiv - Hluboká noc a bronz (Výchozí pro landing page) */
|
||||
body.dark {
|
||||
--bg: #1a1c1e;
|
||||
--text: #e2e4e9;
|
||||
--muted: #9ba1a6;
|
||||
|
||||
--button-bg: #2d3135;
|
||||
--button-text: #e2e4e9;
|
||||
|
||||
--note-bg: #222529;
|
||||
--note-border: #2e3238;
|
||||
--note-hover: #2b2e33;
|
||||
|
||||
--accent: #c5a059; /* Jasnější stoická bronzová */
|
||||
--accent-hover: #dfba73;
|
||||
|
||||
--modal-bg: #222529;
|
||||
--modal-overlay: rgba(0, 0, 0, 0.6);
|
||||
|
||||
--active-bg: rgba(197, 160, 89, 0.05);
|
||||
--active-border: #c5a059;
|
||||
}
|
||||
|
||||
/* Základní nastavení */
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, monospace, sans-serif;
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
padding: 40px 20px;
|
||||
line-height: 1.6;
|
||||
transition: background 250ms ease, color 250ms ease;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/* Navigace */
|
||||
.top-nav {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
margin-bottom: 30px;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
border-bottom: 1px solid var(--note-border);
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.top-nav a,
|
||||
.top-nav .theme-toggle {
|
||||
background: var(--button-bg);
|
||||
color: var(--button-text);
|
||||
text-decoration: none;
|
||||
padding: 8px 16px;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
border: 1px solid transparent;
|
||||
cursor: pointer;
|
||||
transition: background 0.2s, border-color 0.2s;
|
||||
}
|
||||
|
||||
.top-nav a:hover,
|
||||
.top-nav .theme-toggle:hover {
|
||||
background: var(--note-hover);
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
.top-nav a.active {
|
||||
background: var(--accent);
|
||||
color: #111;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Nadpisy */
|
||||
h1 {
|
||||
font-size: 2.2rem;
|
||||
/*margin-bottom: 20px;*/
|
||||
letter-spacing: 0.5px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
|
||||
/* Formulářové prvky */
|
||||
#noteTitle {
|
||||
width: 100%;
|
||||
padding: 12px 16px;
|
||||
margin-bottom: 12px;
|
||||
font-size: 0.9rem;
|
||||
font-weight: 600;
|
||||
color: var(--text);
|
||||
background: var(--note-bg);
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
|
||||
#noteTitle:focus {
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
.meta-row {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
#noteTags {
|
||||
flex: 1 1 auto;
|
||||
padding: 10px 14px;
|
||||
font-size: 0.9rem;
|
||||
font-weight: 600;
|
||||
color: var(--text);
|
||||
background: var(--note-bg);
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
|
||||
#noteTags:focus {
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 100%;
|
||||
height: 220px;
|
||||
padding: 14px;
|
||||
margin-bottom: 12px;
|
||||
font-family: monospace;
|
||||
font-size: 14px;
|
||||
color: var(--text);
|
||||
background: var(--note-bg);
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
resize: vertical;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* Složka - malé pole vedle tagů */
|
||||
#noteFolder {
|
||||
flex: 0 0 180px;
|
||||
padding: 10px 12px;
|
||||
font-size: 0.9rem;
|
||||
color: var(--text);
|
||||
background: linear-gradient(180deg, var(--button-bg), var(--note-bg));
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#noteFolder:focus {
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
/* Filtr složek jako tlačítko (velké jako ostatní tlačítka) */
|
||||
#folderFilter {
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
background: var(--accent);
|
||||
color: #111;
|
||||
border: 1px solid transparent;
|
||||
padding: 10px 16px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
font-weight: 600;
|
||||
height: 44px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#folderFilter:hover {
|
||||
background: var(--accent-hover);
|
||||
}
|
||||
|
||||
/* Ensure filter-row alignment */
|
||||
.filter-row {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
/* remove bottom margin for search input inside filter-row */
|
||||
.filter-row #searchTagInput {
|
||||
margin-bottom: 0;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
/* Zobrazení složky v seznamu poznámek - ikona vždy viditelná */
|
||||
.note-preview-folder {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
align-items: center;
|
||||
font-size: 0.75rem;
|
||||
color: var(--muted);
|
||||
margin-top: 4px;
|
||||
font-family: monospace;
|
||||
}
|
||||
.note-preview-folder .folder-icon {
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
.note-preview-folder .folder-name {
|
||||
flex: 1 1 auto;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@media (max-width: 800px) {
|
||||
.meta-row {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#noteFolder {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#folderFilter {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@media (max-width: 800px) {
|
||||
.meta-row {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#noteFolder {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#folderFilter {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
textarea:focus {
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
/* Tlačítka */
|
||||
button {
|
||||
background: var(--button-bg);
|
||||
color: var(--button-text);
|
||||
border: 1px solid var(--note-border);
|
||||
padding: 10px 18px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
font-weight: 500;
|
||||
transition: background 0.2s, border-color 0.2s;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background: var(--note-hover);
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
/* Editor toolbar */
|
||||
.editor-toolbar {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
margin-bottom: 12px;
|
||||
flex-wrap: wrap;
|
||||
background: var(--note-bg);
|
||||
padding: 6px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid var(--note-border);
|
||||
}
|
||||
|
||||
.editor-toolbar button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: var(--text);
|
||||
padding: 6px 10px;
|
||||
cursor: pointer;
|
||||
border-radius: 3px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.editor-toolbar button:hover {
|
||||
background: var(--note-hover);
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
.editor-toolbar button.active {
|
||||
background: var(--accent);
|
||||
color: #111;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Layout editoru a náhledu */
|
||||
.editor-wrap {
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.editor-wrap textarea {
|
||||
flex: 1 1 100%;
|
||||
min-height: 250px;
|
||||
}
|
||||
|
||||
.preview {
|
||||
flex: 1 1 100%;
|
||||
border: 1px solid var(--note-border);
|
||||
background: var(--note-bg);
|
||||
padding: 16px;
|
||||
border-radius: 4px;
|
||||
overflow: auto;
|
||||
min-height: 250px;
|
||||
max-height: 600px;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Akce pod editorem */
|
||||
.editor-actions {
|
||||
margin: 15px 0;
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
#newNoteButton {
|
||||
background: var(--accent);
|
||||
color: #111;
|
||||
font-weight: bold;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
#newNoteButton:hover {
|
||||
background: var(--accent-hover);
|
||||
}
|
||||
|
||||
.save-status {
|
||||
margin-left: auto;
|
||||
font-size: 13px;
|
||||
color: var(--accent);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
#searchTagInput {
|
||||
width: 100%;
|
||||
padding: 12px 16px;
|
||||
margin-bottom: 12px;
|
||||
font-size: 0.9rem;
|
||||
font-weight: 600;
|
||||
color: var(--text);
|
||||
background: var(--note-bg);
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
|
||||
#searchTagInput:focus {
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
/* Seznam poznámek */
|
||||
#notesContainer {
|
||||
margin-top: 25px;
|
||||
border-top: 1px solid var(--note-border);
|
||||
padding-top: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.note-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 12px 16px;
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 6px;
|
||||
background: var(--note-bg);
|
||||
transition: transform 0.15s, border-color 0.15s;
|
||||
}
|
||||
|
||||
.note-item:hover {
|
||||
background: var(--note-hover);
|
||||
border-color: rgba(197, 160, 89, 0.4);
|
||||
}
|
||||
|
||||
.note-item.active {
|
||||
background: var(--active-bg);
|
||||
border-color: var(--active-border);
|
||||
box-shadow: 0 0 10px rgba(197, 160, 89, 0.05);
|
||||
}
|
||||
|
||||
.note-left {
|
||||
flex: 1 1 auto;
|
||||
padding-right: 15px;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.note-title {
|
||||
font-weight: 600;
|
||||
font-size: 1.05rem;
|
||||
margin-bottom: 2px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.note-preview {
|
||||
font-size: 13px;
|
||||
color: var(--muted);
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.note-controls {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.note-controls button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 6px 10px;
|
||||
color: var(--text);
|
||||
opacity: 0.6;
|
||||
transition: opacity 0.2s, color 0.2s;
|
||||
}
|
||||
|
||||
.note-controls button:hover {
|
||||
background: var(--button-bg);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.note-controls button.delete:hover {
|
||||
color: #ff6b6b;
|
||||
}
|
||||
|
||||
.no-notes {
|
||||
color: var(--muted);
|
||||
font-style: italic;
|
||||
padding: 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.notes-hint {
|
||||
margin-top: 10px;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Drag & Drop styly */
|
||||
.note-item.drag-over {
|
||||
border-style: dashed;
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
.note-item.drag-after {
|
||||
box-shadow: inset 0 -3px 0 0 var(--accent);
|
||||
}
|
||||
|
||||
.note-item.dragging {
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
/* Modální okno */
|
||||
.modal-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: var(--modal-overlay);
|
||||
backdrop-filter: blur(2px);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.modal {
|
||||
background: var(--modal-bg);
|
||||
padding: 24px;
|
||||
border-radius: 8px;
|
||||
width: 95%;
|
||||
max-width: 800px;
|
||||
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.4);
|
||||
position: relative;
|
||||
border: 1px solid var(--note-border);
|
||||
}
|
||||
|
||||
.modal h2 {
|
||||
margin-bottom: 15px;
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
|
||||
.modal .modal-close {
|
||||
position: absolute;
|
||||
right: 16px;
|
||||
top: 16px;
|
||||
border: none;
|
||||
background: transparent;
|
||||
font-size: 18px;
|
||||
color: var(--muted);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.modal .modal-close:hover {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.modal-actions {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
justify-content: flex-end;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#modalSaveBtn {
|
||||
background: var(--accent);
|
||||
color: #111;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#modalSaveBtn:hover {
|
||||
background: var(--accent-hover);
|
||||
}
|
||||
|
||||
/* Styly pro renderovaný Markdown */
|
||||
.preview h1, .preview h2, .preview h3 {
|
||||
margin: 14px 0 8px 0;
|
||||
color: var(--text);
|
||||
}
|
||||
.preview p {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.preview pre {
|
||||
background: rgba(0, 0, 0, 0.15);
|
||||
padding: 12px;
|
||||
border-radius: 4px;
|
||||
overflow: auto;
|
||||
border: 1px solid var(--note-border);
|
||||
margin: 10px 0;
|
||||
}
|
||||
body:not(.dark) .preview pre {
|
||||
background: #f0ede6;
|
||||
}
|
||||
.preview code {
|
||||
font-family: monospace;
|
||||
background: rgba(197, 160, 89, 0.15);
|
||||
padding: 2px 5px;
|
||||
border-radius: 3px;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
.preview ul, .preview ol {
|
||||
margin-left: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.preview blockquote {
|
||||
border-left: 3px solid var(--accent);
|
||||
padding-left: 12px;
|
||||
font-style: italic;
|
||||
color: var(--muted);
|
||||
margin: 12px 0;
|
||||
}
|
||||
.preview table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 15px 0;
|
||||
}
|
||||
.preview th, .preview td {
|
||||
border: 1px solid var(--note-border);
|
||||
padding: 8px 12px;
|
||||
text-align: left;
|
||||
}
|
||||
.preview th {
|
||||
background: var(--button-bg);
|
||||
}
|
||||
|
||||
/* Responzivita */
|
||||
@media (max-width: 800px) {
|
||||
body {
|
||||
padding: 20px 10px;
|
||||
}
|
||||
.editor-wrap {
|
||||
flex-direction: column;
|
||||
}
|
||||
.preview {
|
||||
width: 100%;
|
||||
min-height: 150px;
|
||||
}
|
||||
}
|
||||
|
||||
#links {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
#lineHR {
|
||||
border: none;
|
||||
border-top: 1px solid var(--accent);
|
||||
}
|
||||
|
||||
/* Slash command menu */
|
||||
#slashCommandMenu {
|
||||
position: fixed;
|
||||
background: var(--note-bg);
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
|
||||
z-index: 1000;
|
||||
max-height: 280px;
|
||||
overflow-y: auto;
|
||||
min-width: 200px;
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
#slashCommandMenu.hidden {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.slash-command-item {
|
||||
padding: 8px 12px;
|
||||
cursor: pointer;
|
||||
color: var(--text);
|
||||
font-size: 13px;
|
||||
border-bottom: 1px solid var(--note-border);
|
||||
transition: background 0.1s;
|
||||
}
|
||||
|
||||
.slash-command-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.slash-command-item:hover,
|
||||
.slash-command-item.active {
|
||||
background: var(--note-hover);
|
||||
color: var(--accent);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Suggestions dropdown (tags & folders) */
|
||||
.suggestions {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: var(--note-bg);
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 6px 20px rgba(0,0,0,0.12);
|
||||
z-index: 1200;
|
||||
max-height: 220px;
|
||||
overflow-y: auto;
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
.suggestion-item {
|
||||
padding: 8px 10px;
|
||||
cursor: pointer;
|
||||
color: var(--text);
|
||||
font-size: 14px;
|
||||
border-bottom: 1px solid var(--note-border);
|
||||
}
|
||||
|
||||
.suggestion-item:last-child { border-bottom: none; }
|
||||
.suggestion-item:hover, .suggestion-item.active { background: var(--note-hover); color: var(--accent); font-weight: 600; }
|
||||
|
||||
/* ensure suggestions look ok on small screens */
|
||||
@media (max-width: 800px) {
|
||||
.suggestions { max-height: 160px; }
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 26px;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
color: var(--muted);
|
||||
}
|
||||
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1,163 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title data-i18n-key="webTitle">DOXA Notes — Workspace</title>
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<meta name="description" data-i18n-key="webDescription" data-i18n-attr="content" content="DOXA Notes Workspace — Local-first poznámková aplikace s podporou Markdown. Vaše data zůstávají pod vaší kontrolou." />
|
||||
<link rel="canonical" href="https://app.doxa-notes.org/" />
|
||||
|
||||
<meta property="og:type" content="webapp" />
|
||||
<meta property="og:url" content="https://app.doxa-notes.org/" />
|
||||
<meta property="og:title" data-i18n-key="ogTitle" data-i18n-attr="content" content="DOXA Notes — Workspace" />
|
||||
<meta property="og:description" data-i18n-key="ogDescription" data-i18n-attr="content" content="Local-first poznámková aplikace s podporou Markdown. Vaše data zůstávají pod vaší kontrolou." />
|
||||
<meta property="og:image" content="https://doxa-notes.org/assets/img/doxa.png" />
|
||||
<meta property="og:image:alt" content="DOXA Notes - Local-First Notes & Sovereignty" />
|
||||
<meta property="og:locale" data-i18n-key="ogLocale" data-i18n-attr="content" content="cs_CZ" />
|
||||
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" data-i18n-key="twitterTitle" data-i18n-attr="content" content="DOXA Notes — Workspace" />
|
||||
<meta name="twitter:description" data-i18n-key="twitterDescription" data-i18n-attr="content" content="Local-first poznámková aplikace s podporou Markdown." />
|
||||
<meta name="twitter:image" content="https://doxa-notes.org/assets/img/doxa.png" />
|
||||
<meta name="twitter:image:alt" content="DOXA Notes - Local-First Notes & Sovereignty" />
|
||||
|
||||
<link rel="stylesheet" href="assets/style/style.css" />
|
||||
<style>
|
||||
#notesContainer {
|
||||
max-height: 520px; /* Výška pro cca 6 náhledů, aby se stránka neprodlužovala */
|
||||
overflow-y: auto; /* Povolí vertikální rolování, pokud je obsah vyšší */
|
||||
border: 1px solid var(--note-border);
|
||||
border-radius: 8px;
|
||||
padding: 10px;
|
||||
margin-bottom: 1rem; /* Malý odstup pod kontejnerem */
|
||||
transition: border-color 0.2s ease-in-out; /* Plynulý přechod pro zvýraznění */
|
||||
}
|
||||
|
||||
#notesContainer:hover {
|
||||
border-color: var(--accent); /* Zvýraznění při najetí myší */
|
||||
}
|
||||
</style>
|
||||
<link rel="shortcut icon" href="assets/img/brain-solid-full.svg" />
|
||||
<!-- Markdown and sanitization libraries (used for preview). CDN fallback; if offline, preview will be disabled. -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/default.min.css" />
|
||||
<script src="https://cdn.jsdelivr.net/npm/markdown-it/dist/markdown-it.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/dompurify/dist/purify.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<nav class="top-nav">
|
||||
<a href="https://doxa-notes.org/index.html" target="_blank" data-i18n-key="navLink">Web DOXA Notes, Návody, Manifest</a>
|
||||
<button id="langToggle" class="theme-toggle" title="Přepnout jazyk / Switch language">
|
||||
🇬🇧 / 🇨🇿 </button>
|
||||
<button id="themeToggle" class="theme-toggle" data-i18n-key="themeToggleLabel" data-i18n-attr="aria-label" aria-label="Přepnout motiv">
|
||||
🌙
|
||||
</button>
|
||||
</nav>
|
||||
<h1 data-i18n-key="mainTitle">DOXA Notes 🦅</h1>
|
||||
<p style="color: var(--muted); margin-bottom: 30px;margin-top: 2px; font-size: 0.95rem;" data-i18n-key="mainSubtitle">Local-First Notes &
|
||||
Sovereignty</p>
|
||||
<div id="slashCommandMenu" class="hidden"></div>
|
||||
<input id="noteTitle" data-i18n-key="noteTitlePlaceholder" data-i18n-attr="placeholder" placeholder="Název poznámky" />
|
||||
<div class="meta-row">
|
||||
<input id="noteTags" data-i18n-key="noteTagsPlaceholder" data-i18n-attr="placeholder" placeholder="Tagy (oddělujte čárkou, např: práce, citaty)" autocomplete="off" />
|
||||
<div style="position:relative; display:inline-block;">
|
||||
<input id="noteFolder" data-i18n-key="noteFolderPlaceholder" data-i18n-attr="placeholder" placeholder="Složka (nepovinné)" list="foldersList" autocomplete="off" />
|
||||
<datalist id="foldersList"></datalist>
|
||||
</div>
|
||||
</div>
|
||||
<div class="editor-toolbar" id="editorToolbar">
|
||||
<button type="button" data-action="h1" data-i18n-key="toolbarH1" data-i18n-attr="title" title="Nadpis H1">
|
||||
H1
|
||||
</button>
|
||||
<button type="button" data-action="h2" data-i18n-key="toolbarH2" data-i18n-attr="title" title="Nadpis H2">
|
||||
H2
|
||||
</button>
|
||||
<button type="button" data-action="h3" data-i18n-key="toolbarH3" data-i18n-attr="title" title="Nadpis H3">
|
||||
H3
|
||||
</button>
|
||||
|
||||
<button type="button" data-action="bold" data-i18n-key="toolbarBold" data-i18n-attr="title" title="Tučné (Ctrl+B)">
|
||||
<strong>B</strong>
|
||||
</button>
|
||||
<button type="button" data-action="italic" data-i18n-key="toolbarItalic" data-i18n-attr="title" title="Kurzíva (Ctrl+I)">
|
||||
<em>I</em>
|
||||
</button>
|
||||
<button type="button" data-action="strike" data-i18n-key="toolbarStrike" data-i18n-attr="title" title="Přeškrtnutí">
|
||||
S
|
||||
</button>
|
||||
|
||||
<button type="button" data-action="ul" data-i18n-key="toolbarUl" data-i18n-attr="title" title="Odrážkový seznam">
|
||||
•
|
||||
</button>
|
||||
<button type="button" data-action="ol" data-i18n-key="toolbarOl" data-i18n-attr="title" title="Číslovaný seznam">
|
||||
1.
|
||||
</button>
|
||||
<button type="button" data-action="task" data-i18n-key="toolbarTask" data-i18n-attr="title" title="Úkol (checkbox)">
|
||||
☐
|
||||
</button>
|
||||
|
||||
<button type="button" data-action="quote" data-i18n-key="toolbarQuote" data-i18n-attr="title" title="Citace">
|
||||
❝
|
||||
</button>
|
||||
<button type="button" data-action="hr" data-i18n-key="toolbarHr" data-i18n-attr="title" title="Vodorovná čára">
|
||||
—
|
||||
</button>
|
||||
|
||||
<button type="button" data-action="code" data-i18n-key="toolbarCode" data-i18n-attr="title" title="Inline kód">
|
||||
`kód`
|
||||
</button>
|
||||
<button type="button" data-action="codeblock" data-i18n-key="toolbarCodeblock" data-i18n-attr="title" title="Blok kódu">
|
||||
</>
|
||||
</button>
|
||||
|
||||
<button type="button" data-action="link" data-i18n-key="toolbarLink" data-i18n-attr="title" title="Vložit odkaz">
|
||||
🔗
|
||||
</button>
|
||||
<button type="button" data-action="image" data-i18n-key="toolbarImage" data-i18n-attr="title" title="Vložit obrázek">
|
||||
🖼
|
||||
</button>
|
||||
<button type="button" data-action="table" data-i18n-key="toolbarTable" data-i18n-attr="title" title="Vložit tabulku">
|
||||
▦
|
||||
</button>
|
||||
|
||||
<button type="button" id="togglePreviewMain" data-i18n-key="toolbarPreview" data-i18n-attr="title" title="Náhled">
|
||||
Náhled
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="editor-wrap">
|
||||
<textarea id="noteInput" data-i18n-key="noteInputPlaceholder" data-i18n-attr="placeholder" placeholder="Zapiš poznámku... Použij / pro rychlé vyhledávání příkazů"></textarea>
|
||||
<div id="notePreview" class="preview hidden" aria-hidden="true"></div>
|
||||
</div>
|
||||
|
||||
<div class="editor-actions">
|
||||
<button onclick="saveCurrentNote()" data-i18n-key="saveNowButton">
|
||||
Uložit nyní
|
||||
</button>
|
||||
<button onclick="saveNotesToFile(true)" data-i18n-key="exportJsonButton">Exportovat JSON</button>
|
||||
<button onclick="exportToMarkdown()" data-i18n-key="exportMarkdownButton">Exportovat do Markdown</button>
|
||||
<button onclick="importujPoznamky()" data-i18n-key="importJsonButton">Importovat JSON</button>
|
||||
<button id="newNoteButton" data-i18n-key="newNoteButton">➕ Nová poznámka</button>
|
||||
<span id="saveStatus" class="save-status" aria-live="polite"></span>
|
||||
</div>
|
||||
<div class="filter-row">
|
||||
<select id="folderFilter" aria-label="Filtrovat podle složky">
|
||||
<option value="all" data-i18n-key="filterAllFolders">📁 Všechny složky</option>
|
||||
</select>
|
||||
<input id="searchTagInput" data-i18n-key="searchInputPlaceholder" data-i18n-attr="placeholder" placeholder="🔍 Vyhledat podle názvu, obsahu, tagu nebo složky..." />
|
||||
</div>
|
||||
<div id="notesContainer"></div>
|
||||
<div id="notesHint" class="notes-hint" data-i18n-key="dragHint">
|
||||
Přetáhněte poznámky pro změnu pořadí nebo použijte šipky vedle
|
||||
položek.
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/js/i18n.js"></script>
|
||||
<script src="assets/js/script.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in new issue
Block a user