# betterdocs/4.9.5/react-src/gutenberg/blocks/code-snippet/src/attributes.js

BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ &amp; Chatbot, version 4.9.5. 161 lines.

- Page: https://pluginprobe.com/plugins/betterdocs/4.9.5/code/react-src/gutenberg/blocks/code-snippet/src/attributes.js
- Raw: https://pluginprobe.com/plugins/betterdocs/4.9.5/raw/react-src/gutenberg/blocks/code-snippet/src/attributes.js
- Modified: 2026-10-12T10:07:14+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/betterdocs/4.9.5/code/react-src/gutenberg/blocks/code-snippet/src/attributes.js#L10-L20`.

```javascript
import { __ } from "@wordpress/i18n";

import {
    CODE_SNIPPET_WRAPPER_MARGIN,
    CODE_SNIPPET_WRAPPER_PADDING,
    CODE_SNIPPET_HEADER_PADDING,
    CODE_SNIPPET_LINE_NUMBERS_PADDING,
    CODE_SNIPPET_CODE_PADDING,
} from './constants';

import {
    generateTypographyAttributes,
    generateDimensionsAttributes,
} from '../../../util/helpers';

import * as prefixes from './typographyPrefixConstants';

const attributes = {
    // Required attributes for responsive options and asset generation
    resOption: {
        type: 'string',
        default: 'Desktop',
    },
    blockId: {
        type: 'string',
    },
    blockRoot: {
        type: 'string',
        default: 'better_docs',
    },
    blockMeta: {
        type: 'object',
    },

    // Content attributes
    codeContent: {
        type: "string",
        default: "",
    },
    language: {
        type: "string",
        default: "javascript",
    },
    // Additional languages for a multi-language snippet. Each item:
    // { language, codeContent, fileName }. Empty = single-language (default,
    // behaves exactly as before). When 1+ present, the header shows a
    // language dropdown to switch between the primary + these variants.
    codeVariants: {
        type: "array",
        default: [],
    },
    showCopyButton: {
        type: "boolean",
        default: true,
    },
    showHeader: {
        type: "boolean",
        default: true,
    },
    showLineNumbers: {
        type: "boolean",
        default: false,
    },
    theme: {
        type: "string",
        default: "light",
    },

    // File Preview Header attributes
    fileName: {
        type: "string",
        default: "filename.js",
    },
    showFileIcon: {
        type: "boolean",
        default: true,
    },
    fileIcon: {
        type: "string",
        default: "", // URL to custom icon
    },
    showTrafficLights: {
        type: "boolean",
        default: true,
    },

    // Typography attributes
    ...generateTypographyAttributes(Object.values(prefixes)),

    // Color attributes
    lineNumberColor: {
        type: "string",
        default: null,
    },
    lineNumberBgColor: {
        type: "string",
        default: null,
    },
    lineNumberBorderColor: {
        type: "string",
        default: null,
    },
    lineNumberBorderWidth: {
        type: "number",
        default: 1,
    },
    wrapperBackgroundColor: {
        type: "string",
        default: null,
    },
    wrapperBorderColor: {
        type: "string",
        default: null,
    },
    wrapperBorderWidth: {
        type: "number",
        default: 0,
    },
    wrapperBorderRadius: {
        type: "number",
        default: 0,
    },
    headerBackgroundColor: {
        type: "string",
        default: null,
    },
    headerBorderColor: {
        type: "string",
        default: null,
    },
    headerBorderWidth: {
        type: "number",
        default: 1,
    },
    fileNameColor: {
        type: "string",
        default: null,
    },
    copyButtonColor: {
        type: "string",
        default: null,
    },
    copyButtonBorderColor: {
        type: "string",
        default: null,
    },
    codeBackgroundColor: {
        type: "string",
        default: null,
    },

    // Dimension attributes with null defaults for responsive consistency
    ...generateDimensionsAttributes(CODE_SNIPPET_WRAPPER_MARGIN),
    ...generateDimensionsAttributes(CODE_SNIPPET_WRAPPER_PADDING),
    ...generateDimensionsAttributes(CODE_SNIPPET_HEADER_PADDING),
    ...generateDimensionsAttributes(CODE_SNIPPET_LINE_NUMBERS_PADDING),
    ...generateDimensionsAttributes(CODE_SNIPPET_CODE_PADDING),
};

export default attributes;

```
