+ {({
+ className: highlightClassName,
+ style,
+ tokens,
+ getLineProps,
+ getTokenProps
+ }) => {
+ const renderedTokens =
+ canCollapse && collapsed ? tokens.slice(0, maxLines) : tokens;
+ return (
+
+ {renderedTokens.map((line, i) => (
+
+ {!hideLineNumbers && (
+ {i + 1}
+ )}
+
+ {line.map((token, key) => (
+
+ ))}
+
+
+ ))}
+
+ );
+ }}
+
+ );
+ }
+);
diff --git a/packages/raystack/components/code-block/code-block-language-select.tsx b/packages/raystack/components/code-block/code-block-language-select.tsx
new file mode 100644
index 000000000..fe2e2a225
--- /dev/null
+++ b/packages/raystack/components/code-block/code-block-language-select.tsx
@@ -0,0 +1,39 @@
+'use client';
+
+import { cx } from 'class-variance-authority';
+import { Language } from 'prism-react-renderer';
+import { ComponentProps, ElementRef, forwardRef } from 'react';
+import { Select } from '../select';
+import { SingleSelectProps } from '../select/select-root';
+import { useCodeBlockContext } from './code-block-root';
+import styles from './code-block.module.css';
+
+export const CodeBlockLanguageSelect = (props: SingleSelectProps) => {
+ const { value, setValue } = useCodeBlockContext();
+
+ const handleValueChange = (value: string) => {
+ setValue(value as Language);
+ };
+ return