Skip to content

Conversation

@timea-solid
Copy link
Member

@timea-solid timea-solid commented Dec 9, 2025

This PR will integrate HTML5 and basic accessibility elements.
We start with the profile-pane

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR modernizes the SolidOS databrowser with HTML5 semantic elements and comprehensive accessibility improvements. The changes include refactoring HTML structure, introducing a theme system with CSS custom properties, creating reusable utility classes, and updating dependencies.

Changes:

  • Adds semantic HTML5 elements (header, main, footer) and ARIA attributes for improved accessibility
  • Introduces a theme system with light/dark modes using CSS custom properties
  • Creates comprehensive utility CSS classes for accessibility, layout, and components
  • Removes inline styles in favor of CSS classes and removes deprecated TypeScript style module

Reviewed changes

Copilot reviewed 11 out of 12 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
static/browse.html Adds semantic HTML structure, skip links, table headers, and ARIA labels
static/browse-test.html Same semantic HTML improvements as browse.html with adjusted JavaScript
src/styles/themes/light.css Defines CSS custom properties for light theme color scheme
src/styles/themes/dark.css Defines CSS custom properties for dark theme color scheme
src/styles/themes.css Imports theme files with dark theme commented out
src/styles/mash.css Refactors styles to use CSS custom properties and improved formatting
src/styles/mash-utilities.css New file with comprehensive accessibility and utility classes
src/styles/mashlib-style.ts Removed - replaced by CSS-only approach
src/index.ts Adds theme management functions and removes style module usage
src/databrowser.html Updates with semantic HTML and accessibility features
package.json Updates dependency versions including pre-release versions
package-lock.json Lock file updates reflecting dependency changes

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

</script>
</head>
<body>
<a href="#DummyUUID" class="skip-link">Skip to main content</a>
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

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

The skip link target points to #DummyUUID, but according to the HTML structure, this element has role="main" while there's also a <main> element with id="mainContent". The skip link should target the <main> element (#mainContent) instead of the nested div, as the main landmark should be at the outermost semantic level.

Copilot uses AI. Check for mistakes.
</head>
<body id="PageBody">
<body id="PageBody">
<a href="#DummyUUID" class="skip-link" style="position:absolute;left:-999px;top:auto;width:1px;height:1px;overflow:hidden;">Skip to main content</a>
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

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

Inline styles in HTML - the skip link has inline styles that duplicate the CSS defined in the <style> block below (lines 153-172). This inline style should be removed and the .skip-link class should be sufficient for styling.

Suggested change
<a href="#DummyUUID" class="skip-link" style="position:absolute;left:-999px;top:auto;width:1px;height:1px;overflow:hidden;">Skip to main content</a>
<a href="#DummyUUID" class="skip-link">Skip to main content</a>

Copilot uses AI. Check for mistakes.
</head>
<body id="PageBody">
<body id="PageBody">
<a href="#DummyUUID" class="skip-link" style="position:absolute;left:-999px;top:auto;width:1px;height:1px;overflow:hidden;">Skip to main content</a>
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

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

The skip link target points to #DummyUUID, but according to the HTML structure, this element has role="main" while there's also a <main> element with id="mainContent". The skip link should target the <main> element (#mainContent) instead of the nested div, as the main landmark should be at the outermost semantic level.

Copilot uses AI. Check for mistakes.
<footer id="PageFooter"></footer>
<header id="PageHeader" role="banner"></header>
<main id="mainContent" tabindex="-1">
<div class="TabulatorOutline" id="DummyUUID" role="main">
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

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

Redundant ARIA role - the div with id="DummyUUID" has role="main" but is already contained within a <main> element. This creates a nested main landmark which is confusing for screen readers. Remove the role="main" attribute from this div since the parent <main> element already provides the main landmark.

Suggested change
<div class="TabulatorOutline" id="DummyUUID" role="main">
<div class="TabulatorOutline" id="DummyUUID">

Copilot uses AI. Check for mistakes.
"solid-logic": "^4.0.1",
"solid-panes": "4.0.0-newStyle-b960ffb7",
"solid-ui": "^3.0.1",
"profile-pane": "2.0.0-newStyle-6806a782"
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

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

Using a pre-release version identifier with a git commit hash (2.0.0-newStyle-6806a782) is unconventional and may cause issues with semantic versioning tools and dependency resolution. Consider using standard pre-release identifiers like 2.0.0-alpha.1 or 2.0.0-beta.1 instead.

Suggested change
"profile-pane": "2.0.0-newStyle-6806a782"
"profile-pane": "2.0.0-newStyle+6806a782"

Copilot uses AI. Check for mistakes.
</div>
</tr>
</table>
<div class="TabulatorOutline" id="DummyUUID" role="main">
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

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

Redundant ARIA role - the div with id="DummyUUID" has role="main" but is already contained within a <main> element. This creates a nested main landmark which is confusing for screen readers. Remove the role="main" attribute from this div since the parent <main> element already provides the main landmark.

Suggested change
<div class="TabulatorOutline" id="DummyUUID" role="main">
<div class="TabulatorOutline" id="DummyUUID">

Copilot uses AI. Check for mistakes.
</div>
</tr>
</table>
<div class="TabulatorOutline" id="DummyUUID" role="main">
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

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

Redundant ARIA role - the div with id="DummyUUID" has role="main" but is already contained within a <main> element. This creates a nested main landmark which is confusing for screen readers. Remove the role="main" attribute from this div since the parent <main> element already provides the main landmark.

Suggested change
<div class="TabulatorOutline" id="DummyUUID" role="main">
<div class="TabulatorOutline" id="DummyUUID">

Copilot uses AI. Check for mistakes.
Comment on lines +54 to +62
"solid-panes": "4.0.0-newStyle-b960ffb7",
"solid-ui": "^3.0.1"
},
"overrides": {
"rdflib": "^2.3.3",
"solid-logic": "^4.0.1",
"solid-panes": "4.0.0-newStyle-b960ffb7",
"solid-ui": "^3.0.1",
"profile-pane": "2.0.0-newStyle-6806a782"
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

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

Using a pre-release version identifier with a git commit hash (4.0.0-newStyle-b960ffb7) is unconventional and may cause issues with semantic versioning tools and dependency resolution. Consider using standard pre-release identifiers like 4.0.0-alpha.1 or 4.0.0-beta.1 instead.

Suggested change
"solid-panes": "4.0.0-newStyle-b960ffb7",
"solid-ui": "^3.0.1"
},
"overrides": {
"rdflib": "^2.3.3",
"solid-logic": "^4.0.1",
"solid-panes": "4.0.0-newStyle-b960ffb7",
"solid-ui": "^3.0.1",
"profile-pane": "2.0.0-newStyle-6806a782"
"solid-panes": "4.0.0-beta.1",
"solid-ui": "^3.0.1"
},
"overrides": {
"rdflib": "^2.3.3",
"solid-logic": "^4.0.1",
"solid-panes": "4.0.0-beta.1",
"solid-ui": "^3.0.1",
"profile-pane": "2.0.0-beta.1"

Copilot uses AI. Check for mistakes.
</script>
</head>
<body>
<a href="#DummyUUID" class="skip-link">Skip to main content</a>
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

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

The skip link target points to #DummyUUID, but according to the HTML structure, this element has role="main" while there's also a <main> element with id="mainContent". The skip link should target the <main> element (#mainContent) instead of the nested div, as the main landmark should be at the outermost semantic level.

Copilot uses AI. Check for mistakes.
const loginButtonArea = document.getElementById("loginButtonArea");
const webIdArea = dom.getElementById('webId')
const banner = dom.getElementById('inputArea')
const inputArea = dom.getElementById('inputArea')
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

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

Unused variable inputArea.

Suggested change
const inputArea = dom.getElementById('inputArea')

Copilot uses AI. Check for mistakes.
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.

2 participants