- Added new dependencies including clsx, lucide-react, recharts, and various Radix UI components to improve UI functionality. - Upgraded Tailwind CSS to version 4.0.0 and updated configuration to utilize CSS variables for theming and responsive design. - Introduced global styles and improved accessibility features in the layout and components. - Removed outdated login page and refactored authentication store for better state management. - Enhanced API service with additional authentication methods and improved error handling. These changes aim to modernize the web applications and improve user experience through better design and functionality.
163 lines
3.5 KiB
CSS
163 lines
3.5 KiB
CSS
/**
|
|
* EN: Global Styles with Tailwind CSS 4
|
|
* VI: Styles toàn cục với Tailwind CSS 4
|
|
*
|
|
* Import theme variables first, then Tailwind CSS 4
|
|
* Import các biến theme trước, sau đó là Tailwind CSS 4
|
|
*/
|
|
@import "../styles/theme.css";
|
|
@import "tailwindcss";
|
|
|
|
/**
|
|
* EN: Base Styles
|
|
* VI: Styles cơ bản
|
|
*/
|
|
@layer base {
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html {
|
|
font-family: var(--font-sans);
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
body {
|
|
background-color: var(--bg-primary);
|
|
color: var(--text-primary);
|
|
font-size: var(--text-base);
|
|
line-height: 1.5;
|
|
transition: background-color var(--duration-normal) var(--ease-in-out),
|
|
color var(--duration-normal) var(--ease-in-out);
|
|
}
|
|
|
|
/**
|
|
* EN: Smooth transitions for theme switching
|
|
* VI: Chuyển đổi mượt mà cho việc chuyển theme
|
|
*/
|
|
*,
|
|
*::before,
|
|
*::after {
|
|
transition: background-color var(--duration-normal) var(--ease-in-out),
|
|
color var(--duration-normal) var(--ease-in-out),
|
|
border-color var(--duration-normal) var(--ease-in-out);
|
|
}
|
|
|
|
/**
|
|
* EN: Focus indicators for keyboard navigation (WCAG 2.1 AA)
|
|
* VI: Chỉ báo focus cho điều hướng bàn phím (WCAG 2.1 AA)
|
|
*/
|
|
*:focus-visible {
|
|
outline: 2px solid var(--accent-primary);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
/**
|
|
* EN: Skip link styles (screen reader only until focused)
|
|
* VI: Styles cho skip link (chỉ screen reader cho đến khi focus)
|
|
*/
|
|
.sr-only {
|
|
position: absolute;
|
|
width: 1px;
|
|
height: 1px;
|
|
padding: 0;
|
|
margin: -1px;
|
|
overflow: hidden;
|
|
clip: rect(0, 0, 0, 0);
|
|
white-space: nowrap;
|
|
border-width: 0;
|
|
}
|
|
|
|
.sr-only:focus,
|
|
.sr-only:focus-visible {
|
|
position: fixed;
|
|
width: auto;
|
|
height: auto;
|
|
padding: inherit;
|
|
margin: 0;
|
|
overflow: visible;
|
|
clip: auto;
|
|
white-space: normal;
|
|
}
|
|
|
|
/**
|
|
* EN: Ensure minimum font size for accessibility (16px) - WCAG 2.1 AA
|
|
* VI: Đảm bảo kích thước font tối thiểu cho accessibility (16px) - WCAG 2.1 AA
|
|
*/
|
|
body {
|
|
font-size: 16px;
|
|
min-font-size: 16px;
|
|
}
|
|
|
|
/**
|
|
* EN: Support zoom up to 200% without breaking layout - WCAG 2.1 AA
|
|
* VI: Hỗ trợ zoom lên đến 200% mà không làm vỡ layout - WCAG 2.1 AA
|
|
*/
|
|
html {
|
|
zoom: 1;
|
|
}
|
|
|
|
/**
|
|
* EN: Ensure all text is zoomable up to 200% - WCAG 2.1 AA
|
|
* VI: Đảm bảo tất cả text có thể zoom lên đến 200% - WCAG 2.1 AA
|
|
*/
|
|
* {
|
|
max-width: 100%;
|
|
}
|
|
|
|
/**
|
|
* EN: Prevent horizontal scroll on zoom - WCAG 2.1 AA
|
|
* VI: Ngăn scroll ngang khi zoom - WCAG 2.1 AA
|
|
*/
|
|
body {
|
|
overflow-x: hidden;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* EN: Typing Indicator Animation
|
|
* VI: Animation cho Typing Indicator
|
|
*/
|
|
@keyframes typing-pulse {
|
|
0%, 60%, 100% {
|
|
opacity: 0.3;
|
|
transform: scale(0.8);
|
|
}
|
|
30% {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
.typing-dot {
|
|
/* EN: Animation properties are set inline to allow customization / VI: Các thuộc tính animation được set inline để cho phép tùy chỉnh */
|
|
}
|
|
|
|
/**
|
|
* EN: Message bubble fade-in animation
|
|
* VI: Animation fade-in cho message bubble
|
|
*/
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(8px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* EN: Ensure smooth animations and prevent layout shift
|
|
* VI: Đảm bảo animation mượt mà và ngăn layout shift
|
|
*/
|
|
@layer utilities {
|
|
.animate-fadeIn {
|
|
animation: fadeIn 0.3s ease-out forwards;
|
|
}
|
|
}
|