diff --git a/src/tedi/components/content/text-group/index.ts b/src/tedi/components/content/text-group/index.ts
new file mode 100644
index 00000000..db9a2801
--- /dev/null
+++ b/src/tedi/components/content/text-group/index.ts
@@ -0,0 +1,2 @@
+export * from './text-group';
+export * from './text-group-list/text-group-list';
diff --git a/src/tedi/components/content/text-group/text-group-list/text-group-list.tsx b/src/tedi/components/content/text-group/text-group-list/text-group-list.tsx
new file mode 100644
index 00000000..92730b66
--- /dev/null
+++ b/src/tedi/components/content/text-group/text-group-list/text-group-list.tsx
@@ -0,0 +1,134 @@
+import cn from 'classnames';
+import React from 'react';
+
+import { BreakpointSupport, useBreakpointProps } from '../../../../helpers';
+import { Label } from '../../label/label';
+import styles from '../text-group.module.scss';
+
+type TextAlign = 'left' | 'right';
+
+type TextGroupListBreakpointProps =
+ | {
+ /**
+ * Type of text group layout.
+ */
+ type?: 'horizontal';
+ /**
+ * Alignment for the label text.
+ * @default 'left'
+ */
+ labelAlign?: TextAlign;
+ /**
+ * Width for the label column (e.g., `'200px'`, `'30%'`, or a `number`
+ * interpreted as a percent).
+ * @default 'auto'
+ */
+ labelWidth?: string | number;
+ }
+ | {
+ /**
+ * Type of text group layout.
+ */
+ type: 'vertical';
+ /**
+ * Alignment for the label text. Vertical layout only supports left
+ * alignment — pass `'right'` only with `type: 'horizontal'`.
+ * @default 'left'
+ */
+ labelAlign?: 'left';
+ /**
+ * Width for the label column (e.g., `'200px'`, `'30%'`, or a `number`
+ * interpreted as a percent).
+ * @default 'auto'
+ */
+ labelWidth?: string | number;
+ };
+
+export interface TextGroupListItem {
+ /**
+ * Label rendered as the `
` for this row. Strings are auto-wrapped in
+ * `