Commit Graph

227 Commits

Author SHA1 Message Date
Thomas Camlong
fe9f5edc9a feat: integrate PostHog authentication handler
- Add PostHogAuthHandler component to PostHogProvider
- Integrate usePostHogAuth hook for automatic user identification
- Add person_profiles: 'identified_only' configuration
- Enable automatic user identification on app load and auth changes
2025-10-02 16:20:32 +02:00
Thomas Camlong
08ff932257 feat: implement PostHog authentication hook
- Create usePostHogAuth hook for automatic user identification
- Add session-based identification tracking to prevent duplicate calls
- Implement proper cleanup of PocketBase auth listeners
- Follow PostHog best practices for identify timing
- Integrate with centralized PostHog utility functions
2025-10-02 16:20:25 +02:00
Thomas Camlong
a2fbc03bd6 feat: add PostHog utility functions for user identification
- Create centralized identifyUserInPostHog function
- Add resetPostHogIdentity function for logout handling
- Implement comprehensive person properties mapping
- Follow PostHog best practices for user identification
- Centralize PostHog logic to avoid code duplication
2025-10-02 16:20:19 +02:00
Thomas Camlong
1d0f264dda feat: implement TanStack React Form for icon submission
- Create new AdvancedIconSubmissionFormTanStack component
- Replace useState form management with useForm hook
- Add comprehensive field-level validation
- Implement type-safe form data structure
- Add real-time validation with immediate feedback
- Maintain all existing functionality (file uploads, previews, variants)
- Improve performance with optimized re-renders
2025-10-02 16:20:10 +02:00
Thomas Camlong
6cb2f39a1d feat: add @tanstack/react-form dependency
- Add @tanstack/react-form v1.11.0 to package.json
- Enables modern form state management with validation
- Supports type-safe form handling and field-level validation
2025-10-02 16:20:03 +02:00
Thomas Camlong
391a69f82e refactor(ui): update LoginModal usage 2025-10-02 15:23:56 +02:00
Thomas Camlong
e31b97f60e feat(hooks): add useExistingIconNames hook and clean up debug logs
- Add new useExistingIconNames hook for fetching community gallery icon names
- Implement proper caching with 5-minute stale time
- Remove debug console.log statements from useSubmissions hook
- Improve code organization and reusability
- Add proper error handling and retry configuration
2025-10-02 15:20:47 +02:00
Thomas Camlong
2ef6e4162c feat(ui): enhance dialog component with improved styling and optional close button
- Add showCloseButton prop to DialogContent for conditional close button display
- Improve overlay styling with better backdrop blur and opacity
- Add explicit background color to dialog content
- Reorganize imports for better code organization
- Enhance accessibility with proper data-slot attributes
- Improve visual consistency and user experience
2025-10-02 15:20:40 +02:00
Thomas Camlong
8a4c92930d refactor(debug): remove console logs from submissions data table
- Clean up debug console.log statements from getDisplayName function
- Remove logging for submission data, user data, and fallback values
- Improve code cleanliness and production readiness
- Maintain functionality while reducing console noise
2025-10-02 15:20:34 +02:00
Thomas Camlong
23e0ea54ff fix(api): correct PocketBase baseURL property name
- Fix typo from baseUrl to baseURL in submission details
- Ensure proper API endpoint construction for asset URLs
- Improve consistency with PocketBase SDK naming conventions
2025-10-02 15:20:27 +02:00
Thomas Camlong
e9e9aefb79 feat(ui): add theme-aware gradient colors to magic card
- Integrate next-themes for dynamic color switching
- Add light/dark theme specific gradient colors
- Implement state management for theme-based color updates
- Use pink gradient for dark theme and blue gradient for light theme
- Improve visual consistency across different theme modes
2025-10-02 15:20:22 +02:00
Thomas Camlong
6fc0a06fc4 feat(ui): major login modal redesign with improved UX
- Complete UI/UX overhaul with modern design and better spacing
- Add form reset functionality and improved state management
- Replace custom loading spinner with Lucide Loader2 icon
- Remove BorderBeam effects for cleaner appearance
- Improve error handling and validation flow
- Enhance accessibility with better focus management
- Update button styling and layout for better visual hierarchy
- Add loading states and improve user feedback
- Refactor form structure for better maintainability
2025-10-02 15:20:16 +02:00
Thomas Camlong
f0215627d7 refactor(ui): improve icon name combobox with custom hook and better UX
- Replace direct PocketBase calls with useExistingIconNames hook
- Add loading states and better error handling
- Improve create new icon flow with preview functionality
- Extract icon name sanitization logic into reusable function
- Enhance empty state with loading indicator
- Reorganize component structure for better maintainability
2025-10-02 15:20:11 +02:00
Thomas Camlong
f4819acc7c style: remove unnecessary empty line in icon-card
- Clean up code formatting by removing extra blank line
- Improve code consistency and readability
2025-10-02 15:20:05 +02:00
Thomas Camlong
c471b87436 refactor(ui): update submit button text to singular form
- Change "Submit icon(s)" to "Submit icon" for consistency
- Update both authenticated and unauthenticated button states
- Improve text clarity and user experience
2025-10-02 15:20:01 +02:00
Thomas Camlong
9f4a1d9387 refactor(ui): simplify new icon submission alert
- Remove Check icon from new icon submission alert
- Simplify alert text by removing bold formatting
- Improve visual consistency with cleaner design
2025-10-02 15:19:56 +02:00
Thomas Camlong
d542377d97 feat: improve theme and usability 2025-10-02 12:30:22 +02:00
Thomas Camlong
680246d50e refactor: update recently added icons to use primary theme colors
- Replace rose color references with primary theme colors
- Update gradient text and hover effects to use primary color
- Improve theme consistency across recently added icons section
- Enhance maintainability with centralized color management
2025-10-02 12:09:26 +02:00
Thomas Camlong
9918c5507e refactor: replace hardcoded rose colors with primary theme colors
- Replace rose-500 color references with primary theme colors
- Update gradient backgrounds to use primary color variables
- Simplify shadow classes using CSS custom properties
- Ensure consistent theming across hero section components
- Improve maintainability and theme consistency
2025-10-02 12:09:18 +02:00
Thomas Camlong
d2a94382da proposition of completely new theme 2025-10-02 11:44:26 +02:00
Thomas Camlong
13a1192dc2 feat: add advanced dropzone component
- Create comprehensive file dropzone component using react-dropzone
- Support file type validation, size limits, and file count restrictions
- Add drag-and-drop functionality with visual feedback
- Implement file preview and replacement capabilities
- Include context-based state management for file handling
- Support custom empty states and content rendering
- Add file size formatting and validation error handling
2025-10-02 10:52:24 +02:00
Thomas Camlong
4e58f705d3 feat: add advanced combobox component
- Create comprehensive combobox component with context management
- Support controllable state with @radix-ui/react-use-controllable-state
- Add search functionality with Command component integration
- Implement create new item functionality
- Include responsive width detection with ResizeObserver
- Support grouped items, empty states, and custom triggers
- Provide flexible data structure for various use cases
2025-10-02 10:52:18 +02:00
Thomas Camlong
e1ae75d27f feat: add BorderBeam animated component
- Create animated border beam component using Framer Motion
- Support customizable size, duration, delay, and colors
- Add reverse animation and initial offset options
- Implement gradient color transitions
- Provide configurable border width and styling
- Enable smooth circular border animations
2025-10-02 10:52:13 +02:00
Thomas Camlong
0a9d700144 feat: add icon name combobox component
- Create combobox for icon name selection and creation
- Integrate with PocketBase to fetch existing icon names
- Add input sanitization for icon IDs (lowercase, hyphens only)
- Implement existing icon detection and validation
- Support both selection from existing icons and creation of new ones
- Provide visual feedback for new vs existing icon submissions
2025-10-02 10:52:06 +02:00
Thomas Camlong
9cb8e220cb feat: implement advanced icon submission form
- Create comprehensive icon submission form with multiple variants
- Add support for base, dark, light, wordmark, and wordmark_dark variants
- Implement file upload with drag-and-drop functionality
- Add icon name validation and existing icon detection
- Include category selection, aliases, and description fields
- Integrate with PocketBase for submission storage
- Add form validation and error handling
2025-10-02 10:52:00 +02:00
Thomas Camlong
171e897280 feat: create submit page with authentication flow
- Add submit page with authentication check
- Implement login modal integration for unauthenticated users
- Create submission guidelines and requirements display
- Add AdvancedIconSubmissionForm component integration
- Handle loading states and user experience flow
2025-10-02 10:51:54 +02:00
Thomas Camlong
ec9453aa4f feat: add background wrapper layout components
- Create BackgroundWrapper component for community, dashboard, and submit pages
- Add grid pattern background with dark mode support
- Implement radial gradient mask for visual depth
- Provide consistent layout structure across app sections
2025-10-02 10:51:48 +02:00
Thomas Camlong
dd4bd2e565 feat: enhance login modal with animated border effects
- Add BorderBeam component import and implementation
- Create animated red and blue border effects
- Add relative overflow-hidden positioning
- Improve visual appeal and user engagement
2025-10-02 10:51:32 +02:00
Thomas Camlong
c210b4a8c5 feat: add onClick prop to IconSubmissionForm
- Add optional onClick prop to IconSubmissionForm component
- Enable external click handling for form triggers
- Improve component flexibility and reusability
2025-10-02 10:51:27 +02:00
Thomas Camlong
f45fa072af style: remove extra padding from search results header
- Remove pb-2 class from results header div
- Align with community-icon-search styling
- Improve visual consistency across search components
2025-10-02 10:51:21 +02:00
Thomas Camlong
310190f6c1 refactor: simplify header submit button implementation
- Remove IconSubmissionForm component usage
- Replace with direct Link navigation to /submit
- Simplify mobile and desktop submit button logic
- Remove unused import and improve code clarity
2025-10-02 10:51:17 +02:00
Thomas Camlong
22ac70dc9f style: remove extra padding from results header
- Remove pb-2 class from results header div
- Improve visual spacing consistency
- Clean up layout spacing issues
2025-10-02 10:51:12 +02:00
Thomas Camlong
3aa0c84f75 style: adjust border radius for more subtle design
- Reduce --radius from 0.4rem to 0.2rem
- Create more refined visual appearance
- Maintain design consistency across components
2025-10-02 10:51:08 +02:00
Thomas Camlong
95e9497c2e chore: update lockfile for new dependencies
- Update pnpm-lock.yaml with new package versions
- Include attr-accept and file-selector dependencies
- Ensure consistent dependency resolution
2025-10-02 10:51:04 +02:00
Thomas Camlong
c0944d5423 feat: add new dependencies for enhanced functionality
- Add @radix-ui/react-use-controllable-state for state management
- Add react-dropzone for file upload capabilities
- Enable advanced form interactions and file handling
2025-10-02 10:50:59 +02:00
Thomas Camlong
f1b198a6d4 feat: add MagicUI registry configuration
- Add @magicui registry to components.json
- Reorder properties for better organization
- Enable MagicUI component integration
2025-10-02 10:50:55 +02:00
Thomas Camlong
a369676609 feat(web): enhance community page 2025-10-01 19:08:16 +02:00
Thomas Camlong
49aab75953 format code + change env 2025-10-01 19:01:31 +02:00
Thomas Camlong
0a4a4a78f4 feat(web): add community icons browse page
Add new /community page to browse and search community-submitted icons. Implements server-side data fetching with 10-minute revalidation, SEO optimization with dynamic metadata generation, and integration with CommunityIconSearch component for rich filtering and search capabilities
2025-10-01 18:23:22 +02:00
Thomas Camlong
07f196f12f feat(web): add community icon search component
Add comprehensive search and filter component for community-submitted icons. Features include real-time search with debouncing, category filtering, multiple sort options (relevance, A-Z, Z-A, newest), and grouped display by submission status. Integrates with URL query parameters for shareable filtered views
2025-10-01 18:23:19 +02:00
Thomas Camlong
63507a767a feat(web): add login and registration modal component
Add comprehensive LoginModal component with toggle between login and registration modes. Includes form validation, error handling, loading states, and placeholder for GitHub OAuth (coming soon). Provides accessible form with proper ARIA attributes and keyboard navigation
2025-10-01 18:23:15 +02:00
Thomas Camlong
d221fb5c79 feat(web): add submission server actions for cache management
Add server actions that can be called from client components to trigger cache revalidation after submission status changes. Provides revalidateCommunitySubmissions for community page updates and revalidateAllSubmissions for dashboard and community pages
2025-10-01 18:23:12 +02:00
Thomas Camlong
c0851a73c7 feat(web): add community gallery server utilities
Add server-side utilities for fetching and transforming community gallery data from PocketBase. Includes cached and non-cached versions of fetch functions with 10-minute revalidation. Transforms CommunityGallery records to IconWithName format for use with existing icon components
2025-10-01 18:23:09 +02:00
Thomas Camlong
77e55e750f feat(web): add cache revalidation utilities
Add server-side utilities for cache revalidation using Next.js revalidatePath and revalidateTag. Provides functions to revalidate community page and all submission-related pages after data changes
2025-10-01 18:23:05 +02:00
Thomas Camlong
b277ceb9a0 feat(web): add database seeding script for testing
Add seed-db.ts script to populate PocketBase database with fake submission data. Creates test users, downloads icon images from CDN, and generates random submissions with various statuses (pending, approved, rejected, added_to_collection) for development and testing purposes
2025-10-01 18:23:02 +02:00
Thomas Camlong
7653ee6e17 feat(web): add CommunityGallery interface and collection type
Add CommunityGallery interface for the community_gallery collection view. Add "added_to_collection" status to Submission type. Extend TypedPocketBase interface to include strongly-typed community_gallery collection
2025-10-01 18:22:53 +02:00
Thomas Camlong
fd8b50776a style(web): improve dialog overlay backdrop blur
Reduce dialog overlay backdrop blur from default to 2px and decrease opacity from 50% to 30% for a more subtle, modern appearance that better matches the application's design system
2025-10-01 18:22:50 +02:00
Thomas Camlong
5f5e3ef825 feat(web): add "added_to_collection" status to submissions
Add support for new submission status "added_to_collection" indicating icons that have been officially added to the main collection. Update status priority ordering, color scheme (green badge), and display name formatting
2025-10-01 18:22:48 +02:00
Thomas Camlong
bf93408568 refactor(web): extract grid classes and add documentation
Extract shared grid classes into GRID_CLASSES constant for reusability. Add JSDoc comments to explain the purpose of IconsGrid (non-virtualized for small lists) and VirtualizedIconsGrid (optimized for large datasets) components
2025-10-01 18:22:44 +02:00
Thomas Camlong
db893d4f97 feat(web): add support for community icons in icon card
Update IconCard component to handle both regular icons and community-submitted icons. Community icons use HTTP URLs as image source and link to /community/:name instead of /icons/:name for proper routing
2025-10-01 18:22:42 +02:00