Commit Graph

100 Commits

Author SHA1 Message Date
Bastian Masanek
68395951dc Refactor Select Component Variants and Styles for Improved Consistency
- Updated SelectTrigger and SelectItem components to use variant props for error handling, enhancing visual feedback.
- Refactored styles in SelectContent and SelectItem for better alignment and responsiveness.
- Added new variant handling in the SelectTrigger component to streamline class management.
- Updated styleguide.vue to include examples of the Select component with error and disabled states for better documentation.
2025-11-06 10:25:35 +01:00
Bastian Masanek
58fd2fd64a Update MockPayPalButton and Sheet Components for Improved UI and Functionality
- Increased the simulated PayPal redirect duration from 1 second to 3 seconds for a more realistic user experience.
- Refactored button structure in MockPayPalButton.vue for cleaner code and improved readability.
- Updated z-index values in SheetContent.vue and sheet/index.ts to ensure proper layering of UI elements, enhancing visibility and interaction.
2025-11-05 03:53:15 +01:00
Bastian Masanek
5899988d60 Enhance Checkout Page UI with Edit Icon and Button Refactor
- Added an Edit3 icon from 'lucide-vue-next' to the "Warenkorb bearbeiten" button for improved visual clarity.
- Refactored button structure for better alignment and responsiveness, consolidating button attributes into a single line for cleaner code.
2025-11-05 03:48:11 +01:00
Bastian Masanek
a9df444145 Update Back Link in Order Confirmation Page
- Changed the back link from "/warenkorb" to "/checkout" in the order confirmation page to improve navigation consistency and user experience.
2025-11-05 03:19:45 +01:00
Bastian Masanek
1d73e150cc Enhance Confetti Animation Logic in AreaTabs Component
- Updated confetti animation to trigger only on desktop devices, reducing distraction on mobile.
- Added media query check to ensure confetti effects are only applied at the md breakpoint and above, improving user experience across different screen sizes.
2025-11-05 03:16:15 +01:00
Bastian Masanek
808b62645f Refactor Cart UI to Enhance Responsiveness and User Experience
- Replaced CartSheet and CartSidebar components with a new CartResponsive component that adapts to screen size, providing a unified cart experience.
- Implemented responsive animations for the cart, allowing it to slide in from the right on desktop and from the bottom on mobile.
- Updated styles and layout in tailwind.css to support new animation effects for the cart component.
2025-11-05 03:09:44 +01:00
Bastian Masanek
1349f42f41 Refactor Highlight Clearing Logic in AreaTabs Component
- Updated comments for clarity on highlight clearing timing after animations.
- Reinforced the logic to ensure highlights are cleared after all animations complete, improving visual consistency.
2025-11-05 02:58:44 +01:00
Bastian Masanek
c6e7fcb43a Refactor Tab Styling and Highlight Animation in AreaTabs Component
- Updated tab styling to include a relative positioning for better layout control.
- Introduced a new highlight animation for newly added tabs, replacing the previous background gradient with an opacity fade effect for improved visual feedback.
- Enhanced the tab-highlight class to include a pseudo-element for a more dynamic appearance during animations.
2025-11-05 02:48:19 +01:00
Bastian Masanek
4f49914d82 Refactor Highlight Animation in AreaTabs Component
- Updated highlight animation for newly added tabs to include a two-blink effect followed by a gradual fade-out.
- Adjusted timing for clearing highlights to ensure it occurs after the fade-out completes.
- Introduced a new background animation that stays visible during blinks and fades out slowly, enhancing visual feedback for users.
2025-11-05 02:30:42 +01:00
Bastian Masanek
344c3d6644 Implement Role Reset on Logout and Enhance AreaTabs Logic
- Added a resetRoles function in useActiveRole to clear user roles upon logout, ensuring a clean state.
- Updated UserMenu.vue to call resetRoles during logout for improved role management.
- Enhanced AreaTabs.vue to support multiple newly added tabs with staggered confetti animations, improving user engagement.
- Refactored logic to track newly added areas and their visibility, ensuring a smoother navigation experience.
2025-11-05 02:13:05 +01:00
Bastian Masanek
2a43d816b5 Enhance Confetti Animation in AreaTabs Component
- Increased particle count and spread for a more vibrant confetti effect.
- Adjusted ticks and gravity for improved animation speed and realism.
- Reduced initial velocity for a smoother visual experience during confetti bursts.
2025-11-05 01:50:42 +01:00
Bastian Masanek
e7278d83e8 Add Confetti Animation for Newly Added Tabs in AreaTabs Component
- Integrated the 'canvas-confetti' library to enhance user experience by triggering confetti animations when new tabs are added.
- Implemented logic to track newly added areas and animate their appearance with a highlight effect.
- Updated the AreaTabs.vue component to include transition animations for tab entries and exits, improving visual feedback during navigation.
- Enhanced styling for newly added tabs to draw attention and improve user engagement.
2025-11-05 01:46:35 +01:00
Bastian Masanek
3dc60cdf6a Add Detailed Role Documentation and Update References
- Introduced comprehensive documentation for the role system in a new `docs/ROLES.md` file, covering role types, auto-assignment, product visibility, and menu visibility.
- Updated `CLAUDE.md` and `docs/PRD.md` to reference the new roles documentation, enhancing clarity on role management and its implications for users.
- Ensured all relevant documentation links are consistent and accessible for better user guidance.
2025-11-05 01:36:27 +01:00
Bastian Masanek
dcd96ffb68 Enhance Role-Based Visibility and Navigation Logic
- Introduced role visibility checks in AreaTabs.vue to filter displayed areas based on the user's active role, improving user experience and accessibility.
- Updated RoleSwitcher.vue to enhance accessibility with a high-contrast checkmark for better visibility.
- Modified useActiveRole.ts to streamline role initialization and refresh logic for role-based product visibility.
- Added explicit keys for role-based data fetching in product-related pages to ensure accurate data refresh.
- Enhanced API endpoint for product retrieval to return 404 if a product is not accessible based on the user's role, ensuring security and clarity.
2025-11-05 01:33:46 +01:00
Bastian Masanek
f9125e744b Implement Role Management Features and UI Enhancements
- Introduced a new composable `useActiveRole` for managing user roles, including fetching role status and switching roles with server validation.
- Updated `RoleSwitcher.vue` to utilize the new composable, enhancing role selection with improved error handling and UI feedback.
- Added new API endpoints for role management, including fetching user role status and switching active roles.
- Enhanced product visibility logic to filter based on the user's active role, ensuring a tailored experience.
- Updated database schema to support last active role tracking for users, improving session management.
- Refined UI components across the application to reflect role-based changes and improve user experience.
2025-11-05 01:04:26 +01:00
Bastian Masanek
0e450684c6 Enhance Product Page with Improved Icon Integration and UI Elements
- Added ArrowLeftIcon and ShoppingCartIcon from 'lucide-vue-next' for better visual representation in the product page.
- Updated the "Add to Cart" button to include an icon, enhancing user experience and clarity.
- Improved navigation link with an icon for a more cohesive design.
2025-11-04 14:57:40 +01:00
Bastian Masanek
f80e80009d Refactor Order Success Page to improve icon usage and code consistency
- Imported HouseIcon and HandbagIcon from 'lucide-vue-next' for better visual representation.
- Simplified SVG elements by removing unnecessary line breaks and ensuring consistent formatting.
- Enhanced loading and success states with improved icon integration for a more cohesive user experience.
2025-11-04 13:40:33 +01:00
Bastian Masanek
0eab85de5e Update SheetContent.vue to replace close icon with CircleX for improved visual consistency
- Swapped the X icon for CircleX in the DialogClose component to enhance the design.
- Adjusted icon size for better alignment with the overall UI aesthetics.
2025-11-04 13:31:22 +01:00
Bastian Masanek
9f65bd2ae7 Update RoleSwitcher.vue to reflect role terminology changes
- Changed user role type from 'individual' to 'private' to align with project terminology.
2025-11-04 13:09:16 +01:00
Bastian Masanek
7f8de532cb Complete Phase 6: Products - Implement product display functionality with API endpoints, UI components, and pages. Key features include role-based visibility, cart integration, and responsive design. All tasks for this phase are now marked as done, with a total of 10 tasks completed. Updated project documentation to reflect progress and completion date. 2025-11-04 13:08:48 +01:00
Bastian Masanek
7ee1a24216 Add new test command for role switcher keyboard functionality 2025-11-04 12:39:34 +01:00
Bastian Masanek
3fc87bd546 Update RoleSwitcher.vue to enhance role descriptions and accessibility features
- Changed role descriptions for 'individual' and 'educator' to provide clearer context.
- Added a new 'company' role with appropriate details.
- Improved accessibility for the role switcher by implementing a high-contrast checkmark for better visibility.
- Updated instructional text to clarify the role's impact on product visibility.

These changes aim to improve user understanding and accessibility within the role selection interface.
2025-11-04 12:39:22 +01:00
Bastian Masanek
4d30516fcf Update AppHeader.vue to adjust logo height and margin for improved visual consistency 2025-11-03 19:33:36 +01:00
Bastian Masanek
2bda321fe7 Enhance navigation components to conditionally display role switcher based on user login status
- Updated AppHeader.vue to show the role switcher only when the user is logged in, improving the relevance of displayed options.
- Modified CartButton.vue to adjust spacing based on item presence, enhancing visual consistency.

These changes aim to refine user navigation and ensure a more tailored experience within the application.
2025-11-03 19:22:29 +01:00
Bastian Masanek
a22e4b42ca Refactor navigation components for improved layout and functionality
- Updated UserMenu.vue to enhance button styling and spacing for a more modern look.
- Simplified CartFAB.vue to always show the cart button when items are present, regardless of the route.
- Adjusted AppHeader.vue for better alignment of elements.
- Enhanced AreaTabs.vue to enable the educator tab and improve badge styling.
- Refined BottomNav.vue to handle cart visibility and navigation more effectively.

These changes aim to enhance user navigation and overall experience within the application.
2025-11-03 19:20:10 +01:00
Bastian Masanek
37a1d234a7 Refactor UserMenu and navigation components for improved user experience
- Enhanced UserMenu.vue by implementing an extended user type for better user data handling and updated user initials logic.
- Adjusted AppHeader.vue and AreaTabs.vue for improved layout and spacing, ensuring a more cohesive design.
- Updated CartButton.vue and Tabs components for consistent styling and better responsiveness.

