diff --git a/scripts/ralph/progress.txt b/scripts/ralph/progress.txt
index 5830e3e..42273b4 100644
--- a/scripts/ralph/progress.txt
+++ b/scripts/ralph/progress.txt
@@ -405,3 +405,11 @@ PRD: tasks/prd-mobile-ui-fixes-phase5.md
[2026-01-13 22:36:11] Working on story: US-705
[2026-01-13 22:36:11] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_5_US-705.log)
[2026-01-13 22:39:06] SUCCESS: Story US-705 passed!
+[2026-01-13 22:39:07] Changes committed
+[2026-01-13 22:39:07] Progress: 15/15 stories completed
+[2026-01-13 22:39:09] === Iteration 6/15 ===
+[2026-01-13 22:39:09] SUCCESS: All stories completed! 🎉
+[2026-01-13 22:39:09] === Ralph Session Complete ===
+[2026-01-13 22:39:09] Final progress: 15/15 stories completed
+[2026-01-13 22:39:09] Branch: ralph/ui-fixes-phase6
+[2026-01-13 22:39:09] Logs: /workspace/roa2web/scripts/ralph/logs
diff --git a/src/assets/css/layout/containers.css b/src/assets/css/layout/containers.css
index 46735a1..8b1c7d9 100644
--- a/src/assets/css/layout/containers.css
+++ b/src/assets/css/layout/containers.css
@@ -46,9 +46,17 @@
}
/* Main Content with Header Offset */
+/* US-705: Reduced padding from space-lg (24px) to space-xs (4px) since .app-container
+ inside already provides content padding. This eliminates excessive top spacing. */
.main-content {
margin-top: var(--header-height);
- padding: var(--space-lg);
+ padding: var(--space-xs);
+}
+
+/* US-706: Mobile layout uses padding-top for fixed bars, not margin-top
+ This prevents gap between sticky tabs and content */
+.main-content.mobile-layout {
+ margin-top: 0;
}
/* Dashboard Container */
@@ -147,11 +155,15 @@
/* Mobile Container Adjustments */
@media (max-width: 768px) {
.app-container,
- .main-content,
.page-container {
padding: var(--space-md);
}
+ /* US-705: Keep main-content padding minimal - app-container handles content spacing */
+ .main-content {
+ padding: var(--space-xs);
+ }
+
/* US-401/US-402: Hide desktop header on mobile - MobileTopBar takes over */
.header-container {
display: none !important;
@@ -181,12 +193,16 @@
@media (max-width: 480px) {
.app-container,
- .main-content,
.page-container,
.dashboard-container {
padding: var(--space-sm);
}
+ /* US-705: Keep main-content padding minimal on small screens too */
+ .main-content {
+ padding: var(--space-xs);
+ }
+
/* US-401/US-402: Keep desktop header hidden on mobile */
.header-container {
display: none !important;
diff --git a/src/modules/data-entry/views/receipts/ReceiptsListView.vue b/src/modules/data-entry/views/receipts/ReceiptsListView.vue
index 23a8c23..7acd8bb 100644
--- a/src/modules/data-entry/views/receipts/ReceiptsListView.vue
+++ b/src/modules/data-entry/views/receipts/ReceiptsListView.vue
@@ -655,39 +655,8 @@
/>
-
-
-
-
-
-
-
-
-
@@ -1070,6 +1039,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1229,20 +1232,15 @@ const exportMenuItems = computed(() => [
}
])
-// US-608: SpeedDial Items - Bon Nou Manual, Scanare Bon OCR, Upload în Masă
+// US-706: SpeedDial Items - simplified to 2 options: Bon Nou + Bulk Upload
const speedDialItems = [
{
- label: 'Bon Nou Manual',
+ label: 'Bon Nou',
icon: 'pi pi-pencil',
command: () => goToCreate()
},
{
- label: 'Scanare Bon OCR',
- icon: 'pi pi-camera',
- command: () => goToOCRScan()
- },
- {
- label: 'Upload în Masă',
+ label: 'Bulk Upload',
icon: 'pi pi-upload',
command: () => openBulkFileInput()
}
@@ -4806,91 +4804,7 @@ const cleanupCompletedBatches = (storedBatchIds) => {
}
/* US-103: Mobile Bottom Navigation styles now in MobileBottomNav.vue */
-
-/* US-608: Mobile SpeedDial - Floating Action Button with animated options */
-.mobile-speed-dial {
- position: fixed !important;
- bottom: 72px; /* 56px bottom nav + 16px spacing */
- right: var(--space-md);
- z-index: 999;
-}
-
-/* SpeedDial main button styling */
-.mobile-speed-dial .p-speeddial-button {
- width: 56px !important;
- height: 56px !important;
- border-radius: 50% !important;
- background: var(--color-primary) !important;
- border: none !important;
- box-shadow: var(--shadow-lg) !important;
- transition: all var(--transition-fast) !important;
-}
-
-.mobile-speed-dial .p-speeddial-button:hover,
-.mobile-speed-dial .p-speeddial-button:focus {
- background: var(--color-primary-dark) !important;
- box-shadow: var(--shadow-xl) !important;
-}
-
-.mobile-speed-dial .p-speeddial-button:active {
- transform: scale(0.95) !important;
-}
-
-.mobile-speed-dial .p-speeddial-button .p-button-icon {
- font-size: var(--text-2xl) !important;
- color: var(--color-text-inverse) !important;
-}
-
-/* SpeedDial action buttons styling */
-.mobile-speed-dial .p-speeddial-action {
- width: 48px !important;
- height: 48px !important;
- background: var(--surface-card) !important;
- border: 1px solid var(--surface-border) !important;
- box-shadow: var(--shadow-md) !important;
- transition: all var(--transition-fast) !important;
-}
-
-.mobile-speed-dial .p-speeddial-action:hover,
-.mobile-speed-dial .p-speeddial-action:focus {
- background: var(--surface-hover) !important;
- transform: scale(1.1) !important;
-}
-
-.mobile-speed-dial .p-speeddial-action .p-speeddial-action-icon {
- color: var(--color-primary) !important;
- font-size: var(--text-lg) !important;
-}
-
-/* SpeedDial mask overlay (background when open) */
-.mobile-speed-dial .p-speeddial-mask {
- background: rgba(0, 0, 0, 0.4) !important;
-}
-
-/* SpeedDial tooltip labels */
-.mobile-speed-dial .p-speeddial-action::before {
- content: attr(aria-label);
- position: absolute;
- right: 60px;
- white-space: nowrap;
- background: var(--surface-card);
- color: var(--text-color);
- padding: var(--space-xs) var(--space-sm);
- border-radius: var(--radius-sm);
- font-size: var(--text-sm);
- font-weight: var(--font-medium);
- box-shadow: var(--shadow-sm);
- border: 1px solid var(--surface-border);
- opacity: 0;
- transform: translateX(10px);
- transition: all var(--transition-fast);
- pointer-events: none;
-}
-
-.mobile-speed-dial.p-speeddial-opened .p-speeddial-action::before {
- opacity: 1;
- transform: translateX(0);
-}
+/* US-608: SpeedDial styles moved to non-scoped section below */
/* Mobile Sidebar (Hamburger Menu) */
.mobile-sidebar {
@@ -4991,37 +4905,7 @@ const cleanupCompletedBatches = (storedBatchIds) => {
}
/* US-103: Dark mode for MobileBottomNav now in component */
-
-/* US-608: Dark mode for SpeedDial */
-[data-theme="dark"] .mobile-speed-dial .p-speeddial-button {
- background: var(--blue-600) !important;
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4) !important;
-}
-
-[data-theme="dark"] .mobile-speed-dial .p-speeddial-button:hover,
-[data-theme="dark"] .mobile-speed-dial .p-speeddial-button:focus {
- background: var(--blue-700) !important;
-}
-
-[data-theme="dark"] .mobile-speed-dial .p-speeddial-action {
- background: var(--surface-card) !important;
- border-color: var(--surface-border) !important;
-}
-
-[data-theme="dark"] .mobile-speed-dial .p-speeddial-action:hover,
-[data-theme="dark"] .mobile-speed-dial .p-speeddial-action:focus {
- background: var(--surface-hover) !important;
-}
-
-[data-theme="dark"] .mobile-speed-dial .p-speeddial-action .p-speeddial-action-icon {
- color: var(--blue-400) !important;
-}
-
-[data-theme="dark"] .mobile-speed-dial .p-speeddial-action::before {
- background: var(--surface-card);
- color: var(--text-color);
- border-color: var(--surface-border);
-}
+/* US-608: Dark mode for SpeedDial moved to non-scoped section */
[data-theme="dark"] .sidebar-item.active,
[data-theme="dark"] .sidebar-item.router-link-active {
@@ -5062,37 +4946,7 @@ const cleanupCompletedBatches = (storedBatchIds) => {
}
/* US-103: Auto dark mode for MobileBottomNav now in component */
-
- /* US-608: Auto dark mode for SpeedDial */
- :root:not([data-theme]) .mobile-speed-dial .p-speeddial-button {
- background: var(--blue-600) !important;
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4) !important;
- }
-
- :root:not([data-theme]) .mobile-speed-dial .p-speeddial-button:hover,
- :root:not([data-theme]) .mobile-speed-dial .p-speeddial-button:focus {
- background: var(--blue-700) !important;
- }
-
- :root:not([data-theme]) .mobile-speed-dial .p-speeddial-action {
- background: var(--surface-card) !important;
- border-color: var(--surface-border) !important;
- }
-
- :root:not([data-theme]) .mobile-speed-dial .p-speeddial-action:hover,
- :root:not([data-theme]) .mobile-speed-dial .p-speeddial-action:focus {
- background: var(--surface-hover) !important;
- }
-
- :root:not([data-theme]) .mobile-speed-dial .p-speeddial-action .p-speeddial-action-icon {
- color: var(--blue-400) !important;
- }
-
- :root:not([data-theme]) .mobile-speed-dial .p-speeddial-action::before {
- background: var(--surface-card);
- color: var(--text-color);
- border-color: var(--surface-border);
- }
+ /* US-608: Auto dark mode for SpeedDial moved to non-scoped section */
:root:not([data-theme]) .sidebar-item.active,
:root:not([data-theme]) .sidebar-item.router-link-active {
@@ -5134,9 +4988,91 @@ const cleanupCompletedBatches = (storedBatchIds) => {
}
-
+