✨ 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
32 lines
710 B
TypeScript
32 lines
710 B
TypeScript
import React from 'react';
|
|
import { Label } from '@/components/ui/label';
|
|
|
|
interface SettingsSectionProps {
|
|
label: string;
|
|
description?: string;
|
|
required?: boolean;
|
|
children: React.ReactNode;
|
|
htmlFor?: string;
|
|
}
|
|
|
|
export function SettingsSection({
|
|
label,
|
|
description,
|
|
required = false,
|
|
children,
|
|
htmlFor,
|
|
}: SettingsSectionProps) {
|
|
return (
|
|
<div className="space-y-2">
|
|
<Label htmlFor={htmlFor} className="text-sm font-medium">
|
|
{label}
|
|
{required && <span className="text-destructive ml-1">*</span>}
|
|
</Label>
|
|
{description && (
|
|
<p className="text-sm text-muted-foreground">{description}</p>
|
|
)}
|
|
<div>{children}</div>
|
|
</div>
|
|
);
|
|
}
|