docs: Audit and cleanup documentation
## Task 1: Translation Support Audit ✅ - Audited all settings pages for translation support - Found 3 pages missing `__` function: Store, Payments, Developer - Most pages already have proper i18n implementation - Action: Add translation support in next iteration ## Task 2: Documentation Cleanup ✅ ### Created - DOCS_AUDIT_REPORT.md - Comprehensive audit of 36 MD files - TASKS_SUMMARY.md - Current tasks and progress tracking ### Deleted (12 obsolete docs) Removed completed/superseded documentation: - CUSTOMER_SETTINGS_404_FIX.md - Bug fixed - MENU_FIX_SUMMARY.md - Menu implemented - DASHBOARD_TWEAKS_TODO.md - Dashboard complete - DASHBOARD_PLAN.md - Dashboard implemented - SPA_ADMIN_MENU_PLAN.md - Menu implemented - STANDALONE_ADMIN_SETUP.md - Standalone complete - STANDALONE_MODE_SUMMARY.md - Duplicate doc - SETTINGS_PAGES_PLAN.md - Superseded by V2 - SETTINGS_PAGES_PLAN_V2.md - Settings implemented - SETTINGS_TREE_PLAN.md - Navigation implemented - SETTINGS_PLACEMENT_STRATEGY.md - Strategy finalized - TAX_NOTIFICATIONS_PLAN.md - Merged into notification strategy ### Result - **Before:** 36 documents - **After:** 24 documents - **Reduction:** 33% fewer docs - **Benefit:** Clearer focus, easier navigation ### Remaining Docs - 15 essential docs (core architecture, guides) - 9 docs to consolidate later (low priority) ## Task 3: Notification System - Ready - Read NOTIFICATION_STRATEGY.md - Created implementation plan in TASKS_SUMMARY.md - Ready to start Phase 1 implementation --- **Next:** Implement notification core framework
This commit is contained in:
@@ -522,6 +522,9 @@ function Shell() {
|
||||
// Check if current route is More page (no submenu needed)
|
||||
const isMorePage = location.pathname === '/more';
|
||||
|
||||
const submenuTopClass = fullscreen ? 'top-0' : 'top-[calc(7rem+32px)]';
|
||||
const submenuZIndex = fullscreen ? 'z-50' : 'z-40';
|
||||
|
||||
return (
|
||||
<AppProvider isStandalone={isStandalone} exitFullscreen={exitFullscreen}>
|
||||
{!isStandalone && <ShortcutsBinder onToggle={toggle} />}
|
||||
@@ -550,7 +553,7 @@ function Shell() {
|
||||
) : (
|
||||
<div className="flex flex-1 flex-col min-h-0">
|
||||
{/* Flex wrapper: mobile = col (PageHeader first), desktop = col-reverse (SubmenuBar first) */}
|
||||
<div className="flex flex-col md:flex-col-reverse">
|
||||
<div className={`flex flex-col md:flex-col-reverse sticky ${submenuTopClass} ${submenuZIndex}`}>
|
||||
<PageHeader fullscreen={true} />
|
||||
{!isMorePage && (isDashboardRoute ? (
|
||||
<DashboardSubmenuBar items={main.children} fullscreen={true} />
|
||||
@@ -571,7 +574,7 @@ function Shell() {
|
||||
<div className="flex flex-1 flex-col min-h-0">
|
||||
<TopNav />
|
||||
{/* Flex wrapper: mobile = col (PageHeader first), desktop = col-reverse (SubmenuBar first) */}
|
||||
<div className="flex flex-col md:flex-col-reverse">
|
||||
<div className={`flex flex-col md:flex-col-reverse sticky ${submenuTopClass} ${submenuZIndex}`}>
|
||||
<PageHeader fullscreen={false} />
|
||||
{isDashboardRoute ? (
|
||||
<DashboardSubmenuBar items={main.children} fullscreen={false} />
|
||||
|
||||
@@ -17,7 +17,7 @@ export default function SubmenuBar({ items = [], fullscreen = false, headerVisib
|
||||
const topClass = fullscreen ? 'top-0' : 'top-[calc(7rem+32px)]';
|
||||
|
||||
return (
|
||||
<div data-submenubar className={`border-b border-border bg-background md:bg-background/95 md:backdrop-blur md:supports-[backdrop-filter]:bg-background/60 sticky ${topClass} z-20`}>
|
||||
<div data-submenubar className={`border-b border-border bg-background md:bg-background/95 md:backdrop-blur md:supports-[backdrop-filter]:bg-background/60`}>
|
||||
<div className="px-4 py-2">
|
||||
<div className="flex gap-2 overflow-x-auto no-scrollbar">
|
||||
{items.map((it) => {
|
||||
|
||||
@@ -118,7 +118,7 @@ export function ImageUpload({
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={cn('space-y-2', className)}>
|
||||
<div className={cn('space-y-2 rounded-lg p-6 border border-muted-foreground/20', className)}>
|
||||
{label && (
|
||||
<label className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70">
|
||||
{label}
|
||||
@@ -129,20 +129,20 @@ export function ImageUpload({
|
||||
<p className="text-sm text-muted-foreground">{description}</p>
|
||||
)}
|
||||
|
||||
<div className="space-y-4">
|
||||
<div className="space-y-4 relative">
|
||||
{value ? (
|
||||
// Preview
|
||||
<div className="relative inline-block">
|
||||
<div className="inline-block">
|
||||
<img
|
||||
src={value}
|
||||
alt="Preview"
|
||||
className="max-w-full h-auto max-h-48 rounded-lg border"
|
||||
className="w-[350px] max-w-full h-auto rounded-lg border"
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="destructive"
|
||||
size="icon"
|
||||
className="absolute top-2 right-2"
|
||||
className="absolute top-0 right-0 h-fit w-fit shadow-none"
|
||||
onClick={handleRemove}
|
||||
>
|
||||
<X className="h-4 w-4" />
|
||||
|
||||
@@ -165,7 +165,7 @@ body.woonoow-fullscreen .woonoow-app { overflow: visible; }
|
||||
background: #f0f6fc;
|
||||
}
|
||||
|
||||
/* a[href] {
|
||||
color: rgb(34 197 94);
|
||||
font-weight: bold;
|
||||
} */
|
||||
html #wpadminbar {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
}
|
||||
@@ -338,8 +338,12 @@ export default function StoreDetailsPage() {
|
||||
/>
|
||||
</SettingsSection>
|
||||
|
||||
<SettingsSection label="Store logo (Dark mode)" description="Optional. If not set, light mode logo will be used in dark mode.">
|
||||
<SettingsSection
|
||||
label="Store logo (Dark mode)"
|
||||
description="Optional. If not set, light mode logo will be used in dark mode."
|
||||
>
|
||||
<ImageUpload
|
||||
className={"bg-gray-900/50"}
|
||||
value={settings.storeLogoDark}
|
||||
onChange={(url) => updateSetting('storeLogoDark', url)}
|
||||
onRemove={() => updateSetting('storeLogoDark', '')}
|
||||
|
||||
Reference in New Issue
Block a user