metube/ui/package.json
n g 602d7317c0 feat: enhance batch import functionality with improved UX
Major enhancements to batch URL import feature:

Frontend improvements:
- Add prominent "Bulk Import" button to main UI (no longer hidden in Advanced Options)
- Implement real-time URL validation with visual feedback badges
- Add duplicate URL detection and smart filtering
- Enhance modal with better textarea, placeholder text, and professional styling
- Add expandable error details showing specific invalid URLs
- Implement dynamic import button text showing valid URL count
- Add confirmation dialogs for invalid URL scenarios

Technical enhancements:
- Create comprehensive URL validation logic with regex patterns
- Add live validation feedback as user types
- Implement smart import process (only processes valid URLs)
- Add progress tracking and cancellation support
- Enhance modal styling with larger size and monospace font

Test coverage:
- Add 33 comprehensive test cases covering all new functionality
- Include unit tests for URL validation logic
- Add component tests for modal interactions
- Implement UI integration tests for user workflows
- Add performance tests for large dataset handling
- Include accessibility tests for WCAG compliance

Dependencies:
- Add missing test dependencies (@types/jasmine, karma packages)
- Fix zone.js testing imports for Angular 19 compatibility
- Update package.json with proper testing infrastructure

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-25 22:23:38 -07:00

55 lines
1.6 KiB
JSON

{
"name": "metube",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "^19.2.14",
"@angular/common": "^19.2.14",
"@angular/compiler": "^19.2.14",
"@angular/core": "^19.2.14",
"@angular/forms": "^19.2.14",
"@angular/localize": "^19.2.14",
"@angular/platform-browser": "^19.2.14",
"@angular/platform-browser-dynamic": "^19.2.14",
"@angular/router": "^19.2.14",
"@angular/service-worker": "^19.2.14",
"@fortawesome/angular-fontawesome": "~1.0.0",
"@fortawesome/fontawesome-svg-core": "^6.7.0",
"@fortawesome/free-brands-svg-icons": "^6.7.2",
"@fortawesome/free-regular-svg-icons": "^6.7.0",
"@fortawesome/free-solid-svg-icons": "^6.7.0",
"@ng-bootstrap/ng-bootstrap": "^18.0.0",
"@ng-select/ng-select": "^14.0.0",
"bootstrap": "^5.3.6",
"ngx-cookie-service": "^19.0.0",
"ngx-socket-io": "~4.8.0",
"rxjs": "~7.8.0",
"tslib": "^2.8.1",
"zone.js": "~0.15.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "^19.2.14",
"@angular/cli": "^19.2.14",
"@angular/compiler-cli": "^19.2.14",
"@types/jasmine": "^5.1.9",
"@types/node": "^22.18.0",
"codelyzer": "^6.0.2",
"karma": "^6.4.4",
"karma-chrome-launcher": "^3.2.0",
"karma-coverage": "^2.2.1",
"karma-coverage-istanbul-reporter": "^3.0.3",
"karma-jasmine": "^5.1.0",
"karma-jasmine-html-reporter": "^2.1.0",
"ts-node": "~10.9.1",
"tslint": "~6.1.3",
"typescript": "~5.8.3"
}
}