New alerts banners#1525
Conversation
karinakharchenko
commented
Jan 22, 2026
- Update alert/banner styles with color-mix backgrounds (95% transparent) - Add warning type to banner component - Change colors: error (#B71C1C), warning (#F79008), info (#296EE9), success (#1B5E20) - Add 1px border and 4px border-radius to all alert types - Remove icon background, use theme color for icon - Reduce gap and left padding in alerts - Increase icon size from 18px to 24px - Add sticky alerts with 24px margins in user-settings - Add disabled button support to alerts - Add "AI generate" disabled button to settings info alert - Add white background for stroked buttons in error banner (light theme) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add 24px margins and adjusted sticky positioning for alerts - Applied to user-settings and db-table-row-edit components Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
…lors - Add alert margins to login and registration pages - Fix error alert/banner background: #F8E8E8 for light theme - Add backdrop blur for error in dark theme - Restructure error styles with proper media queries Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add 40% dark overlay on banner.svg for better contrast Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add background-color to banner-wrapper to prevent transparency issues - Adjust banner positioning with negative margin to eliminate gap under header - Add dark theme background color for content area Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…nko/rocketadmin into new-alerts-banners
There was a problem hiding this comment.
Pull request overview
Updates the frontend alert/banner UI to new visual designs and adjusts page layouts so alerts can be displayed consistently across many screens.
Changes:
- Redesign
app-alertandapp-bannerstyling (colors, borders, blur, dark/light scheme handling). - Add page-level CSS hooks (
--alert-margin,--top-margin) and update multiple pages to use them. - Minor layout refactors (spacing/margins) in several feature pages and dashboards.
Reviewed changes
Copilot reviewed 39 out of 39 changed files in this pull request and generated 27 comments.
Show a summary per file
| File | Description |
|---|---|
| frontend/src/styles.scss | Minor formatting/newline adjustment. |
| frontend/src/app/components/users/permissions-add-dialog/permissions-add-dialog.component.css | Adjust alert spacing for permissions dialog. |
| frontend/src/app/components/user-settings/user-settings.component.css | Set alert margin variable; switch page margin to --top-margin. |
| frontend/src/app/components/upgrade/upgrade.component.ts | Adds a demo-only testAlert property. |
| frontend/src/app/components/upgrade/upgrade.component.html | Layout refactor for plans header/table markup. |
| frontend/src/app/components/upgrade/upgrade.component.css | Introduce alert margin variable; use --top-margin. |
| frontend/src/app/components/ui-components/breadcrumbs/breadcrumbs.component.ts | Mark breadcrumbs component as standalone. |
| frontend/src/app/components/ui-components/banner/banner.component.css | Banner background/overlay redesign; theme-aware styles. |
| frontend/src/app/components/ui-components/alert/alert.component.css | Alert redesign + new sticky positioning/margin behavior. |
| frontend/src/app/components/skeletons/placeholder-company/placeholder-company.component.css | Use --top-margin for wrapper spacing. |
| frontend/src/app/components/secrets/secrets.component.css | Set alert margin variable; use --top-margin. |
| frontend/src/app/components/registration/registration.component.css | Add sticky positioning rules for registration alert. |
| frontend/src/app/components/payment-form/payment-form.component.ts | Adds a demo-only testAlert property. |
| frontend/src/app/components/payment-form/payment-form.component.css | Set alert margin variable; use --top-margin. |
| frontend/src/app/components/password-reset/password-reset.component.css | Set alert margin and absolute positioning for alert. |
| frontend/src/app/components/password-request/password-request.component.ts | Whitespace cleanup. |
| frontend/src/app/components/password-request/password-request.component.css | Set alert margin and absolute positioning for alert. |
| frontend/src/app/components/password-change/password-change.component.css | Set alert margin variable. |
| frontend/src/app/components/login/login.component.css | Set alert margin and absolute positioning for alert. |
| frontend/src/app/components/email-verification/email-verification.component.css | Set alert margin and absolute positioning for alert. |
| frontend/src/app/components/email-change/email-change.component.css | Set alert margin and absolute positioning for alert. |
| frontend/src/app/components/db-table-row-edit/db-table-row-edit.component.css | Adjust spacing; set alert margin variable. |
| frontend/src/app/components/dashboard/db-tables-data-source.ts | Leaves commented-out alert action stub. |
| frontend/src/app/components/dashboard/db-table-view/db-table-widgets/db-table-widgets.component.css | Adjust spacing; set alert margin variable. |
| frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.ts | Whitespace cleanup. |
| frontend/src/app/components/dashboard/db-table-view/db-table-settings/db-table-settings.component.css | Adjust spacing; set alert margin variable. |
| frontend/src/app/components/dashboard/db-table-view/db-table-actions/db-table-actions.component.css | Set alert margin variable and spacing tweaks. |
| frontend/src/app/components/dashboard/dashboard.component.html | Restructure alert placement inside dashboard alerts container. |
| frontend/src/app/components/dashboard/dashboard.component.css | Update alerts layout/gap and override alert positioning. |
| frontend/src/app/components/connections-list/connections-list.component.ts | Adds a demo-only testAlert property. |
| frontend/src/app/components/connections-list/connections-list.component.css | Set alert margin variable. |
| frontend/src/app/components/connection-settings/connection-settings.component.css | Use --top-margin; adjust banner alignment and alert margin var. |
| frontend/src/app/components/connect-db/connect-db.component.html | Add class hook for alert styling in connect-db warning. |
| frontend/src/app/components/connect-db/connect-db.component.css | Set alert margin variable; adjust connect page spacing. |
| frontend/src/app/components/company/company.component.ts | Whitespace cleanup. |
| frontend/src/app/components/company/company.component.css | Set alert margin variable; use --top-margin. |
| frontend/src/app/components/company-member-invitation/company-member-invitation.component.css | Set alert margin and absolute positioning for alert. |
| frontend/src/app/components/audit/audit.component.css | Layout tweaks and banner full-width alignment changes. |
| frontend/src/app/app.component.css | Introduce --top-margin; dark background tweak; commented-out CSS blocks. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| /* .connection-name { | ||
| position: absolute; | ||
| top: 6px; | ||
| left: 8px; | ||
| max-width: calc((100vw - 980px) / 2); | ||
| overflow: hidden; | ||
| text-overflow: ellipsis; | ||
| } | ||
| } */ | ||
|
|
||
| .tab-icon { | ||
| /* .tab-icon { | ||
| margin-right: 8px; | ||
| } | ||
| } */ |
There was a problem hiding this comment.
Commented-out CSS blocks were added (.connection-name, .tab-icon). If these styles are no longer needed, please delete them entirely; if they are needed, keep them enabled and update as required. Leaving large commented sections in the main stylesheet makes future maintenance harder.
| :host { | ||
| position: sticky; | ||
| top: var(--mat-toolbar-standard-height); | ||
| top: calc(var(--mat-toolbar-standard-height) + 24px); | ||
| display: block; | ||
| margin: var(--alert-margin); |
There was a problem hiding this comment.
:host styles (sticky positioning + margin: var(--alert-margin)) apply even when no alert is rendered, because the component host always exists while only the inner .alert div is gated by *ngIf. This can create unintended layout spacing on pages that always include <app-alert></app-alert>. Consider moving the positioning/margins onto the .alert element (which only exists when currentAlert is truthy), or add a host class/HostBinding like has-alert and scope these styles to that class. Also add a fallback for --alert-margin (e.g. var(--alert-margin, 0)) to avoid invalidating the margin property when it’s unset.
| @@ -1,3 +1,7 @@ | |||
| :host app-alert:not(:empty) { | |||
There was a problem hiding this comment.
Selector app-alert:not(:empty) is not a reliable way to detect “alert is showing” with Angular components (the host typically contains comment nodes even when the *ngIf inside the component is false), so this rule will effectively apply all the time. If the intent is to set spacing only when an alert is displayed, use a dedicated class on the <app-alert> element and/or rely on the alert component itself to only apply margins when it renders content.
| :host app-alert:not(:empty) { | |
| :host app-alert { |
| :host app-alert:not(:empty) { | ||
| --alert-margin: 24px; | ||
|
|
||
| position: absolute; | ||
| top: var(--mat-toolbar-standard-height); | ||
| width: calc(100% - 48px); | ||
| } |
There was a problem hiding this comment.
Selector app-alert:not(:empty) is not a reliable way to detect “alert is showing” with Angular components (the host typically contains comment nodes even when the *ngIf inside the component is false), so this rule will effectively apply all the time. Prefer a dedicated class on <app-alert> (or an input/HostBinding on the alert component) instead of :empty/:not(:empty).
| @@ -1,3 +1,7 @@ | |||
| :host app-alert:not(:empty) { | |||
There was a problem hiding this comment.
Selector app-alert:not(:empty) is not a reliable way to detect “alert is showing” with Angular components (the host typically contains comment nodes even when the *ngIf inside the component is false), so this rule will effectively apply all the time. Prefer a dedicated class on <app-alert> (or an input/HostBinding on the alert component) instead of :empty/:not(:empty).
| :host app-alert:not(:empty) { | |
| :host app-alert { |
| @@ -1,6 +1,10 @@ | |||
| :host app-alert:not(:empty) { | |||
There was a problem hiding this comment.
Selector app-alert:not(:empty) is not a reliable way to detect “alert is showing” with Angular components (the host typically contains comment nodes even when the *ngIf inside the component is false), so this rule will effectively apply all the time. Prefer a dedicated class on <app-alert> (or an input/HostBinding on the alert component) instead of :empty/:not(:empty).
| :host app-alert:not(:empty) { | |
| :host app-alert { |
| :host app-alert:not(:empty) { | ||
| --alert-margin: 24px; | ||
|
|
||
| position: absolute; | ||
| top: var(--mat-toolbar-standard-height); | ||
| width: calc(100% - 48px); | ||
| } |
There was a problem hiding this comment.
Selector app-alert:not(:empty) is not a reliable way to detect “alert is showing” with Angular components (the host typically contains comment nodes even when the *ngIf inside the component is false), so this rule will effectively apply all the time. Prefer a dedicated class on <app-alert> (or an input/HostBinding on the alert component) instead of :empty/:not(:empty).
| @@ -1,8 +1,12 @@ | |||
| :host app-alert:not(:empty) { | |||
There was a problem hiding this comment.
Selector app-alert:not(:empty) is not a reliable way to detect “alert is showing” with Angular components (the host typically contains comment nodes even when the *ngIf inside the component is false), so this rule will effectively apply all the time. Prefer a dedicated class on <app-alert> (or an input/HostBinding on the alert component) instead of :empty/:not(:empty).
| :host app-alert:not(:empty) { | |
| :host app-alert { |
| :host app-alert:not(:empty) { | ||
| --alert-margin: 0; | ||
|
|
||
| top: 0; | ||
| margin-bottom: 16px; | ||
| } |
There was a problem hiding this comment.
Selector app-alert:not(:empty) is not a reliable way to detect “alert is showing” with Angular components (the host typically contains comment nodes even when the *ngIf inside the component is false), so this rule will effectively apply all the time. Prefer a dedicated class on <app-alert> (or an input/HostBinding on the alert component) instead of :empty/:not(:empty).
| public testAlert = { | ||
| type: 'info' as const, | ||
| message: 'This is a demo alert for the payment form.' | ||
| }; | ||
|
|
There was a problem hiding this comment.
testAlert is introduced but never used in the template. Please remove it before merge, or wire it into the template behind a clear demo-only condition/flag so it doesn’t become dead code in production.
| public testAlert = { | |
| type: 'info' as const, | |
| message: 'This is a demo alert for the payment form.' | |
| }; |