feat: Complete frontend redesign with modern UI/UX

- Created modern design system with CSS variables and gradients
- Implemented new base template with dark/light theme support
- Added modern navigation with smooth animations and transitions
- Redesigned home page with hero section, service previews, and interactive elements
- Created modern services page with filtering and modal functionality
- Redesigned about page with team section, stats, and technology stack
- Added comprehensive JavaScript for interactivity and animations
- Implemented responsive design for mobile devices
- Added Font Awesome icons and Google Fonts (Inter)
- Created modular CSS architecture with utility classes
- Added loading screens, scroll-to-top, and theme toggle functionality
- Improved accessibility with proper ARIA labels and semantic markup

Features:
- Dark/Light theme toggle
- Smooth scroll animations
- Interactive service cards
- Modern button styles with ripple effects
- Responsive grid layouts
- Progress bars and statistics
- Mobile-first responsive design
- Clean typography and modern spacing
- Card-based UI with shadows and hover effects
This commit is contained in:
2025-11-23 21:33:37 +09:00
parent 37d7fc74b8
commit a323caf5db
76 changed files with 3788 additions and 42 deletions

View File

@@ -1,29 +1,17 @@
'use strict';
{
// Call function fn when the DOM is loaded and ready. If it is already
// loaded, call the function now.
// http://youmightnotneedjquery.com/#ready
function ready(fn) {
if (document.readyState !== 'loading') {
fn();
} else {
document.addEventListener('DOMContentLoaded', fn);
}
}
(function($) {
'use strict';
ready(function() {
function handleClick(event) {
event.preventDefault();
const params = new URLSearchParams(window.location.search);
if (params.has('_popup')) {
window.close(); // Close the popup.
$(document).ready(function() {
$('.cancel-link').click(function(e) {
e.preventDefault();
const parentWindow = window.parent;
if (parentWindow && typeof(parentWindow.dismissRelatedObjectModal) === 'function' && parentWindow !== window) {
parentWindow.dismissRelatedObjectModal();
} else {
window.history.back(); // Otherwise, go back.
// fallback to default behavior
window.history.back();
}
}
document.querySelectorAll('.cancel-link').forEach(function(el) {
el.addEventListener('click', handleClick);
return false;
});
});
}
})(django.jQuery);