Skip to content

feat: responsive DefaultPageLayout first pass#2188

Merged
limetech merged 104 commits into
masterfrom
feat/responsive-default-page-layout
May 22, 2025
Merged

feat: responsive DefaultPageLayout first pass#2188
limetech merged 104 commits into
masterfrom
feat/responsive-default-page-layout

Conversation

@zackspear

@zackspear zackspear commented May 9, 2025

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • Style

    • Wrapped numerous tables in scrollable container divs to enhance layout and readability.
    • Grouped action buttons inside inline-block spans across many forms for consistent styling and spacing.
    • Removed redundant and theme-specific CSS rules; unified textarea and panel styling; improved responsive design and viewport handling.
    • Modernized user list and panel styles with flexbox and theme-aware backgrounds.
    • Simplified and consolidated syslinux and other component styles.
    • Improved semantic HTML and accessibility by properly wrapping checkboxes, labels, and grouping related controls.
    • Enhanced WireGuard and related pages with flexbox layouts and better element grouping.
    • Standardized button and input groupings for consistent inline-block styling.
  • Refactor

    • Improved HTML and PHP templates with better indentation, multiline formatting, and semantic grouping without logic changes.
    • Enhanced dynamic page title processing to safely support variable substitution.
    • Wrapped panel generation output inside container elements for improved structure.
    • Standardized PHP opening tags and code formatting across multiple plugin pages.
    • Reorganized boot menu and syslinux markup for better semantics and accessibility.
    • Simplified and modernized markup for various configuration pages including network, Docker, SMB, and WireGuard.
  • Chores

    • Clarified plugin installation and configuration form labels; grouped inputs for better usability.
    • Removed unused CSS files and legacy style rules for cleaner stylesheets.
    • Adjusted select element classes for improved styling consistency.
    • Added utility CSS classes for flexbox and layout control.
    • Cleaned up inline styles and removed unnecessary empty elements.
    • Updated theme color mappings for improved consistency.

zackspear added 19 commits May 8, 2025 15:54
- Added new styles for #displaybox to enhance layout across themes.
- Removed complex old media queries for better clarity and maintenance.
- Changed viewport meta tag from fixed width to device-width for better adaptability across devices.
- Changed media query breakpoint from 1281px to 1921px to enhance layout responsiveness for larger screens.
- Updated #menu and .nav-tile styles for better adaptability on mobile and larger screens.
- Adjusted footer positioning based on screen size to maintain layout integrity.
- Improved overall responsiveness by implementing media queries for different screen sizes.
- Added flexbox properties to div.title for improved layout and alignment of child elements.
- Updated span.status to display as inline-block and added margin for better spacing.
- Commented out the styles for table.tablesorter.shift to prevent margin adjustments that may affect layout
- Changed .nav-tile to use flexbox with a column direction for better alignment of child elements.
- Updated .usage-bar positioning to relative and adjusted width for enhanced layout consistency.
…tency

- Commented out the margin-right property in span.status.vhshift to prevent potential layout issues.
- Added flexbox properties to body for improved layout structure.
- Adjusted div.title.shift by commenting out z-index for better stacking context.
- Updated footer positioning and z-index for consistent layout across screen sizes.
- Modified styles for a.list and .tabs for better alignment and spacing.
…ability

- Reformatted the table structure in ArrayDevices.page for better clarity.
- Changed PHP short tags to standard syntax for consistency.
- Enhanced the layout by separating the header and body sections for better organization.
- Removed commented-out styles for .Theme--black and .Theme--white to streamline the CSS.
- Eliminated redundant margin-top adjustment in span.status.vhshift for improved layout clarity.
- Commented out height property in body to prevent layout shift on scrollable pages.
- Restored z-index in div.title.shift for improved stacking context.
- Removed unnecessary media query styles to streamline the CSS.
- Added margin reset for <p> elements containing links, scripts, and styles to improve spacing consistency.
- Commented out unnecessary styles in div.last to clean up the CSS.
- Introduced a new CSS variable for grid column width to enhance flexibility.
- Adjusted grid layout for better responsiveness on larger screens with a media query.
- Adjusted grid layout to have 1 column by default for mobile screens.
- Implemented 2 columns for medium screens and 3 columns for larger screens using media queries for enhanced responsiveness.
…layout on smaller screen sizes

- Wrapped tables in a <div> with class "TableContainer" for better responsiveness.
- Ensured consistent styling and structure across ArrayDevices.page, BootDevice.page, DiskList.page, ShareList.page, DockerContainers.page, Plugins.page, and VMMachines.page.
- Updated CSS to support new table container classes for enhanced layout control.
@coderabbitai

coderabbitai Bot commented May 9, 2025

Copy link
Copy Markdown
Contributor