These changes aim to enhance the overall usability and visual appeal of the application, providing a smoother user experience.
2025-11-03 18:28:27 +01:00
Bastian Masanek
860cd3ec9d Refactor AppHeader and AreaTabs components for improved layout and functionality
- Adjusted AppHeader.vue for better spacing and alignment of elements, enhancing the overall visual appeal.
- Updated AreaTabs.vue to include a new 'Start' tab with a home icon, improving navigation options.
- Modified route handling in AreaTabs.vue to dynamically determine the current area based on the route.
- Changed default redirect destination in useAuth.ts to the root path for a more intuitive user experience.
- Enhanced index.vue to provide a more welcoming message and improved content presentation.

These changes aim to enhance user navigation and overall experience within the application.
2025-11-03 17:36:54 +01:00
Bastian Masanek
f6f09ca147 Refactor UI components for improved styling and user experience
- Updated UserMenu.vue to enhance button and avatar styles for a more modern look.
- Adjusted alert component styles in index.ts for consistent rounded corners.
- Simplified loading state markup in order confirmation page for cleaner code.
- Enhanced button and link text for better clarity and user navigation.

These changes aim to improve the overall aesthetic and usability of the application, ensuring a more cohesive user experience.
2025-11-03 17:17:40 +01:00
Bastian Masanek
782bd6cdd7 Enhance CheckoutForm and Order components with user data integration
- Refactored CheckoutForm.vue to utilize an extended user type, incorporating additional address fields for improved user data handling.
- Updated OrderSummary.vue to conditionally display salutation based on user input.
- Standardized error alert styling across multiple pages, changing variant from 'destructive' to 'error' for consistency.
- Adjusted button styles in various components to align with the new 'experimenta' variant.

