diff --git a/apps/website/pages/components/nav-tabs/code.tsx b/apps/website/pages/components/nav-tabs/code.tsx
new file mode 100644
index 0000000000..b6e2985afa
--- /dev/null
+++ b/apps/website/pages/components/nav-tabs/code.tsx
@@ -0,0 +1,17 @@
+import Head from "next/head";
+import type { ReactElement } from "react";
+import NavTabsPageLayout from "screens/components/nav-tabs/NavTabsPageLayout";
+import NavTabsCodePage from "screens/components/nav-tabs/code/NavTabsCodePage";
+
+const Code = () => (
+ <>
+
+ Nav Tabs Code — Halstack Design System
+
+
+ >
+);
+
+Code.getLayout = (page: ReactElement) => {page};
+
+export default Code;
diff --git a/apps/website/pages/components/nav-tabs/index.tsx b/apps/website/pages/components/nav-tabs/index.tsx
index 765def99ab..d7d3c23176 100644
--- a/apps/website/pages/components/nav-tabs/index.tsx
+++ b/apps/website/pages/components/nav-tabs/index.tsx
@@ -1,21 +1,17 @@
import Head from "next/head";
import type { ReactElement } from "react";
import NavTabsPageLayout from "screens/components/nav-tabs/NavTabsPageLayout";
-import NavTabsCodePage from "screens/components/nav-tabs/code/NavTabsCodePage";
+import NavTabsOverviewPage from "screens/components/nav-tabs/overview/NavTabsOverviewPage";
-const Index = () => {
- return (
- <>
-
- Nav Tabs — Halstack Design System
-
-
- >
- );
-};
+const Index = () => (
+ <>
+
+ Nav Tabs — Halstack Design System
+
+
+ >
+);
-Index.getLayout = function getLayout(page: ReactElement) {
- return {page};
-};
+Index.getLayout = (page: ReactElement) => {page};
export default Index;
diff --git a/apps/website/pages/components/nav-tabs/specifications.tsx b/apps/website/pages/components/nav-tabs/specifications.tsx
deleted file mode 100644
index 53005dfec3..0000000000
--- a/apps/website/pages/components/nav-tabs/specifications.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import Head from "next/head";
-import type { ReactElement } from "react";
-import NavTabsPageLayout from "screens/components/nav-tabs/NavTabsPageLayout";
-import NavTabsSpecsPage from "screens/components/nav-tabs/specs/NavTabsSpecsPage";
-
-const Specifications = () => {
- return (
- <>
-
- Nav Tabs Specs — Halstack Design System
-
-
- >
- );
-};
-
-Specifications.getLayout = function getLayout(page: ReactElement) {
- return {page};
-};
-
-export default Specifications;
diff --git a/apps/website/pages/components/nav-tabs/usage.tsx b/apps/website/pages/components/nav-tabs/usage.tsx
deleted file mode 100644
index ae598a1dea..0000000000
--- a/apps/website/pages/components/nav-tabs/usage.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import Head from "next/head";
-import type { ReactElement } from "react";
-import NavTabsPageLayout from "screens/components/nav-tabs/NavTabsPageLayout";
-import NavTabsUsagePage from "screens/components/nav-tabs/usage/NavTabsUsagePage";
-
-const Usage = () => {
- return (
- <>
-
- Nav Tabs Usage — Halstack Design System
-
-
- >
- );
-};
-
-Usage.getLayout = function getLayout(page: ReactElement) {
- return {page};
-};
-
-export default Usage;
diff --git a/apps/website/screens/components/nav-tabs/NavTabsPageLayout.tsx b/apps/website/screens/components/nav-tabs/NavTabsPageLayout.tsx
index 4c2a936fdd..16077c5cd3 100644
--- a/apps/website/screens/components/nav-tabs/NavTabsPageLayout.tsx
+++ b/apps/website/screens/components/nav-tabs/NavTabsPageLayout.tsx
@@ -6,9 +6,8 @@ import { ReactNode } from "react";
const NumberInputPageHeading = ({ children }: { children: ReactNode }) => {
const tabs = [
- { label: "Code", path: "/components/nav-tabs" },
- { label: "Usage", path: "/components/nav-tabs/usage" },
- { label: "Specifications", path: "/components/nav-tabs/specifications" },
+ { label: "Overview", path: "/components/nav-tabs" },
+ { label: "Code", path: "/components/nav-tabs/code" },
];
return (
@@ -17,8 +16,8 @@ const NumberInputPageHeading = ({ children }: { children: ReactNode }) => {
- Nav tabs function in the same way as the tab component but are more focused on navigation across pages or
- links.
+ Nav tabs lets users switch between different views or sections within the same page, organizing related
+ content into a clear and accessible layout.
diff --git a/apps/website/screens/components/nav-tabs/code/NavTabsCodePage.tsx b/apps/website/screens/components/nav-tabs/code/NavTabsCodePage.tsx
index 0d5be9e1c8..20157e8204 100644
--- a/apps/website/screens/components/nav-tabs/code/NavTabsCodePage.tsx
+++ b/apps/website/screens/components/nav-tabs/code/NavTabsCodePage.tsx
@@ -26,16 +26,6 @@ const sections = [
-
-
iconPosition
-
- 'top' | 'left'
-
-
Whether the icon should appear above or to the left of the label.
-
- 'top'
-
-
@@ -51,6 +41,16 @@ const sections = [
-
+
+
iconPosition
+
+ 'top' | 'left'
+
+
Whether the icon should appear above or to the left of the label.
+
+ 'top'
+
+
tabIndex
@@ -94,6 +94,19 @@ const sections = [
false
+
+
+
+
+ children
+
+
+
+ string
+
+
Tab label text.
+
-
+
disabled
@@ -141,19 +154,6 @@ const sections = [
false
-
-
-
-
- children
-
-
-
- string
-
-
Tab label text.
-
-
-
),
diff --git a/apps/website/screens/components/nav-tabs/overview/NavTabsOverviewPage.tsx b/apps/website/screens/components/nav-tabs/overview/NavTabsOverviewPage.tsx
new file mode 100644
index 0000000000..768921134f
--- /dev/null
+++ b/apps/website/screens/components/nav-tabs/overview/NavTabsOverviewPage.tsx
@@ -0,0 +1,198 @@
+import { DxcBulletedList, DxcFlex, DxcParagraph, DxcLink, DxcHeading } from "@dxc-technology/halstack-react";
+import DocFooter from "@/common/DocFooter";
+import QuickNavContainer from "@/common/QuickNavContainer";
+import QuickNavContainerLayout from "@/common/QuickNavContainerLayout";
+import Image from "@/common/Image";
+import navTabsAnatomy from "./images/navTabs_anatomy.png";
+import Link from "next/link";
+import Example from "@/common/example/Example";
+import icons_top from "./examples/icons_top";
+import icons_left from "./examples/icons_left";
+import badges from "./examples/badges";
+
+const sections = [
+ {
+ title: "Introduction",
+ content: (
+
+ Our nav tabs provide a simple and efficient way to organize and navigate between multiple content sections
+ within the same page. By dividing related information into distinct tabs, it helps reduce visual clutter and
+ improves content discoverability without requiring users to leave the current view. This component is especially
+ useful in scenarios where users need to compare or switch between data sets, settings or categories. It supports
+ both horizontal and stacked layouts, ensuring adaptability across different use cases and screen sizes.
+
+ ),
+ },
+ {
+ title: "Anatomy",
+ content: (
+ <>
+
+
+
+ Container: the outer wrapper that holds and organizes all tab items. It defines the overall
+ structure and layout of the navigation tabs, ensuring proper alignment and spacing across the component.
+
+
+ Label: the text displayed within each tab that indicates the section or category it leads
+ to.
+
+
+ Notification badge
+ (Optional): a visual indicator that displays the number of pending actions, alerts or updates
+ related to a specific tab.
+
+
+ Selected tab: the active tab currently in focus, representing the visible content section.
+ It is visually distinguished from unselected tabs using different color, weight or indicator styling.
+
+
+ Icon
+ (Optional): an optional graphical element placed before the label to visually reinforce the tab's
+ meaning or category.
+
+
+ Selected tab indicator: a horizontal bar that visually marks the currently active tab.
+
+
+ Unselected tab indicator: a horizontal bar that visually marks the currently inactive tab.
+
+
+ >
+ ),
+ },
+ {
+ title: "Using nav tabs",
+ subSections: [
+ {
+ title: "Icon position",
+ content: (
+ <>
+
+ Icons in nav tabs can be placed either above or to the left of the label, depending on
+ the layout and density of the interface.
+
+
+
+ Use the top position when the tabs are displayed in a horizontal layout and you want to
+ emphasize the icon as a key visual cue—ideal for dashboards or mobile - first interfaces where vertical
+ stacking feels more natural.
+
+
+
+ Place the icon to the left of the label in more compact environments, especially when
+ space is limited. This configuration maintains readability while preserving a clean, organized
+ structure.
+
+
+
+
+ Choose the position that best aligns with the visual hierarchy and user flow of your application.
+
+ >
+ ),
+ },
+ {
+ title: "Notification badges",
+ content: (
+ <>
+
+ Nav tabs can optionally include a notification badge to indicate new activity, alerts, or
+ content updates related to that tab. These badges are typically displayed as small counters and serve as a
+ visual prompt to draw the user's attention to something that requires their interaction
+ or awareness. Use notification badges sparingly and only when there is a clear need to highlight important
+ changes—such as unread messages, pending actions or system alerts—to avoid visual noise and ensure they
+ retain their impact.
+
+
+ >
+ ),
+ },
+ {
+ title: "Nav tabs vs. Tabs",
+ content: (
+ <>
+
+ Both{" "}
+
+ tabs
+ {" "}
+ and nav tabs are used for navigation, but they serve different purposes and function in distinct ways.
+
+
+
+
+ Act as primary navigation elements, often leading to different pages or sections of an
+ application.
+
+
+ Clicking on a nav tab may trigger a full page reload or route change.
+
+
+
+
+
+ Used to switch between different content sections within the same page or container.
+
+
+ Typically do not trigger a full page reload but update content dynamically.
+
+
+
+ Both components improve usability, but tabs are best for grouping related content within
+ a page, while
+ nav tabs help users move across different sections or pages of an application.
+
+ >
+ ),
+ },
+ ],
+ },
+ {
+ title: "Best practices",
+ content: (
+ <>
+
+
+ Use nav tabs to group related content or views under a shared context, making it easier for
+ users to switch between them without losing orientation.
+
+
+ Keep nav tab items labels short and descriptive to avoid truncation and maintain clarity,
+ especially on smaller viewports.
+
+
+ Ensure that tabs follow a logical order — based on frequency of use, workflow, or user
+ priority.
+
+
+ Use notification badges to highlight relevant updates only when necessary, and avoid
+ overloading multiple tabs with badges at once.
+
+
+ Choose icon placement (left or top) based on the available space and the importance of the icon in the
+ context of the label. Left is preferred for horizontal layouts; top works best in vertical or space -
+ constrained scenarios.
+
+
+ Avoid mixing navigation tabs and action buttons within the same group, as this can create confusion around
+ expected behavior.
+
+
+ >
+ ),
+ },
+];
+
+const NavTabsOverviewPage = () => {
+ return (
+
+
+
+
+
+
+ );
+};
+
+export default NavTabsOverviewPage;
diff --git a/apps/website/screens/components/nav-tabs/overview/examples/badges.ts b/apps/website/screens/components/nav-tabs/overview/examples/badges.ts
new file mode 100644
index 0000000000..79a2fac169
--- /dev/null
+++ b/apps/website/screens/components/nav-tabs/overview/examples/badges.ts
@@ -0,0 +1,26 @@
+import { DxcNavTabs, DxcInset } from "@dxc-technology/halstack-react";
+
+const code = `() => {
+ return (
+
+
+
+ Tab 1
+
+
+ Tab 2
+
+
+ Tab 3
+
+
+
+ );
+}`;
+
+const scope = {
+ DxcNavTabs,
+ DxcInset,
+};
+
+export default { code, scope };
diff --git a/apps/website/screens/components/nav-tabs/overview/examples/icons_left.ts b/apps/website/screens/components/nav-tabs/overview/examples/icons_left.ts
new file mode 100644
index 0000000000..77c3437f37
--- /dev/null
+++ b/apps/website/screens/components/nav-tabs/overview/examples/icons_left.ts
@@ -0,0 +1,26 @@
+import { DxcNavTabs, DxcInset } from "@dxc-technology/halstack-react";
+
+const code = `() => {
+ return (
+
+
+
+ Tab 1
+
+
+ Tab 2
+
+
+ Tab 3
+
+
+
+ );
+}`;
+
+const scope = {
+ DxcNavTabs,
+ DxcInset,
+};
+
+export default { code, scope };
diff --git a/apps/website/screens/components/nav-tabs/overview/examples/icons_top.ts b/apps/website/screens/components/nav-tabs/overview/examples/icons_top.ts
new file mode 100644
index 0000000000..04296b8042
--- /dev/null
+++ b/apps/website/screens/components/nav-tabs/overview/examples/icons_top.ts
@@ -0,0 +1,26 @@
+import { DxcNavTabs, DxcInset } from "@dxc-technology/halstack-react";
+
+const code = `() => {
+ return (
+
+
+
+ Tab 1
+
+
+ Tab 2
+
+
+ Tab 3
+
+
+
+ );
+}`;
+
+const scope = {
+ DxcNavTabs,
+ DxcInset,
+};
+
+export default { code, scope };
diff --git a/apps/website/screens/components/nav-tabs/overview/images/navTabs_anatomy.png b/apps/website/screens/components/nav-tabs/overview/images/navTabs_anatomy.png
new file mode 100644
index 0000000000..c3514b5964
Binary files /dev/null and b/apps/website/screens/components/nav-tabs/overview/images/navTabs_anatomy.png differ
diff --git a/apps/website/screens/components/nav-tabs/specs/images/navTabs_specs.png b/apps/website/screens/components/nav-tabs/overview/images/navTabs_specs.png
similarity index 100%
rename from apps/website/screens/components/nav-tabs/specs/images/navTabs_specs.png
rename to apps/website/screens/components/nav-tabs/overview/images/navTabs_specs.png
diff --git a/apps/website/screens/components/nav-tabs/specs/images/navTabs_states.png b/apps/website/screens/components/nav-tabs/overview/images/navTabs_states.png
similarity index 100%
rename from apps/website/screens/components/nav-tabs/specs/images/navTabs_states.png
rename to apps/website/screens/components/nav-tabs/overview/images/navTabs_states.png
diff --git a/apps/website/screens/components/nav-tabs/specs/NavTabsSpecsPage.tsx b/apps/website/screens/components/nav-tabs/specs/NavTabsSpecsPage.tsx
deleted file mode 100644
index 9ae7affb4d..0000000000
--- a/apps/website/screens/components/nav-tabs/specs/NavTabsSpecsPage.tsx
+++ /dev/null
@@ -1,271 +0,0 @@
-import { DxcBulletedList, DxcFlex, DxcTable, DxcParagraph } from "@dxc-technology/halstack-react";
-import DocFooter from "@/common/DocFooter";
-import Figure from "@/common/Figure";
-import QuickNavContainer from "@/common/QuickNavContainer";
-import QuickNavContainerLayout from "@/common/QuickNavContainerLayout";
-import Image from "@/common/Image";
-import Code from "@/common/Code";
-import navTabsSpecs from "./images/navTabs_specs.png";
-import navTabsAnatomy from "./images/navTabs_anatomy.png";
-import navTabsStates from "./images/navTabs_states.png";
-
-const sections = [
- {
- title: "Specifications",
- content: (
-
-
-
- ),
- },
- {
- title: "States",
- content: (
- <>
-
- Tabs can get different states based on user interaction. These states are: enabled,{" "}
- hover, focus, active and disabled.
-
-
-
-
- >
- ),
- },
- {
- title: "Anatomy",
- content: (
- <>
-
-
- Container
- Default text label
- Selected tab indicator
- Default tab indicator
-
- >
- ),
- },
- {
- title: "Design tokens",
- subSections: [
- {
- title: "Color",
- content: (
-
-
-