Available Widgets
Better Home includes three widgets:Tasks
A todo list to track your daily tasks
Quick Links
Bookmark manager for frequently visited sites
Mood Calendar
Interactive calendar to track your mood over time
Managing Widgets
Opening the Settings Popup
- Click the Better Home extension icon in your Chrome toolbar
- The popup will display all available widget toggles
Enabling/Disabling Widgets
Each widget has a toggle switch in the popup. Simply click the switch to enable or disable a widget:
Widget Settings Type
Widget preferences are stored using the following TypeScript interface:src/types/widget-settings.ts
Layout System
Better Home automatically adjusts the layout based on which widgets are enabled. The layout system uses a smart algorithm to arrange widgets optimally:Single Widget Layouts
Single Widget Layouts
When only one widget is enabled, it expands to fill the entire viewport:
- Tasks only: Full-size todo list
- Links only: Expanded quick links grid
- Calendar only: Full-size mood calendar
Two Widget Layouts
Two Widget Layouts
When two widgets are enabled, they share space side-by-side or stacked:
- Tasks + Links: Two-column layout on desktop, stacked on mobile
- Tasks + Calendar: Todo list on left, calendar on right
- Links + Calendar: Quick links on left, calendar on right
All Widgets Layout
All Widgets Layout
When all three widgets are enabled:
- Tasks and Quick Links stack vertically on the left
- Mood Calendar takes up the remaining space on the right
- Responsive layout adapts to screen size
Layout Implementation
The layout logic uses a binary flag system to determine which layout to render:src/app.tsx
Using Widget Settings in Your Code
If you’re extending Better Home, you can access widget settings using theuseLocalStorage hook:
The
useLocalStorage hook automatically syncs changes across components and browser tabs, ensuring a consistent experience.Popup Implementation
The widget toggle interface in the popup is built with React and uses the Switch component from shadcn/ui:src/popup-app.tsx