These changes aim to improve user experience by ensuring accurate data representation and consistent UI elements across the checkout and order processes.
2025-11-03 17:00:22 +01:00
Bastian Masanek
66ba95439d Update progress and implement UI/UX refinements post-checkout phase
- Updated last modified date and overall progress in project documentation.
- Implemented critical UX improvements including route localization to English, cart item position stability, text selection prevention, and scrollbar styling fixes.
- Enhanced cart functionality with a new MockPayPalButton component and ensured cart state synchronization after order completion.
- Fixed accessibility issues with the cart edit button and improved responsive rendering for cart components.

These changes aim to enhance user experience and maintain consistency across the application.
2025-11-03 16:53:54 +01:00
Bastian Masanek
c4607d26a0 Fix ScrollBar component styling 2025-11-03 16:43:06 +01:00
Bastian Masanek
29f77afdcf Enhance CartItem component with non-selectable elements
- Added 'select-none' class to subtotal and remove button in CartItem.vue to prevent text selection during user interaction, improving the overall user experience.
2025-11-03 16:39:21 +01:00
Bastian Masanek
0b7098662b Enhance CartItem component with non-selectable elements
- Updated quantity control buttons and display in CartItem.vue to include the 'select-none' class, preventing text selection during user interaction.
2025-11-03 16:31:05 +01:00
Bastian Masanek
b302411626 Implement checkout and payment flow with new components
- Added Checkout and Payment pages to handle user authentication and order processing.
- Introduced MockPayPalButton for simulating payment during development.
- Updated CartSheet and CartSidebar components to navigate to the new checkout page.
- Enhanced Cart UI with responsive design for mobile and desktop views.
- Implemented order confirmation and success pages to provide feedback after payment completion.

These changes complete the checkout and payment functionality, improving the overall user experience and ensuring a seamless transition from cart to order confirmation.
2025-11-03 16:24:00 +01:00
Bastian Masanek
527379a2cd Enhance checkout flow with new components and validation
- Added AddressForm and CheckoutForm components for user input during checkout.
- Implemented validation using Zod and VeeValidate for billing address fields.
- Created OrderSummary and MockPayPalButton components for order confirmation and payment simulation.
- Updated CartSheet and CartSidebar to navigate to the new checkout page at '/kasse'.
- Introduced new API endpoints for validating checkout data and creating orders.
- Enhanced user experience with responsive design and error handling.

These changes complete the checkout functionality, allowing users to enter billing information, simulate payment, and confirm orders.
2025-11-03 15:38:16 +01:00
Bastian Masanek
47fe14c6cc Add guideline for URL creation in English
- Updated CLAUDE.md to specify that URLs should always be created in English, using the example "/checkout" instead of "/kasse".

This change aims to standardize URL formatting across the codebase for better accessibility and consistency.
2025-11-03 15:37:53 +01:00
Bastian Masanek
4a3ef037ab Update AreaTabs and experimenta page for educator annual pass visibility
- Disabled the educator tab in AreaTabs and added a 'Demnächst' badge for future visibility.
- Updated the experimenta page header to singular form for consistency and improved layout of ProductCard components for better readability.

These changes enhance the user experience by clarifying product availability and improving the overall presentation of the educator annual pass.
2025-11-03 14:17:58 +01:00
Bastian Masanek
ca0c4dddf4 Update progress and refine cart UI with bug fixes and new educator products page
- Updated last modified date and overall progress in the project documentation.
- Enhanced cart UI by fixing the Warenkorb button hover bug, improving CartItem layout, and refining the quantity selector for better user experience.
- Improved styling of the Warenkorb button for better visual consistency.
- Created a new Educator Products page to showcase educator annual passes with optimized content.

These changes aim to enhance the shopping cart functionality and user experience for educators.
2025-11-03 14:08:11 +01:00
Bastian Masanek
e252d68f0c Add educator annual pass functionality and update product listings
- Introduced a new page for educator annual passes, displaying relevant products with a dedicated layout and loading/error states.
- Updated AreaTabs component to include the educator tab and adjusted routing logic.
- Modified useAuth to redirect users to the products page after login.
- Adjusted mock product prices and stock quantities in the database seeding script to reflect new pricing strategy.

