diff --git a/src/lib/components/divider/divider.component.ts b/src/lib/components/divider/divider.component.ts
new file mode 100644
index 00000000..20d634f5
--- /dev/null
+++ b/src/lib/components/divider/divider.component.ts
@@ -0,0 +1,26 @@
+import { Component, Input } from '@angular/core';
+import { Divider } from 'primeng/divider';
+
+export type DividerLayout = 'horizontal' | 'vertical';
+export type DividerType = 'solid' | 'dashed' | 'dotted';
+export type DividerAlign = 'left' | 'center' | 'right' | 'top' | 'bottom';
+
+@Component({
+ selector: 'divider',
+ standalone: true,
+ imports: [Divider],
+ template: `
+
+
+
+ `,
+})
+export class DividerComponent {
+ @Input() layout: DividerLayout = 'horizontal';
+ @Input() type: DividerType = 'solid';
+ @Input() align: DividerAlign = 'center';
+}
diff --git a/src/prime-preset/tokens/components/divider.ts b/src/prime-preset/tokens/components/divider.ts
new file mode 100644
index 00000000..de3e3581
--- /dev/null
+++ b/src/prime-preset/tokens/components/divider.ts
@@ -0,0 +1,34 @@
+/**
+ * Кастомная CSS-стилизация для компонента p-divider.
+ * Публикует extend-токены как CSS-переменные и применяет глобальные стили.
+ * Подключается в map-tokens.ts: `import { dividerCss } from './components/divider'`
+ */
+export const dividerCss = ({ dt }: { dt: (token: string) => string }): string => `
+ /* ─── Divider extend: публикуем кастомные переменные в :root ─── */
+ :root {
+ --p-divider-extend-content-gap: ${dt('divider.extend.content.gap')};
+ --p-divider-extend-icon-size: ${dt('divider.extend.iconSize')};
+ }
+
+ /* ─── Контент разделителя ─── */
+ .p-divider-content {
+ display: flex;
+ align-items: center;
+ gap: var(--p-divider-extend-content-gap);
+ font-family: ${dt('fonts.fontFamily.heading')};
+ font-size: ${dt('fonts.fontSize.200')};
+ font-weight: ${dt('fonts.fontWeight.demibold')};
+ }
+
+ .p-divider-content .ti {
+ font-size: var(--p-divider-extend-icon-size);
+ }
+
+ /* ─── Вертикальное выравнивание ─── */
+ .p-divider.p-divider-vertical.p-divider-top .p-divider-content {
+ align-items: flex-start;
+ }
+ .p-divider.p-divider-vertical.p-divider-bottom .p-divider-content {
+ align-items: flex-end;
+ }
+`;
diff --git a/src/stories/components/divider/divider.stories.ts b/src/stories/components/divider/divider.stories.ts
new file mode 100644
index 00000000..f5a2c62f
--- /dev/null
+++ b/src/stories/components/divider/divider.stories.ts
@@ -0,0 +1,176 @@
+import { Meta, StoryObj, moduleMetadata } from '@storybook/angular';
+import { DividerComponent } from '../../../lib/components/divider/divider.component';
+import { DividerWithContentComponent, WithContent as WithContentStory } from './examples/divider-with-content.component';
+import { DividerWithIconComponent, WithIcon as WithIconStory } from './examples/divider-with-icon.component';
+import { DividerAlignLeftComponent, AlignLeft as AlignLeftStory } from './examples/divider-align-left.component';
+
+const meta: Meta = {
+ title: 'Components/Panel/Divider',
+ component: DividerComponent,
+ tags: ['autodocs'],
+ decorators: [
+ moduleMetadata({
+ imports: [
+ DividerComponent,
+ DividerWithContentComponent,
+ DividerWithIconComponent,
+ DividerAlignLeftComponent,
+ ],
+ }),
+ ],
+ parameters: {
+ docs: {
+ description: {
+ component: `Разделитель для визуального разделения контента. Поддерживает горизонтальную и вертикальную ориентацию, различные стили линии и выравнивание.
+
+\`\`\`typescript
+import { DividerModule } from 'primeng/divider';
+\`\`\``,
+ },
+ },
+ designTokens: { prefix: '--p-divider' },
+ },
+ argTypes: {
+ layout: {
+ control: 'select',
+ options: ['horizontal', 'vertical'],
+ description: 'Ориентация разделителя',
+ table: {
+ category: 'Props',
+ defaultValue: { summary: 'horizontal' },
+ type: { summary: "'horizontal' | 'vertical'" },
+ },
+ },
+ type: {
+ control: 'select',
+ options: ['solid', 'dashed', 'dotted'],
+ description: 'Стиль линии разделителя',
+ table: {
+ category: 'Props',
+ defaultValue: { summary: 'solid' },
+ type: { summary: "'solid' | 'dashed' | 'dotted'" },
+ },
+ },
+ align: {
+ control: 'select',
+ options: ['left', 'center', 'right', 'top', 'bottom'],
+ description: 'Выравнивание контента внутри разделителя',
+ table: {
+ category: 'Props',
+ defaultValue: { summary: 'center' },
+ type: { summary: "'left' | 'center' | 'right' | 'top' | 'bottom'" },
+ },
+ },
+ },
+};
+
+const commonTemplate = `
+
+`;
+
+export default meta;
+type Story = StoryObj;
+
+// ── Default ───────────────────────────────────────────────────────────────────
+
+export const Default: Story = {
+ name: 'Default',
+ render: (args) => {
+ const parts: string[] = [];
+
+ if (args.layout && args.layout !== 'horizontal') parts.push(`layout="${args.layout}"`);
+ if (args.type && args.type !== 'solid') parts.push(`type="${args.type}"`);
+ if (args.align && args.align !== 'center') parts.push(`align="${args.align}"`);
+
+ const template = parts.length
+ ? ``
+ : ``;
+
+ return { props: args, template };
+ },
+ args: {
+ layout: 'horizontal',
+ type: 'solid',
+ align: 'center',
+ },
+ parameters: {
+ docs: {
+ description: {
+ story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.',
+ },
+ },
+ },
+};
+
+// ── WithContent ───────────────────────────────────────────────────────────────
+
+export const WithContent: Story = WithContentStory;
+
+// ── WithIcon ──────────────────────────────────────────────────────────────────
+
+export const WithIcon: Story = WithIconStory;
+
+// ── Vertical ──────────────────────────────────────────────────────────────────
+
+export const Vertical: Story = {
+ render: (args) => ({ props: args, template: commonTemplate }),
+ args: {
+ layout: 'vertical',
+ type: 'solid',
+ align: 'center',
+ },
+ parameters: {
+ docs: {
+ description: { story: 'Вертикальный разделитель для разделения контента по горизонтали.' },
+ source: {
+ code: ``,
+ },
+ },
+ },
+};
+
+// ── Type ──────────────────────────────────────────────────────────────────────
+
+export const TypeDashed: Story = {
+ name: 'Dashed',
+ render: (args) => ({ props: args, template: commonTemplate }),
+ args: {
+ layout: 'horizontal',
+ type: 'dashed',
+ align: 'center',
+ },
+ parameters: {
+ docs: {
+ description: { story: 'Разделитель с пунктирной линией.' },
+ source: {
+ code: ``,
+ },
+ },
+ },
+};
+
+export const TypeDotted: Story = {
+ name: 'Dotted',
+ render: (args) => ({ props: args, template: commonTemplate }),
+ args: {
+ layout: 'horizontal',
+ type: 'dotted',
+ align: 'center',
+ },
+ parameters: {
+ docs: {
+ description: { story: 'Разделитель с точечной линией.' },
+ source: {
+ code: ``,
+ },
+ },
+ },
+};
+
+// ── Align ─────────────────────────────────────────────────────────────────────
+
+export const AlignLeft: Story = AlignLeftStory;
diff --git a/src/stories/components/divider/examples/divider-align-left.component.ts b/src/stories/components/divider/examples/divider-align-left.component.ts
new file mode 100644
index 00000000..244e3d44
--- /dev/null
+++ b/src/stories/components/divider/examples/divider-align-left.component.ts
@@ -0,0 +1,50 @@
+import { Component } from '@angular/core';
+import { DividerComponent } from '../../../../lib/components/divider/divider.component';
+
+const template = `
+
+`;
+const styles = '';
+
+@Component({
+ selector: 'app-divider-align-left',
+ standalone: true,
+ imports: [DividerComponent],
+ template,
+ styles,
+})
+export class DividerAlignLeftComponent {}
+
+export const AlignLeft = {
+ render: () => ({
+ template: ``,
+ }),
+ parameters: {
+ docs: {
+ description: { story: 'Контент разделителя выровнен по левому краю.' },
+ source: {
+ language: 'ts',
+ code: `
+import { Component } from '@angular/core';
+import { DividerComponent } from '@cdek-it/angular-ui-kit';
+
+@Component({
+ selector: 'app-divider-align-left',
+ standalone: true,
+ imports: [DividerComponent],
+ template: \`
+
+ Отправитель
+
+ \`,
+})
+export class DividerAlignLeftComponent {}
+ `,
+ },
+ },
+ },
+};
diff --git a/src/stories/components/divider/examples/divider-with-content.component.ts b/src/stories/components/divider/examples/divider-with-content.component.ts
new file mode 100644
index 00000000..b1b0b80f
--- /dev/null
+++ b/src/stories/components/divider/examples/divider-with-content.component.ts
@@ -0,0 +1,50 @@
+import { Component } from '@angular/core';
+import { DividerComponent } from '../../../../lib/components/divider/divider.component';
+
+const template = `
+
+
+ Москва → Новосибирск
+
+
+`;
+const styles = '';
+
+@Component({
+ selector: 'app-divider-with-content',
+ standalone: true,
+ imports: [DividerComponent],
+ template,
+ styles,
+})
+export class DividerWithContentComponent {}
+
+export const WithContent = {
+ render: () => ({
+ template: ``,
+ }),
+ parameters: {
+ docs: {
+ description: { story: 'Разделитель с текстовым контентом по центру.' },
+ source: {
+ language: 'ts',
+ code: `
+import { Component } from '@angular/core';
+import { DividerComponent } from '@cdek-it/angular-ui-kit';
+
+@Component({
+ selector: 'app-divider-with-content',
+ standalone: true,
+ imports: [DividerComponent],
+ template: \`
+
+ Москва → Новосибирск
+
+ \`,
+})
+export class DividerWithContentComponent {}
+ `,
+ },
+ },
+ },
+};
diff --git a/src/stories/components/divider/examples/divider-with-icon.component.ts b/src/stories/components/divider/examples/divider-with-icon.component.ts
new file mode 100644
index 00000000..95d79871
--- /dev/null
+++ b/src/stories/components/divider/examples/divider-with-icon.component.ts
@@ -0,0 +1,50 @@
+import { Component } from '@angular/core';
+import { DividerComponent } from '../../../../lib/components/divider/divider.component';
+
+const template = `
+
+`;
+const styles = '';
+
+@Component({
+ selector: 'app-divider-with-icon',
+ standalone: true,
+ imports: [DividerComponent],
+ template,
+ styles,
+})
+export class DividerWithIconComponent {}
+
+export const WithIcon = {
+ render: () => ({
+ template: ``,
+ }),
+ parameters: {
+ docs: {
+ description: { story: 'Разделитель с иконкой.' },
+ source: {
+ language: 'ts',
+ code: `
+import { Component } from '@angular/core';
+import { DividerComponent } from '@cdek-it/angular-ui-kit';
+
+@Component({
+ selector: 'app-divider-with-icon',
+ standalone: true,
+ imports: [DividerComponent],
+ template: \`
+
+
+
+ \`,
+})
+export class DividerWithIconComponent {}
+ `,
+ },
+ },
+ },
+};