diff --git a/docs/responsive-testing.md b/docs/responsive-testing.md new file mode 100644 index 0000000..8a24459 --- /dev/null +++ b/docs/responsive-testing.md @@ -0,0 +1,18 @@ +# Responsive testing notes + +Check the admin shell at these widths before merging layout changes: + +| Width | What to verify | +| --- | --- | +| 390px | Sidebar collapses, header text truncates, primary actions wrap. | +| 768px | Forms keep readable gaps and do not create horizontal scroll. | +| 1024px | Sidebar labels are visible and dashboard content uses available width. | +| 1440px | Product editor cards and side panels remain balanced. | + +Core flows: + +- catalog product form; +- product editor master attributes; +- completeness side panel; +- header search and profile actions; +- long missing-attribute names. diff --git a/frontend/apps/admin/src/app/(dashboard)/catalog/editor/page.tsx b/frontend/apps/admin/src/app/(dashboard)/catalog/editor/page.tsx index c4a3849..ebf9b37 100644 --- a/frontend/apps/admin/src/app/(dashboard)/catalog/editor/page.tsx +++ b/frontend/apps/admin/src/app/(dashboard)/catalog/editor/page.tsx @@ -18,18 +18,18 @@ export default function ProductEditorPage() { return (
-
-
+
+

Product Editor

Editing: T-Shirt Basic (TSHIRT-001)

-
- - +
+ +
-
+

Master Attributes

diff --git a/frontend/apps/admin/src/app/(dashboard)/layout.tsx b/frontend/apps/admin/src/app/(dashboard)/layout.tsx index b1dcbd9..7e2db54 100644 --- a/frontend/apps/admin/src/app/(dashboard)/layout.tsx +++ b/frontend/apps/admin/src/app/(dashboard)/layout.tsx @@ -7,11 +7,11 @@ export default function DashboardLayout({ children: React.ReactNode; }>) { return ( -
+
-
+
-
+
{children}
diff --git a/frontend/apps/admin/src/components/catalog/DynamicAttributeForm.tsx b/frontend/apps/admin/src/components/catalog/DynamicAttributeForm.tsx index 28bcafb..260264a 100644 --- a/frontend/apps/admin/src/components/catalog/DynamicAttributeForm.tsx +++ b/frontend/apps/admin/src/components/catalog/DynamicAttributeForm.tsx @@ -32,15 +32,15 @@ export function DynamicAttributeForm({ attributes, initialValues, onSubmit }: Dy return (
- -
+ +
{attributes.map((attr) => ( ( - + {attr.type !== "boolean" && {attr.label}} {attr.type === "text" ? ( @@ -67,7 +67,7 @@ export function DynamicAttributeForm({ attributes, initialValues, onSubmit }: Dy /> ))}
- + ); diff --git a/frontend/apps/admin/src/components/catalog/ProductCompletenessSidebar.tsx b/frontend/apps/admin/src/components/catalog/ProductCompletenessSidebar.tsx index 7022eb2..aaaf4bd 100644 --- a/frontend/apps/admin/src/components/catalog/ProductCompletenessSidebar.tsx +++ b/frontend/apps/admin/src/components/catalog/ProductCompletenessSidebar.tsx @@ -14,17 +14,17 @@ export function ProductCompletenessSidebar({ score, missingAttributes, channel, const scoreColor = score >= 100 ? "bg-green-500" : score >= 50 ? "bg-yellow-500" : "bg-red-500"; return ( - + Completeness Score -
{channel} - {locale}
+
{channel} - {locale}
- +
{score}%
-
+
@@ -32,9 +32,9 @@ export function ProductCompletenessSidebar({ score, missingAttributes, channel, {missingAttributes.length > 0 && (

Missing Required Data:

-
    +
      {missingAttributes.map(attr => ( -
    • {attr}
    • +
    • {attr}
    • ))}
diff --git a/frontend/apps/admin/src/components/layout/Header.tsx b/frontend/apps/admin/src/components/layout/Header.tsx index e0dd933..a4fef04 100644 --- a/frontend/apps/admin/src/components/layout/Header.tsx +++ b/frontend/apps/admin/src/components/layout/Header.tsx @@ -9,12 +9,12 @@ export function Header() { const { t } = useTranslation(); return ( -
-
- OmniPIM MAX / {t("dashboard")} +
+
+ OmniPIM MAX / {t("dashboard")}
-
-
+
+
-
-

OmniPIM MAX

+
+
+

+ OP + OmniPIM MAX +

-
+
Version 1.0.0-enterprise