Commit Graph

8586 Commits

Author SHA1 Message Date
Nino
196b9a237a Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2025-11-05 16:44:15 +01:00
Nino
6a2ba30a01 fix(chore): Build Errors Fix 2025-11-05 16:43:50 +01:00
Nino Righi
eb0d96698c Merged PR 2005: feat(shared-filter, ui-switch): add switch filter menu button for inline toggle filters
feat(shared-filter, ui-switch): add switch filter menu button for inline toggle filters

Add a new SwitchMenuButtonComponent that renders filter inputs as compact toggle switches
without an overlay menu. This provides a more streamlined UX for simple boolean/single-option
filters directly in the controls panel.

Key changes:
- Create new switch-menu module with button component and tests
- Extend FilterControlsPanelComponent to accept switchFilters input array
- Rename IconSwitchComponent to SwitchComponent for consistency
- Update filter actions to use 'target' property instead of 'group' for filtering
- Add isEmptyFilterInput support for NumberRange inputs
- Export switch-menu module from shared/filter public API

The switch button auto-commits on toggle and uses the checkbox filter model internally,
allowing simple configuration like:

switchFilters = [{ filter: stockFilter, icon: 'isaFiliale' }]

This implementation follows the existing filter architecture patterns and maintains
full accessibility support through ARIA attributes and keyboard navigation.