"""

Walkthrough

This update refactors the HTML and CSS structure of various pages and components to enhance layout flexibility and readability. Tables are now wrapped in scrollable containers, flexbox and grid layouts are introduced for responsiveness, and several legacy or redundant styles are removed or replaced. Some PHP templates now evaluate embedded variables in page titles dynamically without using eval(). Numerous UI form buttons and related controls are wrapped in inline-block spans for consistent layout. No changes are made to core logic or control flow.

Changes

File(s) Change Summary
emhttp/plugins/dynamix.docker.manager/DockerContainers.page
emhttp/plugins/dynamix.vm.manager/VMMachines.page
Wrapped main tables in <div class="TableContainer--widest"> for horizontal scrolling; reformatted markup for readability.
emhttp/plugins/dynamix.plugin.manager/Plugins.page
emhttp/plugins/dynamix/BootDevice.page
emhttp/plugins/dynamix/DiskList.page
emhttp/plugins/dynamix/ShareList.page
emhttp/plugins/dynamix/DeviceAttributes.page
emhttp/plugins/dynamix/DeviceIdentify.page
emhttp/plugins/dynamix/NotificationsArchive.page
Wrapped tables in <div class="TableContainer">; improved indentation and formatting for clarity.
emhttp/plugins/dynamix/ArrayDevices.page Refactored PHP/HTML for readability; wrapped table in .TableContainer; clearer block syntax for conditionals; removed empty <div>.
emhttp/plugins/dynamix/UserList.page Refactored markup for readability; grouped user sections in .Panels; changed "no users" output to a <p> element; improved indentation; removed redundant clearing div.
emhttp/plugins/dynamix/include/DefaultPageLayout.php Changed viewport meta tag to use width=device-width, initial-scale=1.0 for responsive design.
emhttp/plugins/dynamix/include/DefaultPageLayout/MainContent.php Added processTitle function to safely substitute embedded PHP variable references in page titles without eval; generatePanel updated to use processTitle; generatePanels now wraps output in <div class="Panels">; no other logic changes.
emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabless.php Removed includePageStylesheets($page) call; page-specific stylesheets no longer included during rendering; page titles now processed with processTitle to evaluate embedded variables safely before rendering.
emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php Page tab titles now use processTitle on raw title strings to allow embedded variable substitution safely; tab panel <section> elements updated with new CSS class and removed inline display:none style; no other logic changes.
emhttp/plugins/dynamix/sheets/DashStats.css Removed padding from .frame and commented out .last padding; grid layout now uses mobile-first columns with media queries for 2/3 columns at breakpoints.
emhttp/plugins/dynamix/sheets/UserList.css Replaced simple .info span rule with comprehensive, modular flexbox-based .user-list styling; added theme modifiers and improved interaction states; removed legacy .Theme--black and .Theme--white rules.
emhttp/plugins/dynamix/styles/default-base.css Modernized layout with flexbox/grid; removed fixed widths; added scrollable table containers .TableContainer and .TableContainer--widest; introduced .Panels flex container; updated responsive behaviors; removed legacy styles and float-based layouts; adjusted tab and status styles; restructured menu and footer for responsiveness; added new container #displaybox.
emhttp/plugins/dynamix/styles/default-dynamix.css Commented out margin-top rules for table.tablesorter.shift globally and in sidebar theme; disables those margin adjustments without deleting code.
emhttp/plugins/dynamix.plugin.manager/sheets/Plugins.css Removed theme-specific margin-top for .status.vhshift; kept only line-height rule for table tbody td.
emhttp/plugins/dynamix.plugin.manager/PluginInstall.page Replaced plain text labels with emphasized paragraphs; wrapped input fields and related elements in div containers for better structure; no logic changes.
emhttp/plugins/dynamix/include/SmartInfo.php Wrapped disk capabilities table in <div class="TableContainer">; fixed div closing tags for proper HTML structure in NVMe section; no logic changes.
emhttp/plugins/dynamix/nchan/device_list Changed CSS class of select elements in array_slots() and cache_slots() functions from "narrow" to "slots-amount"; no other changes.
emhttp/plugins/dynamix/Eth0.page Standardized PHP tags and formatting; added braces and consistent indentation; removed redundant div and adjusted HTML spacing; no logic or functional changes.
emhttp/plugins/dynamix/NetworkExtra.page Standardized PHP tags and indentation; replaced inline styles with CSS classes; removed redundant attributes and empty div; no logic changes.
emhttp/plugins/dynamix/sheets/Eth0.css Removed .uplift margin-top style from .Theme--black, .Theme--white; no other style changes.
emhttp/plugins/dynamix/sheets/NetworkExtra.css Removed theme-specific margin-right styles for .status.vhshift; retained only margin-left for certain spans.
emhttp/plugins/dynamix.vm.manager/VMSettings.page Standardized PHP tags and formatting; improved clarity in boot environment parsing; added missing breaks; no logic changes.
emhttp/plugins/dynamix/DateTime.page Standardized PHP tags; added loop to populate hardware clock info per interface; reformatted for readability; no logic changes besides new hardware clock detection.
emhttp/plugins/dynamix/ManagementAccess.page Reformatted functions and main code for consistent spacing, braces, and indentation; no logic or control flow changes.
emhttp/plugins/dynamix.vm.manager/include/VMedit.php Removed inline style for dynamic top margin on status span containing checkboxes; no other changes.
emhttp/plugins/dynamix/include/ThemeHelper.php Reordered foreground color mappings for "black" and "azure" themes in FGCOLORS constant; swapped their color associations; no logic changes.
emhttp/plugins/dynamix/Apps.page
emhttp/plugins/dynamix/Console.page
emhttp/plugins/dynamix/EthX.page
emhttp/plugins/dynamix/FTP.page
emhttp/plugins/dynamix/FlashInfo.page
emhttp/plugins/dynamix/Grub.page
emhttp/plugins/dynamix/Identification.page
emhttp/plugins/dynamix/MoverSettings.page
emhttp/plugins/dynamix/NetworkRules.page
emhttp/plugins/dynamix/PHPsettings.page
emhttp/plugins/dynamix/ParityCheck.page
emhttp/plugins/dynamix/SMBActiveDirectory.page
emhttp/plugins/dynamix/SMBExtras.page
emhttp/plugins/dynamix/SMBWorkGroup.page
emhttp/plugins/dynamix/SMBsettings.page
emhttp/plugins/dynamix/SecurityNFS.page
emhttp/plugins/dynamix/SecuritySMB.page
emhttp/plugins/dynamix/Selftest.page
emhttp/plugins/dynamix/ShareEdit.page
emhttp/plugins/dynamix/Syslinux.page
emhttp/plugins/dynamix/SyslogSettings.page
emhttp/plugins/dynamix/TrimSettings.page
emhttp/plugins/dynamix/UserAdd.page
emhttp/plugins/dynamix/WG0.page
emhttp/plugins/dynamix/WGX.page
emhttp/plugins/dynamix/Wireless.page
emhttp/plugins/dynamix/Confirmations.page
emhttp/plugins/dynamix/DiskSettings.page
emhttp/plugins/dynamix/DisplaySettings.page
emhttp/plugins/dynamix/NFS.page
emhttp/plugins/dynamix/NotificationAgents.page
emhttp/plugins/dynamix/Notifications.page
emhttp/plugins/dynamix/OutgoingProxy.page
emhttp/plugins/dynamix/PowerMode.page
emhttp/plugins/dynamix/RoutingTable.page
emhttp/plugins/dynamix/ShareSettings.page
emhttp/plugins/dynamix/SmtpSettings.page
emhttp/plugins/dynamix/UserEdit.page
emhttp/plugins/dynamix.docker.manager/DockerSettings.page
emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php
Wrapped various groups of adjacent input buttons (submit and done/cancel) inside <span class="inline-block"> containers across many pages for consistent inline layout; minor markup restructuring such as replacing plain text labels with emphasized paragraphs or wrapping checkboxes and labels in spans; no changes to logic or event handling.
emhttp/plugins/dynamix/Language.page Wrapped checkboxes and buttons in inline-block spans with added non-breaking spaces for spacing; replaced some plain text with emphasized paragraphs; no logic changes.
emhttp/plugins/dynamix/sheets/PHPsettings.css Removed #screenlog margin-left style; added .php-settings-description class with max-width and centered margin.
emhttp/plugins/dynamix/Diagnostics.page Restructured controls: wrapped checkbox in label; grouped buttons inside inline-block span; added line break for separation; no logic changes.
emhttp/plugins/dynamix/InstallKey.page Removed inline width style on input; wrapped install button in inline-block span with spacing; no logic changes.
emhttp/plugins/dynamix/NewConfig.page Added markdown="1" to form; restructured label and select for inline formatting; wrapped checkbox in label; grouped submit and button in inline-block span; no logic changes.
emhttp/plugins/dynamix/sheets/NewConfig.css Deleted entire CSS file removing styles for span.indent.
emhttp/plugins/dynamix/SysDrivers.page Wrapped drivers table inside .TableContainer div replacing <pre>; moved buttons into separate div; reformatted search input; no logic changes.
emhttp/plugins/dynamix/Browse.page Wrapped file browsing table inside .TableContainer; removed shift class from table; reformatted <thead> and <th> elements for clarity; no logic changes.
emhttp/plugins/dynamix/CPUisol.page Wrapped CPU isolation table inside .TableContainer; reformatted markup for readability; no logic changes.
emhttp/plugins/dynamix/CPUpin.page Wrapped CPU pinning table inside .TableContainer; reformatted markup for readability; no logic changes.
emhttp/plugins/dynamix/CPUvms.page Wrapped VM CPU pinning table inside .TableContainer; no logic changes.
emhttp/plugins/dynamix/sheets/Browse.css Removed margin-top: -30px from div.autoheight; deleted .Theme--sidebar block resetting this margin; no other changes.
emhttp/plugins/dynamix/sheets/BrowseButton.css Removed margin-top: -30px from div.autoheight; deleted .Theme--sidebar block resetting this margin; no other changes.
emhttp/plugins/dynamix/include/PageBuilder.php Modified tab_title function to wrap returned icon and title HTML in a flexbox <span> container for consistent layout; no logic changes.
emhttp/plugins/dynamix/sheets/WG0.css Major cleanup: removed many custom properties and legacy float-based styles; replaced .preset layout with flexbox; removed fixed widths and margins; commented out minor icon spacing; simplified overall styles.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Browser
    participant Server

    User->>Browser: Request page (e.g., DockerContainers, ArrayDevices)
    Browser->>Server: HTTP GET request
    Server-->>Browser: HTML with tables wrapped in scrollable containers and updated CSS
    Browser->>Browser: Render page with responsive layout and flexbox/grid styles
    User->>Browser: Interact with UI (scroll tables, click buttons)
    Browser->>Server: Submit forms, trigger actions
    Server-->>Browser: Processed responses with consistent layout and styling
Loading

Possibly related PRs

Suggested reviewers

  • elibosley
  • ljm42

Poem

In fields of code, the tables grow,
Wrapped in containers, neat in a row.
Flex and grid now set the pace,
Responsive layouts fill the space.
Old styles hop away, new ones appear—
A rabbit’s delight, the view is clear!
🐇✨
"""


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (1)
emhttp/plugins/dynamix/UserList.page (1)

