molecule-core/canvas/src/components
molecule-ai[bot] 00bd73f8c8
fix(canvas): a11y fixes + budget_used TypeScript guard + orgs-page test fix (#1367)
* fix(canvas/a11y): mark StatusDot as aria-hidden — decorative element

StatusDot is purely decorative; the status is already conveyed via
aria-label on parent elements (WorkspaceNode, SidePanel header, etc.).
Marking it aria-hidden="true" prevents screen readers from announcing
the empty div as "img" with no alt text.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(canvas): guard budget_used optional field with ?? 0 in progress calc

TypeScript error in CI: 'budget.budget_used' is possibly 'undefined'
when used in the progress percentage calculation. The field is
optional per BudgetData interface, so ?? 0 is the correct guard.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(canvas/a11y): Tooltip keyboard focus support + ARIA role

- Add role="tooltip" + unique id so assistive tech can find tooltip content
- Add aria-describedby on trigger so screen readers announce tooltip text
- Add onFocus/onBlur handlers so keyboard users (Tab navigation) can see
  tooltips that mouse users see on hover

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(canvas/test): restore advanceTimersByTime pattern in orgs-page error test

waitFor() + fake timers (vi.useFakeTimers in beforeEach) cause race
conditions: the 5s polling timeout fires before React state updates flush.
Restores the established pattern used by all other tests in this file:
advanceTimersByTimeAsync(50) + runAllTimersAsync().
Also removes the now-unused waitFor import.

Ref: PRs #1360, #1345
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Molecule AI Core-UIUX <core-uiux@agents.moleculesai.app>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 11:08:24 +00:00
..
__tests__ fix(canvas/test): restore waitFor in orgs-page error test + add getState mock (#1341) 2026-04-21 07:52:15 +00:00
canvas initial commit — Molecule AI platform 2026-04-13 11:55:37 -07:00
settings feat(auth): organization-scoped API keys for admin access 2026-04-20 14:01:41 -07:00
tabs fix(canvas): a11y fixes + budget_used TypeScript guard + orgs-page test fix (#1367) 2026-04-21 11:08:24 +00:00
ui feat(canvas): wire live metrics API in WorkspaceUsage (#592) 2026-04-17 06:00:14 +00:00
A2ATopologyOverlay.tsx feat(canvas): A2A topology overlay with animated delegation edges (issue #744) 2026-04-17 15:45:34 +00:00
ApprovalBanner.tsx fix(a11y): WCAG ARIA fixes for time-sensitive components (Fixes #Fix1/#Fix2/#Fix3) 2026-04-16 05:40:40 -07:00
AuditTrailPanel.tsx feat(canvas): audit trail visualization panel (issue #753) 2026-04-17 16:03:28 +00:00
AuthGate.tsx fix(canvas): UIUX Cycle 15 dark-theme & a11y sweep (C1-C5, A1-A4, F1, M1) 2026-04-16 10:35:32 +00:00
BatchActionBar.tsx test(BatchActionBar): add hasFailedBatch success-reset test (#1170) 2026-04-21 00:12:37 +00:00
BundleDropZone.tsx fix(a11y): WCAG ARIA fixes for time-sensitive components (Fixes #Fix1/#Fix2/#Fix3) 2026-04-16 05:40:40 -07:00
Canvas.tsx fix(canvas): cascade-delete UX — require checkbox before Delete All (#1314) 2026-04-21 07:06:45 +00:00
CommunicationOverlay.tsx fix(canvas): address all code review findings on PR #482 2026-04-16 07:48:47 -07:00
ConfirmDialog.tsx fix(canvas): WCAG critical — ARIA live toasts, dialog focus trap, keyboard nav 2026-04-15 08:31:06 +00:00
ConsoleModal.tsx fix(canvas): show toast when clipboard API unavailable in ConsoleModal (#1199) (#1231) 2026-04-21 02:45:29 +00:00
ContextMenu.tsx fix(canvas): cascade-delete UX — require checkbox before Delete All (#1314) 2026-04-21 07:06:45 +00:00
ConversationTraceModal.tsx fix(a11y): add aria-label to Dialog.Content in ConversationTraceModal (Issue M) 2026-04-17 23:31:20 +00:00
CookieConsent.tsx feat(canvas): cookie consent banner with privacy-preserving default 2026-04-15 13:01:48 -07:00
CreateWorkspaceDialog.tsx fix(canvas): WCAG SC 1.3.1 — programmatic label/input association in InputField 2026-04-17 06:07:08 +00:00
DeleteCascadeConfirmDialog.tsx fix(canvas): cascade-delete UX — require checkbox before Delete All (#1314) 2026-04-21 07:06:45 +00:00
EmptyState.tsx fix(canvas): add role=alert to deploy error in EmptyState 2026-04-17 21:16:14 +00:00
ErrorBoundary.tsx test: 100% coverage of extracted helpers + ConfirmDialog singleButton 2026-04-13 17:08:33 -07:00
Legend.tsx fix(canvas): address all code review findings on PR #482 2026-04-16 07:48:47 -07:00
MemoryInspectorPanel.tsx fix(test): align ssrf_test.go localhost test cases with isSafeURL behaviour (#1192) 2026-04-21 02:08:45 +00:00
MissingKeysModal.tsx fix(wcag): sweep text-zinc-600→zinc-500 across 9 components with small text 2026-04-16 07:53:00 +00:00
OnboardingWizard.tsx fix(canvas): add ARIA landmark and live region to OnboardingWizard 2026-04-17 21:17:32 +00:00
PricingTable.tsx feat(canvas): /pricing route with plan selector + Stripe checkout 2026-04-15 13:41:44 -07:00
ProvisioningTimeout.tsx feat(canvas): show last_sample_error + EC2 console output on failed workspaces 2026-04-20 17:22:15 -07:00
SearchDialog.tsx fix(canvas): address all code review findings on PR #482 2026-04-16 07:48:47 -07:00
SidePanel.tsx Merge pull request #888 from Molecule-AI/fix/canvas-a11y-sidepanel-resize-keyboard 2026-04-18 01:20:02 +00:00
Spinner.tsx fix(canvas): address all code review findings on PR #482 2026-04-16 07:48:47 -07:00
StatusDot.tsx fix(canvas): a11y fixes + budget_used TypeScript guard + orgs-page test fix (#1367) 2026-04-21 11:08:24 +00:00
TemplatePalette.tsx fix(canvas): address all code review findings on PR #482 2026-04-16 07:48:47 -07:00
TermsGate.tsx feat(canvas): ToS gate modal + us-east-2 data residency notice 2026-04-19 07:44:47 -07:00
Toaster.tsx fix(canvas): WCAG critical — ARIA live toasts, dialog focus trap, keyboard nav 2026-04-15 08:31:06 +00:00
Toolbar.tsx fix(canvas): add aria-label to Toolbar buttons and status pills 2026-04-17 21:17:05 +00:00
Tooltip.tsx fix(canvas): a11y fixes + budget_used TypeScript guard + orgs-page test fix (#1367) 2026-04-21 11:08:24 +00:00
WorkspaceNode.tsx Merge pull request #949 from Molecule-AI/feat/canvas-batch-operations 2026-04-20 08:48:26 -07:00
WorkspaceUsage.tsx fix(canvas): guard undefined lastErrorRate and period dates in metrics (PR #1250) 2026-04-21 03:22:17 +00:00