- 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
44 lines
1.5 KiB
JavaScript
44 lines
1.5 KiB
JavaScript
(function() {
|
|
|
|
'use strict';
|
|
|
|
var windowRef = window;
|
|
var windowRefProxy;
|
|
var windowName, widgetName;
|
|
var openerRef = windowRef.opener;
|
|
if (!openerRef) {
|
|
// related modal is active
|
|
openerRef = windowRef.parent;
|
|
windowName = windowRef.name;
|
|
widgetName = windowName.replace(/^(change|add|delete|lookup)_/, '');
|
|
windowRefProxy = {
|
|
name: widgetName,
|
|
location: windowRef.location,
|
|
close: function() {
|
|
openerRef.dismissRelatedObjectModal();
|
|
}
|
|
};
|
|
windowRef = windowRefProxy;
|
|
}
|
|
|
|
// default django popup_response.js
|
|
var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse);
|
|
switch (initData.action) {
|
|
case 'change':
|
|
if (typeof(openerRef.dismissChangeRelatedObjectPopup) === 'function') {
|
|
openerRef.dismissChangeRelatedObjectPopup(windowRef, initData.value, initData.obj, initData.new_value);
|
|
}
|
|
break;
|
|
case 'delete':
|
|
if (typeof(openerRef.dismissDeleteRelatedObjectPopup) === 'function') {
|
|
openerRef.dismissDeleteRelatedObjectPopup(windowRef, initData.value);
|
|
}
|
|
break;
|
|
default:
|
|
if (typeof(openerRef.dismissAddRelatedObjectPopup) === 'function') {
|
|
openerRef.dismissAddRelatedObjectPopup(windowRef, initData.value, initData.obj);
|
|
}
|
|
break;
|
|
}
|
|
|
|
})(); |