2.1 KiB
2.1 KiB
Notes Widget Implementation Plan
Overview
This document outlines the implementation plan for a Notes / Scratchpad Widget feature that:
- Provides a text area that saves content to local storage automatically
- Includes bold and italic formatting buttons
- Has a toggle icon to show/hide the widget
- Has a glassy/frosty design with strong blur
Implementation Steps
1. Update Config Interface
In types.ts, add a new notesWidget configuration object:
notesWidget: {
enabled: boolean;
}
2. Update ConfigurationModal Component
In components/ConfigurationModal.tsx:
- Add
notesWidgetto the config state initialization (lines 18-44) - Add a new "Notes" tab to the tab navigation (lines 259-284)
- Add a toggle switch for notesWidget.enabled in the Notes tab (lines 552-560)
- Add the Notes tab content with the toggle switch
3. Create NotesWidget Component
Create a new file components/NotesWidget.tsx:
- Text area for notes input
- Bold and italic formatting buttons
- Toggle icon for showing/hiding the widget
- Glassy/frosty design with strong blur
- Auto-save to localStorage using
userNoteskey
4. Update App Component
In App.tsx:
- Add notesWidget to the defaultConfig (lines 14-35)
- Add the NotesWidget component to the render output when enabled in config (lines 250-251)
- Add logic to save/load notes from localStorage
Technical Details
Configuration Structure
The configuration will be stored in the same way as other widgets:
config: {
notesWidget: {
enabled: boolean;
}
}
Local Storage Key
All notes text will be saved to localStorage with the key userNotes.
UI Design
- Widget will be positioned on the left side of the screen
- Vertically centered using flexbox
- Glassy/frosty design using backdrop-blur and background transparency
- Strong blur effect (backdrop-blur-2xl or similar)
- Toggle icon will be positioned on the left edge of the widget
- When hidden, icon shows a "show" indicator
- When open, icon shows a "hide" indicator
Formatting Buttons
- Bold button (B)
- Italic button (I)
- These will use HTML formatting (bold/italic tags) or rich text approach