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;