feat: Implement Phase 1 Shopify-inspired settings (Store, Payments, Shipping)
✨ Features: - Store Details page with live currency preview - Payments page with visual provider cards and test mode - Shipping & Delivery page with zone cards and local pickup - Shared components: SettingsLayout, SettingsCard, SettingsSection, ToggleField 🎨 UI/UX: - Card-based layouts (not boring forms) - Generous whitespace and visual hierarchy - Toast notifications using sonner (reused from Orders) - Sticky save button at top - Mobile-responsive design 🔧 Technical: - Installed ESLint with TypeScript support - Fixed all lint errors (0 errors) - Phase 1 files have zero warnings - Used existing toast from sonner (not reinvented) - Updated routes in App.tsx 📝 Files Created: - Store.tsx (currency preview, address, timezone) - Payments.tsx (provider cards, manual methods) - Shipping.tsx (zone cards, rates, local pickup) - SettingsLayout.tsx, SettingsCard.tsx, SettingsSection.tsx, ToggleField.tsx Phase 1 complete: 18-24 hours estimated work
This commit is contained in:
@@ -19,14 +19,14 @@ export function useShortcuts({ toggleFullscreen }: { toggleFullscreen?: () => vo
|
||||
// Always handle Command Palette toggle first so it works everywhere
|
||||
if (mod && key === "k") {
|
||||
e.preventDefault();
|
||||
try { useCommandStore.getState().toggle(); } catch {}
|
||||
try { useCommandStore.getState().toggle(); } catch { /* ignore if store not available */ }
|
||||
return;
|
||||
}
|
||||
|
||||
// If Command Palette is open, ignore the rest
|
||||
try {
|
||||
if (useCommandStore.getState().open) return;
|
||||
} catch {}
|
||||
} catch { /* ignore if store not available */ }
|
||||
|
||||
// Do not trigger single-key shortcuts while typing
|
||||
const ae = (document.activeElement as HTMLElement | null);
|
||||
|
||||
Reference in New Issue
Block a user