Ref: #5427
2025-11-05 15:31:13 +00:00
Lorenz Hilpert
a52928d212 🔧 chore: remove memory MCP server and context-manager documentation
Remove the memory MCP server configuration and all references to the context-manager agent with persistent memory capabilities from CLAUDE.md.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-05 14:04:52 +01:00
Lorenz Hilpert
d46bf462cb Merged PR 2004: 🐛 fix(checkout): remove manual cart counter updates (#5412)
🐛 fix(checkout): remove manual cart counter updates (#5412)

Remove updateProcessCount method and all manual calls to it.
The cart counter is now updated through reactive mechanisms,
ensuring it stays in sync when items are added or removed.

Fixes bug where reward cart icon counter was not updating
when items were removed from the cart.

Related work items: #5412
2025-11-04 16:46:19 +00:00
Lorenz Hilpert
a2833b669d Merged PR 2003: 🐛 fix(purchase-options): correct popup display for e-books and downloads
🐛 fix(purchase-options): correct popup display for e-books and downloads

- Check item formats (DL/EB) instead of backend availabilities to determine download-only items
- Display 'Derzeit nicht verfügbar' warning when download items lack availability
- Prevent 'Geringer Bestand' message from showing for:
  * Download/e-book items
  * Items with zero stock
  * Items with pending in-store availability requests

Fixes #5410

Related work items: #5410
2025-11-04 16:06:06 +00:00
Lorenz Hilpert
cc62441f58 Merged PR 2002: fix(checkout): resolve itemType validation error for download items
fix(checkout): resolve itemType validation error for download items

Updates ItemTypeSchema to accept bitwise flag combinations instead of
only individual enum values. The backend returns combined itemType
values (e.g., 20480 = ItemPrice | Download) which were causing Zod
validation errors when adding download/e-book items to cart.

Changes:
- Update ItemTypeSchema to use bitwise validation pattern
- Add comprehensive unit tests (24 tests) covering individual flags,
  combinations, and edge cases
- Follow same pattern as NotificationChannelSchema and CRUDASchema

Closes #5429

Related work items: #5429
2025-11-04 15:14:39 +00:00
Lorenz Hilpert
e1681d8867 Merged PR 2001: fix(auth): handle empty user state on login
fix(auth): handle empty user state on login

Resolves error when user state is empty during login process.

Refs #5431

Related work items: #5431
2025-11-04 15:13:21 +00:00
Lorenz Hilpert
ce86014300 ♻️ refactor(filter): replace group-based filtering with target-based filtering
Replace the `group` property with `target` property in BaseFilterInputSchema to explicitly distinguish between 'filter' and 'input' query parameters. This improves code clarity and provides better semantic meaning.

**Changes:**
- Add `target` property to BaseFilterInputSchema with type 'filter' | 'input' and default 'input'
- Update filter.service.ts to use `target` instead of `group` for filtering inputs
- Update all filter input mappings (checkbox, date-range, number-range, text) to include `target` property
- Update all affected unit tests (9 test files) to include `target` in mock data

**Tests:** All 128 unit tests passing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 14:34:13 +01:00
Nino Righi
bdb8aac8df Merged PR 1999: fix(reward-list): Trigger Resource if reload gets triggered
fix(reward-list): Trigger Resource if reload gets triggered

Ref: #5423
2025-11-03 20:01:18 +00:00
Nino Righi
a49ea25fd0 Merged PR 1993: feat(action-handler, printing, schemas)
1 commit: Bestellbestätigung drucken
2. commit: Schemas
3. commit: Action/Command handler

feat(action-handler, printing, schemas): add handle command service for automated action execution

Implement HandleCommandService and facade to execute order actions automatically
after reward collection. Add action handler infrastructure with 23 handlers
(Accepted, Arrived, Assembled, etc.). Integrate automatic receipt fetching for
print commands. Add schema validation for command handling and receipt queries.
Update reward confirmation to trigger actions after successful collection.

- Add HandleCommandService with command orchestration
- Add HandleCommandFacade as public API layer
- Create schemas: HandleCommandSchema, FetchReceiptsByOrderItemSubsetIdsSchema
- Add helpers: getMainActions, buildItemQuantityMap
- Register 23 action handlers in reward confirmation routes
- Support PRINT_SHIPPINGNOTE and PRINT_SMALLAMOUNTINVOICE auto-fetching
- Update CoreCommandModule for forRoot/forChild patterns
- Add comprehensive unit tests for new services and helpers
- Apply prettier formatting to command and printing modules

Ref: #5394
2025-11-03 20:00:53 +00:00
Lorenz Hilpert
53a062dcde docs: fix and shorten skill descriptions
- Add missing frontmatter to html-template skill (name and description fields)
- Shorten 7 verbose skill descriptions from 300+ to ~150-180 characters
- Improve readability while preserving essential information

Skills updated:
- angular-template (363 → 174 chars)
- circular-dependency-resolver (326 → 173 chars)
- architecture-enforcer (319 → 178 chars)
- api-change-analyzer (319 → 178 chars)
- swagger-sync-manager (318 → 159 chars)
- library-scaffolder (314 → 146 chars)
- test-migration-specialist (308 → 162 chars)
- html-template (fixed missing frontmatter)
2025-11-03 11:56:28 +01:00
Nino Righi
32c7531d2b Merged PR 1998: fix(order-confirmation-item): Adjusted Layout Mobile and Desktop
fix(order-confirmation-item): Adjusted Layout Mobile and Desktop

Ref: #5424
2025-11-03 10:01:45 +00:00
Nino Righi
7894c7b768 Merged PR 1997: fix(filter-input.to-record-mapping): Removed " from InputType NumberRange map...
fix(filter-input.to-record-mapping): Removed " from InputType NumberRange mapping

Ref: #5425
2025-11-03 10:00:32 +00:00
Nino Righi
f175b5d2af Merged PR 1996: fix(crm): consolidate customer feature selection logic
fix(crm): consolidate customer feature selection logic

Introduce centralized `getEnabledCustomerFeature` helper to standardize
feature selection across components. Replaces inconsistent filtering
approaches with unified logic that prioritizes 'd-account' and
'd-no-account' features.

Changes:
- Add `getEnabledCustomerFeature` helper with unit tests
- Add `CustomerFeatureKey` and `CustomerFeatureGroup` enums
- Update customer-order-details-header component
- Update pickup-shelf-details-header component
- Update customer-result-list components
- Update order-details-main-view component

Ref: #5432
2025-11-03 10:00:02 +00:00
Nino Righi
7a04b828c3 Merged PR 1995: feature(reward-action): Added implementation for Stateful Button
feature(reward-action): Added implementation for Stateful Button

Ref: #5415
2025-11-03 09:56:39 +00:00
Nino Righi
fcda6b9a75 Merged PR 1994: feature(reward-list): Added Scroll to Top Button
feature(reward-list): Added Scroll to Top Button

Ref: #5414
2025-11-03 09:55:40 +00:00
Nino
27f4ef490f fix(process-bar): Added cart-checkout process type to filtered selection of processes
Ref: #5430
2025-10-31 14:40:16 +01:00
Nino
87f9044511 Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2025-10-30 15:24:06 +01:00
Nino
55219f125b fix(process-bar): Simulate "old tab logic" for reward release 2025-10-30 15:22:30 +01:00
Lorenz Hilpert
fd8e0194ac 🚚 refactor(skills): reorganize skill structure
- Rename logging-helper to logging for consistency
- Remove git-commit-helper (superseded by /commit command)
- Add git-workflow skill for Git Flow operations

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 13:39:14 +01:00
Lorenz Hilpert
c7fc8d8661 🚚 refactor(skills): rename tailwind-isa skill to tailwind
- Rename skill directory from tailwind-isa to tailwind
- Update skill name in frontmatter metadata
- Update all references in CLAUDE.md (2 locations)

Simplifies naming while maintaining clear purpose. The skill provides
Tailwind CSS utilities and design system guidance for the ISA project.
2025-10-29 13:37:56 +01:00
Lorenz Hilpert
bf30ec1213 feat(skills): create html-template skill for E2E and ARIA attributes
- Create comprehensive html-template skill with 3 reference files
  - E2E Testing Attributes (data-what, data-which patterns)
  - ARIA Accessibility Attributes (roles, properties, states, WCAG)
  - Combined Patterns (real-world examples with both)
- Move E2E attribute guidance from command to skill
- Add extensive ARIA accessibility documentation
- Update angular-template skill with cross-references
- Remove dev-add-e2e-attrs command (functionality now in skill)

The new skill provides 3,322 lines of comprehensive documentation
covering both testing and accessibility best practices for HTML
templates, with practical examples for forms, navigation, tables,
dialogs, and more.

Benefits:
- Clean separation: Angular syntax vs HTML attributes
- Reusable: html-template works with any HTML context
- Comprehensive: E2E + ARIA in one place
- Integrated: Works seamlessly with angular-template skill
2025-10-29 13:21:29 +01:00
Nino Righi
f87d3a35d9 Merged PR 1990: feat(crm-data-access,checkout): improve primary bonus card selection logic
feat(crm-data-access,checkout): improve primary bonus card selection logic

Enhance getPrimaryBonusCard helper to sort cards alphabetically by code
when multiple primary cards exist or when no primary card is designated.
This ensures deterministic card selection across the application.

Add comprehensive test coverage for edge cases including:
- Multiple primary cards (returns first alphabetically)
- No primary cards (returns first alphabetically)
- Empty bonus cards array (returns undefined)

Add TODO comments in ShoppingCartService for future refactoring of
cart handling logic to improve code organization and reusability.

Ref: #5407
2025-10-29 10:33:21 +00:00
Lorenz Hilpert
6db5f2afda 📝 docs: enhance context-manager with persistent memory and task management
- Add autonomous knowledge storage with MCP memory tools
- Implement task capture system for user-assigned TODOs
- Enable cross-session persistence of architectural decisions
- Add task status tracking (pending, in-progress, blocked, completed)
- Update CLAUDE.md with context-manager capabilities
- Configure memory MCP server in .mcp.json
- Document seven entity types for knowledge graph
- Add proactive task reminders at session start
2025-10-29 10:58:45 +01:00
Lorenz Hilpert
c2c40a44e8 📝 docs: initialize CHANGELOG.md with recent changes
Add changelog file following Keep a Changelog format.

Documents recent additions including checkout reward features, stock info
batching, CRM improvements, and Angular/Tailwind development skills.
2025-10-28 21:04:17 +01:00
Lorenz Hilpert
5e73fc1dab 🧑‍💻 chore: add EOD report and changelog generation slash commands
Add two new Claude Code slash commands for developer workflow:
- /eod-report: Generate daily work summaries from git commits
- /generate-changelog: Create changelog entries from git tags

Both commands support flexible date ranges and output formatting.
2025-10-28 21:04:04 +01:00
Lorenz Hilpert
9e5a1d2287 🙈 chore: add .vite and reports/ to gitignore
Exclude Vite build artifacts and generated EOD reports from version control.
2025-10-28 21:03:49 +01:00
Lorenz Hilpert
c769af7021 Merged PR 1987: Carousel Lobrary
Related work items: #5408
2025-10-28 10:34:57 +00:00
Lorenz Hilpert
bfd151dd84 Merged PR 1989: fix(checkout): resolve currency constraint violations in price handling
fix(checkout): resolve currency constraint violations in price handling

- Add ensureCurrencyDefaults() helper to normalize price objects with EUR defaults
- Fix currency constraint violation in shopping cart item additions (bug #5405)
- Apply price normalization across availability, checkout, and shopping cart services
- Update 8 locations: availability.adapter, checkout.service, shopping-cart.service,
  get-availability-params.adapter, availability-transformers, reward quantity control
- Refactor OrderType to @isa/common/data-access for cross-domain reusability
- Remove duplicate availability service from catalogue library
- Enhance PriceValue and VatValue schemas with proper currency defaults
- Add availability-transformers.spec.ts test coverage
- Fix QuantityControl fallback from 0 to 1 to prevent invalid state warnings

Resolves issue where POST requests to /checkout/v6/store/shoppingcart/{id}/item
were sending price objects without required currency/currencySymbol fields,
causing 400 Bad Request with 'Currency: Constraint violation: NotNull' error.

Related work items: #5405
2025-10-28 10:34:39 +00:00
Lorenz Hilpert
2d654aa63a Merged PR 1986: fix(checkout): add complete price structure for reward delivery orders
Commits Summary

  Commit 1: fix(checkout): add complete price structure for reward delivery orders

  File: libs/checkout/data-access/src/lib/services/shopping-cart.service.ts
  - Fixed incomplete price object when adding reward items to cart
  - Added currency (EUR) and currencySymbol (€) to price value
  - This resolves the API error: "Error converting value 0 to type PriceDTO"

  Commit 2: feat(checkout): enable delivery options for reward shop items

  Files:
  - libs/checkout/feature/reward-catalog/src/lib/reward-action/reward-action.component.ts
  - libs/checkout/feature/reward-shopping-cart/src/lib/reward-shopping-cart-item/reward-shopping-cart-item.component.ts
  - libs/checkout/feature/reward-order-confirmation/src/lib/reward-order-confirmation.component.ts

  Changes:
  - Re-enabled 'delivery' and 'dig-delivery' purchase options for reward items
  - Removed unused import
  - Applied code formatting

Related work items: #5405
2025-10-27 11:14:14 +00:00
Lorenz Hilpert
9239f8960d Merged PR 1985: 🐛 fix(reward-order-confirmation): group items by item-level delivery type
🐛 fix(reward-order-confirmation): group items by item-level delivery type

Fix incorrect delivery type headers by grouping order items based on
item.features.orderType instead of order.features.orderType, since items
within a single order can have different delivery types.

Changes:
- Add groupDisplayOrderItemsByDeliveryType helper to group items by delivery type
- Add groupDisplayOrderItemsByBranch helper to group items by branch
- Refactor OrderConfirmationItemListComponent to use item-level grouping
- Move list rendering and grouping logic from parent to child component
- Update template to use branchGroup.items instead of branchGroup.allItems

Fixes #5403

Related work items: #5403
2025-10-27 09:24:24 +00:00
Nino Righi
6e614683c5 Merged PR 1984: fix(reward-confirmation): improve action card visibility and status messages
fix(reward-confirmation): improve action card visibility and status messages

Refactor confirmation action card to only display for items with 'Rücklage' feature.
Replace boolean completion check with state-based system using ProcessingStatusState
enum (Cancelled, NotFound, Collected). Add specific completion messages for each
state to provide clearer user feedback.

Changes:
- Add displayActionCard computed signal to check for 'Rücklage' feature
- Replace getProcessingStatusCompleted with getProcessingStatusState helper
- Add ProcessingStatusState enum with three states (Cancelled, NotFound, Collected)
- Update completion messages in template to use @switch based on processingStatus
- Wrap entire action card in @if block checking displayActionCard
- Add proper test coverage for new helper function
- Update component spec to provide required dependencies

Ref: #5391, #5404, #5406
2025-10-24 16:35:20 +00:00
Nino Righi
27541ab94a Merged PR 1980: feat(checkout-summary): add navigation to reward cart after order completion
feat(checkout-summary): add navigation to reward cart after order completion

Add conditional button to navigate to reward cart on checkout summary page.
The button appears only when the customer has a primary card and items
in their reward shopping cart.

Implementation details:
- Inject SelectedRewardShoppingCartResource and PrimaryCustomerCardResource
- Add computed signal displayRewardNavigation() to determine button visibility
- Add navigateToReward() method to handle navigation
- Provide SelectedRewardShoppingCartResource in module providers
- Update template with conditional button using new control flow syntax

Ref: #5311
2025-10-24 15:31:32 +00:00
Nino Righi
03cc42e7c9 Merged PR 1981: fix(reward-order-confirmation): correct typo and add loading state to collect...
fix(reward-order-confirmation): correct typo and add loading state to collect action

- Fix typo in "Rechnugsadresse" → "Rechnungsadresse"
- Add loading state signal to prevent duplicate collect operations
- Bind pending and disabled states to collect button
- Wrap collect operation in try-finally to ensure loading state cleanup
- Add comprehensive unit tests for loading state behavior

The loading state prevents users from triggering multiple concurrent
collect operations by disabling the button during API calls.

Ref: #5396
2025-10-24 15:22:06 +00:00
Nino Righi
cc25336d79 Merged PR 1982: fix(customer-card): implement navigation flow from customer card to reward se...
fix(customer-card): implement navigation flow from customer card to reward selection

Add navigation logic to Kundenkarte component that allows users to select
a customer and navigate to the reward shop. The flow now properly preserves
navigation context using NavigationStateService scoped to the active tab.

Changes include:
- Add customerId input to KundenkarteComponent for customer identification
- Replace placeholder onRewardShop() with navigateToReward() method
- Preserve navigation context with returnUrl and autoTriggerContinueFn flag
- Update kundenkarte-main-view to pass customerId to child component
- Modify details-main-view to auto-trigger continue() when returning from
  Kundenkarte with the appropriate context flag
- Add loading state handling during navigation from customer card
- Update button disabled logic to check both card availability and loading

The navigation context is automatically scoped to the current tab and cleaned
up after use, ensuring proper isolation between tabs.

Ref: #5400
2025-10-24 14:46:47 +00:00
Lorenz Hilpert
52c82615c7 docs(logging): add logging-helper skill documentation
Add comprehensive skill documentation for @isa/core/logging usage:
- SKILL.md: Core principles, patterns, and best practices
- examples.md: Real-world usage scenarios across components/services
- reference.md: Quick API reference and configuration guide
- troubleshooting.md: Common issues and solutions

Provides guidance for consistent logging patterns throughout the codebase.
2025-10-24 16:33:36 +02:00
Lorenz Hilpert
29f7c3c2c6 docs(logging): enhance API to support flexible context parameters
Update the logging library to accept context as either direct objects
or functions (MaybeLoggerContextFn), providing better ergonomics while
maintaining performance optimization through lazy evaluation.

Changes:
- Add MaybeLoggerContextFn type for flexible context handling
- Update logger() factory to accept context as object or function
- Update all LoggerApi methods to support both context formats
- Enhance README with comprehensive examples and migration guide
- Document performance benefits of function-based context
- Add backward compatibility notes for v2.1.0 enhancement

The new API is fully backward compatible - both direct objects and
function wrappers work seamlessly.
2025-10-24 16:32:34 +02:00
Nino
185bc1c605 feature(checkout-reward): Disable and Hide Delivery, Dig-Delivery and B2B-Delivery Purchase Options for Reward Feature 2025-10-24 16:14:54 +02:00
Lorenz Hilpert
56b4051e0b Merged PR 1979: fix(checkout): correct reward output desktop/mobile layout and add insufficie...
fix(checkout): correct reward output desktop/mobile layout and add insufficient points validation

- Fix desktop layout to display 4 columns with 80px gaps (164px, 164px, 164px, 444px)
- Add responsive tablet layout (3 columns in row 1, 1 column in row 2)
- Add error message when reading points are insufficient
- Disable CTA button when reading points are insufficient
- Create calculateTotalLoyaltyPoints helper to reduce code duplication
- Use @ng-icons/core for proper icon rendering

Resolves #5399

Related work items: #5399
2025-10-24 12:03:31 +00:00
Lorenz Hilpert
6f238816ef feat: add Angular template skill for modern template patterns
Add comprehensive skill for Angular 20+ template best practices covering:
- Modern control flow (@if, @for, @switch, @defer)
- Content projection (ng-content)
- Template references (ng-template, ng-container)
- Variable declarations (@let)
- Expression binding patterns
- Performance optimization strategies
- Migration guides from legacy syntax

Includes 4 reference files with detailed examples:
- control-flow-reference.md: Advanced @if/@for/@switch patterns
- defer-patterns.md: Lazy loading and Core Web Vitals optimization
- projection-patterns.md: ng-content advanced techniques
- template-reference.md: ng-template/ng-container usage

All files optimized for context efficiency (~65% reduction from initial draft)
while preserving all essential patterns, best practices, and examples.
2025-10-23 20:42:28 +02:00
Lorenz Hilpert
a4d71a4014 feat: add Tailwind ISA design system skill
Add comprehensive skill for ISA-specific Tailwind CSS:
- Component-first approach (prefer @isa/ui/* libraries)
- ISA-prefixed color system (bg-isa-accent-red, etc.)
- Typography utilities (isa-text-*)
- Responsive breakpoint service integration
- Spacing patterns with rem-based utilities
- Complete design system reference documentation
- Anti-patterns and best practices guidance

Enforces design system consistency and component reuse
throughout the Angular monorepo.
2025-10-23 19:01:03 +02:00
Lorenz Hilpert
0f4199e541 🙈 chore: ignore Python compiled files
Add *.pyc to .gitignore to exclude Python bytecode files
from version control (used by skill-creator tooling)
2025-10-23 19:00:43 +02:00
Lorenz Hilpert
f7209dd0a3 🔧 chore: add Figma Desktop MCP server configuration
Configure Figma Desktop MCP server for design-to-code workflows:
- HTTP connection on localhost:3845
- Enables design context and code generation from Figma
2025-10-23 19:00:32 +02:00
Lorenz Hilpert
e408771f8f 📝 docs: add Git branch naming convention to CLAUDE.md
Add standardized branch naming pattern for features and bugfixes:
- Format: feature/{task-id}-{short-description}
- Use English kebab-case
- Start with task/issue ID
- Include example for clarity
2025-10-23 19:00:19 +02:00
Lorenz Hilpert
38318405c3 🔧 chore: add MCP server configuration and update gitignore
Add .mcp.json with Context7, Nx MCP, and Angular MCP server configurations.
Remove .mcp.json and .memory.json from gitignore to allow tracking MCP configuration.
2025-10-23 17:02:06 +02:00
Nino
de994234b6 Merge branch 'master' into develop 2025-10-23 16:43:00 +02:00
Nino
88cb32ef1b Merge branch 'release/4.2' 4.2 2025-10-23 16:23:01 +02:00
Lorenz Hilpert
3704c16de5 feat(purchase-options): add disabledPurchaseOptions with flexible visibility control
Implement comprehensive system to disable specific purchase options (e.g., B2B delivery) for reward flows while providing flexible UI control.

Key Features:
- `disabledPurchaseOptions`: Array to specify options to disable (skips API calls)
- `hideDisabledPurchaseOptions`: Toggle to hide or show disabled options
  - true (default): Completely hidden from UI
  - false: Shown with disabled visual state (grayed out, not clickable)

Implementation:
- Store: Added state field and isOptionDisabled() helper method
- Availability loading: Skip API calls for disabled options in _loadAvailabilities()
- UI: Base directive prevents clicks, applies .disabled CSS class
- Visual: CSS styling for disabled state (opacity, cursor, background)
- Component: Updated showOption() logic to respect hide flag

Reward Integration:
- Applied to reward-catalog: Disable B2B delivery for reward redemption
- Applied to reward-shopping-cart: Disable B2B delivery for cart items

Documentation:
- Comprehensive README.md with usage examples and architecture
- JSDoc comments on all interfaces, methods, and directives
- Migration notes for breaking change (hidePurchaseOptions renamed)

Breaking Change:
Renamed `hidePurchaseOptions` → `disabledPurchaseOptions` for clarity

Affected Files:
- Core: modal data, service, component, store, state
- Tiles: base directive, CSS styling
- Reward: catalog action, shopping cart item
2025-10-23 16:06:27 +02:00
Lorenz Hilpert
1c3fd34d37 feat(reward-catalog): pre-select in-store option for reward purchases
Add preSelectOption configuration to purchase options modal when adding
reward items, defaulting to 'in-store' purchase option.

This improves UX by automatically selecting the most common purchase
method for reward items, reducing the number of steps required for the
user to complete their reward redemption.
2025-10-23 16:06:27 +02:00