fix(lit): align basic catalog component behaviors with angular implementation - #2205
Draft
josemontespg wants to merge 2 commits into
Draft
fix(lit): align basic catalog component behaviors with angular implementation#2205josemontespg wants to merge 2 commits into
josemontespg wants to merge 2 commits into
Conversation
Contributor
There was a problem hiding this comment.
Code Review
This pull request refactors the A2uiLitModal component to replace the native HTML <dialog> element with a custom overlay structure managed by Lit state, updating corresponding tests and the changelog. The review feedback focuses on enhancing the accessibility and layout of the new modal implementation, including adding keyboard navigation support to the trigger, using inset: 0 on the overlay to prevent layout issues, and adding proper ARIA roles and labels to the modal container and close button.
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
from
August 7, 2026 20:54
b3b3f3a to
d86413c
Compare
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
2 times, most recently
from
August 7, 2026 21:52
0da145e to
af9200b
Compare
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
4 times, most recently
from
August 7, 2026 22:27
551ff67 to
fbeb8c4
Compare
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
2 times, most recently
from
August 7, 2026 22:36
ebab296 to
b744832
Compare
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
from
August 12, 2026 17:23
b744832 to
13f5e98
Compare
josemontespg
marked this pull request as ready for review
August 12, 2026 17:47
sugoi-yuzuru
force-pushed
the
lit-align-angular-behaviors
branch
from
August 12, 2026 19:44
13f5e98 to
ebe3294
Compare
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
from
August 12, 2026 20:38
ebe3294 to
13f5e98
Compare
josemontespg
marked this pull request as draft
August 12, 2026 20:47
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
from
August 13, 2026 19:02
13f5e98 to
8d19fdc
Compare
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
from
August 14, 2026 19:17
8d19fdc to
9de4b2d
Compare
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
2 times, most recently
from
August 17, 2026 19:33
59dfe71 to
4d63c36
Compare
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
from
August 17, 2026 20:31
4d63c36 to
5d5c7d6
Compare
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
2 times, most recently
from
August 17, 2026 20:57
56d2ad9 to
a8faffb
Compare
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
from
August 17, 2026 21:27
a8faffb to
a341911
Compare
…entation Aligns the @a2ui/lit Basic Catalog component implementations, styling contracts, and lifecycle behaviors with the @a2ui/angular reference implementation in preparation for extracting universal web components. Architectural Rationale: - Prerequisite for universal components in @a2ui/web_core: Both renderers must converge on identical DOM hierarchies, styling variables, and event lifecycles prior to consolidating implementations in PR 3. - TextField: Renders all messages in validationErrors rather than truncating to validationErrors[0], matching protocol spec and Angular behavior. - Column: Sets container width to 100% to ensure standard flex layout distribution across varying container nesting. - Image: Removes default width: 100% constraint to preserve natural aspect ratios and allow explicit sizing constraints. - Modal: Migrates to explicit isOpen state tracking and .a2ui-modal-overlay structure for consistent dialog lifecycle and theming tokens. - Text: Wraps caption variant in <em> for standard italic styling.
josemontespg
force-pushed
the
lit-align-angular-behaviors
branch
from
August 18, 2026 21:35
a341911 to
f1a2386
Compare
josemontespg
commented
Aug 18, 2026
| * theme changes by injecting the selected color into the message stream. | ||
| * In a standard A2UI renderer deployment, this is not needed as the renderer | ||
| * simply processes messages as received from the agent, which is responsible | ||
| * for providing the correct theme. |
Collaborator
Author
There was a problem hiding this comment.
Don't remove this jsdoc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Aligns the
@a2ui/litBasic Catalog component implementations, styling contracts, and lifecycle behaviors with the@a2ui/angularreference implementation.Motivation & Architectural Rationale
This PR is a foundational step in our cross-framework rendering architecture:
Prerequisite for Universal Components (
@a2ui/web_core):In the subsequent PRs of this stack, the Basic Catalog implementations will be extracted into unified, universal Web Components hosted in
@a2ui/web_coreand shared directly across@a2ui/lit,@a2ui/angular, and upcoming renderers (such as React). To ensure this migration produces zero behavioral drift or visual regressions, all renderers must first converge on a canonical DOM structure, CSS variable contract, and event model.Adopting the More Complete Reference Behaviors:
Prior to this change, minor behavioral divergence existed between renderers where the Angular implementation provided a more robust and spec-complete contract:
TextField): The A2UI protocol specifiesvalidationErrorsas a string array (string[]). Angular renders all accumulated validation errors for the field, whereas Lit previously truncated output tovalidationErrors[0].Column): Angular columns definewidth: 100%on the flex container host to ensure consistent full-width item stretching across different nesting depths and container types.Image): Removing forcedwidth: 100%allows images to preserve intrinsic aspect ratios and respect explicit layout constraints without unintended stretching.Modal): Angular's modal architecture utilizes explicit boolean state tracking (isOpen) and standard overlay CSS classes/custom properties (.a2ui-modal-overlay,.a2ui-modal-content,--a2ui-modal-backdrop-bg). Aligning Lit to this pattern unifies CSS theming tokens and guarantees consistent event propagation and backdrop click handling across frameworks.Text): Wrappingvariant: 'caption'in<em>ensures captions render with standardized italic typography out of the box.Changes Made
TextField: Renders all error strings inprops.validationErrorsinstead of only the first index.Column: Addswidth: 100%to:host, a2ui-basic-columnstyles.Image: Removeswidth: 100%from defaultimgstyling to prevent unwanted stretching.Modal: Adopts explicit@state() accessor isOpen = false;state tracking and.a2ui-modal-overlay/.a2ui-modal-contentDOM hierarchy.Text: Wrapsvariant: 'caption'rendered markdown in<em>elements.Resolves #1270