aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/app/routes/estimates-$id.css
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2025-09-07 19:22:28 +0200
committerAriel Costas Guerrero <ariel@costas.dev>2025-09-07 19:22:28 +0200
commit80bcf4a5f29ab926c2208d5efb4c19087c600323 (patch)
tree1e5826b29d8a22e057616e16069232f95788f3ba /src/frontend/app/routes/estimates-$id.css
parent8182a08f60e88595984ba80b472f29ccf53c19bd (diff)
feat: Enhance StopSheet component with error handling and loading states
- Added skeleton loading state to StopSheet for better UX during data fetch. - Implemented error handling with descriptive messages for network and server errors. - Introduced manual refresh functionality to reload stop estimates. - Updated styles for loading and error states. - Created StopSheetSkeleton and TimetableSkeleton components for consistent loading indicators. feat: Improve StopList component with loading indicators and network data fetching - Integrated loading state for StopList while fetching stops from the network. - Added skeleton loading indicators for favourite and recent stops. - Refactored data fetching logic to include favourite and recent stops with full data. - Enhanced user experience with better loading and error handling. feat: Update Timetable component with loading and error handling - Added loading skeletons to Timetable for improved user experience. - Implemented error handling for timetable data fetching. - Refactored data loading logic to handle errors gracefully and provide retry options. chore: Update package dependencies - Upgraded react-router, lucide-react, and other dependencies to their latest versions. - Updated types for TypeScript compatibility.
Diffstat (limited to 'src/frontend/app/routes/estimates-$id.css')
-rw-r--r--src/frontend/app/routes/estimates-$id.css60
1 files changed, 58 insertions, 2 deletions
diff --git a/src/frontend/app/routes/estimates-$id.css b/src/frontend/app/routes/estimates-$id.css
index 8906147..66e7fb6 100644
--- a/src/frontend/app/routes/estimates-$id.css
+++ b/src/frontend/app/routes/estimates-$id.css
@@ -32,7 +32,64 @@
.estimates-header {
display: flex;
align-items: center;
+ justify-content: space-between;
margin-bottom: 1rem;
+ gap: 1rem;
+}
+
+.manual-refresh-button {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ padding: 0.5rem 0.75rem;
+ background: var(--primary-color);
+ border: none;
+ border-radius: 0.375rem;
+ font-size: 0.875rem;
+ font-weight: 500;
+ cursor: pointer;
+ transition: all 0.2s ease;
+ min-width: max-content;
+}
+
+.manual-refresh-button:hover:not(:disabled) {
+ background: var(--primary-color-hover);
+ transform: translateY(-1px);
+}
+
+.manual-refresh-button:disabled {
+ opacity: 0.6;
+ cursor: not-allowed;
+ transform: none;
+}
+
+.refresh-icon {
+ width: 1.5rem;
+ height: 1.5rem;
+ transition: transform 0.2s ease;
+}
+
+.refresh-icon.spinning {
+ animation: spin 1s linear infinite;
+}
+
+@keyframes spin {
+ from { transform: rotate(0deg); }
+ to { transform: rotate(360deg); }
+}
+
+@media (max-width: 640px) {
+ .estimates-header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 0.75rem;
+ }
+
+ .manual-refresh-button {
+ align-self: flex-end;
+ padding: 0.4rem 0.6rem;
+ font-size: 0.8rem;
+ }
}
.estimates-stop-id {
@@ -106,8 +163,7 @@
/* Timetable section styles */
.timetable-section {
- padding-top: 1.5rem;
- padding-bottom: 3rem; /* Add bottom padding before footer */
+ padding-bottom: 3rem;
}
/* Timetable cards should be single column */