34-38: Duplicate title block — see previous comment
This shares the same structure (and potential icon-class conflict) as the Management Access title above. Please refer to the feedback on lines 18–22.

🧹 Nitpick comments (8)
emhttp/plugins/dynamix/sheets/DashStats.css (2)

21-23: Remove commented-out legacy rules
Leaving dead code commented out can clutter the stylesheet. If the .last padding-bottom is no longer needed, consider removing these lines completely or adding a clear TODO explaining why they're retained.


364-366: Enhance grid gaps
You’re currently using column-gap: 20px; but no row gap. For clarity and consistency, consider using the shorthand gap: 20px; (or row-gap + column-gap) so both axes are addressed.

 div.grid {
-   display: grid;
-   grid-template-columns: 1fr; /* 1 column by default (mobile) */
-   column-gap: 20px;
+   display: grid;
+   grid-template-columns: 1fr;
+   gap: 20px;
 }
emhttp/plugins/dynamix/UserList.page (3)

18-22: Consistent title block markup
Both title blocks use <div class="title">…<span class="left"> but you’ve also assigned class="title" to the <i> icon element. That risks conflicting with the container styles in CSS. Consider using a more specific icon class (e.g. icon-title) to avoid unintended styling side effects.


23-33: Remove inline style="text-align:center"
The .user-list CSS now handles centering. Inline styles should be removed in favor of your stylesheet to keep separation of concerns and reduce redundancy.


43-45: Avoid PHP short open tags
You’re using <? instead of <?php. If short_open_tag is ever disabled, this will break. Please switch to full <?php tags for portability.

emhttp/plugins/dynamix/ArrayDevices.page (1)

24-51: Wrap table in scrollable container
Excellent use of the new .TableContainer to enable horizontal scrolling. This aligns perfectly with your CSS additions in default-base.css.

Tip: If you find the disk-status table needs a larger minimum width than 900px (it has 10 columns), consider using .TableContainer--widest which sets min-width: 1345px.

emhttp/plugins/dynamix/styles/default-base.css (2)

10-14: Review commented-out body styles
The block disabling height: 100vh; display: flex; overflow-y: auto; is understandable to prevent layout shifts, but consider removing it or adding a clear comment explaining why it’s needed for future maintainability.


1114-1115: Remove or document commented rule
The commented margin-right: -9px; in .status.vhshift should either be removed or accompanied by an explanatory comment to clarify why it’s retained.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 98f1c72 and a8f4320.

📒 Files selected for processing (16)
  • emhttp/plugins/dynamix.docker.manager/DockerContainers.page (1 hunks)
  • emhttp/plugins/dynamix.plugin.manager/Plugins.page (1 hunks)
  • emhttp/plugins/dynamix.plugin.manager/sheets/Plugins.css (0 hunks)
  • emhttp/plugins/dynamix.vm.manager/VMMachines.page (1 hunks)
  • emhttp/plugins/dynamix/ArrayDevices.page (1 hunks)
  • emhttp/plugins/dynamix/BootDevice.page (1 hunks)
  • emhttp/plugins/dynamix/DiskList.page (1 hunks)
  • emhttp/plugins/dynamix/ShareList.page (1 hunks)
  • emhttp/plugins/dynamix/UserList.page (1 hunks)
  • emhttp/plugins/dynamix/include/DefaultPageLayout.php (1 hunks)
  • emhttp/plugins/dynamix/include/DefaultPageLayout/MainContent.php (1 hunks)
  • emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabless.php (0 hunks)
  • emhttp/plugins/dynamix/sheets/DashStats.css (2 hunks)
  • emhttp/plugins/dynamix/sheets/UserList.css (1 hunks)
  • emhttp/plugins/dynamix/styles/default-base.css (14 hunks)
  • emhttp/plugins/dynamix/styles/default-dynamix.css (2 hunks)
