# core/converters/tab.converter.ts

> 10 lines of code and 2 definitions.

Tree: Bane's Lab Build Scripts
Language: typescript
Layer: processing
Canonical: https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-tab-converter-ts
Source text: https://banes-lab.com/source/build-scripts/core/converters/tab.converter.ts.txt

Listed in [core/converters](https://banes-lab.com/api/source/build-scripts/core/converters.md), after [core/converters/surface.converter.ts](https://banes-lab.com/source/build-scripts/core/converters/surface.converter.ts.md) and before [core/converters/view.converter.ts](https://banes-lab.com/source/build-scripts/core/converters/view.converter.ts.md).

## Definitions

- `pageTabsOf` (lexical_declaration, line 5, exported)
- `tabs` (lexical_declaration, line 6, exported)

## Contained in

- [core/converters](https://banes-lab.com/anatomy/build-scripts/folder-build-scripts-core-converters.md)

## Source

```typescript
import type { PageTabs, TabRouter } from "#types/tab.types";
import type { TabsFor } from "#types/learning.types";
import { textOf } from "#core/converters/learning.converter";

export const pageTabsOf = function pageTabsOf(router: TabRouter, page: string, tabsFor: TabsFor): PageTabs {
    const tabs = tabsFor(page)
        .map((tab) => ({ id: textOf(tab.id), label: textOf(tab.label) }))
        .filter((tab) => tab.id.length > 0)
        .map((tab, index) => ({ ...tab, path: index === 0 ? router.pagePath(page) : router.tabLink(page, tab.id) }));
    return { page, tabs };
};
```
