TravelTomato Europe Packing List
Ultimate Europe Packing List by TravelTomato
Create your personalized Europe packing checklist in minutes
What type of Europe traveler are you?
Independent, fast-moving traveler, wants efficient & safe packing for city trips.
👨👩👧👦
Family / Group Traveler
Parent(s) or group leaders planning for several people, needs multi-profile lists.
Prefers ultra-light carry-on, minimal items, modular/multi-use gear.
First or early trip to Europe, needs packing help for etiquette, plugs, and comfort.
Let’s customize your Europe packing list
Tell us about your trip so we can create the perfect checklist
Your Personalized Europe Packing List
Pack smart for your European adventure
Recommended Products for Your Trip
Share your list
`;
const newWindow = window.open('', '_blank');
newWindow.document.write(pdfContent);
newWindow.document.close();
newWindow.focus();
setTimeout(() => newWindow.print(), 500);
}// Changed from ttExportWord to ttExportText
function ttExportText() {
const checklist = ttAppState.checklist;
const config = ttAppState.userConfig;
let content = `TravelTomato Europe Packing List\n\n`;
content += `Traveler: ${config.persona.name}\n`;
content += `Duration: ${config.tripDuration} days | Season: ${config.season || 'Not specified'}\n`;
content += `Home: ${config.homeCountry} | Baggage: ${config.baggageMode || 'Not specified'}\n\n`;
Object.keys(ttCategories).forEach(categoryId => {
const categoryItems = checklist.filter(item => item.category === categoryId);
if (categoryItems.length > 0) {
content += `${ttCategories[categoryId].name}\n`;
content += `${'='.repeat(ttCategories[categoryId].name.length)}\n`;
categoryItems.forEach(item => {
content += `☐ ${item.name}`;
if (item.quantity > 1) content += ` (${item.quantity})`;
if (item.notes) content += ` - ${item.notes}`;
content += '\n';
});
content += '\n';
}
});
const blob = new Blob([content], { type: 'text/plain' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'europe-packing-list.txt';
a.click();
}// Reset function
function ttReset() {
if (confirm('Are you sure you want to reset your packing list? This will uncheck all items.')) {
ttAppState.checklist.forEach(item => item.packed = false);
ttRenderChecklist();
ttSaveState();
}
}// Toggle hide completed function
function ttToggleHideCompleted() {
const hideBtn = document.getElementById('ttHideBtn');
ttAppState.hideCompleted = !ttAppState.hideCompleted;
if (ttAppState.hideCompleted) {
hideBtn.classList.add('active');
hideBtn.textContent = 'Show all';
} else {
hideBtn.classList.remove('active');
hideBtn.textContent = 'Hide if checked';
}
ttRenderChecklist();
ttSaveState();
}// Share functions
function ttShare(platform) {
const text = `Check out my Europe packing list created with TravelTomato! Perfect for ${ttAppState.selectedPersona.name} travelers.`;
const url = window.location.href;
switch (platform) {
case 'copy':
navigator.clipboard.writeText(text + ' ' + url).then(() => {
alert('Link copied to clipboard!');
});
break;
case 'whatsapp':
window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`);
break;
case 'email':
window.open(`mailto:?subject=My Europe Packing List&body=${encodeURIComponent(text + '\n\n' + url)}`);
break;
}
}// State management
function ttSaveState() {
try {
localStorage.setItem('ttAppState', JSON.stringify(ttAppState));
} catch (e) {
console.log('Could not save state');
}
}function ttLoadState() {
try {
const saved = localStorage.getItem('ttAppState');
if (saved) {
const parsed = JSON.parse(saved);
ttAppState = { ...ttAppState, ...parsed };
}
} catch (e) {
console.log('Could not load state');
}
}// Initialize when page loads
document.addEventListener('DOMContentLoaded', ttInit);