Skip to content

frontend: refactor table styling with modular components#1200

Draft
colton-lapp wants to merge 18 commits intodevfrom
refactor-table-component
Draft

frontend: refactor table styling with modular components#1200
colton-lapp wants to merge 18 commits intodevfrom
refactor-table-component

Conversation

@colton-lapp
Copy link
Collaborator

@colton-lapp colton-lapp commented Feb 26, 2026

Overview

Closes #1069

This PR introduces a refactor of the table styling / resource listing views (Plugins, Jobs, Experiments, etc.) to improve improve usability and aesthetics. The primary shift is moving away from ad-hoc table cell implementations toward a system of cell components that can be reused. It also creates a component for a "resource picker" to style some dropdowns in the EditExperiment and CreateEntryPoint pages.

Note that some tables had complex functionalities beyond simple information display and broke out of the "resource listing" pattern - e.g. the EntryPoints page, plugin task tables, etc. These tables could potentially be further modularized / refined.

Notes

  • Each resource type now has an associated icon/color/url controlled via tableStyles.js
  • Table sub-components have improved functionality / features - for example:
    • Resource references have built in URLs to travel to that resource
    • Lists of resources have logic for "showing additional" items if there are numerous items in a list (i.e. only show the first 3 Plugins).
    • Improved visual display of table sub-components: emphasizes resource names, deemphasizes long descriptions/metadata, etc.

Still to do:

  • Accessibility / Use of color - current WIP uses colors extensively (perhaps too much). Might be better to be more minimal. We should investigate potential accessibility issues as well.
  • Dark Mode - currently the implementation of Dark Mode is not yet completed. This, however, could be improved across all of Dioptra, not just in this PR.
  • Deleted resources - badge icons that link to resources may link to deleted resources, which causes pages to improperly load and is confusing. Ideally the badge icon components would indicate when a resource has been deleted before a user clicks (in addition to a resource page for a deleted resource having logic to handle that).
  • Consider refining / streamlining sub-component design system. We may want to combine IconID.vue and BadgeIcon.vue into a single component. We might also want a subcomponent that simply makes text more emphasized for entity names. Sometimes when referencing the name of resources, I used the ResourceName.vue subcomponent (which adds an underline and a bullet point and implies the text can be clicked).
  • Test the functionality - there are a lot of changes here. I've tried to compare my code to the original implementation and test out the functionality, but there are edge cases I haven't tried yet (no metrics display, haven't viewed multiple kinds of artifacts in preview mode, etc.)

@colton-lapp colton-lapp changed the title feat: refactor table styling with modular components frontend: refactor table styling with modular components Feb 26, 2026
@colton-lapp colton-lapp linked an issue Feb 26, 2026 that may be closed by this pull request
6 tasks
@keithmanville
Copy link
Collaborator

This looks great!

I think the icons paired with color help with accesibility.

The artifact view page is broken for me:
Uncaught (in promise) DOMException: String contains an invalid character

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.

Refactor Table Component and Implement Column Design System

2 participants