💤 Files with no reviewable changes (2)
  • emhttp/plugins/dynamix.plugin.manager/sheets/Plugins.css
  • emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabless.php
🔇 Additional comments (38)
emhttp/plugins/dynamix/include/DefaultPageLayout.php (1)

83-83: Great viewport meta tag update for responsive design

Updating the viewport meta tag from fixed width to device-width is a critical first step for responsive web design. This change allows the content to adapt to various screen sizes rather than being fixed at 1300px width.

emhttp/plugins/dynamix/ShareList.page (1)

36-51: Good implementation of scrollable table container

Wrapping the table in a .TableContainer div enables horizontal scrolling for responsive behavior while maintaining the table's structure. The table formatting improvements also enhance code readability.

emhttp/plugins/dynamix/DiskList.page (1)

18-33: Consistent table container implementation

Correctly implements the same pattern of wrapping tables in .TableContainer divs for horizontal scrolling on smaller screens. The consistent approach across files will help maintain a unified responsive experience.

emhttp/plugins/dynamix.vm.manager/VMMachines.page (1)

489-505: Appropriate use of wider container for complex table

The VM machines table contains more columns of data, so using the .TableContainer--widest class variant is appropriate here. This maintains consistency with the responsive approach while accommodating the wider content needs.

emhttp/plugins/dynamix/styles/default-dynamix.css (2)

467-469: Appropriate removal of fixed margin adjustment for tables

Commenting out this CSS rule removes the hard-coded negative top margin on tables with the .tablesorter.shift class. This change supports the move toward container-based layouts that handle positioning and responsiveness more effectively.


1538-1540: Appropriate removal of fixed margin adjustment in sidebar theme

Similar to the global rule, commenting out this CSS rule for the sidebar theme context improves layout consistency. This aligns with the modern approach of using container elements rather than fixed margins for positioning.

emhttp/plugins/dynamix.plugin.manager/Plugins.page (1)

155-169: Improved table structure with container wrapper

The table has been appropriately wrapped in a TableContainer div and reformatted with proper indentation. This change enables:

  • Horizontal scrolling on smaller screens
  • Consistent styling through the container class
  • Better code maintainability with clean, indented markup

This follows modern web development best practices for responsive table layouts.

emhttp/plugins/dynamix.docker.manager/DockerContainers.page (1)

31-49: Improved table structure with wider container wrapper

The Docker containers table has been wrapped in a TableContainer--widest div, which is appropriate given the multiple columns and potential for wider content. The code is also properly formatted with consistent indentation, improving readability and maintainability.

This change aligns with the responsive layout improvements throughout the UI.

emhttp/plugins/dynamix/BootDevice.page (1)

22-44: Improved table structure and PHP conditional formatting

This change includes two good improvements:

  1. Wrapping the table in a TableContainer div for consistent responsive behavior
  2. Reformatting the PHP conditional to use cleaner, more readable syntax with proper indentation

These changes improve both the frontend rendering and code maintainability.

emhttp/plugins/dynamix/include/DefaultPageLayout/MainContent.php (1)

88-88: Enhanced panel layout with container wrapper

The returned panel HTML is now properly wrapped in a <div class="Panels"> container. This enables:

  • Using flex layouts instead of legacy float-based approaches
  • Consistent spacing and alignment between panels
  • Better responsive behavior across different screen sizes

This is a clean, non-intrusive improvement that maintains the function's behavior while enhancing the structure of its output.

emhttp/plugins/dynamix/sheets/DashStats.css (2)

367-371: Mobile-first 2-column breakpoint
The media query at min-width: 768px correctly switches to a two-column layout, aligning with the rest of the plugin. This matches your mobile-first approach.


372-376: Wide-screen 3-column breakpoint
The min-width: 1600px rule to expand to three columns is appropriate for large displays. Good match with your overall responsive strategy.

emhttp/plugins/dynamix/UserList.page (3)

39-42: Approve conditional no-user message
Switching to an HTML <p> for the empty-state message is semantically correct and will pick up your global paragraph styles.


47-52: Verify URL encoding logic
You wrap urlencode() inside htmlspecialchars(), which may double-encode certain characters. Please confirm that the resulting URL is correct in all cases (e.g., names with spaces or special characters).


58-59: Form buttons integration
Using standard <input type="submit"> and <input type="button"> is fine, and your CSS will style these appropriately. No changes needed here.

emhttp/plugins/dynamix/sheets/UserList.css (4)

1-13: Solid base for .user-list
The flexbox column layout, centered alignment, and size constraints look great. This will give each user card a consistent appearance.


15-29: Scoped .info span positioning
Your nested rule for &.info span is clear, but remember that plain .css files require a preprocessor or PostCSS plugin to handle nesting. Please verify your build pipeline supports the CSS Nesting spec or tools like postcss-nested.


31-35: Avatar sizing rules
Constrained max-width and fixed height ensure consistent icon display. Good use of responsive units.


38-47: Theme override for sidebar
The .Theme--sidebar .user-list background and border overrides with a hover state are well scoped. Nice alignment with the theming system.

emhttp/plugins/dynamix/styles/default-base.css (19)

32-36: Use of :has() selector
The p:has(> link), p:has(> script), p:has(> style) rules rely on the CSS relational pseudo-class, which still has inconsistent browser support. Please verify that your target browsers fully support :has().


439-443: Flex layout for div.title
Switching the title block to a flex row with aligned items modernizes the header and pairs nicely with your updated markup.


451-453: Remove top margin for consecutive titles
Suppressing margin on successive .title elements prevents unwanted gaps and supports stacked headings.


473-475: Mobile-first menu grid
Defining a single-column grid for #menu on mobile is spot-on for a responsive layout.


479-486: Desktop/tablet menu media query
Switching #menu to a two-column layout at min-width: 768px maintains the original behavior on larger screens.


489-492: Flexible .nav-tile sizing
Allowing .nav-tile to grow in height with height: auto and a min-height ensures consistent tap targets without truncating content.


515-519: Right-aligned nav-tile on desktop
The .nav-tile.right justify adjustments look correct and preserve the right-side alignment on larger viewports.


588-593: #displaybox container
Introducing #displaybox as a full-width, padded container will help center content and apply consistent box-sizing.


595-597: Sidebar displaybox override
Adding a left padding for .Theme--sidebar #displaybox supports sidebar navigation layouts. Looks good.


614-625: Sticky footer adjustments
Using margin-top: auto in a flex context and switching to a fixed position at larger breakpoints ensures the footer remains at the bottom without overlaying content.


626-633: Desktop footer media query
Fixed positioning for the footer at min-width: 768px is consistent with the header/menu behavior.


