feat(#4078): List view and colour theming#4079
Open
orochibraru wants to merge 11 commits intoDokploy:canaryfrom
Open
feat(#4078): List view and colour theming#4079orochibraru wants to merge 11 commits intoDokploy:canaryfrom
orochibraru wants to merge 11 commits intoDokploy:canaryfrom
Conversation
Fixes class extension for the card component Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is this PR about?
This pull request introduces significant improvements to the UI customization and layout flexibility in the Dokploy dashboard. The main highlights are the addition of a user-selectable color theme system, a persistent layout switcher for cards (grid/list), and several visual polish enhancements to interactive components. These changes aim to enhance user experience by allowing more personalization and a more modern, interactive interface.
UI Customization and Theming:
ColorThemeProviderandColorThemePickercomponents, enabling users to select from multiple colour themes.Appearancesection.Card Layout Flexibility:
CardsLayout,LayoutSwitcher, and related logic, allowing users to toggle between grid and list views for cards in both the projects dashboard and environment pages.grid.Visual and Interaction Enhancements:
hover:bg-primary/10), and enhanced sidebar menu button and icon colour transitions for clearer active and hover feedback.These changes collectively provide a more customisable, visually appealing, and user-friendly dashboard experience.
Checklist
Before submitting this PR, please make sure that:
canarybranch.Issues related (if applicable)
closes #4078
Screenshots (if applicable)
All the following have been taken with the blue accent color.
Dashboard (Grid view hovering layout switching toggle button)
Dashboard (List view hovering layout switching goggle button)
Environment services (Grid view hovering layout switching toggle button)
Environment services (List view hovering layout switching toggle button)
Account page with colour picker
Greptile Summary
This PR adds three quality-of-life features to the Dokploy dashboard: a multi-colour accent theme system persisted in
localStorage, a grid/list layout switcher for the projects and environment pages also persisted inlocalStorage, and visual polish to sidebar item hover states and active tab colours.The colour theming implementation is solid — the provider uses
useLayoutEffectto synchronise thedata-color-themeattribute before paint (avoiding a flash), validates the stored value against the allowed list, and the CSS variable overrides cover both light and dark modes correctly.Key issues found:
ToggleinLayoutSwitcheris uncontrolled (nopressedprop), so its internal state always starts asfalse. With the mappingpressed=true → GRIDandpressed=false → LIST, a user whose layout isGRID(the default) will find that the first click is a no-op (it sets GRID again). They must click twice to switch to list view. Fix: passpressed={layout === Layout.LIST}and flip the mapping accordingly.classNameprop is silently dropped inCardsLayout. The component extendsHTMLAttributes<HTMLDivElement>and destructuresclassName, but never merges it into thecn()call on the inner<div>.show.tsxused2xl:grid-cols-4 3xl:grid-cols-5;CardsLayoutis capped atxl:grid-cols-3, leaving large monitors with fewer columns than before.Confidence Score: 4/5
Safe to merge after fixing the Toggle state bug, which causes the layout switcher to require two clicks from the default grid view.
One P1 defect exists in cards-layout.tsx: the uncontrolled Toggle makes the layout switcher require two clicks when starting from the default grid layout. The colour theming and sidebar changes are clean. The two P2 items (silent className drop, missing 2xl/3xl breakpoints) are non-blocking but worth addressing.
apps/dokploy/components/ui/cards-layout.tsx requires attention for the Toggle state synchronisation fix and the className/breakpoint regressions.
Important Files Changed
Reviews (1): Last reviewed commit: "chore: rollback vscode settings (not in ..." | Re-trigger Greptile
(2/5) Greptile learns from your feedback when you react with thumbs up/down!