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:
dwindown
2025-11-11 11:59:52 +07:00
parent e1adf1e525
commit 4746834a82
19 changed files with 275 additions and 4193 deletions

View File

@@ -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} />

View File

@@ -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) => {

View File

@@ -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" />

View File

@@ -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;
}

View File

@@ -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', '')}