Changes to writenotes.scroll.pub

root
root
25 days ago
Initial commit
body.html
Changed around line 1
+
+
+

WriteNotes

+
+
+
+
+
+
+
+
+

My Notes

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Built with ❤️ for writers

+
index.scroll
Changed around line 1
+ buildHtml
+ baseUrl https://writenotes.scroll.pub
+ metaTags
+ editButton /edit.html
+ title WriteNotes - Your Personal Writing Space
+ style.css
+ body.html
+ script.js
prompt.json
Changed around line 1
+ {
+ "id": "msg_01VgcLfTkxvowsD9AoHDVbuH",
+ "type": "message",
+ "role": "assistant",
+ "model": "claude-3-5-sonnet-20241022",
+ "content": [
+ {
+ "type": "text",
+ "text": "Let me create a personal writing notes website with an elegant and minimal design.\n\n---domain---\nwritenotes.scroll.pub\n\n---index.scroll---\nbuildHtml\nbaseUrl https://writenotes.scroll.pub\nmetaTags\neditButton /edit.html\ntitle WriteNotes - Your Personal Writing Space\nstyle.css\nbody.html\nscript.js\n\n---body.html---\n
\n \n
\n\n
\n
\n
\n
\n

My Notes

\n \n
\n
\n
\n \n
\n \n \n
\n \n \n
\n
\n
\n
\n\n
\n

Built with ❤️ for writers

\n
\n\n---style.css---\n:root {\n --primary-color: #6366f1;\n --bg-color: #ffffff;\n --text-color: #1f2937;\n --border-color: #e5e7eb;\n --hover-color: #4f46e5;\n}\n\n[data-theme=\"dark\"] {\n --bg-color: #1f2937;\n --text-color: #f3f4f6;\n --border-color: #374151;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: system-ui, -apple-system, sans-serif;\n background-color: var(--bg-color);\n color: var(--text-color);\n line-height: 1.6;\n transition: background-color 0.3s, color 0.3s;\n}\n\nheader {\n border-bottom: 1px solid var(--border-color);\n padding: 1rem;\n}\n\nnav {\n max-width: 1200px;\n margin: 0 auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\nh1 {\n font-size: 1.5rem;\n font-weight: 700;\n background: linear-gradient(45deg, var(--primary-color), #8b5cf6);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n}\n\n.container {\n max-width: 1200px;\n margin: 2rem auto;\n padding: 0 1rem;\n display: grid;\n grid-template-columns: 300px 1fr;\n gap: 2rem;\n}\n\n.notes-panel {\n border-right: 1px solid var(--border-color);\n padding-right: 1rem;\n}\n\n.notes-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 1rem;\n}\n\n.notes-list {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.note-item {\n padding: 0.75rem;\n border-radius: 0.5rem;\n cursor: pointer;\n transition: background-color 0.2s;\n}\n\n.note-item:hover {\n background-color: var(--border-color);\n}\n\n.note-item.active {\n background-color: var(--primary-color);\n color: white;\n}\n\n.editor-panel {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n\n.title-input, .content-input {\n width: 100%;\n padding: 0.75rem;\n border: 1px solid var(--border-color);\n border-radius: 0.5rem;\n background-color: var(--bg-color);\n color: var(--text-color);\n font-size: 1rem;\n}\n\n.content-input {\n height: 60vh;\n resize: vertical;\n}\n\n.editor-actions {\n display: flex;\n gap: 1rem;\n}\n\n.btn-primary, .btn-secondary {\n padding: 0.5rem 1rem;\n border: none;\n border-radius: 0.5rem;\n cursor: pointer;\n font-weight: 500;\n transition: background-color 0.2s;\n}\n\n.btn-primary {\n background-color: var(--primary-color);\n color: white;\n}\n\n.btn-primary:hover {\n background-color: var(--hover-color);\n}\n\n.btn-secondary {\n background-color: var(--border-color);\n color: var(--text-color);\n}\n\n.btn-secondary:hover {\n background-color: #d1d5db;\n}\n\n#themeToggle {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 1.25rem;\n}\n\nfooter {\n text-align: center;\n padding: 2rem;\n border-top: 1px solid var(--border-color);\n}\n\n@media (max-width: 768px) {\n .container {\n grid-template-columns: 1fr;\n }\n \n .notes-panel {\n border-right: none;\n border-bottom: 1px solid var(--border-color);\n padding-right: 0;\n padding-bottom: 1rem;\n }\n}\n\n---script.js---\nlet notes = JSON.parse(localStorage.getItem('notes')) || [];\nlet currentNote = null;\n\nfunction initializeApp() {\n const themeToggle = document.getElementById('themeToggle');\n const newNoteBtn = document.getElementById('newNote');\n const saveNoteBtn = document.getElementById('saveNote');\n const deleteNoteBtn = document.getElementById('deleteNote');\n \n themeToggle.addEventListener('click', toggleTheme);\n newNoteBtn.addEventListener('click', createNewNote);\n saveNoteBtn.addEventListener('click', saveNote);\n deleteNoteBtn.addEventListener('click', deleteNote);\n \n renderNotesList();\n loadTheme();\n}\n\nfunction toggleTheme() {\n const isDark = document.body.getAttribute('data-theme') === 'dark';\n document.body.setAttribute('data-theme', isDark ? 'light' : 'dark');\n localStorage.setItem('theme', isDark ? 'light' : 'dark');\n document.getElementById('themeToggle').textContent = isDark ? '🌙' : '☀️';\n}\n\nfunction loadTheme() {\n const theme = localStorage.getItem('theme') || 'light';\n document.body.setAttribute('data-theme', theme);\n document.getElementById('themeToggle').textContent = theme === 'dark' ? '☀️' : '🌙';\n}\n\nfunction createNewNote() {\n currentNote = {\n id: Date.now(),\n title: '',\n content: '',\n timestamp: new Date().toISOString()\n };\n document.getElementById('noteTitle').value = '';\n document.getElementById('noteContent').value = '';\n renderNotesList();\n}\n\nfunction saveNote() {\n const title = document.getElementById('noteTitle').value;\n const content = document.getElementById('noteContent').value;\n \n if (!title || !content) return;\n \n if (currentNote) {\n currentNote.title = title;\n currentNote.content = content;\n currentNote.timestamp = new Date().toISOString();\n \n const index = notes.findIndex(note => note.id === currentNote.id);\n if (index > -1) {\n notes[index] = currentNote;\n } else {\n notes.push(currentNote);\n }\n }\n \n localStorage.setItem('notes', JSON.stringify(notes));\n renderNotesList();\n}\n\nfunction deleteNote() {\n if (!currentNote) return;\n \n notes = notes.filter(note => note.id !== currentNote.id);\n localStorage.setItem('notes', JSON.stringify(notes));\n currentNote = null;\n document.getElementById('noteTitle').value = '';\n document.getElementById('noteContent').value = '';\n renderNotesList();\n}\n\nfunction renderNotesList() {\n const notesList = document.getElementById('notesList');\n notesList.innerHTML = '';\n \n notes.sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp));\n \n notes.forEach(note => {\n const noteElement = document.createElement('div');\n noteElement.className = `note-item ${currentNote?.id === note.id ? 'active' : ''}`;\n noteElement.textContent = note.title;\n noteElement.addEventListener('click', () => loadNote(note));\n notesList.appendChild(noteElement);\n });\n}\n\nfunction loadNote(note) {\n currentNote = note;\n document.getElementById('noteTitle').value = note.title;\n document.getElementById('noteContent').value = note.content;\n renderNotesList();\n}\n\ndocument.addEventListener('DOMContentLoaded', initializeApp);\n\n---end---\n\nThis implementation features:\n\n1. Clean, modern design with smooth animations\n2. Dark/light theme toggle with persistence\n3. Responsive layout that works on all devices\n4. Local storage for saving notes\n5. Real-time saving and updating\n6. Elegant gradient effects and subtle transitions\n7. Semantic HTML structure\n8. Accessible buttons and controls\n9. Clean organization of notes with timestamps\n10. Intuitive user interface\n\nThe domain name \"writenotes.scroll.pub\" is simple, memorable, and clearly describes the purpose of the website."
+ }
+ ],
+ "stop_reason": "end_turn",
+ "stop_sequence": null,
+ "usage": {
+ "input_tokens": 281,
+ "cache_creation_input_tokens": 0,
+ "cache_read_input_tokens": 0,
+ "output_tokens": 2611
+ }
+ }
readme.scroll
Changed around line 1
+ # writenotes.scroll.pub
+ Website generated by Claude from prompt: A website where i want to paste my writing notes personally
script.js
Changed around line 1
+ let notes = JSON.parse(localStorage.getItem('notes')) || [];
+ let currentNote = null;
+
+ function initializeApp() {
+ const themeToggle = document.getElementById('themeToggle');
+ const newNoteBtn = document.getElementById('newNote');
+ const saveNoteBtn = document.getElementById('saveNote');
+ const deleteNoteBtn = document.getElementById('deleteNote');
+
+ themeToggle.addEventListener('click', toggleTheme);
+ newNoteBtn.addEventListener('click', createNewNote);
+ saveNoteBtn.addEventListener('click', saveNote);
+ deleteNoteBtn.addEventListener('click', deleteNote);
+
+ renderNotesList();
+ loadTheme();
+ }
+
+ function toggleTheme() {
+ const isDark = document.body.getAttribute('data-theme') === 'dark';
+ document.body.setAttribute('data-theme', isDark ? 'light' : 'dark');
+ localStorage.setItem('theme', isDark ? 'light' : 'dark');
+ document.getElementById('themeToggle').textContent = isDark ? '🌙' : '☀️';
+ }
+
+ function loadTheme() {
+ const theme = localStorage.getItem('theme') || 'light';
+ document.body.setAttribute('data-theme', theme);
+ document.getElementById('themeToggle').textContent = theme === 'dark' ? '☀️' : '🌙';
+ }
+
+ function createNewNote() {
+ currentNote = {
+ id: Date.now(),
+ title: '',
+ content: '',
+ timestamp: new Date().toISOString()
+ };
+ document.getElementById('noteTitle').value = '';
+ document.getElementById('noteContent').value = '';
+ renderNotesList();
+ }
+
+ function saveNote() {
+ const title = document.getElementById('noteTitle').value;
+ const content = document.getElementById('noteContent').value;
+
+ if (!title || !content) return;
+
+ if (currentNote) {
+ currentNote.title = title;
+ currentNote.content = content;
+ currentNote.timestamp = new Date().toISOString();
+
+ const index = notes.findIndex(note => note.id === currentNote.id);
+ if (index > -1) {
+ notes[index] = currentNote;
+ } else {
+ notes.push(currentNote);
+ }
+ }
+
+ localStorage.setItem('notes', JSON.stringify(notes));
+ renderNotesList();
+ }
+
+ function deleteNote() {
+ if (!currentNote) return;
+
+ notes = notes.filter(note => note.id !== currentNote.id);
+ localStorage.setItem('notes', JSON.stringify(notes));
+ currentNote = null;
+ document.getElementById('noteTitle').value = '';
+ document.getElementById('noteContent').value = '';
+ renderNotesList();
+ }
+
+ function renderNotesList() {
+ const notesList = document.getElementById('notesList');
+ notesList.innerHTML = '';
+
+ notes.sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp));
+
+ notes.forEach(note => {
+ const noteElement = document.createElement('div');
+ noteElement.className = `note-item ${currentNote?.id === note.id ? 'active' : ''}`;
+ noteElement.textContent = note.title;
+ noteElement.addEventListener('click', () => loadNote(note));
+ notesList.appendChild(noteElement);
+ });
+ }
+
+ function loadNote(note) {
+ currentNote = note;
+ document.getElementById('noteTitle').value = note.title;
+ document.getElementById('noteContent').value = note.content;
+ renderNotesList();
+ }
+
+ document.addEventListener('DOMContentLoaded', initializeApp);
style.css
Changed around line 1
+ :root {
+ --primary-color: #6366f1;
+ --bg-color: #ffffff;
+ --text-color: #1f2937;
+ --border-color: #e5e7eb;
+ --hover-color: #4f46e5;
+ }
+
+ [data-theme="dark"] {
+ --bg-color: #1f2937;
+ --text-color: #f3f4f6;
+ --border-color: #374151;
+ }
+
+ * {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ }
+
+ body {
+ font-family: system-ui, -apple-system, sans-serif;
+ background-color: var(--bg-color);
+ color: var(--text-color);
+ line-height: 1.6;
+ transition: background-color 0.3s, color 0.3s;
+ }
+
+ header {
+ border-bottom: 1px solid var(--border-color);
+ padding: 1rem;
+ }
+
+ nav {
+ max-width: 1200px;
+ margin: 0 auto;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ h1 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ background: linear-gradient(45deg, var(--primary-color), #8b5cf6);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ }
+
+ .container {
+ max-width: 1200px;
+ margin: 2rem auto;
+ padding: 0 1rem;
+ display: grid;
+ grid-template-columns: 300px 1fr;
+ gap: 2rem;
+ }
+
+ .notes-panel {
+ border-right: 1px solid var(--border-color);
+ padding-right: 1rem;
+ }
+
+ .notes-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 1rem;
+ }
+
+ .notes-list {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+ }
+
+ .note-item {
+ padding: 0.75rem;
+ border-radius: 0.5rem;
+ cursor: pointer;
+ transition: background-color 0.2s;
+ }
+
+ .note-item:hover {
+ background-color: var(--border-color);
+ }
+
+ .note-item.active {
+ background-color: var(--primary-color);
+ color: white;
+ }
+
+ .editor-panel {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+ }
+
+ .title-input, .content-input {
+ width: 100%;
+ padding: 0.75rem;
+ border: 1px solid var(--border-color);
+ border-radius: 0.5rem;
+ background-color: var(--bg-color);
+ color: var(--text-color);
+ font-size: 1rem;
+ }
+
+ .content-input {
+ height: 60vh;
+ resize: vertical;
+ }
+
+ .editor-actions {
+ display: flex;
+ gap: 1rem;
+ }
+
+ .btn-primary, .btn-secondary {
+ padding: 0.5rem 1rem;
+ border: none;
+ border-radius: 0.5rem;
+ cursor: pointer;
+ font-weight: 500;
+ transition: background-color 0.2s;
+ }
+
+ .btn-primary {
+ background-color: var(--primary-color);
+ color: white;
+ }
+
+ .btn-primary:hover {
+ background-color: var(--hover-color);
+ }
+
+ .btn-secondary {
+ background-color: var(--border-color);
+ color: var(--text-color);
+ }
+
+ .btn-secondary:hover {
+ background-color: #d1d5db;
+ }
+
+ #themeToggle {
+ background: none;
+ border: none;
+ cursor: pointer;
+ font-size: 1.25rem;
+ }
+
+ footer {
+ text-align: center;
+ padding: 2rem;
+ border-top: 1px solid var(--border-color);
+ }
+
+ @media (max-width: 768px) {
+ .container {
+ grid-template-columns: 1fr;
+ }
+
+ .notes-panel {
+ border-right: none;
+ border-bottom: 1px solid var(--border-color);
+ padding-right: 0;
+ padding-bottom: 1rem;
+ }
+ }