# configuration/strings/viewport.strings.ts

> 35 lines of code and 15 definitions.

Tree: Project Scripts
Language: typescript
Layer: product
Canonical: https://banes-lab.com/anatomy/scripts#file-scripts-configuration-strings-viewport-strings-ts
Source text: https://banes-lab.com/source/scripts/configuration/strings/viewport.strings.ts.txt

Listed in [configuration/strings](https://banes-lab.com/api/source/scripts/configuration/strings.md), after [configuration/strings/style.strings.ts](https://banes-lab.com/source/scripts/configuration/strings/style.strings.ts.md).

## Definitions

- `routeHeading` (lexical_declaration, line 19, exported)
- `summaryLine` (lexical_declaration, line 45, exported)
- `REFUSED_ARGUMENTS` (lexical_declaration, line 1, exported)
- `NO_BROWSER` (lexical_declaration, line 3, exported)
- `NO_DEVTOOLS` (lexical_declaration, line 5, exported)
- `NO_BUILD` (lexical_declaration, line 7, exported)
- `NO_SERVER_PORT` (lexical_declaration, line 9, exported)
- `EMPTY_FRAME` (lexical_declaration, line 11, exported)
- `CLEAN_LINE` (lexical_declaration, line 13, exported)
- `unknownRoute` (lexical_declaration, line 15, exported)
- `sidewaysLine` (lexical_declaration, line 23, exported)
- `findingHeading` (lexical_declaration, line 25, exported)
- `findingLine` (lexical_declaration, line 29, exported)
- `FINDING_LABELS` (lexical_declaration, line 33, exported)
- `reportWritten` (lexical_declaration, line 41, exported)

## Contained in

- [configuration/strings](https://banes-lab.com/anatomy/scripts/folder-scripts-configuration-strings.md)

## Used by

- [core/coordinators/viewport.coordinator.ts](https://banes-lab.com/source/scripts/core/coordinators/viewport.coordinator.ts.md)
- [core/formatters/viewport.formatter.ts](https://banes-lab.com/source/scripts/core/formatters/viewport.formatter.ts.md)

## Linked from

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

## Source

```typescript
export const REFUSED_ARGUMENTS = "viewport: --out-dir is required.\n";

export const NO_BROWSER = "viewport: no browser binary was found. Pass --browser with the path to Chrome or Edge.\n";

export const NO_DEVTOOLS = "viewport: the browser's DevTools endpoint did not come up.\n";

export const NO_BUILD = "viewport: the built site has no pages. Build the site first.\n";

export const NO_SERVER_PORT = "viewport: the local server did not report its port.";

export const EMPTY_FRAME = "viewport: the browser returned an empty frame.";

export const CLEAN_LINE = "  none\n";

export const unknownRoute = function unknownRoute(route: string): string {
    return `viewport: ${route} is not a built route.\n`;
};

export const routeHeading = function routeHeading(route: string, viewport: number): string {
    return `\n${route} (${String(viewport)}px wide)\n`;
};

export const sidewaysLine = "  the page scrolls sideways\n";

export const findingHeading = function findingHeading(label: string, count: number): string {
    return `  ${label}: ${String(count)}\n`;
};

export const findingLine = function findingLine(entry: string): string {
    return `    ${entry}\n`;
};

export const FINDING_LABELS = {
    clipped: "Content cut off by its container",
    inputs: "Form fields that zoom the page on focus",
    overflow: "Elements past the screen edge",
    targets: "Controls under the touch minimum",
    text: "Text under the legible size",
} as const;

export const reportWritten = function reportWritten(path: string, routes: number): string {
    return `viewport: wrote ${path} (${String(routes)} routes)\n`;
};

export const summaryLine = function summaryLine(failing: number, routes: number): string {
    return failing === 0
        ? `viewport: ${String(routes)} routes, none with a finding\n`
        : `viewport: ${String(failing)} of ${String(routes)} routes have a finding\n`;
};
```