1109-1110: span.status alignment
Switching display: inline-block with margin-left: auto may not always right-align within non-flex containers. Please verify this behaves as intended across different table cell contexts.


1237-1238: Gap for tabs
Adding a gap between .tabs children improves spacing in the tab list — good use of the gap property.


1244-1244: Tab button color reset
Explicitly setting color: var(--text-color) ensures your tab buttons inherit the correct text color in all themes.


1259-1259: Reset margin on tab buttons
Defining margin: 0 removes default button margins for a tighter layout. This is necessary given your new flex arrangement.


1286-1293: .Panels container
Introducing the .Panels flex container with wrapping, row/column gaps, and box-sizing creates a solid foundation for panel layouts.


1295-1300: .Panel base styling
Your .Panel rules for relative positioning, centering, and transparent background are clean — great scaffolding for panel items.


1301-1309: Nested anchor styling in .Panel
Styling the anchor as a grid with gap and centered content supports flexible icon+text layouts. This is a robust approach for panel links.


1319-1323: .PanelImg constraints
Limiting .PanelImg to 33px ensures consistent icon sizing across panels. Well scoped.

…nContentTabless for improved variable usage

- Replaced direct htmlspecialchars usage with eval to ensure variables in .page titles are correctly processed.
- This change enhances the flexibility of title rendering across multiple layout files.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro (Legacy)

📥 Commits

Reviewing files that changed from the base of the PR and between a8f4320 and a3917ea.