These changes enhance the user experience for educators and improve product visibility in the application.
2025-11-03 14:03:29 +01:00
Bastian Masanek
ebb6dc0b27 Refactor CartFAB and CartSidebar components for improved UI and functionality
- Simplified Transition component structure in CartFAB.vue for better readability.
- Enhanced FAB button size and adjusted ShoppingCart icon scale for improved visibility.
- Updated Badge component styling for better alignment and visual appeal.
- Modified CartSidebar.vue to adjust empty state layout, improving user experience when the cart is empty.

These changes aim to enhance the overall user interface and interaction within the shopping cart components.
2025-11-03 13:18:26 +01:00
Bastian Masanek
b372e2cf78 Implement shopping cart functionality with UI components and API integration
- Added CartItem, CartSummary, CartEmpty, CartSidebar, and CartSheet components for managing cart display and interactions.
- Integrated useCart and useCartUI composables for cart state management and UI control.
- Implemented API endpoints for cart operations, including fetching, adding, updating, and removing items.
- Enhanced user experience with loading states and notifications using vue-sonner for cart actions.
- Configured session management for guest and authenticated users, ensuring cart persistence across sessions.

This commit completes the shopping cart feature, enabling users to add items, view their cart, and proceed to checkout.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2025-11-03 12:43:13 +01:00
Bastian Masanek
9d0e77fc98 Add cart button to desktop header with price display
Implemented desktop cart button in navigation header that displays:
- Shopping cart icon with item count badge (red, top-right)
- Total cart price in German locale (EUR)
- Click opens CartSidebar via useCartUI() composable
- Responsive: visible only on lg breakpoint and above
- Hidden on mobile (FAB is used instead)

Uses useCart() composable for itemCount and total, with proper
Intl.NumberFormat formatting for EUR display.

Also standardized CartFAB price formatting to use Intl.NumberFormat
for consistency with rest of codebase.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 11:41:32 +01:00
Bastian Masanek
f9a2857abe Hide role 'company' 2025-11-03 11:07:46 +01:00
Bastian Masanek
863fa671cb Update progress and prioritize cart and checkout phases 2025-11-03 11:03:21 +01:00
Bastian Masanek
d6404434a3 Refactor database schema for roles and visibility management
- Updated the roles table to use `code` as the primary key, enhancing readability and simplifying junction tables.
- Modified `user_roles` and `product_role_visibility` tables to reference `role_code` instead of `role_id`, maintaining many-to-many relationships.
- Added foreign key constraints and created new indexes to optimize queries.
- Removed the previous migration file that was no longer needed, ensuring a cleaner migration history.
- Updated related documentation to reflect the new schema changes and their benefits.
2025-11-03 10:54:58 +01:00
Bastian Masanek
14fc293ebe Refactor AreaTabs component to correct product area labels and routing logic
- Updated labels for 'experimenta' and 'makerspace' to singular form for consistency.
- Adjusted computed property to return simplified area identifiers for improved routing clarity.
2025-11-03 10:45:45 +01:00
Bastian Masanek
68ab42f2f4 Refactor roles management to use role code as primary key
- Updated the roles table schema to use role code as the primary key, enhancing readability in junction tables.
- Modified related tables (user_roles, product_role_visibility) to reference role code instead of role ID.
- Adjusted seeding logic and utility functions to accommodate the new primary key structure, ensuring consistent role management across the application.
- Added a migration script to facilitate the database schema changes.
2025-11-03 10:45:11 +01:00
Bastian Masanek
a6d09d76fd Update CLAUDE.md to clarify role definitions and database schema
- Added details about the primary key for the `roles` table, emphasizing its enum nature and direct readability in junction tables.
- Included information on foreign key relationships for `user_roles` and `product_role_visibility` referencing `roles.code`.
- Documented the auto-assignment of the 'private' role for new users upon first login and clarified the use of UUID primary keys in most tables.
2025-11-03 10:44:52 +01:00
BaM
ba0267ef88 Add Docker management scripts to package.json 2025-11-02 17:16:49 +01:00
Bastian Masanek
cb4810893c Add automatic role assignment for new and existing users
- Implemented auto-assignment of the 'private' role for new users upon first login, ensuring they have access to products.
- Added a safety check to assign the 'private' role to existing users without roles during login.
- Updated relevant documentation to reflect these changes in role management and visibility patterns.
2025-11-02 10:40:52 +01:00