Skip to content

1.3.3 Sensory Characteristics#1519

Merged
GhiyasKM merged 8 commits into
developmentfrom
accessibility-assessment-sensory-charaterstics
May 13, 2026
Merged

1.3.3 Sensory Characteristics#1519
GhiyasKM merged 8 commits into
developmentfrom
accessibility-assessment-sensory-charaterstics

Conversation

@adityaKommunicate
Copy link
Copy Markdown

@adityaKommunicate adityaKommunicate commented Apr 22, 2026

What do you want to achieve?

-Improve the widget’s accessibility for WCAG 1.3.3 by removing sensory/icon-based instructions, adding clearer accessible labels, and making legacy interactive controls keyboard-operable without changing user-facing behavior unnecessarily.

PR Checklist

  • I have tested it locally and all functionalities are working fine.
  • I have compared it with mocks and all design elements are the same.
  • I have tested it in IE Browser.

How was the code tested?

-Verified that the attachment and popup label logic uses safe defaults and valid accessible names.
Verified keyboard activation wiring for focusable legacy role="button" controls in the sidebox logic.

What new thing you came across while writing this code?

-NA

In case you fixed a bug then please describe the root cause of it?

-NA

Screenshot

  • NA

NOTE: Make sure you're comparing your branch with the correct base branch

Summary by CodeRabbit

  • New Features

    • Replaced non-button controls with accessible button semantics and added accessible labels/titles across attachment, popup, voice, and feedback UIs
    • Expanded and added localized UI labels for uploads, voice, recording, quick replies, CSAT stars, and popup controls
  • Bug Fixes

    • Prevented repeated activations when holding keys for keyboard-triggered controls
  • Style

    • Improved answer-feedback button styling and clearer focus-visible indicators

Review Change Stack

Comment thread webplugin/js/app/km-message-markup-1.0.js Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 631fad71ed

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread webplugin/js/app/km-message-markup-1.0.js Outdated
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 22, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 6a18a057-0005-421c-bdf5-ded55533f903

📥 Commits

Reviewing files that changed from the base of the PR and between 2624056 and 7c8f87d.

📒 Files selected for processing (1)
  • webplugin/js/app/kommunicate-ui.js
🚧 Files skipped from review as they are similar to previous changes (1)
  • webplugin/js/app/kommunicate-ui.js

Walkthrough

This PR improves accessibility by adding localized labels and bindings, converting non-semantic interactive elements to buttons or button-like roles with aria-label/title, wiring keyboard activation for role-based controls (Enter/Space), and styling feedback buttons.

Changes

Accessibility Improvements - Button Semantics and Localized Labels

Layer / File(s) Summary
Label Definitions
webplugin/js/app/labels/default-labels-en.js, webplugin/js/app/labels/locales/*
New label keys for search clear, options, reply-preview close, uploads/attachments (image/video, cancel, retry, download), voice input/options/mode, quick replies, recording controls (delete/pause/play/send/stop), popup close, and CSAT STAR_1–STAR_5; voiceInterface.mutedNote updated across locales.
Label Application Infrastructure
webplugin/js/app/labels/default-labels.js
Adds a helper to set both title and aria-label; expands selector bindings to apply these labels and placeholders for voice, upload, recording, options/quick replies, reply preview close, FAQ, popup close, conversation header, and CSAT stars.
Template Markup – Button Semantics
webplugin/template/mck-sidebox.html, webplugin/js/app/km-message-markup-1.0.js
Converts conversation/options, voice menu, recorder controls, repeat-last-message, and attachment actions to buttons or adds role="button"+tabindex="0"; attachment download/preview and popup close bind localized aria-label/title; close SVG marked non-interactive.
Keyboard Activation
webplugin/js/app/mck-sidebox-1.0.js
handleActivationKey ignores auto-repeats (e.repeat); bindRoleButtonKeyboardActivation delegates keydown for role-based controls and maps Enter/Space to click(); initialized alongside dropdown keyboard binding.
Component Updates
webplugin/js/app/kommunicate-ui.js, webplugin/js/app/components/answer-feedback-service.js, webplugin/js/app/voice/mck-voice.js, webplugin/js/app/km-message-markup-1.0.js
Answer-feedback now returns <button type="button"> elements with aria-label/title and icons; attachment container/template populates cancelUploadLabel, retryUploadLabel, and downloadAttachmentLabel from MCK_LABELS; voice output override computes a single label and updates text/attributes; muted-state label text updated to reference "microphone button".
Button Styling
webplugin/css/app/style.css, webplugin/scss/components/_km-message-area.scss
Adds styles for .answer-feedback-helpful and .answer-feedback-not-helpful: appearance reset, 24×24 inline-flex centered layout, 4px radius, and focus/focus-visible pink ring via ::after with a subtle background tint on focus.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • kandpal025
  • thakaresakshi121
  • devashishmamgain
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is partially related to the changeset—it identifies the WCAG criterion being addressed (1.3.3 Sensory Characteristics), which is the main theme, but lacks specificity about what was changed (accessibility improvements, label additions, keyboard support).
Description check ✅ Passed The description is mostly complete with the objective clearly stated, testing approach documented, and PR checklist partially filled. Key required sections are present despite some minor items (design comparison, IE testing, screenshots) being unchecked or marked NA.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch accessibility-assessment-sensory-charaterstics

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
webplugin/js/app/km-message-markup-1.0.js (1)

14-26: ⚠️ Potential issue | 🔴 Critical

Fix the attachment label assignment—it crashes when rendering attachments.

Line 17-18 calls MCK_LABELS['attachment.cancelUpload'] as a function, but it's a string. This throws a TypeError on attachment upload. Additionally, data.retryUploadLabel is never assigned but the template references {{retryUploadLabel}}.

Proposed fix
 getAttachmentContanier: function (data, fileExpr, isUserMsg, fileUrl) {
     data.fileExpr = fileExpr;
     data.fileUrl = fileUrl;
-    data.cancelUploadLabel = (window.MCK_LABELS && MCK_LABELS['attachment.cancelUpload'])(
-        window.MCK_LABELS && MCK_LABELS['attachment.retryUpload']
-    );
+    data.fileMeta = data.fileMeta || {};
+    var attachmentLabels = window.MCK_LABELS || {};
+    var attachmentFileSuffix = data.fileMeta.name ? ': ' + data.fileMeta.name : '';
+    data.cancelUploadLabel =
+        (attachmentLabels['attachment.cancelUpload'] || 'Cancel upload') + attachmentFileSuffix;
+    data.retryUploadLabel =
+        (attachmentLabels['attachment.retryUpload'] || 'Retry upload') + attachmentFileSuffix;
     data.downloadAttachmentLabel =
-        (window.MCK_LABELS && MCK_LABELS['attachment.download']) +
-        (data.fileMeta && data.fileMeta.name ? ': ' + data.fileMeta.name : '');
+        (attachmentLabels['attachment.download'] || 'Download attachment') + attachmentFileSuffix;
     data.previewContainerClass = isUserMsg
         ? 'km-custom-widget-background-color'
         : 'km-attach-preview-container';
-    data.fileMeta = data.fileMeta || {};
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@webplugin/js/app/km-message-markup-1.0.js` around lines 14 - 26, In
getAttachmentContanier, the code incorrectly invokes
MCK_LABELS['attachment.cancelUpload'] as a function and never sets
retryUploadLabel, causing a TypeError; change the assignments so
cancelUploadLabel reads the string value (not called) and add
data.retryUploadLabel = (window.MCK_LABELS &&
MCK_LABELS['attachment.retryUpload']) || 'Retry' (or another sensible default),
and ensure cancelUploadLabel similarly falls back to a default string—update the
assignments around data.cancelUploadLabel and data.downloadAttachmentLabel in
getAttachmentContanier to use the label values safely.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@webplugin/js/app/km-message-markup-1.0.js`:
- Around line 7-8: Replace the SVG-only cancel and retry controls with native
buttons: wrap the cancel SVG (class km-attachment-cancel-icon-{{key}} /
{{cancelIconClass}}) and the upload/retry SVG (class
km-attachment-upload-icon-{{key}} / {{uploadIconClass}}) in <button
type="button"> elements that preserve the existing classes and aria-label/title
values, move/remove role="button" and tabindex from the SVGs onto the button,
and ensure the click handlers (selectors currently targeting those SVG elements)
are updated to target the new button elements so keyboard activation
(Enter/Space) works and the buttons do not submit forms.
- Around line 180-187: The closeButtonLabel is injected unescaped into
closeButtonMarkup and a div with role="button" is used; replace the div-based
control with a native <button> element to restore keyboard activation and remove
the need for custom keyboard handlers, ensure closeButtonLabel is HTML-escaped
before insertion into both aria-label and title, and add aria-hidden="true" to
the SVG markup; update the variable closeButtonMarkup (and any code that renders
it) to use the escaped label for both attributes and a <button> containing the
SVG icon.

In `@webplugin/template/mck-sidebox.html`:
- Around line 167-172: Several interactive divs (e.g.,
id="km-restart-conversation", id="user-overide-voice-output", selectors
.voiceNote, .voiceInput, `#delete-recording`, `#pause-btn`, `#play-btn`, `#send-btn`,
`#mck-stop-recording`, `#mck-voice-repeat-last-msg`) are given role="button" and
tabindex="0" but lack keyboard activation; either replace these divs with
semantic <button type="button"> elements (preferred) or add a delegated keydown
handler that listens for Enter/Space, calls event.preventDefault(), and triggers
the element's click action for those selectors so keyboard users can activate
them.

---

Outside diff comments:
In `@webplugin/js/app/km-message-markup-1.0.js`:
- Around line 14-26: In getAttachmentContanier, the code incorrectly invokes
MCK_LABELS['attachment.cancelUpload'] as a function and never sets
retryUploadLabel, causing a TypeError; change the assignments so
cancelUploadLabel reads the string value (not called) and add
data.retryUploadLabel = (window.MCK_LABELS &&
MCK_LABELS['attachment.retryUpload']) || 'Retry' (or another sensible default),
and ensure cancelUploadLabel similarly falls back to a default string—update the
assignments around data.cancelUploadLabel and data.downloadAttachmentLabel in
getAttachmentContanier to use the label values safely.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 73880d20-1486-4bcc-aa8d-978cfd602fb2

📥 Commits

Reviewing files that changed from the base of the PR and between 1983640 and 631fad7.

📒 Files selected for processing (5)
  • webplugin/js/app/km-message-markup-1.0.js
  • webplugin/js/app/kommunicate-ui.js
  • webplugin/js/app/labels/default-labels-en.js
  • webplugin/js/app/labels/default-labels.js
  • webplugin/template/mck-sidebox.html

Comment thread webplugin/js/app/km-message-markup-1.0.js Outdated
Comment thread webplugin/js/app/km-message-markup-1.0.js Outdated
Comment thread webplugin/template/mck-sidebox.html
@adityaKommunicate adityaKommunicate changed the title issues 1.3.3 Sensory Characteristics Apr 22, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@webplugin/js/app/km-message-markup-1.0.js`:
- Around line 17-21: The new attachment label assignments
(data.cancelUploadLabel, data.retryUploadLabel, data.downloadAttachmentLabel)
can become empty or produce "undefined: filename" when window.MCK_LABELS is
missing or keys are not present; update these assignments to use safe fallbacks
(e.g., default strings like "Cancel", "Retry", "Download") when MCK_LABELS or
the specific key is falsy, and build data.downloadAttachmentLabel so it
concatenates the fallback label and the filename only when the label is defined
(avoiding "undefined: <name>"); change the logic in the block that sets
data.cancelUploadLabel, data.retryUploadLabel and data.downloadAttachmentLabel
to prefer MCK_LABELS[...] when present and otherwise substitute the default text
and then append ": " + data.fileMeta.name only if a filename exists.

In `@webplugin/js/app/mck-sidebox-1.0.js`:
- Around line 7016-7024: The keydown handler in bindRoleButtonKeyboardActivation
is causing repeated activations when a key is held; add a guard to ignore
repeated keydown events (event.repeat === true) before calling the activation
callback. Specifically, update the anonymous function bound in
bindRoleButtonKeyboardActivation (and the similar one in
bindDropdownKeyboardActivation) to check event.repeat (and optionally only for
Enter/Space key codes) and return early when true, then call
handleActivationKey(event, this.click.bind(this)) only for non-repeated
keydowns; alternatively move this check into handleActivationKey so both
bindRoleButtonKeyboardActivation and bindDropdownKeyboardActivation are
protected.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: fddeb606-1cca-4662-889a-cfa57c492ebe

📥 Commits

Reviewing files that changed from the base of the PR and between 631fad7 and 843ac86.

📒 Files selected for processing (5)
  • webplugin/css/app/style.css
  • webplugin/js/app/km-message-markup-1.0.js
  • webplugin/js/app/mck-sidebox-1.0.js
  • webplugin/scss/components/_km-attachment.scss
  • webplugin/scss/components/_km-chat-popup.scss
✅ Files skipped from review due to trivial changes (3)
  • webplugin/scss/components/_km-chat-popup.scss
  • webplugin/scss/components/_km-attachment.scss
  • webplugin/css/app/style.css

Comment thread webplugin/js/app/km-message-markup-1.0.js Outdated
Comment thread webplugin/js/app/mck-sidebox-1.0.js
Comment thread webplugin/js/app/km-message-markup-1.0.js
@adityaKommunicate adityaKommunicate force-pushed the accessibility-assessment-sensory-charaterstics branch from 843ac86 to 47cd19a Compare April 22, 2026 09:59
Comment thread webplugin/js/app/labels/default-labels.js
faqBackButton.setAttribute('aria-label', MCK_LABELS['faq.back.to.categories']);
faqBackButton.setAttribute('title', MCK_LABELS['faq.back.to.categories']);
}
['1', '2', '3', '4', '5'].forEach(function (starValue) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we have rating as 1,2,3,4,5

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

yes in mck-sidebox.html->
.... the data-rating="1" , 2 , 3 , 4 , 5

@adityaKommunicate adityaKommunicate force-pushed the accessibility-assessment-sensory-charaterstics branch from 269be79 to 2624056 Compare May 11, 2026 11:17
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
webplugin/js/app/components/answer-feedback-service.js (1)

226-230: ⚡ Quick win

Add aria-hidden="true" to icon SVG containers for better screen reader experience.

The SVG icons rendered inside the buttons will be announced by screen readers in addition to the aria-label text, potentially causing redundant or confusing announcements. Since the buttons already have descriptive aria-label attributes, the icons serve only a visual purpose and should be hidden from assistive technology.

♻️ Recommended fix to hide decorative icons

Ensure that the SVG icons in KommunicateConstants.ANSWER_FEEDBACK_ICONS include aria-hidden="true" on their root element. If they don't, you can wrap them or add the attribute programmatically:

 getFeedbackTemplate = () => {
     return `<button type="button" class="answer-feedback-helpful" aria-label="${
         MCK_LABELS.answerFeedback.helpful
     }" title="${MCK_LABELS.answerFeedback.helpful}">
-                ${
+                <span aria-hidden="true">${
                     KommunicateConstants.ANSWER_FEEDBACK_ICONS[
                         KommunicateConstants.ANSWER_FEEDBACK.HELPFUL
                     ]
-                }
+                }</span>
             </button>
             <button type="button" class="answer-feedback-not-helpful" aria-label="${
                 MCK_LABELS.answerFeedback.notHelpful
             }" title="${MCK_LABELS.answerFeedback.notHelpful}">
-                 ${
+                 <span aria-hidden="true">${
                      KommunicateConstants.ANSWER_FEEDBACK_ICONS[
                          KommunicateConstants.ANSWER_FEEDBACK.NOT_HELPFUL
                      ]
-                 }
+                 }</span>
              </button>`;
 };

Alternatively, add aria-hidden="true" directly to the SVG elements where ANSWER_FEEDBACK_ICONS is defined.

Also applies to: 235-239

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@webplugin/js/app/components/answer-feedback-service.js` around lines 226 -
230, The SVG icons used from KommunicateConstants.ANSWER_FEEDBACK_ICONS
(referenced when rendering KommunicateConstants.ANSWER_FEEDBACK.HELPFUL and the
other feedback variants) are decorative and should be hidden from assistive
tech; update the SVG root elements in the ANSWER_FEEDBACK_ICONS definitions to
include aria-hidden="true" or, if altering the constant is undesirable, ensure
the rendering code that injects these icons wraps or sets aria-hidden="true" on
the SVG container so screen readers ignore the icons while the button aria-label
remains the accessible label.
webplugin/scss/components/_km-message-area.scss (1)

116-135: ⚡ Quick win

Consider using design system color variables for the focus indicator.

The focus ring and background use a hardcoded pink color (#ff6b81 and rgba(255, 107, 129, 0.08)) that does not appear to come from the established design system variables. Other focus indicators in this file use $primary-color or rgba(76, 102, 205, 0.6), creating a visual inconsistency.

If this pink color is intentional for answer feedback controls specifically, consider documenting the decision. Otherwise, using a design system variable (e.g., $primary-color or a custom property like --km-accent) would improve maintainability and ensure consistent theming.

♻️ Suggested refactor to use design system color
     &::after {
         content: '';
         position: absolute;
         inset: -2px;
-        border: 1px solid `#ff6b81`;
-        box-shadow: 0 0 0 2px `#ff6b81`;
+        border: 1px solid rgba($primary-color, 0.6);
+        box-shadow: 0 0 0 2px rgba($primary-color, 0.6);
         border-radius: inherit;
         opacity: 0;
         pointer-events: none;
     }

     &:focus,
     &:focus-visible {
-        background: rgba(255, 107, 129, 0.08);
+        background: rgba($primary-color, 0.08);
         outline: none;

         &::after {
             opacity: 1;
         }
     }

Alternatively, if the pink is intentional, define it as $answer-feedback-focus-color: #ff6b81; at the top of the file with a comment explaining the design decision.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@webplugin/scss/components/_km-message-area.scss` around lines 116 - 135,
Replace the hardcoded pink focus colors in the Km message area styles (the
&::after pseudo-element and the &:focus / &:focus-visible background) with
design-system tokens instead of literal values; update references in the rules
shown (the &::after border/box-shadow and the focus background rgba) to use an
existing token like $primary-color or a new variable/Custom Property (e.g.,
$answer-feedback-focus-color or --km-accent) and, if the pink is intentional,
add that variable near the top of the stylesheet with a brief comment
documenting the decision so theming and consistency are preserved.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@webplugin/js/app/components/answer-feedback-service.js`:
- Around line 223-225: The template that builds the answer-feedback buttons
directly uses MCK_LABELS.answerFeedback.helpful and
MCK_LABELS.answerFeedback.notHelpful; change those occurrences to use optional
chaining with sensible fallbacks (e.g. MCK_LABELS?.answerFeedback?.helpful ||
'Helpful' and MCK_LABELS?.answerFeedback?.notHelpful || 'Not helpful') so the
template string won’t throw if labels are missing; apply the same defensive
replacement to the other instance mentioned (the second button/template around
the notHelpful usage).

In `@webplugin/js/app/kommunicate-ui.js`:
- Around line 1304-1312: Guard access to
MCK_LABELS['conversation.header.dropdown'] and the DOM element before setting
innerText: check that MCK_LABELS && MCK_LABELS['conversation.header.dropdown']
exists and that document.getElementById('user-overide-voice-output-text')
returns a non-null element; if the label namespace or specific keys are missing,
fall back to a default string for voiceOutputLabel, and only call
element.innerText after the null check; keep the existing
kommunicateCommons.hide/show and voiceOutputLabel logic but wrap label
resolution and the DOM write in these guards to prevent runtime crashes.

---

Nitpick comments:
In `@webplugin/js/app/components/answer-feedback-service.js`:
- Around line 226-230: The SVG icons used from
KommunicateConstants.ANSWER_FEEDBACK_ICONS (referenced when rendering
KommunicateConstants.ANSWER_FEEDBACK.HELPFUL and the other feedback variants)
are decorative and should be hidden from assistive tech; update the SVG root
elements in the ANSWER_FEEDBACK_ICONS definitions to include aria-hidden="true"
or, if altering the constant is undesirable, ensure the rendering code that
injects these icons wraps or sets aria-hidden="true" on the SVG container so
screen readers ignore the icons while the button aria-label remains the
accessible label.

In `@webplugin/scss/components/_km-message-area.scss`:
- Around line 116-135: Replace the hardcoded pink focus colors in the Km message
area styles (the &::after pseudo-element and the &:focus / &:focus-visible
background) with design-system tokens instead of literal values; update
references in the rules shown (the &::after border/box-shadow and the focus
background rgba) to use an existing token like $primary-color or a new
variable/Custom Property (e.g., $answer-feedback-focus-color or --km-accent)
and, if the pink is intentional, add that variable near the top of the
stylesheet with a brief comment documenting the decision so theming and
consistency are preserved.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: a302210f-8e2c-47a6-859c-5670ad30b3b1

📥 Commits

Reviewing files that changed from the base of the PR and between d378406 and 2624056.

📒 Files selected for processing (20)
  • webplugin/css/app/style.css
  • webplugin/js/app/components/answer-feedback-service.js
  • webplugin/js/app/km-message-markup-1.0.js
  • webplugin/js/app/kommunicate-ui.js
  • webplugin/js/app/labels/default-labels-en.js
  • webplugin/js/app/labels/default-labels.js
  • webplugin/js/app/labels/locales/ar.json
  • webplugin/js/app/labels/locales/de.json
  • webplugin/js/app/labels/locales/es.json
  • webplugin/js/app/labels/locales/fr.json
  • webplugin/js/app/labels/locales/hi.json
  • webplugin/js/app/labels/locales/it.json
  • webplugin/js/app/labels/locales/pt.json
  • webplugin/js/app/labels/locales/sv.json
  • webplugin/js/app/labels/locales/ur.json
  • webplugin/js/app/labels/locales/zh.json
  • webplugin/js/app/mck-sidebox-1.0.js
  • webplugin/js/app/voice/mck-voice.js
  • webplugin/scss/components/_km-message-area.scss
  • webplugin/template/mck-sidebox.html
✅ Files skipped from review due to trivial changes (11)
  • webplugin/js/app/labels/locales/de.json
  • webplugin/js/app/labels/locales/es.json
  • webplugin/js/app/labels/locales/it.json
  • webplugin/js/app/labels/locales/zh.json
  • webplugin/js/app/labels/locales/hi.json
  • webplugin/js/app/labels/locales/pt.json
  • webplugin/js/app/labels/locales/ar.json
  • webplugin/js/app/labels/locales/fr.json
  • webplugin/js/app/labels/locales/ur.json
  • webplugin/js/app/labels/locales/sv.json
  • webplugin/js/app/voice/mck-voice.js
🚧 Files skipped from review as they are similar to previous changes (5)
  • webplugin/js/app/km-message-markup-1.0.js
  • webplugin/template/mck-sidebox.html
  • webplugin/js/app/labels/default-labels-en.js
  • webplugin/js/app/mck-sidebox-1.0.js
  • webplugin/js/app/labels/default-labels.js

Comment thread webplugin/js/app/components/answer-feedback-service.js
Comment thread webplugin/js/app/kommunicate-ui.js Outdated
@GhiyasKM GhiyasKM merged commit 5846cf6 into development May 13, 2026
2 of 4 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request May 26, 2026
3 tasks
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.

3 participants