📒 Files selected for processing (3)
  • emhttp/plugins/dynamix/include/DefaultPageLayout/MainContent.php (2 hunks)
  • emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php (1 hunks)
  • emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabless.php (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabless.php
  • emhttp/plugins/dynamix/include/DefaultPageLayout/MainContent.php

Comment thread emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php Outdated
zackspear added 7 commits May 9, 2025 11:40
- Changed column-gap to gap in the grid layout to enhance spacing consistency across different screen sizes.
- Eliminated inline style for text alignment in user list divs to allow for more flexible styling through CSS.
- This change enhances the overall layout consistency and responsiveness of the user list display.
- Added a comment in span.status.vhshift to indicate that the margin-right adjustment is likely no longer needed, improving code clarity for future reference.
- Changed the class attribute from "content" to "tab-content content" for better semantic clarity and improved styling consistency in the tabbed layout.
- Added a new class for the tabs container to enable horizontal scrolling and set its width to 100%.
- Introduced a class for tab content to manage visibility and added padding for forms within it.
- Adjusted padding and margin for various elements to improve layout consistency and responsiveness.
- Changed background color of radio buttons to transparent for a cleaner look.
- Adjusted opacity of list items for better visibility.
- Removed unnecessary CSS rules related to tab layout to simplify the stylesheet and enhance maintainability.
…ed, and MainContentTabless

- Introduced a new function `processTitle` to safely handle page titles by replacing PHP variables with their values without using eval.
- Updated title handling in MainContent, MainContentTabbed, and MainContentTabless to utilize the new `processTitle` function, enhancing security and maintainability.
@zackspear zackspear requested a review from ljm42 May 21, 2025 01:46
zackspear added 2 commits May 20, 2025 18:51
- Wrapped input elements in spans for improved visual structure.
- This change continues the effort to enhance layout consistency across the plugin.
- Wrapped the devices table in a div for improved layout structure.
- This change continues the effort to enhance visual consistency across the plugin.

@ljm42 ljm42 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

My only concerns are the CodeRabbit suggestions around "Without a nesting plugin (PostCSS-nesting or Sass), these selectors will be dropped". Are those comments just wrong, or do they not apply to us somehow?

@zackspear

Copy link
Copy Markdown
Contributor Author

My only concerns are the CodeRabbit suggestions around "Without a nesting plugin (PostCSS-nesting or Sass), these selectors will be dropped". Are those comments just wrong, or do they not apply to us somehow?

Good callout. IMO I believe we're okay with leaving the nesting in place.

In a couple of these suggestions, it also mentions "The nested CSS syntax [...] requires a CSS preprocessor or recent browser support for CSS nesting"

That last part is the part is what we're relying on here.

Browser support for CSS Nesting https://caniuse.com/css-nesting
All modern browsers support it. I downloaded QQ Browser (Chinese browser), since we have a good number of Chinese users and CanIUse says it doesn't support it but it totally does – it's a Chromium engine based browser.

zackspear added 10 commits May 21, 2025 10:23
- Removed unnecessary 'class="narrow"' from input elements for improved layout consistency.
- This change continues the effort to enhance visual structure across the plugin.
- Added missing line breaks in form elements for improved layout consistency.
- This change continues the effort to enhance visual structure across the plugin.
- Wrapped URL links in a span for improved layout structure.
- Removed unused ManagementAccess.css file as its styles are no longer needed.
- This change continues the effort to enhance visual consistency across the plugin.
- Wrapped the devices table in a div for improved layout structure.
- This change continues the effort to enhance visual consistency across the plugin.
- Wrapped input elements in a span for improved layout structure.
- This change continues the effort to enhance visual consistency across the plugin.
- Wrapped the Docker vDisk size input element in a span for improved layout structure.
- This change continues the effort to enhance visual consistency across the plugin.
…eButton.css

- Wrapped the table in Browse.page within a div for improved layout structure.
- Removed unnecessary margin-top from autoheight class in Browse.css and BrowseButton.css for better visual consistency.
- This change continues the effort to enhance layout consistency across the plugin.
…vms.page

- Wrapped tables in CPUisol.page, CPUpin.page, and CPUvms.page within divs for improved layout structure.
- This change continues the effort to enhance visual consistency across the plugin.
…less.php

- Wrapped elements in spans within PageBuilder.php to improve layout structure.
- Added a span for layout consistency in MainContentTabless.php.
- This change continues the effort to enhance visual consistency across the plugin.
- Updated layout structure in WG0.page and WGX.page by wrapping elements in spans for improved visual consistency.
- Adjusted CSS in WG0.css to streamline styles and enhance layout consistency across the plugin.
- This change continues the effort to enhance visual structure across the plugin.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (5)
emhttp/plugins/dynamix/styles/default-base.css (4)

147-157: Review global input styling scope
You’ve set padding: .5rem; width: 100%; margin: 0; box-sizing: border-box; on all text-like inputs and .textarea. While this enhances consistency and responsiveness, it may override form layouts expecting custom widths or spacing. Consider scoping these overrides under a layout-specific container class (e.g., .DefaultPageLayout input[type="text"]) or documenting that child components should adjust or override these defaults as needed.


160-163: Improve UX for input instructions
The .input-instructions rule with opacity: .75; font-style: italic; is clear, but consider adding a transition for smoother appearance when focused (paired with the adjacent selector below).


1149-1150: Remove commented-out legacy margin
The commented reference to margin-right: -9px; likely no longer applies. Consider deleting this dead code to reduce clutter.


1732-1872: Bulk utility classes introduced
This PR adds a large set of helper classes (.hidden, .flex, .gap-*, .justify-*, .items-*, etc.), resembling a utility-first approach. While useful for ad-hoc layouts, consider extracting these into a separate utilities file or namespace (e.g., .u-flex, .u-gap-1) to avoid global scope pollution and naming conflicts. Document their usage and the decision to avoid a utility framework like Tailwind.

emhttp/plugins/dynamix/sheets/WG0.css (1)

38-40: Remove stale commented CSS
The commented block /* i.fa-fw { margin-left: 5px; } */ appears obsolete. Consider deleting it to clean up the stylesheet.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro (Legacy)

📥 Commits

Reviewing files that changed from the base of the PR and between 1b96215 and be03af6.

📒 Files selected for processing (6)
  • emhttp/plugins/dynamix/WG0.page (8 hunks)
  • emhttp/plugins/dynamix/WGX.page (6 hunks)
  • emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabless.php (1 hunks)
  • emhttp/plugins/dynamix/include/PageBuilder.php (1 hunks)
  • emhttp/plugins/dynamix/sheets/WG0.css (2 hunks)
  • emhttp/plugins/dynamix/styles/default-base.css (17 hunks)
✅ Files skipped from review due to trivial changes (1)
  • emhttp/plugins/dynamix/include/PageBuilder.php
🚧 Files skipped from review as they are similar to previous changes (3)
  • emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabless.php
  • emhttp/plugins/dynamix/WGX.page
  • emhttp/plugins/dynamix/WG0.page
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (24)
emhttp/plugins/dynamix/styles/default-base.css (23)

10-14: Confirm removal of body flex layout
The commented-out height: 100vh; display: flex; flex-direction: column; overflow-y: auto; block on the body may help avoid layout shifts but could reintroduce scrolling issues or break full-height layouts elsewhere. Please verify that this change doesn’t cause regressions in pages that rely on a flex-based root layout (e.g., sticky footers or sidebars).


126-128: Addition of .resize-none utility class
The new .resize-none { resize: none; } rule provides a useful utility for disabling textarea resizing. This aligns with the responsive layout strategy.


165-170: Adjacent focus styling for input instructions
The adjacent sibling selector input:focus, textarea:focus, select:focus + .input-instructions { opacity: 1; } is well-targeted. Ensure that all form controls are followed by .input-instructions elements to avoid orphaned selectors.


300-304: Select element full-width adjustments
Setting width: 100%; padding: .5rem .8rem .5rem .5rem; margin: 0; on all select elements improves form consistency but may conflict with inline dropdowns or side-by-side fields. Verify that this doesn’t break layouts in constrained mix-and-match form sections.


364-366: New .slots-amount sizing utility
.slots-amount { width: 7rem; } gives a specific width to slot-count selectors. Confirm that this value accommodates localization or dynamic content lengths.


368-369: Fine-tune input.narrow constraints
Applying max-width: 166px; is a reasonable cap for numeric or short text inputs. Ensure this doesn’t truncate longer values unexpectedly (e.g., IP addresses).


483-484: Remove top margin between consecutive titles
The rule .title + .title { margin-top: 0; } ensures tight grouping of titles. This looks good for multi-panel layouts.


496-498: Mobile-first grid for #menu
Switching to a single-column, two-row grid on mobile (grid-template-columns: 1fr; grid-template-rows: auto auto;) enhances vertical stacking. Approved.


502-508: Desktop grid adjustments for #menu
The media query restores the original horizontal layout via grid-template-columns: auto max-content; grid-template-rows: auto; position: sticky; top: 0;. This aligns with responsive best practices.


512-513: Allow .nav-tile height to adjust
Changing height: auto; min-height: 4rem; enables flexible wrapping of navigation tiles. Looks good.


528-531: Enable wrapping for nav tiles
Adding flex-wrap: nowrap; height: 4rem; in the desktop breakpoint preserves the horizontal scroll behavior. Approved.


539-542: Right-align large-screen navigation
The .nav-tile.right { justify-content: flex-end; } tweak keeps the UI consistent on desktop. Approved.


611-616: #displaybox padding and box-sizing
The new padding and box-sizing: border-box; ensure consistent spacing and prevent overflow issues. Approved.


631-631: Ensure position: relative; on #footer
Adding position: relative; provides a containing block for absolutely positioned children and maintains stacking context. Approved.


637-640: Footer grid layout for mobile
Implementing display: grid; grid-template-columns: 1fr; grid-gap: 1rem; margin-top: auto; creates a stacked footer on narrow screens. Approved.


642-651: Sticky footer on desktop
The desktop breakpoint sets the footer to position: fixed; bottom: 0; left: 0; justify-content: space-between; grid-template-columns: minmax(0, auto) minmax(0, auto);. Confirm no content gets obscured.


655-660: Responsive .footer-left flex container
Grouping the left footer items with flex-wrap and gap improves small-screen layout. Approved.


664-667: Responsive .footer-right flex container
Matching the right footer items to the left styling keeps symmetry. Approved.


670-677: Desktop footer item justification
Switching .footer-left to justify-content: flex-start and .footer-right to justify-content: flex-end aligns with the overall grid. Looks good.


1144-1145: Make span.status a flex item
Applying display: inline-block; margin-left: auto; on .status helps it right-align within flex containers. Approved.


851-858: Horizontal scrolling for tables
The .TableContainer class with overflow-x: auto; -webkit-overflow-scrolling: touch; table { min-width: 1280px; } ensures wide tables scroll gracefully. Approved.


860-867: Viewport-widest table scrolling
Similarly, .TableContainer--widest increases the min-width threshold to 1345px for even wider tables. Approved.


1889-1899: .Theme--sidebar nested rule checks
The sidebar-specific overrides (e.g., resetting i.spacing margins, hiding i.title, adjusting i.favo) leverage CSS nesting. Ensure that the production build supports native CSS nesting or includes a PostCSS nesting plugin; otherwise these nested selectors won’t apply.

emhttp/plugins/dynamix/sheets/WG0.css (1)

17-23: Modernize .preset layout with flex
Replacing floats with display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; in .preset improves responsiveness and alignment. Validate that legacy browsers in Unraid’s environment support this flex usage.

Comment thread emhttp/plugins/dynamix/styles/default-base.css
zackspear added 2 commits May 21, 2025 16:52
…e.css

- Added utility classes for width, height, and overflow to improve layout structure in PluginInstall.page.
- Removed the obsolete Plugins.css file as its styles are no longer needed.
- This change continues the effort to enhance visual consistency across the plugin.
- Removed commented-out CSS rules to clean up the stylesheet.
- This change continues the effort to enhance visual consistency across the plugin.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (3)
emhttp/plugins/dynamix/styles/default-base.css (3)

1518-1520: Nested CSS requires build support
You’ve introduced nested rules inside the dd selector for p { margin: 0 0 4px 0; }. This depends on a CSS nesting plugin; verify your pipeline handles this or flatten the selector.


1342-1353: Confirm CSS nesting support for .tab-content form
The nested form { … } block under .tab-content depends on CSS nesting. Verify your build system includes a nesting plugin or flatten these rules.


1365-1386: Validate nested selectors in .Panel block
The nested a { … } and &:hover .PanelText { … } rules require a CSS nesting plugin. Confirm your toolchain handles this or rewrite to flat selectors (e.g., .Panel a {} and .Panel:hover .PanelText {}).

🧹 Nitpick comments (8)
emhttp/plugins/dynamix/styles/default-base.css (8)

10-14: Remove commented-out body layout rules
The legacy height: 100vh, display: flex, and overflow-y: auto declarations are commented out on the body selector. They should be removed to reduce noise and rely on version control for history.


126-128: Scope or consolidate the .resize-none utility
Adding .resize-none { resize: none; } is fine, but it may overlap with other utilities. Consider grouping all resize/overflow utilities under a single naming convention or documenting these helpers to avoid duplication.


157-157: Move box-sizing to a global reset
Applying box-sizing: border-box; per-input is effective, but it’s more maintainable to include it in a root-level reset (*, *::before, *::after { box-sizing: border-box; }).


160-163: Improve input instruction visibility
The .input-instructions utility is a nice addition to guide users. Consider linking it via aria-describedby on inputs to improve accessibility rather than relying solely on visual state.


165-170: Use :focus-within or wrapper classes for instruction toggles
The adjacent sibling selector (input:focus + .input-instructions) works, but if markup changes, it could break. Consider using :focus-within on a parent container or a dedicated utility class to toggle instruction visibility more robustly.


368-368: Document the input.narrow utility usage
Adding input.narrow { max-width: 166px; } is helpful, but consider naming consistency with your other utilities (e.g., prefixing with .u- or grouping under a utility namespace) to avoid conflicts.


1294-1297: Enable horizontal scroll for tab containers
Making .tabs-container { overflow-x: auto; width: 100%; } ensures tabs remain accessible on narrow screens. Consider adding -webkit-overflow-scrolling: touch; for smoother scrolling on iOS.


1732-1901: Audit newly introduced utility classes
A large set of utility classes (e.g., .hidden, .flex, .gap-4, etc.) has been added. To prevent CSS bloat and naming collisions, consider centralizing them in a dedicated utilities file or adopting a utility-first framework (e.g., Tailwind). Also ensure these classes are documented for developer reference.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro (Legacy)

📥 Commits

Reviewing files that changed from the base of the PR and between be03af6 and 14730b6.

📒 Files selected for processing (4)
  • emhttp/plugins/dynamix.plugin.manager/PluginInstall.page (1 hunks)
  • emhttp/plugins/dynamix.plugin.manager/sheets/Plugins.css (0 hunks)
  • emhttp/plugins/dynamix/sheets/WG0.css (1 hunks)
  • emhttp/plugins/dynamix/styles/default-base.css (17 hunks)
💤 Files with no reviewable changes (1)
  • emhttp/plugins/dynamix.plugin.manager/sheets/Plugins.css
🚧 Files skipped from review as they are similar to previous changes (2)
  • emhttp/plugins/dynamix.plugin.manager/PluginInstall.page
  • emhttp/plugins/dynamix/sheets/WG0.css
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (12)
emhttp/plugins/dynamix/styles/default-base.css (12)

28-39: Ensure browser support for the :has() pseudo-class
You’ve added a global rule using p:has(…), which is powerful but still lacks support in some major browsers (e.g., older Firefox). Consider wrapping it in a feature query or polyfill to avoid dropped rules in unsupported environments:

@supports(selector(p:has(> link))) {
  p:has(> link), p:has(> script), … { margin: 0; }
}

147-147: Standardize input padding for touch targets
Setting padding: .5rem; on form fields improves usability on mobile devices. This aligns well with your responsive layout objectives.


152-153: Enable full-width inputs for responsiveness
Replacing the commented-out fixed width with width: 100%; ensures inputs span their container on narrow viewports. This change supports your mobile-first strategy.


300-303: Full-width select styling is responsive-friendly
Adding width: 100%; padding: .5rem .8rem .5rem .5rem; margin: 0; to <select> elements ensures they adapt to container widths on small screens. Good for your mobile-first layout.


355-358: Fine-tune narrow and auto select widths
The utilities for .select.narrow { width: 76px; } and .select.auto { width: auto; } give precise control over select sizing. Ensure these classes are documented for developers to apply them correctly.


1499-1505: Leverage CSS Grid for definition lists
Switching dl to display: grid with responsive columns and gaps enhances readability on all viewports. Modern browsers support this well.


1542-1558: Limit form field widths at larger breakpoints
The media query that sets max-width: 400px; on various input types and selects keeps forms from growing too wide on desktops. This is a solid UX improvement.


1287-1287: Add consistent gap between tabs
The gap: .5rem; on .tabs container improves spacing between tabs and matches your overall spacing scale.


1356-1363: Approve flex layout for Panels container
Using .Panels { display: flex; flex-wrap: wrap; column-gap: 3rem; row-gap: 2rem; } cleanly handles panel grouping and spacing. Modern browsers support flex gap properties.


2313-2315: Adjust .usage-bar sizing for consistency
Changing .usage-bar to position: relative; width: 6.4rem; standardizes its footprint. Test this width against varied data to ensure the bar never overflows.


611-616: Optimize #displaybox for responsive layout
Wrapping content in #displaybox with width: 100%; margin: 0 auto; padding: 1rem 1rem 4rem; box-sizing: border-box; provides a solid mobile-first container.


631-641: Review footer grid and positioning
Moving #footer to a grid layout on mobile and fixing it on desktop is good, but verify it doesn’t overlap content on very short viewports. Consider adding bottom margin to your main container.

Comment thread emhttp/plugins/dynamix/styles/default-base.css
zackspear added 5 commits May 21, 2025 17:05
- Deleted the Apps.css file as its styles are no longer needed.
- This change continues the effort to enhance visual consistency across the plugin.
- Updated button and status message structure in DeviceInfo.page for improved layout consistency.
- This change continues the effort to enhance visual consistency across the plugin.
…are.page, and CreateDocker.php

- Updated button and status message structure in ArrayOperation.page, Disk.page, and Share.page for improved layout consistency.
- Adjusted the placement of elements in CreateDocker.php to enhance visual structure.
- This change continues the effort to enhance visual consistency across the plugin.
- Adjusted the placement of the control element in DeviceInfo.page to improve layout consistency.
- This change continues the effort to enhance visual consistency across the plugin.
- Added a new selector for .ui-dropdownchecklist-selector-wrapper to maintain consistent max-width styling across form elements.
- This change continues the effort to enhance visual consistency across the plugin.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
emhttp/plugins/dynamix/styles/default-base.css (1)

464-481: Duplicate: ensure CSS nesting support or flatten nested selectors
Multiple blocks use the CSS nesting syntax (e.g., &:first-child within div.title, nested form under .tab-content, nested rules in .Panels, nested &:empty under .content, and numerous nested selectors in .Theme--sidebar). Native CSS nesting is not fully supported across all browsers. Ensure your build pipeline includes a CSS nesting plugin (PostCSS Nesting or Sass) or flatten these rules into standard selectors to guarantee they aren’t dropped.

Also applies to: 1272-1280, 1342-1353, 1365-1380, 1913-2066

🧹 Nitpick comments (4)
emhttp/plugins/dynamix/styles/default-base.css (4)

10-14: Remove commented-out code from production CSS
Commented-out rules for body height and flex layout increase file size and reduce readability. If these styles are no longer needed, please remove them entirely or move experimental styles behind a feature flag or separate file.


147-154: Scope global input styling to avoid unintended overrides
Applying padding, width: 100%, margin: 0, and box-sizing: border-box to all text inputs and textareas can conflict with components that expect fixed dimensions. Consider scoping these rules to a form utility class (e.g., .DefaultPageLayout input) or moving box-sizing to the universal selector (*, *::before, *::after) to minimize side effects.

Also applies to: 157-157


296-304: Scope global select styling
Similar to the input fields, setting width: 100%, padding, and margin: 0 on all select elements may override intended layouts elsewhere. Consider scoping or using a utility class for full-width selects.


1733-1895: Consider extracting or modularizing utility classes
The file adds many Tailwind-like utilities (.flex, .gap-1, .justify-between, etc.). While powerful, this bloat may be better managed by importing a utility-first library or extracting these into a separate utilities stylesheet to keep the base styles concise.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro (Legacy)

📥 Commits

Reviewing files that changed from the base of the PR and between dc1c67c and 03ce3a7.

📒 Files selected for processing (6)
  • emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php (2 hunks)
  • emhttp/plugins/dynamix/ArrayOperation.page (2 hunks)
  • emhttp/plugins/dynamix/DeviceInfo.page (17 hunks)
  • emhttp/plugins/dynamix/Disk.page (2 hunks)
  • emhttp/plugins/dynamix/Share.page (1 hunks)
  • emhttp/plugins/dynamix/styles/default-base.css (17 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php
  • emhttp/plugins/dynamix/DeviceInfo.page
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (20)
emhttp/plugins/dynamix/ArrayOperation.page (2)

87-87: CSS class simplified for consistency

The conditional CSS class assignment has been removed from the ctrl span element, keeping only the "status" class. This change aligns with the responsive layout improvements being implemented throughout the codebase.


317-317: Improved DOM selection specificity

The jQuery selector has been refined to target .right child elements within div.title elements, rather than appending directly to div.title. This improves layout consistency and creates a more structured DOM hierarchy.

emhttp/plugins/dynamix/Disk.page (2)

35-35: CSS class simplified for consistency

The conditional CSS class assignment has been removed, using fixed classes 'ctrl2 status' for the navigation controls. This aligns with the responsive layout improvements across the UI.


54-54: Improved DOM selection specificity

The jQuery selector now targets the .right child element of the first div.title element, providing more precise control placement within the page structure.

emhttp/plugins/dynamix/Share.page (2)

56-56: CSS class simplified for consistency

The conditional CSS class assignment has been removed, with the span now using fixed classes 'ctrl1 status'. This change is consistent with the standardization of control elements across the UI.


62-62: Improved DOM selection specificity

The jQuery selector now appends to the .right child element of the first div.title element, which creates a more consistent structure for layout control elements across different page types.

emhttp/plugins/dynamix/styles/default-base.css (14)

126-128: Utility class .resize-none looks good
This class provides a simple way to disable resizing on text areas. No issues spotted.


160-170: Approve .input-instructions behavior
The adjacent sibling selector to fade in instructions on focus is a good UX pattern. No changes needed here.


354-359: Utility classes select.narrow and select.auto
The .narrow and .auto variants allow flexibility in select widths. Implementation is straightforward.


364-366: Approve .slots-amount select width
This class correctly sizes slot-amount selects to 7rem. Good for consistency.


367-369: Approve input.narrow max-width
The narrow input variation is implemented as expected.


483-485: Approve sibling-title margin reset
Removing the top margin on consecutive .title elements helps maintain consistent spacing. No issues here.


496-498: Approve mobile grid layout for #menu
Switching to a single-column stacked grid on small screens is appropriate for responsive design.


503-508: Approve desktop grid layout for #menu in media query
Reverting to the original horizontal layout at min-width: 768px looks correct.


512-513: Approve .nav-tile height adjustments
Using height: auto and a min-height of 4rem allows tiles to adapt to content.


529-532: Approve desktop .nav-tile adjustments
Reinstating flex-wrap: nowrap and a fixed height at larger breakpoints is fine.


611-615: Approve #displaybox container styling
Setting full width, centered margins, padding, and box-sizing: border-box meets layout needs.


631-641: Approve responsive #footer layout
Defining a grid layout for the footer with a stacked mobile view and fixed positioning plus two columns at larger breakpoints enhances usability.

Also applies to: 669-677


655-662: Approve .footer-left and .footer-right flex utilities
The wrapping, alignment, and gap settings support responsive footer content.


851-858: Approve .TableContainer and .TableContainer--widest
The scrolling wrappers with min-width on nested tables are correctly implemented to enable horizontal scrolling on narrow viewports.

Also applies to: 860-867

Comment thread emhttp/plugins/dynamix/styles/default-base.css
@zackspear zackspear marked this pull request as ready for review May 22, 2025 17:22
@limetech limetech merged commit 689d181 into master May 22, 2025
3 checks passed
@limetech limetech deleted the feat/responsive-default-page-layout branch May 22, 2025 18:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants