From 1bb9b4a79efe07276738e16653713fcac2016a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E6=B6=9B?= Date: Sun, 12 Oct 2025 18:32:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=A7=8B=E5=AE=8C=E5=96=84=E4=BE=BF?= =?UTF-8?q?=E7=AD=BE=E6=96=B0=E5=BB=BA=E3=80=81=E7=BC=96=E8=BE=91=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 10 +- src/common/base.css | 1 + src/components/NoteItem.vue | 12 +- src/components/RichTextEditor.vue | 162 +++------ src/pages/FolderPage.vue | 144 ++++---- src/pages/NoteEditorPage.vue | 121 ++++++- src/pages/NoteListPage.vue | 239 ++++++++++--- src/pages/SettingsPage.vue | 133 +++++-- src/stores/useAppStore.js | 238 ++++++++----- src/utils/colors.js | 74 ---- src/utils/storage.js | 4 +- src/utils/styles.js | 574 ------------------------------ src/utils/types.js | 23 -- 13 files changed, 696 insertions(+), 1039 deletions(-) delete mode 100644 src/utils/colors.js delete mode 100644 src/utils/styles.js delete mode 100644 src/utils/types.js diff --git a/index.html b/index.html index 68f85b1..49fea4d 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,10 @@ - + + + + 锤子便签 - - diff --git a/src/pages/FolderPage.vue b/src/pages/FolderPage.vue index 583e2a2..d881412 100644 --- a/src/pages/FolderPage.vue +++ b/src/pages/FolderPage.vue @@ -1,29 +1,17 @@ \ No newline at end of file +const setSearchQuery = value => { + searchQuery.value = value +} + + + diff --git a/src/pages/NoteEditorPage.vue b/src/pages/NoteEditorPage.vue index f1ec817..caffce9 100644 --- a/src/pages/NoteEditorPage.vue +++ b/src/pages/NoteEditorPage.vue @@ -4,7 +4,7 @@
-
+
{{ formattedTime }} | {{ wordCount }} @@ -12,7 +12,11 @@
- +
\ No newline at end of file + + + \ No newline at end of file diff --git a/src/stores/useAppStore.js b/src/stores/useAppStore.js index b031fd4..537db8d 100644 --- a/src/stores/useAppStore.js +++ b/src/stores/useAppStore.js @@ -1,44 +1,44 @@ -import { defineStore } from 'pinia'; -import * as storage from '../utils/storage'; +import { defineStore } from 'pinia' +import * as storage from '../utils/storage' export const useAppStore = defineStore('app', { state: () => ({ notes: [], folders: [], - settings: { cloudSync: false, darkMode: false } + settings: { cloudSync: false, darkMode: false }, }), - + getters: { - starredNotesCount: (state) => { - return state.notes.filter(note => note.isStarred).length; + starredNotesCount: state => { + return state.notes.filter(note => note.isStarred).length + }, + + allNotesCount: state => { + return state.notes.length }, - - allNotesCount: (state) => { - return state.notes.length; - } }, - + actions: { // 初始化数据 async loadData() { try { - const loadedNotes = await storage.getNotes(); - const loadedFolders = await storage.getFolders(); - const loadedSettings = await storage.getSettings(); - + const loadedNotes = await storage.getNotes() + const loadedFolders = await storage.getFolders() + const loadedSettings = await storage.getSettings() + // 如果没有数据,则加载mock数据 if (loadedNotes.length === 0 && loadedFolders.length === 0) { - this.loadMockData(); + this.loadMockData() } else { - this.notes = loadedNotes; - this.folders = loadedFolders; - this.settings = loadedSettings; + this.notes = loadedNotes + this.folders = loadedFolders + this.settings = loadedSettings } } catch (error) { - console.error('Error loading data:', error); + console.error('Error loading data:', error) } }, - + // 加载mock数据 async loadMockData() { // Mock notes @@ -52,7 +52,9 @@ export const useAppStore = defineStore('app', { folderId: null, isStarred: true, isTop: true, - hasImage: false + hasImage: false, + isDeleted: false, + deletedAt: null, }, { id: '2', @@ -63,7 +65,9 @@ export const useAppStore = defineStore('app', { folderId: null, isStarred: true, isTop: false, - hasImage: true + hasImage: true, + isDeleted: false, + deletedAt: null, }, { id: '3', @@ -74,7 +78,9 @@ export const useAppStore = defineStore('app', { folderId: null, isStarred: false, isTop: false, - hasImage: false + hasImage: false, + isDeleted: false, + deletedAt: null, }, { id: '4', @@ -85,7 +91,9 @@ export const useAppStore = defineStore('app', { folderId: null, isStarred: false, isTop: false, - hasImage: false + hasImage: false, + isDeleted: false, + deletedAt: null, }, { id: '5', @@ -96,145 +104,191 @@ export const useAppStore = defineStore('app', { folderId: null, isStarred: false, isTop: false, - hasImage: false - } - ]; - + hasImage: false, + isDeleted: false, + deletedAt: null, + }, + { + id: '6', + title: '已删除的便签', + content: '这是一条已删除的便签示例,应该只在回收站中显示。', + createdAt: new Date(Date.now() - 432000000).toISOString(), // 5天前 + updatedAt: new Date(Date.now() - 432000000).toISOString(), + folderId: null, + isStarred: false, + isTop: false, + hasImage: false, + isDeleted: true, + deletedAt: new Date(Date.now() - 86400000).toISOString(), // 1天前删除 + }, + ] + // Mock folders const mockFolders = [ { id: 'folder1', name: '工作', - createdAt: new Date().toISOString() + createdAt: new Date().toISOString(), }, { id: 'folder2', name: '个人', - createdAt: new Date().toISOString() + createdAt: new Date().toISOString(), }, { id: 'folder3', name: '学习', - createdAt: new Date().toISOString() - } - ]; - + createdAt: new Date().toISOString(), + }, + ] + // Mock settings const mockSettings = { cloudSync: false, - darkMode: false - }; - - this.notes = mockNotes; - this.folders = mockFolders; - this.settings = mockSettings; - + darkMode: false, + } + + this.notes = mockNotes + this.folders = mockFolders + this.settings = mockSettings + // 保存到localStorage - await storage.saveNotes(mockNotes); - await storage.saveFolders(mockFolders); - await storage.saveSettings(mockSettings); + await storage.saveNotes(mockNotes) + await storage.saveFolders(mockFolders) + await storage.saveSettings(mockSettings) }, - + // 保存notes到localStorage async saveNotes() { try { - await storage.saveNotes(this.notes); + await storage.saveNotes(this.notes) } catch (error) { - console.error('Error saving notes:', error); + console.error('Error saving notes:', error) } }, - + // 保存folders到localStorage async saveFolders() { try { - await storage.saveFolders(this.folders); + await storage.saveFolders(this.folders) } catch (error) { - console.error('Error saving folders:', error); + console.error('Error saving folders:', error) } }, - + // 保存settings到localStorage async saveSettings() { try { - await storage.saveSettings(this.settings); + await storage.saveSettings(this.settings) } catch (error) { - console.error('Error saving settings:', error); + console.error('Error saving settings:', error) } }, - + // Note functions async addNote(note) { try { - const newNote = await storage.addNote(note); - this.notes.push(newNote); - return newNote; + const newNote = await storage.addNote(note) + this.notes.push(newNote) + return newNote } catch (error) { - console.error('Error adding note:', error); - throw error; + console.error('Error adding note:', error) + throw error } }, - + async updateNote(id, updates) { try { - const updatedNote = await storage.updateNote(id, updates); + const updatedNote = await storage.updateNote(id, updates) if (updatedNote) { - const index = this.notes.findIndex(note => note.id === id); + const index = this.notes.findIndex(note => note.id === id) if (index !== -1) { - this.notes[index] = updatedNote; + this.notes[index] = updatedNote } } - return updatedNote; + return updatedNote } catch (error) { - console.error('Error updating note:', error); - throw error; + console.error('Error updating note:', error) + throw error } }, - + async deleteNote(id) { try { - const result = await storage.deleteNote(id); + const result = await storage.deleteNote(id) if (result) { - this.notes = this.notes.filter(note => note.id !== id); + this.notes = this.notes.filter(note => note.id !== id) } - return result; + return result } catch (error) { - console.error('Error deleting note:', error); - throw error; + console.error('Error deleting note:', error) + throw error } }, - + + // 将便签移至回收站 + async moveToTrash(id) { + try { + const updatedNote = await storage.updateNote(id, { isDeleted: true, deletedAt: new Date().toISOString() }) + if (updatedNote) { + const index = this.notes.findIndex(note => note.id === id) + if (index !== -1) { + this.notes[index] = updatedNote + } + } + return updatedNote + } catch (error) { + console.error('Error moving note to trash:', error) + throw error + } + }, + + // 永久删除便签 + async permanentlyDeleteNote(id) { + try { + const result = await storage.deleteNote(id) + if (result) { + this.notes = this.notes.filter(note => note.id !== id) + } + return result + } catch (error) { + console.error('Error permanently deleting note:', error) + throw error + } + }, + // Folder functions async addFolder(folder) { try { - const newFolder = await storage.addFolder(folder); - this.folders.push(newFolder); - return newFolder; + const newFolder = await storage.addFolder(folder) + this.folders.push(newFolder) + return newFolder } catch (error) { - console.error('Error adding folder:', error); - throw error; + console.error('Error adding folder:', error) + throw error } }, - + // Settings functions async updateSettings(newSettings) { try { - const updatedSettings = { ...this.settings, ...newSettings }; - this.settings = updatedSettings; - await storage.saveSettings(updatedSettings); + const updatedSettings = { ...this.settings, ...newSettings } + this.settings = updatedSettings + await storage.saveSettings(updatedSettings) } catch (error) { - console.error('Error updating settings:', error); - throw error; + console.error('Error updating settings:', error) + throw error } }, - + // 切换云同步设置 async toggleCloudSync() { - await this.updateSettings({ cloudSync: !this.settings.cloudSync }); + await this.updateSettings({ cloudSync: !this.settings.cloudSync }) }, - + // 切换深色模式设置 async toggleDarkMode() { - await this.updateSettings({ darkMode: !this.settings.darkMode }); - } - } -}); \ No newline at end of file + await this.updateSettings({ darkMode: !this.settings.darkMode }) + }, + }, +}) diff --git a/src/utils/colors.js b/src/utils/colors.js deleted file mode 100644 index d5da8ca..0000000 --- a/src/utils/colors.js +++ /dev/null @@ -1,74 +0,0 @@ -// Smartisan Notes Color Scheme - Based on Original Design -export default { - // Primary colors - Original Smartisan Notes brown/gold palette - primary: '#5c3c2a', // Main brown color for UI elements - primaryDark: '#4a3224', // Darker shade of primary - primaryLight: '#f5f0e6', // Light background tone - - // Background colors - Warm paper-like tones - background: '#fbf7ed', // Main app background - warm off-white - backgroundSecondary: '#f7f2e9', // Slightly darker background - backgroundCard: '#ffffff', // Pure white for cards/notes - searchBarBackground: '#f0f0f0', // Search bar background - light gray - - // Text colors - Brown/black tones for readability - textPrimary: '#5c3c2a', // Main text color - dark brown - textSecondary: '#6e482f', // Secondary text - medium brown - textTertiary: '#9e836c', // Tertiary text - light brown/gray - textInverted: '#ffffff', // White text for dark backgrounds - - // Accent colors - Smartisan's signature colors - accentBlue: '#5c89f2', // Blue for links/actions - accentGreen: '#97cc4e', // Green for success/positive actions - accentRed: '#e65c53', // Red for errors/dangerous actions - accentOrange: '#f0880d', // Orange for warnings/highlights - accentYellow: '#ffd633', // Yellow for starred items/highlights (updated to match original) - - // Note specific colors - noteTitle: '#5c3c2a', // Note title color - noteContent: '#6e482f', // Note content color - noteDate: '#b9a691', // Date/time color - noteStar: '#ffd633', // Star/favorite color (updated to match original) - - // Folder colors - folderName: '#5c3c2a', // Folder name color - folderCount: '#99000000', // Folder item count color (60% black) - folderItemSelected: '#f0f0f0', // Folder item selected background color - - // Button colors - Based on Smartisan's button styles - buttonPrimary: '#5c3c2a', // Primary button - brown - buttonSecondary: '#97cc4e', // Secondary button - green - buttonDanger: '#e65c53', // Danger button - red - buttonDisabled: '#d4d4d5', // Disabled button - light gray - - // Status colors - success: '#79ad31', // Success - green - warning: '#f0880d', // Warning - orange - error: '#e64746', // Error - red - info: '#5c89f2', // Info - blue - - // UI elements - Borders, dividers, shadows - border: '#e5ddca', // Light brown border - divider: '#e5e5e5', // Light gray divider - shadow: '#00000014', // Subtle shadow - - // Transparency variants - black05: '#0000000d', // 5% black - black10: '#0000001a', // 10% black - black20: '#00000033', // 20% black - black30: '#0000004d', // 30% black - black40: '#00000066', // 40% black - black50: '#00000080', // 50% black - black60: '#00000099', // 60% black - black80: '#000000cc', // 80% black - black90: '#000000e6', // 90% black - - white10: '#ffffff1a', // 10% white - white20: '#ffffff33', // 20% white - white30: '#ffffff4d', // 30% white - white40: '#ffffff66', // 40% white - white50: '#ffffff80', // 50% white - white60: '#ffffff99', // 60% white - white80: '#ffffffcc', // 80% white - white90: '#ffffffe6', // 90% white -}; \ No newline at end of file diff --git a/src/utils/storage.js b/src/utils/storage.js index b9e1069..9951658 100644 --- a/src/utils/storage.js +++ b/src/utils/storage.js @@ -30,7 +30,9 @@ export const addNote = async (note) => { updatedAt: new Date().toISOString(), isStarred: note.isStarred || false, isTop: note.isTop || false, - hasImage: note.hasImage || false + hasImage: note.hasImage || false, + isDeleted: note.isDeleted || false, + deletedAt: note.deletedAt || null }; const notes = await getNotes(); diff --git a/src/utils/styles.js b/src/utils/styles.js deleted file mode 100644 index fae1083..0000000 --- a/src/utils/styles.js +++ /dev/null @@ -1,574 +0,0 @@ -// Styles for Smartisan Notes - Based on React Native version -export default { - // Common styles - Based on Smartisan Notes design principles - container: { - flex: 1, - backgroundColor: 'var(--background)', - }, - - // Header styles - Warm, minimal design - header: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - paddingVertical: 12, - paddingHorizontal: 16, - backgroundColor: 'var(--background)', - borderBottomWidth: 1, - borderBottomColor: 'var(--border)', - }, - - headerTitleContainer: { - flex: 1, - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'center', - }, - - headerTitleTouchable: { - flexDirection: 'row', - alignItems: 'center', - paddingHorizontal: 8, - paddingVertical: 4, - }, - - headerTitle: { - fontSize: 18, - fontWeight: '600', - color: 'var(--text-primary)', - textAlign: 'center', - }, - - headerFolderArrow: { - width: 20, - height: 20, - tintColor: 'var(--text-primary)', - marginLeft: 8, - }, - - headerButton: { - padding: 8, - }, - - headerButtonText: { - fontSize: 16, - color: 'var(--primary)', - fontWeight: '500', - }, - - headerActionIcon: { - width: 24, - height: 24, - tintColor: 'var(--primary)', - }, - - // Folder list styles - folderListContainer: { - position: 'absolute', - top: 50, - left: '10%', - right: '10%', - backgroundColor: 'var(--background-card)', - borderRadius: 8, - shadowColor: 'var(--shadow)', - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.2, - shadowRadius: 4, - elevation: 3, - zIndex: 100, - }, - - folderListItem: { - paddingVertical: 12, - paddingHorizontal: 16, - borderBottomWidth: 1, - borderBottomColor: 'var(--border)', - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - }, - - folderListItemActive: { - backgroundColor: 'var(--folder-item-selected)', - }, - - folderListItemText: { - fontSize: 16, - color: 'var(--text-primary)', - }, - - folderListItemTextActive: { - color: 'var(--primary)', - fontWeight: '500', - }, - - folderListItemCount: { - fontSize: 13, - color: 'var(--text-tertiary)', - }, - - // Note list styles - Clean, paper-like appearance - noteListContainer: { - flex: 1, - backgroundColor: 'var(--background)', - }, - - searchContainer: { - flexDirection: 'row', - alignItems: 'center', - paddingHorizontal: 16, - paddingVertical: 8, - backgroundColor: 'var(--background-card)', - borderBottomWidth: 1, - borderBottomColor: 'var(--border)', - }, - - searchInputContainer: { - flex: 1, - flexDirection: 'row', - alignItems: 'center', - backgroundColor: 'var(--background-card)', - height: 36, - paddingHorizontal: 8, - paddingVertical: 0, - }, - - searchInputBackground: { - flex: 1, - flexDirection: 'row', - alignItems: 'center', - backgroundColor: '#f0f0f0', - borderRadius: 4, - height: 36, - paddingHorizontal: 8, - paddingVertical: 0, - }, - - searchInput: { - flex: 1, - fontSize: 16, - color: 'var(--text-primary)', - marginLeft: 8, - marginRight: 8, - padding: 0, - includeFontPadding: false, - }, - - searchLeftIcon: { - width: 20, - height: 20, - tintColor: 'var(--text-tertiary)', - }, - - searchClearIcon: { - width: 20, - height: 20, - tintColor: 'var(--text-tertiary)', - }, - - noteListEmptyContainer: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - padding: 16, - backgroundColor: 'var(--background)', - }, - - noteListEmptyText: { - fontSize: 18, - fontWeight: '600', - color: 'var(--text-tertiary)', - marginBottom: 8, - }, - - noteListEmptySubtext: { - fontSize: 14, - color: 'var(--text-tertiary)', - textAlign: 'center', - lineHeight: 20, - }, - - noteCount: { - fontSize: 13, - color: 'var(--text-tertiary)', - paddingHorizontal: 16, - paddingVertical: 8, - }, - - // Note item styles - Paper note appearance with subtle shadows - noteItem: { - padding: 0, - borderRadius: 6, - borderLeftWidth: 1, - borderLeftColor: 'transparent', - shadowColor: 'var(--shadow)', - shadowOffset: { width: 0, height: 1 }, - shadowOpacity: 0.1, - shadowRadius: 2, - elevation: 1, - overflow: 'hidden', - backgroundColor: 'var(--background-card)', - }, - - noteItemDeleteButton: { - backgroundColor: 'var(--accent-red)', - justifyContent: 'center', - alignItems: 'center', - width: 80, - height: '100%', - borderRadius: 6, - marginBottom: 10, - }, - - noteItemDeleteButtonImage: { - width: 24, - height: 24, - tintColor: 'var(--text-inverted)', - }, - - noteItemHeader: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'flex-start', - marginBottom: 8, - }, - - noteItemTitle: { - fontSize: 16, - fontWeight: '600', - color: 'var(--note-title)', - flex: 1, - marginRight: 8, - }, - - noteItemStar: { - width: 20, - height: 20, - tintColor: 'var(--note-star)', - }, - - noteItemContent: { - fontSize: 14, - color: 'var(--note-content)', - marginBottom: 8, - lineHeight: 20, - includeFontPadding: false, - }, - - noteItemDate: { - fontSize: 12, - color: 'var(--note-date)', - includeFontPadding: false, - }, - - // Floating action button - Circular button with warm color - fab: { - position: 'absolute', - bottom: 24, - right: 24, - backgroundColor: 'var(--primary)', - width: 50, - height: 50, - borderRadius: 25, - justifyContent: 'center', - alignItems: 'center', - shadowColor: 'var(--shadow)', - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.2, - shadowRadius: 3, - elevation: 3, - }, - - fabIcon: { - width: 24, - height: 24, - tintColor: 'var(--text-inverted)', - }, - - // Folder item styles - Clean list items with folder icon - folderItem: { - flexDirection: 'row', - alignItems: 'center', - paddingVertical: 14, - paddingHorizontal: 16, - marginBottom: 1, - borderLeftWidth: 3, - borderLeftColor: 'var(--accent-orange)', - overflow: 'hidden', - backgroundColor: 'var(--background-card)', - }, - - folderItemIcon: { - width: 24, - height: 24, - tintColor: 'var(--folder-name)', - }, - - folderItemInfo: { - flex: 1, - marginLeft: 12, - }, - - folderItemName: { - fontSize: 16, - fontWeight: '500', - color: 'var(--folder-name)', - marginBottom: 2, - }, - - folderItemCount: { - fontSize: 13, - color: 'var(--folder-count)', - }, - - folderItemArrow: { - fontSize: 18, - color: 'var(--text-tertiary)', - }, - - // Note editor styles - Clean writing surface - noteEditorContainer: { - flex: 1, - backgroundColor: 'var(--background-card)', - }, - - editorToolbar: { - flexDirection: 'row', - paddingVertical: 8, - paddingHorizontal: 16, - borderBottomWidth: 1, - borderBottomColor: 'var(--border)', - backgroundColor: 'var(--background-card)', - }, - - editorToolbarButton: { - padding: 8, - marginRight: 8, - }, - - editorToolbarIcon: { - width: 24, - height: 24, - tintColor: 'var(--text-primary)', - }, - - noteEditorContent: { - flex: 1, - padding: 16, - }, - - noteEditorTitle: { - fontSize: 22, - fontWeight: '600', - color: 'var(--note-title)', - marginBottom: 16, - paddingVertical: 8, - borderBottomWidth: 1, - borderBottomColor: 'var(--border)', - }, - - noteEditorContentInput: { - fontSize: 16, - color: 'var(--note-content)', - lineHeight: 24, - flex: 1, - textAlignVertical: 'top', - }, - - // Note detail styles - Clean reading experience - noteDetailContainer: { - flex: 1, - backgroundColor: 'var(--background-card)', - }, - - noteDetailContent: { - flex: 1, - padding: 16, - }, - - noteDetailHeader: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - marginBottom: 16, - paddingVertical: 4, - borderBottomWidth: 1, - borderBottomColor: 'var(--border)', - }, - - noteDetailDate: { - fontSize: 13, - color: 'var(--note-date)', - }, - - noteDetailStarIcon: { - width: 24, - height: 24, - tintColor: 'var(--note-star)', - }, - - noteDetailContentText: { - fontSize: 16, - color: 'var(--note-content)', - lineHeight: 24, - includeFontPadding: false, - }, - - noteDetailFooter: { - flexDirection: 'row', - justifyContent: 'space-around', - paddingVertical: 12, - backgroundColor: 'var(--background)', - borderTopWidth: 1, - borderTopColor: 'var(--border)', - }, - - noteDetailActionButton: { - flexDirection: 'row', - alignItems: 'center', - paddingHorizontal: 20, - paddingVertical: 10, - backgroundColor: 'var(--primary)', - borderRadius: 4, - }, - - noteDetailActionButtonText: { - color: 'var(--text-inverted)', - fontWeight: '500', - fontSize: 15, - marginLeft: 8, - }, - - noteDetailActionIcon: { - width: 20, - height: 20, - tintColor: 'var(--text-inverted)', - }, - - // Settings styles - Clean, organized sections - settingsSection: { - backgroundColor: 'var(--background-card)', - marginBottom: 12, - }, - - settingsSectionTitle: { - fontSize: 13, - fontWeight: '600', - color: 'var(--text-tertiary)', - paddingHorizontal: 16, - paddingVertical: 10, - backgroundColor: 'var(--background-secondary)', - }, - - settingsItem: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - paddingHorizontal: 16, - paddingVertical: 14, - borderBottomWidth: 1, - borderBottomColor: 'var(--border)', - }, - - settingsItemWithIcon: { - flexDirection: 'row', - alignItems: 'center', - }, - - settingsItemIcon: { - width: 20, - height: 20, - tintColor: 'var(--text-primary)', - marginRight: 12, - }, - - settingsItemText: { - fontSize: 16, - color: 'var(--text-primary)', - }, - - settingsItemValue: { - fontSize: 15, - color: 'var(--text-tertiary)', - }, - - // Modal styles - Clean dialogs - modalContainer: { - flex: 1, - backgroundColor: 'var(--black-50)', - justifyContent: 'center', - alignItems: 'center', - }, - - modalContent: { - backgroundColor: 'var(--background-card)', - borderRadius: 8, - padding: 20, - width: '80%', - maxWidth: 300, - }, - - modalTitle: { - fontSize: 18, - fontWeight: '600', - color: 'var(--text-primary)', - marginBottom: 16, - textAlign: 'center', - }, - - modalInput: { - borderWidth: 1, - borderColor: 'var(--border)', - borderRadius: 4, - padding: 12, - fontSize: 16, - color: 'var(--text-primary)', - marginBottom: 16, - }, - - modalButtons: { - flexDirection: 'row', - justifyContent: 'space-between', - }, - - modalButton: { - flex: 1, - paddingVertical: 12, - alignItems: 'center', - borderRadius: 4, - }, - - modalButtonCancel: { - backgroundColor: 'var(--background-secondary)', - marginRight: 8, - }, - - modalButtonConfirm: { - backgroundColor: 'var(--primary)', - marginLeft: 8, - }, - - modalButtonText: { - fontSize: 16, - fontWeight: '500', - }, - - modalButtonTextCancel: { - color: 'var(--text-primary)', - }, - - modalButtonTextConfirm: { - color: 'var(--text-inverted)', - }, - - // Overlay style for dismissing folder list - overlay: { - position: 'absolute', - top: 0, - left: 0, - right: 0, - bottom: 0, - backgroundColor: 'transparent', - zIndex: 99, - }, -}; \ No newline at end of file diff --git a/src/utils/types.js b/src/utils/types.js deleted file mode 100644 index 0e3e31c..0000000 --- a/src/utils/types.js +++ /dev/null @@ -1,23 +0,0 @@ -// Types -export const Note = { - id: String, - title: String, - content: String, - createdAt: Date, - updatedAt: Date, - folderId: String, - isStarred: Boolean, - isTop: Boolean, - hasImage: Boolean -}; - -export const Folder = { - id: String, - name: String, - createdAt: Date -}; - -export const Settings = { - cloudSync: Boolean, - darkMode: Boolean -}; \ No newline at end of file