@@ -45,6 +48,9 @@
@if (footerLinks(); as footer) {
+ @if (footer.length === 0) {
+
+ }
@for (item of footer; track item.id) {
diff --git a/src/app/features/project-editor/sections/navigation-section.component.ts b/src/app/features/project-editor/sections/navigation-section.component.ts
index f43652e..361d0ef 100644
--- a/src/app/features/project-editor/sections/navigation-section.component.ts
+++ b/src/app/features/project-editor/sections/navigation-section.component.ts
@@ -10,12 +10,13 @@ import { SectionCardComponent } from '../../../shared/ui/section-card/section-ca
import { ToggleComponent } from '../../../shared/ui/toggle/toggle.component';
import { LocaleTabsComponent } from '../../../shared/ui/locale-tabs/locale-tabs.component';
import { SelectComponent, SelectOption } from '../../../shared/ui/select/select.component';
+import { EmptyStateComponent } from '../../../shared/ui/empty-state/empty-state.component';
import { ContentManagementFacade } from '../../content-management/facade/content-management.facade';
@Component({
selector: 'app-project-editor-navigation-section',
standalone: true,
- imports: [FormsModule, TranslatePipe, ButtonComponent, InputComponent, SectionCardComponent, ToggleComponent, LocaleTabsComponent, SelectComponent],
+ imports: [FormsModule, TranslatePipe, ButtonComponent, InputComponent, SectionCardComponent, ToggleComponent, LocaleTabsComponent, SelectComponent, EmptyStateComponent],
templateUrl: './navigation-section.component.html',
styleUrls: ['./section.shared.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
diff --git a/src/app/features/project-editor/sections/theme-section.component.html b/src/app/features/project-editor/sections/theme-section.component.html
index 9428427..114fee5 100644
--- a/src/app/features/project-editor/sections/theme-section.component.html
+++ b/src/app/features/project-editor/sections/theme-section.component.html
@@ -8,6 +8,9 @@
[error]="fieldError('theme.palette.primary')"
[usedBy]="[('builder.usedByButtons' | translate), ('builder.usedByLinks' | translate), ('builder.usedByBadges' | translate)]"
[usedByLabel]="'builder.usedByLabel' | translate"
+ [showReset]="isFieldModified('theme.palette.primary')"
+ [resetLabel]="'builder.resetField' | translate"
+ (resetClicked)="resetField('theme.palette.primary')"
>
diff --git a/src/app/features/project-editor/sections/theme-section.component.ts b/src/app/features/project-editor/sections/theme-section.component.ts
index e932399..7942740 100644
--- a/src/app/features/project-editor/sections/theme-section.component.ts
+++ b/src/app/features/project-editor/sections/theme-section.component.ts
@@ -38,6 +38,10 @@ export class ProjectEditorThemeSectionComponent {
const messageKey = this.facade.fieldError(key);
return messageKey ? this.translate.t(messageKey) : null;
};
+ readonly isFieldModified = (key: string): boolean => this.facade.modifiedFields().has(key);
+ resetField(key: string): void {
+ this.facade.resetField(key);
+ }
readonly themeModeOptions: ThemeModeOption[] = [
{ value: 'light', labelKey: 'builder.themeModeLight', descKey: 'builder.themeModeLightDesc' },
diff --git a/src/app/i18n/en.ts b/src/app/i18n/en.ts
index 61ac50f..31557d2 100644
--- a/src/app/i18n/en.ts
+++ b/src/app/i18n/en.ts
@@ -880,6 +880,16 @@ export const en: Translations = {
usedByLinks: 'Links',
usedByBadges: 'Badges',
usedByPageBackground: 'Page background',
+ resetField: 'Reset',
+ propertySearchLabel: 'Search settings',
+ propertySearchPlaceholder: 'Search settings…',
+ propertySearchResultsLabel: 'Search results',
+ propertySearchNoResults: 'No matching settings.',
+ unsavedChangesPanelTitle: 'Unsaved changes',
+ navigationHeaderEmptyTitle: 'No header links yet',
+ navigationHeaderEmptyDesc: 'Add a link so customers can navigate from the header.',
+ navigationFooterEmptyTitle: 'No footer links yet',
+ navigationFooterEmptyDesc: 'Add a link so customers can navigate from the footer.',
addBlockHint: 'Add a block to your homepage:',
dragToReorder: 'Drag to reorder',
blockRemoveConfirm: 'Remove this block from the homepage?',
diff --git a/src/app/i18n/hy.ts b/src/app/i18n/hy.ts
index 5775e5e..4ae271e 100644
--- a/src/app/i18n/hy.ts
+++ b/src/app/i18n/hy.ts
@@ -880,6 +880,16 @@ export const hy: Translations = {
usedByLinks: 'Հղումներ',
usedByBadges: 'Կրծքանշաններ',
usedByPageBackground: 'Էջի ֆոն',
+ resetField: 'Վերականգնել',
+ propertySearchLabel: 'Որոնել կարգավորումներ',
+ propertySearchPlaceholder: 'Որոնել կարգավորումներ…',
+ propertySearchResultsLabel: 'Որոնման արդյունքներ',
+ propertySearchNoResults: 'Համընկնումներ չեն գտնվել։',
+ unsavedChangesPanelTitle: 'Չպահպանված փոփոխություններ',
+ navigationHeaderEmptyTitle: 'Վերնագրում հղումներ դեռ չկան',
+ navigationHeaderEmptyDesc: 'Ավելացրեք հղում, որպեսզի գնորդները կարողանան նավարկել վերնագրից։',
+ navigationFooterEmptyTitle: 'Ստորագրում հղումներ դեռ չկան',
+ navigationFooterEmptyDesc: 'Ավելացրեք հղում, որպեսզի գնորդները կարողանան նավարկել ստորագրից։',
addBlockHint: 'Ավելացնել բլոկ գլխավոր էջում.',
dragToReorder: 'Քաշեք՝ կարգը փոխելու համար',
blockRemoveConfirm: 'Հեռացնե՞լ այս բլոկը գլխավոր էջից։',
diff --git a/src/app/i18n/ru.ts b/src/app/i18n/ru.ts
index 29fbb8c..c75771c 100644
--- a/src/app/i18n/ru.ts
+++ b/src/app/i18n/ru.ts
@@ -880,6 +880,16 @@ export const ru: Translations = {
usedByLinks: 'Ссылки',
usedByBadges: 'Значки',
usedByPageBackground: 'Фон страницы',
+ resetField: 'Сбросить',
+ propertySearchLabel: 'Поиск настроек',
+ propertySearchPlaceholder: 'Поиск настроек…',
+ propertySearchResultsLabel: 'Результаты поиска',
+ propertySearchNoResults: 'Совпадений не найдено.',
+ unsavedChangesPanelTitle: 'Несохранённые изменения',
+ navigationHeaderEmptyTitle: 'В шапке пока нет ссылок',
+ navigationHeaderEmptyDesc: 'Добавьте ссылку, чтобы покупатели могли перемещаться из шапки сайта.',
+ navigationFooterEmptyTitle: 'В подвале пока нет ссылок',
+ navigationFooterEmptyDesc: 'Добавьте ссылку, чтобы покупатели могли перемещаться из подвала сайта.',
addBlockHint: 'Добавить блок на главную страницу:',
dragToReorder: 'Перетащите, чтобы изменить порядок',
blockRemoveConfirm: 'Удалить этот блок с главной страницы?',
diff --git a/src/app/i18n/translations.ts b/src/app/i18n/translations.ts
index 44b4fd3..2ff5508 100644
--- a/src/app/i18n/translations.ts
+++ b/src/app/i18n/translations.ts
@@ -881,6 +881,16 @@ export interface Translations {
usedByLinks: string;
usedByBadges: string;
usedByPageBackground: string;
+ resetField: string;
+ propertySearchLabel: string;
+ propertySearchPlaceholder: string;
+ propertySearchResultsLabel: string;
+ propertySearchNoResults: string;
+ unsavedChangesPanelTitle: string;
+ navigationHeaderEmptyTitle: string;
+ navigationHeaderEmptyDesc: string;
+ navigationFooterEmptyTitle: string;
+ navigationFooterEmptyDesc: string;
blockRemoveConfirm: string;
blockHero: string;
blockHeroDesc: string;
diff --git a/src/app/shared/ui/form-field/form-field.component.html b/src/app/shared/ui/form-field/form-field.component.html
index bd8aa46..eae8a6b 100644
--- a/src/app/shared/ui/form-field/form-field.component.html
+++ b/src/app/shared/ui/form-field/form-field.component.html
@@ -1,11 +1,19 @@
@if (label()) {
-