Skip to content

Major makeover#379

Merged
brucetony merged 2 commits into
developfrom
aesthetics
May 28, 2026
Merged

Major makeover#379
brucetony merged 2 commits into
developfrom
aesthetics

Conversation

@brucetony
Copy link
Copy Markdown
Collaborator

@brucetony brucetony commented May 28, 2026

Summary by CodeRabbit

  • New Features

    • Added CSS variable-based theming system for consistent color and spacing across the app.
  • Style

    • Refined typography, spacing, and padding throughout components for improved visual hierarchy.
    • Updated component styling for tables, cards, badges, and buttons with enhanced visual consistency.
    • Improved responsive design with better mobile-friendly layouts.
    • Refreshed theme colors and adjusted layout structure for the main page content.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 28, 2026

Warning

Review limit reached

@brucetony, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 32 minutes and 18 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: dd609cfd-5abc-48d1-ab7e-8022933ae9a7

📥 Commits

Reviewing files that changed from the base of the PR and between 6d21e7c and 3adb140.

📒 Files selected for processing (3)
  • app/assets/css/elements.css
  • app/components/data-stores/DetailedDataStoreTable.vue
  • app/components/landing/LandingButtons.vue
📝 Walkthrough

Walkthrough

This PR refactors the design system and component styling across the application. It introduces CSS variables for colors and spacing, standardizes units from pixels/em to rem-based values, migrates inline styles to scoped CSS classes, updates the Flame theme for dark/light modes, and restructures the landing page and analysis components with flexbox-based layouts.

Changes

Design System & Component Styling Refactor

Layer / File(s) Summary
CSS Variables and Global Styles
app/assets/css/main.css, app/assets/css/elements.css
Global html font-stack and :root CSS variables are established for page padding and PrimeVue color tokens. Heading defaults for h1/h2 are reset, and PrimeVue component overrides (card-title, menubar, tooltips) are refined.
Layout and Spacing Units Standardization
app/assets/css/preferences.css, app/assets/css/table.css, app/components/events/TagFilterSidePanel.vue, app/components/table/SearchBar.vue
Spacing units are converted from pixels and em to rem-based values across preference fields, table layouts, and component margins. Flexbox layout patterns are standardized with explicit gap and alignment rules.
Flame Theme Color Updates
app/assets/primevue/flame-preset.ts
Light theme surface.50 is adjusted to a warmer parchment color. Dark theme is refactored to use stone-based surface palette with updated primary color mappings for contrast, hover, active, and accent states.
App Layout and Global Components
app/app.vue, app/components/Footer.vue, app/components/header/MenuHeader.vue
App layout wraps NuxtPage in a main.page-content container with padding styles. Footer uses the new --page-padding-x CSS variable. MenuHeader adds brand styling for logo elements, removes empty template slot, and converts avatar margin to rem.
Landing Page Redesign
app/pages/index.vue, app/components/landing/LandingButtons.vue
Hero title/subtitle move from inline styles to CSS classes (brand-primary, welcome-subtitle, privacy-highlight). Layout converts from grid/row-col system to flexbox. Landing image updates to hospital_network.webp. Button container converts to 2-column grid with comprehensive a.get-started-btn styling, hover transitions, and dark-mode overrides. Responsive behavior adjusted for max-width 768px.
Analysis Table Content and Styling
app/components/analysis/AnalysesTable.vue
Import statements reorganized; getProjects request enhanced with fields filter. Template description content replaced: "Controls may be disabled" block removed and replaced with explicit "analysis start criteria" section listing Approval/Build/Distribution/Data Store checks via Tag/Badge components. Styles completely rewritten with flexbox-based layout rules for buttons, badges, description wrapping, and criteria spacing.
Analysis and Table Components Styling
app/components/analysis/ContainerCounter.vue, app/components/analysis/logs/AnalysisLogCardContent.vue, app/components/TableRowMetadata.vue, app/components/table/ApproveRejectButtons.vue, app/components/projects/ProjectProposalTable.vue
Multiple components migrate from inline styles to scoped CSS classes. ContainerCounter uses counter-card-title class. AnalysisLogCardContent refactors to fixed dark terminal theme with scoped selectors and em-to-rem conversions. TableRowMetadata switches Card border to metadata-card class. ApproveRejectButtons adds .approvalButtons flexbox container. ProjectProposalTable and SearchBar remove or clean up override styles.
Data Store Table Styling and Dialog
app/components/data-stores/DetailedDataStoreTable.vue
DataTable gains rounded-table CSS class. Delete confirmation dialog refactored to use semantic CSS hook classes (ds-confirm-popup, ds-confirm-message, ds-confirm-text) instead of inline styling. New scoped SCSS rules added for confirmation UI elements.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • PrivateAIM/node-ui#309: Also modifies components/header/MenuHeader.vue with overlapping changes to slot and styling configuration.

Poem

🐰 Hop along, the styles align,
Variables dance in one design,
From em and px to rem so bright,
Classes flow, margins feel just right.
Landing page springs forth anew,
Flexbox blooms in every view!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Major makeover' is vague and generic, using non-descriptive language that doesn't convey specific information about the extensive CSS/styling refactoring, theming changes, and component restructuring present in the changeset. Replace with a more descriptive title such as 'Refactor styling system with CSS variables and theme improvements' or 'Standardize component styling and add flame preset theming' to better communicate the primary changes.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch aesthetics

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (2)
app/components/header/MenuHeader.vue (1)

104-124: ⚡ Quick win

Brand styles are unused in the current template.

