Commit Graph

113 Commits

Author SHA1 Message Date
cac201a4d2 feat: add document-level paste and Ctrl/Cmd+V handler for image clipboard support 2026-04-08 19:58:40 -04:00
1c864f162e feat: handle image paste in AI toolbar textarea via onPaste handler 2026-04-08 19:58:36 -04:00
722c0f0f7d 🚸 feat: redesign AI toolbar with two-zone layout and HoverCard shortcuts popover
- Split composer into AI zone (primary accent) and data actions zone (neutral)
- Move Attach/Generate to labeled footer bar below textarea (left/right aligned)
- Add info icon with HoverCard (hover preview) + Popover (pinned click) showing identical keyboard shortcuts content using shadcn HoverCard to fix theme inconsistency vs Tooltip
- Expose imperative triggerRef on ImagePicker for keyboard shortcut access
- Wire TooltipProvider in root layout; install shadcn kbd and hover-card
- Unauthenticated state shows locked CTA with real sign-in button weight
- Add behavioral contract tests for footer bar, info trigger, and zone layout
2026-04-08 13:08:36 -04:00
650d1d5f95 🩹 fix: restore textarea placeholder padding in ai-toolbar
Replace px-0 py-0 override with px-3 py-1 so placeholder text is
never flush against the edge. The ::placeholder pseudo-element
inherits box padding from the textarea; zeroing it out removed all
visual breathing room for the hint text.

Also adds tests/textarea.test.ts that locks down this behaviour via
class-string assertions on the resolved cn() output.
2026-04-08 09:19:59 -04:00
b93669a416 🔥 fix: remove border and background from empty events skeleton 2026-04-08 09:15:05 -04:00
e59476dea9 fix: remove fixed height and icon margins from sign-in buttons 2026-04-08 01:51:22 -04:00
86bb20baf4 fix: remove icon margin overrides from mode toggle menu items 2026-04-08 01:51:17 -04:00
1ef63d8070 fix: remove fixed height and icon margins from event actions toolbar 2026-04-08 01:51:12 -04:00
0f46e9322f refactor: mobile-first AI toolbar layout 2026-04-08 01:50:06 -04:00
0807779c9b feat: make AI summary notification dismissable 2026-04-08 01:47:29 -04:00
a3000def67 fix: remove redundant shadcn component className overrides 2026-04-08 01:43:55 -04:00
a819cbfced fix: normalize action button icon spacing and text size 2026-04-08 01:33:33 -04:00
de6407170d fix: align component styling inconsistencies 2026-04-08 01:29:51 -04:00
8eda6c89e2 feat: replace all vanilla HTML elements with shadcn components
- Install skeleton and tooltip shadcn components
- event-dialog: textarea → Textarea, duration chips → Button ghost
- date-time-picker: raw button trigger → Button outline, quick-date chips → Button ghost
- event-card: <a> URL link → Button link asChild
- sign-in: animate-pulse div → Skeleton
- ai-toolbar: animate-pulse div → Skeleton, event count span → Badge secondary
- event-actions-toolbar: event count span → Badge secondary
2026-04-08 01:17:18 -04:00
1cee73702b feat: add quick duration selectors (+15 min, +30 min, +1h, +3h) in event dialog 2026-04-08 01:07:14 -04:00
6884a87e3c feat: add Today / Next week / Next month quick selectors to date picker 2026-04-08 01:04:34 -04:00
cc5ce95e1b feat: replace raw date/time inputs with shadcn Calendar + Select picker
- Add popover shadcn component (radix-ui based)
- Create DateTimePicker component: Calendar popover for date + hour/minute
  selects for time, allDay-aware, emits ISO / YYYY-MM-DD strings
- Replace datetime-local / date <Input> fields in EventDialog with DateTimePicker
- Remove unused CalendarIcon and Clock imports from event-dialog
2026-04-08 01:02:47 -04:00
19228b0a71 feat(ui): add Separator component 2026-04-08 00:57:07 -04:00
2fc21ee929 feat(ai-toolbar): merge event actions into toolbar, add motion animations and AI summary panel
- Add event action props (events, onAddEvent, onImport, onExport, onClearAll)
- Show skeleton loading state while session is pending
- Render event action buttons (Add, Import, Export, Clear) in action bar
- Add AnimatePresence for image preview attach/remove
- Replace Card summary panel with animated glass-card panel
- Inline AI Summarize button into action bar when authenticated
- Add Sparkles icon to AI command section header
2026-04-08 00:56:58 -04:00
8d7cc5b2a5 style(recurrence-picker): tighten spacing and use muted xs labels 2026-04-08 00:56:52 -04:00
a26787a026 feat(event-dialog): redesign with glass-strong styling, icon-decorated inputs, and Cancel button
- Apply glass-strong to DialogContent
- Add LucideMapPin and CalendarIcon/Clock icons to input fields
- Replace native checkbox with Checkbox + Label component
- Unify allDay date inputs into single relative-positioned blocks
- Add Cancel button to DialogFooter
- Rename Save to Create for new events
2026-04-08 00:56:49 -04:00
e000d41474 feat(event-actions-toolbar): redesign with icon buttons, sm size, and event count badge 2026-04-08 00:56:43 -04:00
5c7003fd13 feat(drag-drop-container): replace border highlight with animated glass overlay on drag 2026-04-08 00:56:38 -04:00
8b54a661fe feat(events-list): add AnimatePresence for list transitions and improve empty state 2026-04-08 00:56:35 -04:00
c80322f20a feat(event-card): redesign with motion layout animations, improved date formatting, and contextual metadata
- Wrap card in motion.div with layout/enter/exit animations
- Replace Card/CardHeader/CardContent with flat glass-card div
- Add hover-reveal action menu with opacity transition
- Improve date formatting with locale options for month/day/time
- Show end time inline next to start
- Add ExternalLink for event URLs
- Add icons to dropdown menu items with DropdownMenuSeparator
2026-04-08 00:56:28 -04:00
2992cfbccd feat(rrule-display): display recurrence rule as a Badge instead of plain text 2026-04-08 00:56:21 -04:00
625e019ae7 feat(mode-toggle): simplify component, add icons to menu items and active state highlight 2026-04-08 00:56:17 -04:00
8ee5688168 feat(sign-in): add icons, use ghost variant and sm size for header buttons 2026-04-08 00:56:13 -04:00
d002bbc29e ️ feat: fix accessibility warnings, PWA icons, and form field attributes
- add DialogDescription (sr-only) to EventDialog to satisfy Radix UI
  aria-describedby requirement and silence the React console warning
- add htmlFor/id pairing to the all-day checkbox label in EventDialog
- add id and name attributes to all raw form fields (textarea, checkbox)
  in event-dialog to resolve biome a11y lint warnings (4 fields fixed)
- add name attribute to hidden file inputs in image-picker and ics-file-picker
- generate public/icon-192x192.png and public/icon-512x512.png so the PWA
  manifest no longer returns 404 for the app icons
2026-04-07 23:08:48 -04:00
f38b0188df 🚨 fix: resolve all linter and typecheck warnings across codebase 2026-04-07 14:42:24 -04:00
fab0d2ff47 refactor(components): derive ImagePicker variant types from buttonVariants
Replace manually duplicated variant/size type literals with
VariantProps<typeof buttonVariants> for type safety and
consistency with the Button component.
2026-04-07 13:11:42 -04:00
a7716d87df fix(components): add unoptimized image prop, overflow containment, and accessibility
Add unoptimized prop to image preview to support blob URLs, contain
overflow on preview container, replace div with semantic section
element in DragDropContainer with aria-label, and import shared
image constants.
2026-04-07 13:11:35 -04:00
a0a7e021a8 style: standardize import ordering, type imports, and formatting in source files
Sort imports alphabetically, convert value imports to type-only where
appropriate, normalize indentation to tabs, and sort exports
alphabetically across UI components, pages, and lib modules.
2026-04-07 13:10:49 -04:00
5e888ce7ae feat(components): add image preview, picker, and clear controls to AIToolbar 2026-04-07 11:58:01 -04:00
94de1dde0e feat(components): add image drag-drop support to DragDropContainer 2026-04-07 11:57:47 -04:00
c02c6ece5d feat(components): add ImagePicker file upload component 2026-04-07 11:57:32 -04:00
b4c03ff25e style(ui): standardize UI component file formatting 2026-04-07 08:10:13 -04:00
fd5716f39e style(components): standardize main component file formatting 2026-04-07 08:10:05 -04:00
5922a835cb style: fix unused variable warnings
Prefix unused error variables with underscore to indicate
intentionally unused catch parameters.
2026-04-06 23:27:32 -04:00
8d9329050d fix(ui): add error handling to sign-out
Add try/catch with toast notification for sign-out failures.
2026-04-06 23:24:40 -04:00
cfa93da149 refactor(auth): remove unused SessionProvider wrapper
Remove the passthrough AuthSessionProvider component and its usage
in layout. better-auth hooks work without a provider wrapper.
2026-04-06 23:22:33 -04:00
15be2399c6 refactor: migrate session usage to better-auth API 2026-04-06 22:41:57 -04:00
d7d52ef1a8 refactor: migrate auth pages to better-auth client 2026-04-06 22:41:37 -04:00
490c601dc1 refactor: remove next-auth SessionProvider wrapper 2026-04-06 22:41:25 -04:00
f20f3d66a1 Simplify dropdown menu labels in event card
Remove redundant "event" text from Edit and Delete menu items for cleaner UI
2025-08-22 13:38:57 -04:00
824768ce93 Add RRuleDisplay component and clean up unused imports
- Create new RRuleDisplay component for better recurrence rule formatting
- Replace Badge with RRuleDisplay in EventCard for improved UX
- Remove unused imports across multiple files (CalendarEvent, Badge, Card components)
- Remove unused catch parameter in ai-event route
2025-08-22 13:35:13 -04:00
eb73f9f929 Refactor event management into reusable components
- Extract EventCard, EventsList, and event dialog into separate components
- Add new AI toolbar and drag-drop container components
- Simplify main page.tsx by removing inline component definitions
- Improve code organization and maintainability
2025-08-22 12:33:07 -04:00
6ab2946e8a refactor events list as shadcn cards 2025-08-20 14:12:32 -04:00
655517a27c animate button clicks for UX 2025-08-20 14:07:22 -04:00
d8d0039c44 install 'sonner' toask 2025-08-20 13:12:08 -04:00