This has been on my mind for a while. The last (only?) admin redesign was over 6 years ago now. Quite a lot has changed in that time, not least of which Django’s dropping support for legacy browsers. The current design is functional, and certainly a step up from the one before that didn’t work on smaller devices, but my opinion is growing that it could use a refresh.
The main problem I have when changing admin CSS is that it’s a bit of a hodgepodge. Most of the layout is using float
for aligning, but much of the more recently added code is using flexbox instead. Sometimes I’ll come across a float: left
in the CSS or a clear
class in the HTML that apparently changes nothing if you remove it – but I’m still cautious of doing it in case it affects some particular edge case.
Another issue is that the admin’s HTML can be hard to read. With this type of alignment you often need extra elements for wrappers and so on, and having a lot of nested, unsemantic tags can be hard to visually navigate.
On the more user facing side, while we’ve made some positive changes for accessibility, the existing colour scheme makes getting a really good contrast very difficult. The font size for regular text is too small already, making anything that needs be visually “dimmed” by making the text smaller or the text dimmer makes that text difficult to read (e.g., recent actions, timezone text for datetime fields). With that said, it’s important to give users a choice here, as having a smaller font size can increase productivity (more stuff fits on a single page).
While I like (and prefer, and use) the recently added dark theme, it does seem a bit on the ugly side, with the colours adapted from the light theme colours rather than thought up from scratch. It doesn’t feel as… I don’t know, comforting as other dark themes I see, it feels a little harsh, somehow. The design as a whole is starting to feel a little dated to me.
I’m interested in knowing if there’s any appetite for this, or is it just me?
What I’m proposing, roughly, is to redesign the admin using CSS Grid, more semantic HTML and better accessibility. It shouldn’t need (m)any JS changes, but probably the majority of the HTML and CSS would be rewritten, which is a lot of work, and moreover something that could quite easily cause bugs, and will be backwards incompatible for anyone extending templates. So it’s ideally something we’d not do too often. But I am wondering if the time is about right.
Edit: I remembered there was an earlier thread on this: Modernizing the look and feel of admin - though it didn’t get much attention, and this is a bit more of a proposal.