@hashicorp/design-system-components
Version:
Helios Design System Components
99 lines (98 loc) • 3.21 kB
TypeScript
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Component from '@glimmer/component';
import type { ComponentLike } from '@glint/template';
import type { HdsCodeBlockTitleSignature } from './title';
import type { HdsCodeBlockDescriptionSignature } from './description';
import type { HdsCodeBlockLanguages } from './types.ts';
import type { HdsCopyButtonSignature } from '../copy/button/index.ts';
import 'prismjs/plugins/line-numbers/prism-line-numbers';
import 'prismjs/plugins/line-highlight/prism-line-highlight';
import 'prismjs/components/prism-bash';
import 'prismjs/components/prism-go';
import 'prismjs/components/prism-hcl';
import 'prismjs/components/prism-json';
import 'prismjs/components/prism-log';
import 'prismjs/components/prism-ruby';
import 'prismjs/components/prism-shell-session';
import 'prismjs/components/prism-yaml';
import 'prismjs/components/prism-markup-templating';
import 'prismjs/components/prism-handlebars';
export declare const LANGUAGES: string[];
export interface HdsCodeBlockSignature {
Args: {
hasCopyButton?: boolean;
hasLineNumbers?: boolean;
hasLineWrapping?: boolean;
highlightLines?: string;
lineNumberStart?: number;
isStandalone?: boolean;
language?: HdsCodeBlockLanguages;
maxHeight?: string;
value: string;
copyButtonText?: HdsCopyButtonSignature['Args']['text'];
onCopy?: HdsCopyButtonSignature['Args']['onSuccess'];
};
Blocks: {
default: [
{
Title?: ComponentLike<HdsCodeBlockTitleSignature>;
Description?: ComponentLike<HdsCodeBlockDescriptionSignature>;
}
];
};
Element: HTMLDivElement;
}
export default class HdsCodeBlock extends Component<HdsCodeBlockSignature> {
private _prismCode;
/**
* Generates a unique ID for the code content
*
* @param _preCodeId
*/
private _preCodeId;
/**
* @param code
* @type {string}
* @description code text content for the CodeBlock
*/
get code(): string;
/**
* @param language
* @type {string}
* @default undefined
* @description name of coding language used within CodeBlock for syntax highlighting
*/
get language(): HdsCodeBlockLanguages | undefined;
/**
* @param hasLineNumbers
* @type {boolean}
* @default true
* @description Displays line numbers if true
*/
get hasLineNumbers(): boolean;
/**
* @param isStandalone
* @type {boolean}
* @default true
* @description Make CodeBlock container corners appear rounded
*/
get isStandalone(): boolean;
/**
* @param hasLineWrapping
* @type {boolean}
* @default false
* @description Make text content wrap on multiple lines
*/
get hasLineWrapping(): boolean;
get copyButtonText(): HdsCopyButtonSignature['Args']['text'];
setPrismCode(element: HTMLElement): void;
/**
* Get the class names to apply to the component.
* @method classNames
* @return {string} The "class" attribute to apply to the component.
*/
get classNames(): string;
}