Major restructure: Remove Confluence, add V2 data structure, organize for dev/prod

- Import real data from PDF (35 Bambu Lab filaments)
- Remove all Confluence integration and dependencies
- Implement new V2 data structure with proper inventory tracking
- Add backwards compatibility for existing data
- Create enhanced UI components (ColorSwatch, InventoryBadge, MaterialBadge)
- Add advanced filtering with quick filters and multi-criteria search
- Organize codebase for dev/prod environments
- Update Lambda functions to support both V1/V2 formats
- Add inventory summary dashboard
- Clean up project structure and documentation

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
DaX
2025-06-20 01:12:50 +02:00
parent a2252fa923
commit 18110ab159
40 changed files with 2171 additions and 1094 deletions

View File

@@ -0,0 +1,54 @@
import React from 'react';
interface MaterialBadgeProps {
base: string;
modifier?: string;
className?: string;
}
export const MaterialBadge: React.FC<MaterialBadgeProps> = ({ base, modifier, className = '' }) => {
const getBaseColor = () => {
switch (base) {
case 'PLA':
return 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200';
case 'PETG':
return 'bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200';
case 'ABS':
return 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200';
case 'TPU':
return 'bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200';
default:
return 'bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200';
}
};
const getModifierIcon = () => {
switch (modifier) {
case 'Silk':
return '✨';
case 'Matte':
return '🔵';
case 'Glow':
return '💡';
case 'Wood':
return '🪵';
case 'CF':
return '⚫';
default:
return null;
}
};
return (
<div className={`inline-flex items-center gap-2 ${className}`}>
<span className={`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${getBaseColor()}`}>
{base}
</span>
{modifier && (
<span className="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200">
{getModifierIcon()} {modifier}
</span>
)}
</div>
);
};