@hashicorp/design-system-components
Version:
Helios Design System Components
85 lines (84 loc) • 3.27 kB
TypeScript
/**
* Copyright IBM Corp. 2021, 2025
* SPDX-License-Identifier: MPL-2.0
*/
import Component from '@glimmer/component';
import type { WithBoundArgs } from '@glint/template';
import HdsCodeBlockTitle from './title';
import HdsCodeBlockDescription from './description';
import type { HdsCodeBlockTitleSignature } from './title';
import type { HdsCodeBlockDescriptionSignature } from './description';
import type { HdsCodeBlockLanguages } from './types.ts';
import type { HdsCopyButtonSignature } from '../copy/button/index';
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: HdsCodeBlockLanguages[];
export interface HdsCodeBlockSignature {
Args: {
ariaLabel?: string;
ariaLabelledBy?: string;
ariaDescribedBy?: string;
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'];
copySuccessMessageText?: HdsCopyButtonSignature['Args']['ariaMessageText'];
};
Blocks: {
default: [
{
Title?: WithBoundArgs<typeof HdsCodeBlockTitle, 'didInsertNode'>;
Description?: WithBoundArgs<typeof HdsCodeBlockDescription, 'didInsertNode'>;
}
];
};
Element: HTMLDivElement;
}
export default class HdsCodeBlock extends Component<HdsCodeBlockSignature> {
private _prismCode;
private _isExpanded;
private _codeContentHeight;
private _codeContainerHeight;
private _titleId;
private _descriptionId;
private _preCodeId;
private _preCodeElement;
private _observer;
private _setUpCodeObserver;
private _setUpCodeBlockCode;
get ariaLabelledBy(): string | undefined;
get ariaDescribedBy(): string | undefined;
get code(): string;
get maxHeight(): string | undefined;
get showFooter(): boolean;
get language(): HdsCodeBlockLanguages | undefined;
get hasLineNumbers(): boolean;
get isStandalone(): boolean;
get hasLineWrapping(): boolean;
get copyButtonText(): HdsCopyButtonSignature['Args']['text'];
registerTitleElement: (element: HdsCodeBlockTitleSignature["Element"]) => void;
registerDescriptionElement: (element: HdsCodeBlockDescriptionSignature["Element"]) => void;
setPrismCode: (element: HTMLElement) => void;
private _updateCodeHeights;
private _updatePrismPlugins;
toggleExpanded: () => void;
private _addHighlightSrOnlyText;
get classNames(): string;
}