Line 104–124 introduce .brand-* classes, but there is no element in this component using them. Either wire these classes into a rendered brand block (likely in a Menubar slot) or remove this CSS to avoid dead styles.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/components/header/MenuHeader.vue` around lines 104 - 124, The CSS defines
unused classes (.brand-mark, .brand-icon, .brand-name) in MenuHeader.vue; either
remove them or wire them into the template: add a brand block (e.g., inside the
Menubar slot or header markup) using class="brand-mark" with a child element
using class="brand-icon" (for the SVG/icon component) and a sibling span with
class="brand-name" for the app name, ensuring any referenced icon component is
imported/registered so the new markup actually renders and the styles are
applied.
app/components/analysis/AnalysesTable.vue (1)

460-465: ⚡ Quick win

Move inline spacing to a CSS class for consistency.

Line 460 reintroduces inline styling (margin-bottom) in a PR that otherwise standardizes styling into classes. Please move this to a semantic class in the <style> block.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/components/analysis/AnalysesTable.vue` around lines 460 - 465, The span
in AnalysesTable.vue uses an inline style "margin-bottom: 1rem" which breaks the
project's class-based styling convention; remove the inline style, add a
semantic CSS class (e.g., .analyses-intro or .intro-text) to the component's
<style> block (scoped if used) with margin-bottom: 1rem, and apply that class to
the span element instead so spacing is handled by CSS rather than inline
styling.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/assets/css/elements.css`:
- Around line 45-53: The CSS forces tooltips to single-line via .p-tooltip {
white-space: nowrap !important; } which causes overflow on narrow viewports;
change .p-tooltip to allow wrapping (remove/replace white-space: nowrap
!important with white-space: normal) and constrain width instead (e.g. set a
responsive max-width like max-width: 90vw or a CSS variable) and update
.p-tooltip-text to support wrapping (remove width: auto !important if it
prevents wrapping or replace with max-width and word-break/overflow-wrap rules);
avoid using !important so these rules can be overridden by component state.

In `@app/components/data-stores/DetailedDataStoreTable.vue`:
- Around line 327-329: The scoped CSS rule .ds-confirm-popup in
DetailedDataStoreTable.vue won't reach PrimeVue's teleported overlay root for
the ConfirmPopup component; update the style so the selector targets the
teleported element (e.g., use a deep selector such as :deep(.ds-confirm-popup) {
width: 20rem; }) or move the rule into a global stylesheet, and ensure the
ConfirmPopup instance still includes class="ds-confirm-popup" so the rule
applies.

In `@app/components/landing/LandingButtons.vue`:
- Around line 66-70: The .get-started-btns grid is fixed to two columns and
becomes cramped on small screens; add a mobile fallback by adding a responsive
rule (e.g. an `@media` query for the mobile breakpoint) that changes
.get-started-btns' grid-template-columns to a single column (1fr) and optionally
adjust gap/padding for small viewports so the buttons stack vertically; update
the LandingButtons.vue styles where .get-started-btns is defined to include that
media query.

---

Nitpick comments:
In `@app/components/analysis/AnalysesTable.vue`:
- Around line 460-465: The span in AnalysesTable.vue uses an inline style
"margin-bottom: 1rem" which breaks the project's class-based styling convention;
remove the inline style, add a semantic CSS class (e.g., .analyses-intro or
.intro-text) to the component's <style> block (scoped if used) with
margin-bottom: 1rem, and apply that class to the span element instead so spacing
is handled by CSS rather than inline styling.

In `@app/components/header/MenuHeader.vue`:
- Around line 104-124: The CSS defines unused classes (.brand-mark, .brand-icon,
.brand-name) in MenuHeader.vue; either remove them or wire them into the
template: add a brand block (e.g., inside the Menubar slot or header markup)
using class="brand-mark" with a child element using class="brand-icon" (for the
SVG/icon component) and a sibling span with class="brand-name" for the app name,
ensuring any referenced icon component is imported/registered so the new markup
actually renders and the styles are applied.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d0ea074e-e9fd-43cb-bcca-4a864747d9a8

📥 Commits

Reviewing files that changed from the base of the PR and between 3f27708 and 6d21e7c.

⛔ Files ignored due to path filters (2)
  • app/assets/img/hospital_network.jpg is excluded by !**/*.jpg
  • app/assets/img/node_network.png is excluded by !**/*.png
📒 Files selected for processing (21)
  • app/app.vue
  • app/assets/css/elements.css
  • app/assets/css/main.css
  • app/assets/css/preferences.css
  • app/assets/css/table.css
  • app/assets/img/hospital_network.webp
  • app/assets/primevue/flame-preset.ts
  • app/components/Footer.vue
  • app/components/TableRowMetadata.vue
  • app/components/analysis/AnalysesTable.vue
  • app/components/analysis/ContainerCounter.vue
  • app/components/analysis/logs/AnalysisLogCardContent.vue
  • app/components/data-stores/DataStoreList.vue
  • app/components/data-stores/DetailedDataStoreTable.vue
  • app/components/events/TagFilterSidePanel.vue
  • app/components/header/MenuHeader.vue
  • app/components/landing/LandingButtons.vue
  • app/components/projects/ProjectProposalTable.vue
  • app/components/table/ApproveRejectButtons.vue
  • app/components/table/SearchBar.vue
  • app/pages/index.vue
💤 Files with no reviewable changes (1)
  • app/components/data-stores/DataStoreList.vue

Comment thread app/assets/css/elements.css
Comment thread app/components/data-stores/DetailedDataStoreTable.vue Outdated
Comment thread app/components/landing/LandingButtons.vue
@brucetony brucetony merged commit f2dbc52 into develop May 28, 2026
5 checks passed
@brucetony brucetony deleted the aesthetics branch May 28, 2026 12:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant