[Bug] Header fullscreen/close controls lack accessible names and use hardcoded icon fills
Los mantenedores suelen responder en 1 día
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Current Behavior
In src/custom/Modal/index.tsx, the modal header actions are not properly accessible:
- The enter/exit fullscreen controls are the styled
FullScreenIcon/FullScreenExitIconSVG components with anonClick. They appear to be plain SVGs rather than buttons, so they have no role and no accessible name, and they are probably not keyboard-focusable. Please verify with a keyboard and a screen reader. The surroundingCustomTooltiponly helps on hover. - The close control is an
IconButton(CloseBtn) with noaria-label, so a screen reader announces only "button". CloseBtnhardcodesfill: #fff(andCloseIconpassesfill="#fff") instead of using the theme/token or inheritingcurrentColor. The fullscreen icons already usetheme.palette.common.white, so the header is inconsistent.
This conflicts with the existing guidance in DESIGN.md ("Semantic ARIA: icon-only buttons must supply descriptive aria-label and Tooltip").
Expected Behavior
- Fullscreen toggle: a native, keyboard-operable button (for example MUI
IconButton) witharia-label"Enter fullscreen" / "Exit fullscreen", keeping the existing tooltip anddata-testids (modal-enter-fullscreen-btn,modal-exit-fullscreen-btn). - Close control:
aria-label="Close dialog"(keepdata-testid="modal-close-btn"). - Icon colors come from the existing theme token or inherit via
currentColor(the header'scolor) rather than a hardcoded literal. - Keep this focused on the header controls: no layout or styling redesign.
Acceptance Criteria
-
getByRole('button', { name: 'Enter fullscreen' }),{ name: 'Exit fullscreen' }and{ name: 'Close dialog' }resolve in tests. - Both controls can be focused and activated with Tab, Enter and Space.
- No hardcoded color literals remain in the header controls.
- Existing Modal tests and
data-testids keep passing. - Does not change
Modal/useModalpublic props.
Context
- Raised in review by @leecalcote on #1868, and deliberately left out of that PR to keep it scoped to #1864.
Screenshots/Logs
Environment
Contributor Guides and Resources
- 🛠 Meshery Build & Release Strategy
- 📚 Instructions for contributing to documentation
- 🎨 Wireframes and designs for Sistent site in Figma (open invite)
- 🙋🏾🙋🏼 Questions: Layer5 Discussion Forum and Layer5 Community Slack
- Lenguaje dominante
- TypeScript
- Estrellas
- 140
- Forks
- 244
- Merge medio
- 2 d 22 h
- PR fusionados (30 d)
- 17
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de layer5io/sistent
-
PermissionShield: make the permissions docs link configurable instead of hard-coding docs.meshery.ioPosiblemente ocupada @SajanBisht la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
layer5io/sistent#1883 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
InfoTooltip is not keyboard reachable and has no accessible nameQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
[UI] Permission Shield tooltip uses fixed `placement="top"` instead of adaptive placementPosiblemente ocupada @dhruveshmishra la tomó hace 80 días. Abiertocomponent/ui help wanted kind/enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
layer5io/sistent#1772 · 5 comentarios ·
Los mantenedores suelen responder en 1 día
-
Barrel re-exports DateTimePickerProps from the optional peer @mui/x-date-pickers, so the type is `any` for consumers who skip itPosiblemente ocupada @Valyrian-Code la tomó hace 90 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
layer5io/sistent#1749 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
ESM build is not loadable by Node: extensionless 'lodash/debounce' specifier in dist/index.mjsQuizá libre de nuevo @Salmaan-M la tomó hace 94 días y no hay ningún pull request abierto. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
layer5io/sistent#1739 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de layer5io/sistent
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
awesome-dsh-plugin/awesome-dsh-plugin#9184 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
farion1231/cc-switch#8829 ·
Los mantenedores suelen responder en 1 día
-
[core-client] Remove unused hand-maintained transport helpers after the definition-table cutoverAbiertodoc-audit enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100