-<div class="user">
- <img [src]="user.accountAvatarUrl" alt="Avatar" />
+<h1 class="visually-hidden" i18n>Settings</h1>
- <div class="user-info">
- <div class="user-info-names">
- <div class="user-info-display-name">{{ user.account.displayName }}</div>
- <div class="user-info-username">{{ user.username }}</div>
- </div>
- <div i18n class="user-info-followers">{{ user.account?.followersCount }} subscribers</div>
+<div class="row"> <!-- preview -->
+ <div class="col-12 col-lg-4 col-xl-3"></div>
+
+ <div class="col-12 col-lg-8 col-xl-9">
+ <my-actor-avatar-edit [actor]="user.account" (avatarChange)="onAvatarChange($event)" (avatarDelete)="onAvatarDelete()"></my-actor-avatar-edit>
</div>
</div>
-<div class="button-file">
- <span i18n>Change your avatar</span>
- <input #avatarfileInput type="file" name="avatarfile" id="avatarfile" [accept]="avatarExtensions" (change)="changeAvatar()" />
+<div class="row mt-3"> <!-- profile settings grid -->
+ <div class="col-12 col-lg-4 col-xl-3">
+ <h2 i18n class="account-title">PROFILE SETTINGS</h2>
+ </div>
+
+ <div class="col-12 col-lg-8 col-xl-9">
+
+ <my-user-quota [user]="user" [userInformationLoaded]="userInformationLoaded"></my-user-quota>
+
+ <my-account-profile [user]="user" [userInformationLoaded]="userInformationLoaded"></my-account-profile>
+ </div>
</div>
-<div i18n class="file-max-size">(extensions: {{ avatarExtensions }}, max size: {{ maxAvatarSize | bytes }})</div>
-<div class="user-quota">
- <span i18n class="user-quota-label">Video quota:</span> {{ userVideoQuotaUsed | bytes: 0 }} / {{ userVideoQuota }}
+<div class="row mt-5"> <!-- interface grid -->
+ <div class="col-12 col-lg-4 col-xl-3">
+ <h2 i18n class="account-title">INTERFACE</h2>
+ </div>
+
+ <div class="col-12 col-lg-8 col-xl-9">
+ <my-user-interface-settings [user]="user" [userInformationLoaded]="userInformationLoaded"></my-user-interface-settings>
+ </div>
</div>
-<ng-template [ngIf]="user && user.account">
- <div i18n class="account-title">Profile</div>
- <my-account-profile [user]="user"></my-account-profile>
-</ng-template>
+<div class="row mt-5"> <!-- video settings grid -->
+ <div class="col-12 col-lg-4 col-xl-3">
+ <div class="anchor" id="video-settings"></div> <!-- video settings anchor -->
+ <h2 i18n class="account-title">VIDEO SETTINGS</h2>
+ </div>
+
+ <div class="col-12 col-lg-8 col-xl-9">
+ <my-user-video-settings [user]="user" [userInformationLoaded]="userInformationLoaded"></my-user-video-settings>
+ </div>
+</div>
-<div i18n class="account-title">Password</div>
-<my-account-change-password></my-account-change-password>
+<div class="row mt-5"> <!-- notifications grid -->
+ <div class="col-12 col-lg-4 col-xl-3">
+ <div class="anchor" id="notifications"></div> <!-- notifications anchor -->
+ <h2 i18n class="account-title">NOTIFICATIONS</h2>
+ </div>
-<div i18n class="account-title">Video settings</div>
-<my-account-video-settings [user]="user"></my-account-video-settings>
+ <div class="col-12 col-lg-8 col-xl-9">
+ <my-account-notification-preferences [user]="user" [userInformationLoaded]="userInformationLoaded"></my-account-notification-preferences>
+ </div>
+</div>
+
+<div class="row mt-5" *ngIf="user.pluginAuth === null"> <!-- password grid -->
+ <div class="col-12 col-lg-4 col-xl-3">
+ <h2 i18n class="account-title">PASSWORD</h2>
+ </div>
+
+ <div class="col-12 col-lg-8 col-xl-9">
+ <my-account-change-password></my-account-change-password>
+ </div>
+</div>
+
+<div class="row mt-5"> <!-- email grid -->
+ <div class="col-12 col-lg-4 col-xl-3">
+ <h2 i18n class="account-title">EMAIL</h2>
+ </div>
+
+ <div class="col-12 col-lg-8 col-xl-9">
+ <my-account-change-email></my-account-change-email>
+ </div>
+</div>
+
+<div class="row mt-5"> <!-- danger zone grid -->
+ <div class="col-12 col-lg-4 col-xl-3">
+ <h2 i18n class="account-title account-title-danger">DANGER ZONE</h2>
+ </div>
+
+ <div class="col-12 col-lg-8 col-xl-9">
+ <my-account-danger-zone [user]="user"></my-account-danger-zone>
+ </div>
+</div>