diff --git a/src/app/features/content-management/components/static-pages-editor.component.html b/src/app/features/content-management/components/static-pages-editor.component.html
index a8f4ec2..e08627d 100644
--- a/src/app/features/content-management/components/static-pages-editor.component.html
+++ b/src/app/features/content-management/components/static-pages-editor.component.html
@@ -1,4 +1,4 @@
-
+
@if (fieldError('staticPages'); as msg) {
{{ msg }}
}
@@ -94,4 +94,4 @@
}
-
+
diff --git a/src/app/features/content-management/components/static-pages-editor.component.ts b/src/app/features/content-management/components/static-pages-editor.component.ts
index 324e7f7..b4de642 100644
--- a/src/app/features/content-management/components/static-pages-editor.component.ts
+++ b/src/app/features/content-management/components/static-pages-editor.component.ts
@@ -11,6 +11,7 @@ import { ButtonComponent } from '../../../shared/ui/button/button.component';
import { InputComponent } from '../../../shared/ui/input/input.component';
import { FormFieldComponent } from '../../../shared/ui/form-field/form-field.component';
import { EmptyStateComponent } from '../../../shared/ui/empty-state/empty-state.component';
+import { SectionCardComponent } from '../../../shared/ui/section-card/section-card.component';
import { SelectComponent, SelectOption } from '../../../shared/ui/select/select.component';
import { ToggleComponent } from '../../../shared/ui/toggle/toggle.component';
import { MediaPickerComponent } from '../../../shared/media/media-picker/media-picker.component';
@@ -33,6 +34,7 @@ const ALL_LOCALES_FILTER = 'all';
InputComponent,
FormFieldComponent,
EmptyStateComponent,
+ SectionCardComponent,
SelectComponent,
ToggleComponent,
MediaPickerComponent,
diff --git a/src/app/features/project-editor/components/save-bar/project-editor-save-bar.component.scss b/src/app/features/project-editor/components/save-bar/project-editor-save-bar.component.scss
index 1850341..98a3297 100644
--- a/src/app/features/project-editor/components/save-bar/project-editor-save-bar.component.scss
+++ b/src/app/features/project-editor/components/save-bar/project-editor-save-bar.component.scss
@@ -6,20 +6,20 @@
align-items: flex-start;
gap: 1rem;
padding: 0.75rem 1rem;
- background: var(--surface, #fff);
- border-top: 1px solid var(--border, #ddd);
+ background: var(--bg-primary, #fff);
+ border-top: 1px solid var(--border-color, #ddd);
z-index: 5;
}
.project-editor-save-bar-dirty {
- color: var(--warning, #b45309);
+ color: var(--warning-color, #b45309);
margin-left: 0.5rem;
}
.project-editor-save-bar-issues {
margin: 0.25rem 0 0;
padding-left: 1.25rem;
- color: var(--danger, #b91c1c);
+ color: var(--error-color, #b91c1c);
li.is-warning {
color: var(--warning-color, #b45309);
@@ -37,7 +37,7 @@
}
.project-editor-save-bar-saved-at {
- color: var(--muted-foreground, #6b7280);
+ color: var(--text-secondary, #6b7280);
margin-left: 0.5rem;
font-size: 0.85em;
}
@@ -51,7 +51,7 @@
justify-content: space-between;
align-items: center;
padding: 0.5rem 1rem;
- background: var(--info-bg, #eff6ff);
- color: var(--info, #1d4ed8);
- border-bottom: 1px solid var(--border, #ddd);
+ background: color-mix(in srgb, var(--info-color, #1d4ed8) 12%, var(--bg-primary, #eff6ff));
+ color: var(--info-color, #1d4ed8);
+ border-bottom: 1px solid var(--border-color, #ddd);
}
diff --git a/src/app/features/project-editor/pages/project-editor-page.component.html b/src/app/features/project-editor/pages/project-editor-page.component.html
index c83ff1a..4ad42ac 100644
--- a/src/app/features/project-editor/pages/project-editor-page.component.html
+++ b/src/app/features/project-editor/pages/project-editor-page.component.html
@@ -84,7 +84,7 @@
@if (canResetActiveSection()) {
-
+
{{ 'builder.resetSection' | translate }}
}
@switch (activeSection()) {
diff --git a/src/app/features/project-editor/pages/project-editor-page.component.scss b/src/app/features/project-editor/pages/project-editor-page.component.scss
index 26bf1a3..f1d48fd 100644
--- a/src/app/features/project-editor/pages/project-editor-page.component.scss
+++ b/src/app/features/project-editor/pages/project-editor-page.component.scss
@@ -277,32 +277,6 @@
justify-content: flex-end;
}
-.project-editor-section-actions button {
- color: #b91c1c;
- background: transparent;
- border: 1px solid #d3dad9;
- border-radius: var(--radius-sm, 8px);
- padding: 6px 12px;
- cursor: pointer;
- transition: background-color var(--transition-fast, 120ms ease), border-color var(--transition-fast, 120ms ease);
-
- &:hover {
- background: rgba(185, 28, 28, 0.08);
- border-color: #b91c1c;
- }
-
- &:focus-visible {
- outline: 2px solid #b91c1c;
- outline-offset: 2px;
- }
-}
-
-@media (prefers-reduced-motion: reduce) {
- .project-editor-section-actions button {
- transition: none;
- }
-}
-
.project-editor-empty {
min-height: 240px;
display: grid;
diff --git a/src/app/features/project-editor/pages/project-editor-page.component.ts b/src/app/features/project-editor/pages/project-editor-page.component.ts
index 9122ba6..74ff896 100644
--- a/src/app/features/project-editor/pages/project-editor-page.component.ts
+++ b/src/app/features/project-editor/pages/project-editor-page.component.ts
@@ -19,6 +19,7 @@ import { TranslatePipe } from '../../../i18n/translate.pipe';
import { TranslateService } from '../../../i18n/translate.service';
import { LanguageService } from '../../../services/language.service';
import { IconComponent } from '../../../shared/ui/icon/icon.component';
+import { ButtonComponent } from '../../../shared/ui/button/button.component';
import { StaticPagesEditorComponent } from '../../content-management/components/static-pages-editor.component';
import { ProjectEditorSaveBarComponent } from '../components/save-bar/project-editor-save-bar.component';
import { EDITOR_SECTION_BOOTSTRAP_KEYS, ProjectEditorSectionId } from '../models/project-editor.model';
@@ -64,6 +65,7 @@ const SECTION_LABEL_KEYS: Record = {
ProjectEditorPreviewSectionComponent,
ProjectEditorSaveBarComponent,
IconComponent,
+ ButtonComponent,
],
templateUrl: './project-editor-page.component.html',
styleUrls: ['./project-editor-page.component.scss'],
diff --git a/src/app/features/project-editor/sections/footer-section.component.scss b/src/app/features/project-editor/sections/footer-section.component.scss
index 8f84aba..03e4fda 100644
--- a/src/app/features/project-editor/sections/footer-section.component.scss
+++ b/src/app/features/project-editor/sections/footer-section.component.scss
@@ -14,7 +14,7 @@
color: var(--text-secondary, #6b7280);
font-size: var(--font-size-lg, 1rem);
- &:hover { color: var(--danger-color, #c0392b); }
+ &:hover { color: var(--error-color, #c0392b); }
}
.footer-columns {
@@ -54,7 +54,7 @@
color: var(--text-secondary, #6b7280);
font-size: var(--font-size-lg, 1rem);
- &:hover { color: var(--danger-color, #c0392b); }
+ &:hover { color: var(--error-color, #c0392b); }
}
.footer-column__links {
diff --git a/src/app/features/project-editor/sections/homepage-section.component.html b/src/app/features/project-editor/sections/homepage-section.component.html
index 4f99f90..dbf3d5f 100644
--- a/src/app/features/project-editor/sections/homepage-section.component.html
+++ b/src/app/features/project-editor/sections/homepage-section.component.html
@@ -1,4 +1,8 @@
-@if (homePage()) {
+@if (!homePage()) {
+
+
+
+} @else {
@if (fieldError('pages'); as msg) {
diff --git a/src/app/features/project-editor/sections/homepage-section.component.scss b/src/app/features/project-editor/sections/homepage-section.component.scss
index 395a8c3..51ac05a 100644
--- a/src/app/features/project-editor/sections/homepage-section.component.scss
+++ b/src/app/features/project-editor/sections/homepage-section.component.scss
@@ -63,7 +63,7 @@
}
.block-card__visible-toggle { display: flex; align-items: center; gap: 6px; font-size: var(--font-size-sm, 0.8125rem); }
-.block-card__remove:hover { color: var(--danger-color, #c0392b); }
+.block-card__remove:hover { color: var(--error-color, #c0392b); }
.block-catalog { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--border-color, #d3dad9); }
diff --git a/src/app/features/project-editor/sections/homepage-section.component.ts b/src/app/features/project-editor/sections/homepage-section.component.ts
index 5069354..e4c6aa6 100644
--- a/src/app/features/project-editor/sections/homepage-section.component.ts
+++ b/src/app/features/project-editor/sections/homepage-section.component.ts
@@ -7,6 +7,7 @@ import { TranslateService } from '../../../i18n/translate.service';
import { InputComponent } from '../../../shared/ui/input/input.component';
import { SectionCardComponent } from '../../../shared/ui/section-card/section-card.component';
import { ToggleComponent } from '../../../shared/ui/toggle/toggle.component';
+import { EmptyStateComponent } from '../../../shared/ui/empty-state/empty-state.component';
import { HomepageOverviewComponent } from './homepage/homepage-overview.component';
import { SectionConfig } from '../../../shared/models/config';
import { IconComponent } from '../../../shared/ui/icon/icon.component';
@@ -43,7 +44,7 @@ const BLOCK_BY_TYPE = new Map(BLOCK_CATALOG.map(entry => [entry.type, entry]));
@Component({
selector: 'app-project-editor-homepage-section',
standalone: true,
- imports: [DragDropModule, FormsModule, TranslatePipe, InputComponent, SectionCardComponent, ToggleComponent, HomepageOverviewComponent, IconComponent],
+ imports: [DragDropModule, FormsModule, TranslatePipe, InputComponent, SectionCardComponent, ToggleComponent, EmptyStateComponent, HomepageOverviewComponent, IconComponent],
templateUrl: './homepage-section.component.html',
styleUrls: ['./section.shared.scss', './homepage-section.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
diff --git a/src/app/features/project-editor/sections/navigation-section.component.html b/src/app/features/project-editor/sections/navigation-section.component.html
index b45c83f..0f89fd0 100644
--- a/src/app/features/project-editor/sections/navigation-section.component.html
+++ b/src/app/features/project-editor/sections/navigation-section.component.html
@@ -16,8 +16,8 @@
{{ labelOf(item) }}
-
↑
-
↓
+
↑
+
↓
{{ 'builder.removeLink' | translate }}
@@ -50,8 +50,8 @@
{{ labelOf(item) }}
-
↑
-
↓
+
↑
+
↓
{{ 'builder.removeLink' | translate }}
diff --git a/src/app/features/project-editor/sections/section.shared.scss b/src/app/features/project-editor/sections/section.shared.scss
index b5c1e4a..465b3cd 100644
--- a/src/app/features/project-editor/sections/section.shared.scss
+++ b/src/app/features/project-editor/sections/section.shared.scss
@@ -59,7 +59,7 @@ select {
border: 1px solid var(--border-color, #d3dad9);
border-radius: 10px;
font: inherit;
- background: #fff;
+ background: var(--bg-primary, #fff);
}
input[type='checkbox'] {
@@ -93,7 +93,7 @@ input[type='color'] {
border: 1px solid var(--border-color, #d3dad9);
border-radius: var(--radius-md, 12px);
padding: 12px;
- background: #fbfcfc;
+ background: var(--bg-secondary, #fbfcfc);
}
.editor-actions {
@@ -105,8 +105,8 @@ input[type='color'] {
button {
min-height: 42px;
border-radius: 10px;
- border: 1px solid #497671;
- background: #497671;
+ border: 1px solid var(--primary-color, #497671);
+ background: var(--primary-color, #497671);
color: #fff;
padding: 0 14px;
font-weight: var(--font-weight-bold, 700);
@@ -128,7 +128,7 @@ button {
}
&:focus-visible {
- outline: 2px solid #497671;
+ outline: 2px solid var(--primary-color, #497671);
outline-offset: 2px;
}
@@ -141,17 +141,17 @@ button {
}
button.secondary {
- background: #fff;
- color: #1e3c38;
+ background: var(--bg-primary, #fff);
+ color: var(--text-primary, #1e3c38);
border-color: var(--border-color, #d3dad9);
&:hover {
background: var(--bg-secondary, #f5f5f5);
- border-color: #497671;
+ border-color: var(--primary-color, #497671);
}
&:focus-visible {
- outline-color: #497671;
+ outline-color: var(--primary-color, #497671);
}
}
@@ -167,7 +167,7 @@ button.secondary {
.editor-error {
margin: 0;
- color: #991b1b;
+ color: var(--error-color, #991b1b);
}
.preview-validation {
diff --git a/src/app/features/project-editor/sections/widgets-section.component.html b/src/app/features/project-editor/sections/widgets-section.component.html
index bedc6fb..5ffa643 100644
--- a/src/app/features/project-editor/sections/widgets-section.component.html
+++ b/src/app/features/project-editor/sections/widgets-section.component.html
@@ -1,4 +1,8 @@
-@if (widgets().length > 0) {
+@if (widgets().length === 0) {
+
+
+
+} @else {
@if (fieldError('pages'); as msg) {
{{ msg }}
diff --git a/src/app/features/project-editor/sections/widgets-section.component.scss b/src/app/features/project-editor/sections/widgets-section.component.scss
index 685cce3..c8c2468 100644
--- a/src/app/features/project-editor/sections/widgets-section.component.scss
+++ b/src/app/features/project-editor/sections/widgets-section.component.scss
@@ -72,8 +72,8 @@
}
.widget-card__remove:hover:not(:disabled) {
- border-color: var(--error-color) !important;
- color: var(--error-color) !important;
+ border-color: var(--error-color);
+ color: var(--error-color);
}
.widget-card__visible-toggle {
@@ -113,5 +113,5 @@
color: var(--text-secondary, #6b7280);
font-size: var(--font-size-lg, 1rem);
- &:hover { color: var(--danger-color, #c0392b); }
+ &:hover { color: var(--error-color, #c0392b); }
}
diff --git a/src/app/features/project-editor/sections/widgets-section.component.ts b/src/app/features/project-editor/sections/widgets-section.component.ts
index 39b011e..a05b91c 100644
--- a/src/app/features/project-editor/sections/widgets-section.component.ts
+++ b/src/app/features/project-editor/sections/widgets-section.component.ts
@@ -7,6 +7,7 @@ import { InputComponent } from '../../../shared/ui/input/input.component';
import { ButtonComponent } from '../../../shared/ui/button/button.component';
import { SectionCardComponent } from '../../../shared/ui/section-card/section-card.component';
import { ToggleComponent } from '../../../shared/ui/toggle/toggle.component';
+import { EmptyStateComponent } from '../../../shared/ui/empty-state/empty-state.component';
import { WidgetConfig } from '../../../shared/models/config';
import { IconComponent } from '../../../shared/ui/icon/icon.component';
import { AppIconName } from '../../../shared/ui/icon/icon-registry';
@@ -31,7 +32,7 @@ const WIDGET_LABEL_KEYS: Record = {
@Component({
selector: 'app-project-editor-widgets-section',
standalone: true,
- imports: [FormsModule, TranslatePipe, InputComponent, ButtonComponent, SectionCardComponent, ToggleComponent, IconComponent],
+ imports: [FormsModule, TranslatePipe, InputComponent, ButtonComponent, SectionCardComponent, ToggleComponent, EmptyStateComponent, IconComponent],
templateUrl: './widgets-section.component.html',
styleUrls: ['./section.shared.scss', './widgets-section.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
diff --git a/src/app/i18n/en.ts b/src/app/i18n/en.ts
index c66d733..c0dc9d5 100644
--- a/src/app/i18n/en.ts
+++ b/src/app/i18n/en.ts
@@ -858,6 +858,10 @@ export const en: Translations = {
widgetRemove: 'Remove',
widgetRemoveConfirm: 'Remove this section from the homepage?',
widgetAdvancedSettings: 'Advanced settings',
+ widgetsEmptyTitle: 'No widgets yet',
+ widgetsEmptyDesc: 'Add a block to your homepage in the Homepage tab and its widget settings will appear here.',
+ homepageEmptyTitle: 'No homepage configured',
+ homepageEmptyDesc: 'Your marketplace does not have a homepage set up yet. Contact support to get one created.',
homepageBlocksHint: 'These are the blocks customers see on your homepage, top to bottom. Drag the handle to reorder.',
addBlockHint: 'Add a block to your homepage:',
dragToReorder: 'Drag to reorder',
diff --git a/src/app/i18n/hy.ts b/src/app/i18n/hy.ts
index 4409f14..0c39c99 100644
--- a/src/app/i18n/hy.ts
+++ b/src/app/i18n/hy.ts
@@ -858,6 +858,10 @@ export const hy: Translations = {
widgetRemove: 'Հեռացնել',
widgetRemoveConfirm: 'Հեռացնե՞լ այս բլոկը գլխավոր էջից։',
widgetAdvancedSettings: 'Լրացուցիչ կարգավորումներ',
+ widgetsEmptyTitle: 'Դեռ վիջեթներ չկան',
+ widgetsEmptyDesc: 'Ավելացրեք բլոկ գլխավոր էջում «Գլխավոր էջ» ներդիրից, և դրա կարգավորումները կհայտնվեն այստեղ։',
+ homepageEmptyTitle: 'Գլխավոր էջը կարգավորված չէ',
+ homepageEmptyDesc: 'Ձեր խանութն դեռ չունի կարգավորված գլխավոր էջ։ Ստեղծելու համար դիմեք աջակցության թիմին։',
homepageBlocksHint: 'Սրանք են բլոկները, որոնք գնորդները տեսնում են գլխավոր էջում վերևից ներքև։ Քաշեք բռնակից՝ կարգը փոխելու համար։',
addBlockHint: 'Ավելացնել բլոկ գլխավոր էջում.',
dragToReorder: 'Քաշեք՝ կարգը փոխելու համար',
diff --git a/src/app/i18n/ru.ts b/src/app/i18n/ru.ts
index e46e597..1f2a585 100644
--- a/src/app/i18n/ru.ts
+++ b/src/app/i18n/ru.ts
@@ -858,6 +858,10 @@ export const ru: Translations = {
widgetRemove: 'Удалить',
widgetRemoveConfirm: 'Удалить этот блок с главной страницы?',
widgetAdvancedSettings: 'Дополнительные настройки',
+ widgetsEmptyTitle: 'Пока нет виджетов',
+ widgetsEmptyDesc: 'Добавьте блок на главную страницу во вкладке «Главная», и его настройки появятся здесь.',
+ homepageEmptyTitle: 'Главная страница не настроена',
+ homepageEmptyDesc: 'В вашем магазине пока не настроена главная страница. Обратитесь в поддержку, чтобы её создать.',
homepageBlocksHint: 'Это блоки, которые покупатели видят на главной странице сверху вниз. Перетаскивайте за ручку, чтобы изменить порядок.',
addBlockHint: 'Добавить блок на главную страницу:',
dragToReorder: 'Перетащите, чтобы изменить порядок',
diff --git a/src/app/i18n/translations.ts b/src/app/i18n/translations.ts
index 6bc1690..c63b3be 100644
--- a/src/app/i18n/translations.ts
+++ b/src/app/i18n/translations.ts
@@ -857,6 +857,10 @@ export interface Translations {
widgetRemove: string;
widgetRemoveConfirm: string;
widgetAdvancedSettings: string;
+ widgetsEmptyTitle: string;
+ widgetsEmptyDesc: string;
+ homepageEmptyTitle: string;
+ homepageEmptyDesc: string;
homepageBlocksHint: string;
addBlockHint: string;
dragToReorder: string;