Skip to content

Feat/adding css part metadata - #536

Open
Ashley Osuna (ashley-osuna) wants to merge 39 commits into
masterfrom
feat/adding-css-part-metadata
Open

Ashley Osuna (ashley-osuna) wants to merge 39 commits into
masterfrom
feat/adding-css-part-metadata

Conversation

@ashley-osuna

@ashley-osuna Ashley Osuna (ashley-osuna) commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Description of the change

Annotates Mint components with @csspart metadata so Portal can discover and expose their internal editable parts in the CSS editor.

Type of change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation or Development tools (readme, specs, tests, code formatting)

Links

  • Jira
  • Process.st launch checklist: (PUT IT HERE)

Checklists

Development

  • Prettier was run (if applicable)
  • The behaviour changes in the pull request are covered by specs
  • All tests related to the changed code pass in development

Paperwork

  • This pull request has a descriptive title and information useful to a reviewer
  • This pull request has a Jira number
  • This pull request has a Process.st launch checklist

Code review

  • Changes have been reviewed by at least one other engineer
  • Security impacts of this change have been considered

@ashley-osuna
Ashley Osuna (ashley-osuna) marked this pull request as ready for review September 11, 2026 00:28
Copilot AI balanced review requested due to automatic review settings September 11, 2026 00:28

Copilot AI left a comment

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.

🟡 Changes recommended

Several advertised parts are unreachable or inconsistently exposed, and the DocuSign shadow change can hide documented slot content.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Expands Mint Components’ CSS Shadow Parts metadata and exposes additional styling hooks, including tax-and-cash container forwarding.

Changes:

  • Documents CSS parts across shared, portal, rewards, and tax components.
  • Adds runtime parts and forwards tax-and-cash container parts.
  • Updates shadow settings, package version, and documentation tooling.
File summaries
File Description
tax-and-cash/sqm-user-info-form/sqm-user-info-form.tsx Documents form parts.
tax-and-cash/sqm-user-info-form/sqm-user-info-form-view.tsx Adds form container part.
tax-and-cash/sqm-tax-and-cash/sqm-tax-and-cash.tsx Re-exports child container parts.
tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard.tsx Documents dashboard parts.
tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard-view.tsx Adds dashboard container part.
tax-and-cash/sqm-payout-status-alert/sqm-payout-status-alert.tsx Documents alert parts.
tax-and-cash/sqm-payout-details-card/sqm-payout-details-card-view.tsx Adds payout-card part.
tax-and-cash/sqm-indirect-tax-form/sqm-indirect-tax-form.tsx Documents tax-form parts.
tax-and-cash/sqm-indirect-tax-form/sqm-indirect-tax-form-view.tsx Adds form container part.
tax-and-cash/sqm-docusign-form/sqm-docusign-form.tsx Documents parts and enables shadow DOM.
tax-and-cash/sqm-docusign-form/sqm-docusign-form-view.tsx Adds form container part.
tax-and-cash/sqm-banking-info-form/sqm-banking-info-form.tsx Documents parts and enables shadow DOM.
tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.tsx Adds form container part.
sqm-widget-verification/sqm-email-verification/sqm-email-verification.tsx Documents verification parts.
sqm-widget-verification/sqm-code-verification/sqm-code-verification.tsx Documents code-verification parts.
sqm-user-attribute/sqm-user-attribute.tsx Documents base part.
sqm-titled-section/sqm-titled-section.tsx Documents label part.
sqm-timeline/sqm-timeline-entry.tsx Documents timeline-entry parts.
sqm-text-span/sqm-text-span.tsx Documents text-span part.
sqm-task-card/sqm-task-card.tsx Documents task-card parts.
sqm-tabs/sqm-tabs.tsx Documents tab part.
sqm-stat-container/sqm-stat-container.tsx Documents stat-container parts.
sqm-share-link/sqm-share-link.tsx Documents share-link parts.
sqm-share-code/sqm-share-code.tsx Documents share-code parts.
sqm-share-button/sqm-share-button.tsx Documents share-button parts.
sqm-scroll/sqm-scroll.tsx Documents button part.
sqm-rewards-table/columns/sqm-rewards-table-reward-column.tsx Documents reward-column parts.
sqm-rewards-table/cells/sqm-rewards-table-reward-cell.tsx Adds reward-cell metadata.
sqm-reward-exchange-list/sqm-reward-exchange-list.tsx Documents exchange-list parts.
sqm-referred-registration/sqm-referred-registration.tsx Documents registration parts.
sqm-referral-table/sqm-referral-table.tsx Documents table base part.
sqm-referral-table/columns/sqm-referral-table-rewards-column.tsx Documents reward value part.
sqm-referral-table/cells/sqm-referral-table-rewards-cell.tsx Documents cell value part.
sqm-referral-codes/sqm-referral-codes.tsx Documents base part.
sqm-referral-code/sqm-referral-code.tsx Documents referral-code parts.
sqm-referral-card/sqm-referral-card.tsx Documents base part.
sqm-qr-code/sqm-qr-code.tsx Documents QR-code parts.
sqm-program-explainer/sqm-program-explainer.tsx Documents explainer parts.
sqm-program-explainer-step/sqm-program-explainer-step.tsx Documents explainer-step parts.
sqm-portal-verify-email/sqm-portal-verify-email.tsx Documents verification parts.
sqm-portal-reset-password/sqm-portal-reset-password.tsx Documents reset-form parts.
sqm-portal-reset-password/sqm-portal-reset-password-view.tsx Adds base parts across states.
sqm-portal-registration-form/sqm-portal-registration-form.tsx Documents registration parts.
sqm-portal-register/sqm-portal-register.tsx Documents registration parts.
sqm-portal-profile/sqm-portal-profile.tsx Documents profile parts.
sqm-portal-login/sqm-portal-login.tsx Documents login parts.
sqm-portal-google-registration-form/sqm-portal-google-registration-form.tsx Documents Google registration parts.
sqm-portal-google-login/sqm-portal-google-login.tsx Documents password-link part.
sqm-portal-frame/sqm-portal-frame.tsx Documents frame parts.
sqm-portal-forgot-password/sqm-portal-forgot-password.tsx Documents recovery parts.
sqm-portal-footer/sqm-portal-footer.tsx Documents footer base part.
sqm-portal-email-verification/sqm-portal-email-verification.tsx Documents email-verification parts.
sqm-portal-email-verification/sqm-portal-email-verification-view.tsx Adds base part.
sqm-portal-container/sqm-portal-container.tsx Documents container base part.
sqm-portal-change-password/sqm-portal-change-password.tsx Documents password-form parts.
sqm-portal-change-password/sqm-portal-change-password-view.tsx Adds base part.
sqm-portal-change-marketing/sqm-portal-change-marketing.tsx Documents marketing-form parts.
sqm-popup-container/sqm-popup-container.tsx Documents popup parts.
sqm-password-field/sqm-password-field.tsx Documents password-field parts.
sqm-partner-info-modal/sqm-partner-info-modal.tsx Documents modal form parts.
sqm-pagination/sqm-pagination.tsx Documents pagination parts.
sqm-navigation-sidebar/sqm-navigation-sidebar.tsx Documents sidebar parts.
sqm-navigation-sidebar-item/sqm-navigation-sidebar-item.tsx Documents sidebar-item parts.
sqm-navigation-menu/sqm-navigation-menu.tsx Documents dropdown part.
sqm-name-fields/sqm-name-fields.tsx Documents input parts.
sqm-logout-current-user/sqm-logout-current-user.tsx Documents logout parts.
sqm-link-button/sqm-link-button.tsx Documents link-button parts.
sqm-leaderboard/sqm-leaderboard.tsx Documents leaderboard parts.
sqm-lead-form/sqm-lead-input-field.tsx Documents input-field base part.
sqm-lead-form/sqm-lead-form.tsx Documents lead-form parts.
sqm-lead-form/sqm-lead-dropdown-field.tsx Documents dropdown base part.
sqm-lead-form/sqm-lead-checkbox-field.tsx Documents checkbox base part.
sqm-invoice-table/sqm-invoice-table.tsx Reformats component documentation.
sqm-instant-access-registration/sqm-instant-access-registration.tsx Documents registration parts.
sqm-input-field/sqm-input-field.tsx Documents input-field parts.
sqm-image/sqm-image.tsx Documents image parts.
sqm-hero/sqm-hero.tsx Documents hero-layout parts.
sqm-hero-image/sqm-hero-image.tsx Documents hero-image parts.
sqm-form-message/sqm-form-message.tsx Documents alert variant parts.
sqm-empty/sqm-empty.tsx Documents empty-state parts.
sqm-edit-profile/sqm-edit-profile.tsx Documents edit-profile parts.
sqm-dropdown-field/sqm-dropdown-field.tsx Documents dropdown-field parts.
sqm-divided-layout/sqm-divided-layout.tsx Documents layout base part.
sqm-coupon-code/sqm-coupon-code.tsx Documents coupon parts.
sqm-coupon-code/sqm-coupon-code-view.tsx Adds coupon label part.
sqm-checkbox-field/sqm-checkbox-field.tsx Documents checkbox parts.
sqm-card-feed/sqm-card-feed.tsx Documents feed base part.
sqm-big-stat/sqm-big-stat.tsx Documents statistic parts.
package.json Updates version and documentation dependencies.
Review details
  • Files reviewed: 89/90 changed files
  • Comments generated: 11
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread packages/mint-components/src/components/sqm-checkbox-field/sqm-checkbox-field.tsx Outdated
Comment thread packages/mint-components/src/components/sqm-lead-form/sqm-lead-form.tsx Outdated
Comment thread packages/mint-components/src/components/sqm-portal-profile/sqm-portal-profile.tsx Outdated
Comment thread packages/mint-components/src/components/sqm-text-span/sqm-text-span.tsx Outdated
Copilot AI review requested due to automatic review settings September 11, 2026 02:36

Copilot AI left a comment

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.

🟡 Changes recommended

Several advertised CSS parts do not match the rendered API, and two public forms introduce an undocumented Shadow DOM breaking change.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (11)

Previously missed (9) — in code that hasn't changed since the last review.

packages/mint-components/src/components/sqm-hero-image/sqm-hero-image.tsx:22

  • These two documented parts are not exposed by the implementation: the only button export is base: sqm-hero-image-button, and the rendered button is always type="primary". Advertising primarybutton-base and secondarybutton-base produces CSS-part metadata for selectors that cannot match this component.
    packages/mint-components/src/components/sqm-referral-table/columns/sqm-referral-table-rewards-column.tsx:10
  • This column renders only a hidden host; its renderCell() result is inserted into the parent referral table, so the column itself never exposes sqm-cell-value. Move this CSS-part metadata to sqm-referral-table, which is the host through which the cell part is actually exported.
    packages/mint-components/src/components/sqm-referral-table/sqm-referral-table.tsx:28
  • GenericTableView renders the table root as a plain <div> with no sqm-base part, so this metadata advertises a part that does not exist. Add the part to the shared table root or remove this declaration.
    packages/mint-components/src/components/sqm-rewards-table/columns/sqm-rewards-table-reward-column.tsx:11
  • These parts are not exposed by the column component: its render output is only a hidden Host, while renderCell() inserts the exported cell into the parent rewards table’s shadow root. Consequently, sqm-rewards-table-reward-column::part(...) cannot match them; declare these parts on sqm-rewards-table instead (and keep the cell declarations for direct cell use).
    packages/mint-components/src/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form.tsx:30
  • The view now exposes form-container, but this component does not declare it in @csspart metadata. This leaves the generated API incomplete for both direct use and the forwarding added in sqm-tax-and-cash.

This issue also appears on line 34 of the same file.
packages/mint-components/src/components/tax-and-cash/sqm-docusign-form/sqm-docusign-form.tsx:20

  • The newly exposed form-container part is missing from this component’s metadata. Add it so the generated CSS-part API matches the part forwarded by sqm-tax-and-cash.

This issue also appears on line 24 of the same file.
packages/mint-components/src/components/tax-and-cash/sqm-indirect-tax-form/sqm-indirect-tax-form.tsx:26

  • form-container is exposed by the view and forwarded by sqm-tax-and-cash, but it is absent from this component’s CSS-part metadata, so direct consumers will not discover it in the generated metadata.
    packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard.tsx:18
  • dashboard-container is now exposed and forwarded as the monolith’s container, but the dashboard’s own CSS-part metadata omits it. Add the declaration so generated metadata reflects the actual public part.
    packages/mint-components/src/components/tax-and-cash/sqm-user-info-form/sqm-user-info-form.tsx:18
  • form-container is now a public part on the form view, but it is omitted from this component’s CSS-part metadata. The generated component metadata will therefore not advertise the part that sqm-tax-and-cash relies on forwarding.

packages/mint-components/src/components/tax-and-cash/sqm-docusign-form/sqm-docusign-form.tsx:24

  • Changing this public component from light DOM to shadow DOM is an encapsulation-breaking API change: existing descendant selectors and DOM queries no longer reach its rendered form. This conflicts with the PR’s non-breaking classification; either preserve light-DOM behavior or release and document this as a breaking migration with complete replacement parts.
    packages/mint-components/src/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form.tsx:34
  • Switching this public form from light DOM to shadow DOM prevents existing consumer CSS selectors and DOM queries from reaching its internals. That is a breaking API change despite the PR being classified as non-breaking; retain the prior rendering mode or treat this as a documented major migration with equivalent parts exposed.
  • Files reviewed: 89/90 changed files
  • Comments generated: 1
  • Review effort level: Balanced

Copilot AI review requested due to automatic review settings September 11, 2026 02:43

Copilot AI left a comment

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.

🟡 Changes recommended

Several documented parts are unreachable on non-shadow hosts, and two public forms introduce breaking Shadow DOM encapsulation changes.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (9)

Previously missed (9) — in code that hasn't changed since the last review.

packages/mint-components/src/components/sqm-dropdown-field/sqm-dropdown-field.tsx:22

  • These documented parts cannot be selected through sqm-dropdown-field::part(...) because the component has no shadow root. As written, the metadata exposes an API that does not work; either omit these entries or add Shadow DOM only after validating slotting and form behavior.
    packages/mint-components/src/components/sqm-input-field/sqm-input-field.tsx:18
  • These CSS parts are not addressable through sqm-input-field::part(...): this component does not create a shadow root (@Component omits shadow: true), so it has no part map to expose. The generated metadata will advertise a nonfunctional styling API. Either preserve light-DOM styling and omit these CSS-part entries, or intentionally introduce and validate shadow encapsulation before documenting them.
    packages/mint-components/src/components/sqm-lead-form/sqm-lead-checkbox-field.tsx:17
  • This host does not create a shadow root, so it cannot expose sqm-base as a CSS part to direct consumers. The metadata will claim support for a ::part() selector that cannot match. Remove the entry or migrate the component to Shadow DOM with form-behavior coverage.
    packages/mint-components/src/components/sqm-lead-form/sqm-lead-dropdown-field.tsx:18
  • sqm-lead-dropdown-field has no shadow root, so the newly documented sqm-base part is not reachable with sqm-lead-dropdown-field::part(sqm-base). Either omit this CSS-part metadata or introduce Shadow DOM only with the required slot/form compatibility work.
    packages/mint-components/src/components/sqm-lead-form/sqm-lead-input-field.tsx:17
  • This component does not enable Shadow DOM, so sqm-lead-input-field::part(sqm-base) cannot expose the annotated element. Avoid generating a nonfunctional CSS-part contract by either removing this metadata or explicitly migrating and testing the component with shadow: true.
    packages/mint-components/src/components/sqm-name-fields/sqm-name-fields.tsx:15
  • Because sqm-name-fields renders without a shadow root, sqm-name-fields::part(input-label) and ::part(input-base) cannot resolve. These metadata entries therefore document parts that direct consumers cannot use. Either remove them or deliberately migrate the component to Shadow DOM and verify form compatibility.
    packages/mint-components/src/components/sqm-password-field/sqm-password-field.tsx:24
  • sqm-password-field omits shadow: true, so its host cannot expose sqm-base, input-label, or input-base via ::part(). Publishing these entries makes the generated CSS-part documentation unusable. Either remove the entries or migrate the component to Shadow DOM with compatibility coverage.
    packages/mint-components/src/components/sqm-popup-container/sqm-popup-container.tsx:12
  • sqm-popup-container omits shadow: true, so neither of these elements is exposed through sqm-popup-container::part(...); they remain ordinary light-DOM part attributes. The generated CSS-parts table is therefore misleading. Either document the supported light-DOM selectors instead or migrate the component to Shadow DOM after checking its slot and stylesheet behavior.
    packages/mint-components/src/components/sqm-share-button/sqm-share-button.tsx:28
  • The exported part name is derived from every supported type, and this prop also allows success, info, warning, danger, default, and text (with default being the default value). Documenting only the primary and secondary aliases omits the part users receive in the default configuration and most valid variants.
  • Files reviewed: 88/89 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Added new CSS parts for input labels, input bases, and error alerts across multiple components.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

Copilot AI left a comment

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.

🔵 Needs a closer look

Several declared or rendered CSS parts remain undiscoverable or unexported in affected component states.

Review details

Suppressed comments (30)

Previously missed (8) — in code that hasn't changed since the last review.

packages/mint-components/src/components/sqm-link-button/sqm-link-button.tsx:11

  • LinkButtonView renders part="sqm-base" on its outer span, in addition to the button and link parts declared here. Portal will omit that wrapper from its editable-part catalog unless sqm-base is also documented.
    packages/mint-components/src/components/sqm-referral-card/sqm-referral-card.tsx:16
  • ReferralCardView renders sqm-column-container for the left/right content wrapper as well as sqm-base, but only the latter is documented. Portal therefore cannot discover the column layout as an editable part; add the missing annotation.
    packages/mint-components/src/components/sqm-referral-code/sqm-referral-code.tsx:17
  • When show-notification-text is enabled and a code is copied, CopyTextView renders part="sqm-notification-text", but this metadata lists only button parts. Portal cannot offer the visible notification text in its CSS editor unless that conditional part is documented here.
    packages/mint-components/src/components/sqm-reward-exchange-list/sqm-reward-exchange-list.tsx:33
  • The confirmation-stage Back/Redeem buttons and the success-stage Done button have no exportparts attributes. As a result, the advertised primarybutton-base and secondarybutton-base parts work in the choose stages but stop applying after the user advances. Export Shoelace's base part from those three buttons with the corresponding public names.
    packages/mint-components/src/components/sqm-titled-section/sqm-titled-section.tsx:14
  • PortalSectionView renders both sqm-base and sqm-label, but this metadata declares only the label. Because Portal builds its editable-part catalog from these annotations, the section wrapper cannot be discovered; add the missing sqm-base entry.
    packages/mint-components/src/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.tsx:343
  • This adds a rendered container part, but sqm-banking-info-form still has no @csspart metadata. Portal therefore cannot discover this part or the view's existing alert-title, radio-base, primarybutton-base, and secondarybutton-base exports. Add matching annotations to the owning component's JSDoc.
    packages/mint-components/src/components/tax-and-cash/sqm-docusign-form/sqm-docusign-form-view.tsx:197
  • This adds a rendered container part, but sqm-docusign-form still has no @csspart metadata. Portal therefore cannot discover this part or the view's existing alert-title and primarybutton-base exports. Add matching annotations to the owning component's JSDoc.
    packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard.tsx:19
  • These button parts are not exposed in every dashboard state. The verification action inside alertInfo and both replace-tax-form dialog buttons lack exportparts, so Portal CSS targeting primarybutton-base or secondarybutton-base stops applying in those states. Export each button's Shoelace base part with the matching public name.

packages/mint-components/src/components/sqm-referred-registration/sqm-referred-registration.tsx:20

  • This component renders EmailRegistrationView, which emits erroralert-text for both validation-error branches, but that part is omitted here while the otherwise identical instant-access registration metadata includes it. Portal therefore cannot discover or expose the referred-registration error text part.
    packages/mint-components/src/components/sqm-portal-google-login/sqm-portal-google-login.tsx:15
  • PortalGoogleLogin renders the same PortalLoginView as sqm-portal-login, so it also emits the base, error, input, and primary-button parts. Documenting only the forgot-password link leaves those editable parts undiscoverable in Portal.
    packages/mint-components/src/components/sqm-portal-google-registration-form/sqm-portal-google-registration-form.tsx:21
  • The manual/Google branch renders PortalRegistrationFormView, which exposes sqm-base, erroralert-text, and erroralert-icon in addition to the three listed parts. Omitting those conditional parts prevents Portal from exposing them when that branch is active.
    packages/mint-components/src/components/sqm-lead-form/sqm-lead-input-field.tsx:17
  • LeadInputFieldView also exports the underlying input's label and base parts as input-label and input-base. Listing only sqm-base means Portal cannot discover the field's editable input parts.
 * @csspart sqm-base - The base container

packages/mint-components/src/components/sqm-lead-form/sqm-lead-dropdown-field.tsx:18

  • LeadDropdownFieldView exports input-label and input-base from its control, but the metadata only advertises sqm-base. Add both exported parts so Portal can expose the editable dropdown label and base.
 * @csspart sqm-base - The base container

packages/mint-components/src/components/sqm-lead-form/sqm-lead-checkbox-field.tsx:17

  • LeadCheckboxFieldView exports the checkbox label and base as input-label and input-base, yet this metadata only advertises the wrapper. Those editable checkbox parts will remain undiscoverable in Portal.
 * @csspart sqm-base - The base container

packages/mint-components/src/components/sqm-portal-google-registration-form/sqm-portal-google-registration-form.tsx:21

  • This component renders PortalRegistrationFormView inside its shadow root, which also emits sqm-base, erroralert-text, and erroralert-icon. Leaving those names out means Portal cannot discover those editable parts for Google registration, unlike the regular registration component; please document the full set emitted by the shared view.
    packages/mint-components/src/components/sqm-portal-google-login/sqm-portal-google-login.tsx:15
  • PortalLoginView is rendered inside this component's shadow root and emits sqm-base, the error text/icon, both input parts, and primarybutton-base. Listing only forgot-password-link prevents Portal from discovering those shared editable parts for Google login; please include them here as the regular login component does.
    packages/mint-components/src/components/sqm-lead-form/sqm-lead-input-field.tsx:17
  • The lead input view exports label and base as input-label and input-base, but those parts are not declared for this component. Portal therefore cannot discover the field's label/input styling parts; please mirror the metadata on sqm-input-field.
 * @csspart sqm-base - The base container

packages/mint-components/src/components/sqm-lead-form/sqm-lead-dropdown-field.tsx:18

  • The lead dropdown view exports label and base as input-label and input-base, but this metadata lists only the wrapper. Those editable parts will not be discoverable for the lead dropdown; please include the two exported names.
 * @csspart sqm-base - The base container

packages/mint-components/src/components/sqm-lead-form/sqm-lead-checkbox-field.tsx:17

  • The lead checkbox view exports label and base as input-label and input-base, but those parts are omitted from this component's metadata. Portal will therefore miss the checkbox label/control styling parts; please include them.
 * @csspart sqm-base - The base container

packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard-view.tsx:1065

  • This mapping fixes the dynamic alertInfo branch, but the belowPayoutThreshold info message at line 1044 still exports base: alert-base, icon: alert-icon. sqm-form-message emits infoalert-base and infoalert-icon for type="info", so the documented alert parts disappear in that state. Update that branch to map the info-specific names too.
    packages/mint-components/src/components/sqm-referred-registration/sqm-referred-registration.tsx:23
  • The shared EmailRegistrationView emits erroralert-text for registration errors, but this component documents only erroralert-icon and the form parts. Error text styling will be missing from Portal's CSS-part catalog; add @csspart erroralert-text.
    packages/mint-components/src/components/sqm-lead-form/sqm-lead-input-field.tsx:18
  • LeadInputFieldView exports input-label and input-base from its sl-input, but this metadata declares only sqm-base. Those two editable parts will not be discoverable for lead-form input fields; document both exported names.
 * @csspart sqm-base - The base container
 * @csspart input-label - The input label

packages/mint-components/src/components/sqm-lead-form/sqm-lead-dropdown-field.tsx:19

  • LeadDropdownFieldView exports input-label and input-base from its sl-select, but this metadata declares only sqm-base. Those editable parts will be missing from Portal's CSS-part catalog; document both exported names.
 * @csspart sqm-base - The base container
 * @csspart input-label - The input label

packages/mint-components/src/components/sqm-lead-form/sqm-lead-checkbox-field.tsx:18

  • LeadCheckboxFieldView exports input-label and input-base from its sl-checkbox, but this metadata declares only sqm-base. Those editable parts will be missing from Portal's CSS-part catalog; document both exported names.
 * @csspart sqm-base - The base container
 * @csspart input-label - The input label

packages/mint-components/src/components/sqm-portal-google-registration-form/sqm-portal-google-registration-form.tsx:21

  • This component renders PortalRegistrationFormView for the non-base flow, whose shadow-root markup emits sqm-base, erroralert-text, and erroralert-icon. The metadata lists only the input and primary-button parts, so those states' container and error styling cannot be discovered; add the three missing entries.
    packages/mint-components/src/components/sqm-portal-google-login/sqm-portal-google-login.tsx:15
  • PortalGoogleLogin renders the shared PortalLoginView, which emits sqm-base, erroralert-text, erroralert-icon, input-label, input-base, and primarybutton-base; only forgot-password-link is documented here. The shared form's editable parts will therefore be absent from Portal's catalog.
    packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard-view.tsx:1065
  • The new alert metadata is not exposed for the below-threshold state: that branch still maps <sqm-form-message>'s generic base/icon names, but sqm-form-message exports type-specific infoalert-base/infoalert-icon. Update that branch as well, otherwise alert-base and alert-icon work only for the other alert paths.
    packages/mint-components/src/components/sqm-portal-google-login/sqm-portal-google-login.tsx:15
  • This variant renders PortalLoginView, which emits sqm-base, erroralert-text, erroralert-icon, input-label, input-base, and primarybutton-base in its shadow tree, but this annotation exposes only forgot-password-link. Portal therefore cannot discover the inherited editable parts for Google login. Add the shared view's exposed parts here as well.
    packages/mint-components/src/components/sqm-portal-google-registration-form/sqm-portal-google-registration-form.tsx:21
  • This component can render PortalRegistrationFormView after switching from the base/Google mode, and that shared view exposes sqm-base, erroralert-text, and erroralert-icon in addition to the three parts listed here. Without those declarations Portal's metadata omits the error and container parts in the manual-registration state.
    packages/mint-components/src/components/sqm-referred-registration/sqm-referred-registration.tsx:21
  • EmailRegistrationView renders an erroralert-text part alongside the exported erroralert-icon (see its shared error view), so this component's metadata is incomplete. Portal will not offer the error message text for the referred-registration variant unless that part is declared here.
  • Files reviewed: 88/90 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

Copilot AI review requested due to automatic review settings September 17, 2026 23:14

Copilot AI left a comment

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.

🔵 Needs a closer look

Several public parts remain absent from metadata, preventing Portal from discovering the complete editable surface.

Review details

Suppressed comments (11)

Previously missed (7) — in code that hasn't changed since the last review.

packages/mint-components/src/components/sqm-link-button/sqm-link-button.tsx:10

  • The root span exposes part="sqm-base", but the metadata lists only the button and link parts. Add the root declaration so Portal can also discover the component container.
    packages/mint-components/src/components/sqm-referral-card/sqm-referral-card.tsx:16
  • The view exposes part="sqm-column-container" on its two-column wrapper, but the metadata lists only sqm-base. Add the missing declaration so Portal discovers both editable parts.
    packages/mint-components/src/components/sqm-referral-code/sqm-referral-code.tsx:17
  • CopyTextView renders part="sqm-notification-text" when notification text is enabled, but this component's metadata omits that part. Add it so Portal can discover and style the copied-code notification.
    packages/mint-components/src/components/sqm-share-button/sqm-share-button.tsx:28
  • The exported button part is generated as ${type}button-base, and type supports primary, secondary, success, info, warning, danger, default, and text. Documenting only two variants means Portal cannot discover the part for the default state or the other supported styles. Add metadata for every generated name, or expose one stable alias.
    packages/mint-components/src/components/sqm-titled-section/sqm-titled-section.tsx:14
  • The view exposes both sqm-base and sqm-label, but the metadata lists only the label. Add sqm-base so Portal also discovers the section container.
    packages/mint-components/src/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.tsx:343
  • This adds part="container" to the banking form, but sqm-banking-info-form.tsx has no matching @csspart container declaration. Because Portal reads that component metadata, it will not discover this new editable part when the form is used directly. Add the declaration to the component JSDoc.
    packages/mint-components/src/components/tax-and-cash/sqm-docusign-form/sqm-docusign-form-view.tsx:197
  • This adds part="container" to the DocuSign form, but sqm-docusign-form.tsx has no matching @csspart container declaration. Because Portal reads that component metadata, it will not discover this new editable part when the form is used directly. Add the declaration to the component JSDoc.

packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard-view.tsx:1065

  • The newly documented alert-base/alert-icon parts are still not exported for the below-threshold branch: the preceding type="info" sqm-form-message maps base/icon, but sqm-form-message exposes infoalert-base/infoalert-icon instead. Update that branch's export mapping too, otherwise this alert has no discoverable parts when it is shown.
    packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash/sqm-tax-and-cash.tsx:1383
  • The new parent container part is forwarded for steps 1, 2, and the dashboard, but steps /3 and /4 still render sqm-docusign-form and sqm-banking-info-form without any forwarding. As a result, sqm-tax-and-cash::part(container) is unavailable while either of those steps is active.
    packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard-view.tsx:1065
  • This fixes the type-specific exportparts mapping for alertInfo, but the below-threshold sqm-form-message above still uses exportparts="base: alert-base, icon:alert-icon". sqm-form-message exports infoalert-base/infoalert-icon for that state, so the dashboard's documented alert-base and alert-icon parts remain missing in the below-threshold state.
    packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard-view.tsx:1065
  • This remaps the variant-specific parts only for alertInfo, but the belowPayoutThreshold branch above still uses exportparts="base: alert-base, icon:alert-icon" on sqm-form-message. That child exposes infoalert-base/infoalert-icon, not base/icon, so the newly documented alert-base and alert-icon disappear in that state. Update that sibling mapping to infoalert-base: alert-base, infoalert-icon: alert-icon as well.
  • Files reviewed: 88/90 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

Copilot AI left a comment

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.

Note

Copilot was unable to run its full agentic suite in this review.

Pull request overview

Copilot reviewed 88 out of 90 changed files in this pull request and generated 3 comments.

Suppressed comments (2)

packages/mint-components/src/components/sqm-rewards-table/columns/sqm-rewards-table-reward-column.tsx:1

  • This changes the exported part names from the previous sqm-rewards-cell-*/sqm-rewards-cell-progress-bar naming to sqm-reward-cell-*. If any consumers style these via ::part(...), this is a breaking change. Consider exporting aliases for the old part names (in addition to the new ones) for backward compatibility, or bump the changeset to a major release if the rename is intentional and breaking.
    packages/mint-components/src/components/sqm-portal-verify-email/sqm-portal-verify-email-view.tsx:1
  • Renaming an exported part from success-icon to successalert-icon can break existing ::part(success-icon) styling. If backwards compatibility matters, consider exporting both names (e.g., by keeping an alias part on the underlying element) or documenting this as a breaking change/version bump.

Comment thread packages/mint-components/src/components/sqm-coupon-code/sqm-coupon-code-view.tsx Outdated
},
"dependencies": {
"@raisins/stencil-docs-target": "^1.3.0",
"@raisins/stencil-docs-target": "^1.4.0-0",
Comment thread packages/mint-components/src/components/sqm-empty/sqm-empty.tsx Outdated
Copilot AI review requested due to automatic review settings September 18, 2026 00:19

Copilot AI left a comment

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.

🔵 Needs a closer look

The cross-cutting public CSS-part API spans 89 files, has unresolved exposure mismatches, and needs Portal integration validation.

Review details

Suppressed comments (3)

Previously missed (3) — in code that hasn't changed since the last review.

packages/mint-components/src/components/sqm-portal-google-registration-form/sqm-portal-google-registration-form.tsx:19

  • This metadata is also used when showRegistrationForm.mode === "base", but that branch renders BaseRegistrationFormView, whose root wrapper has no part="sqm-base"; only the other registration view emits it. In the base mode the newly advertised part is therefore absent, so Portal cannot style the component consistently. Add the part to the base view's wrapper or expose a shared wrapper.
    packages/mint-components/src/components/sqm-rewards-table/columns/sqm-rewards-table-reward-column.tsx:11
  • These parts are documented on column components that never expose them. This column renders only a hidden host; renderCell() returns a cell that the parent sqm-rewards-table mounts in its own shadow root. The same mismatch exists for sqm-referral-table-rewards-column and sqm-cell-value. Portal will therefore associate both part APIs with ineffective column ::part() selectors. Move the metadata to the corresponding parent tables, while retaining the cell metadata, or change the rendering chain so each column host actually exposes the parts.
    packages/mint-components/src/components/sqm-share-button/sqm-share-button.tsx:29
  • type defaults to default and also supports success, info, warning, danger, and text. Because the view exports ${type}button-base, Portal cannot discover or edit the button base for those supported styles with the current metadata. Document every exported variant, or expose and document one stable part name.
  • Files reviewed: 88/90 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

Copilot AI review requested due to automatic review settings September 18, 2026 00:36

Copilot AI left a comment

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.

🔵 Needs a closer look

Three rendered CSS parts still lack matching metadata required for Portal discovery.

Review details

Suppressed comments (4)

Previously missed (3) — in code that hasn't changed since the last review.

packages/mint-components/src/components/sqm-titled-section/sqm-titled-section.tsx:14

  • PortalSectionView renders both part="sqm-base" and part="sqm-label", but this metadata declares only the label. Because Portal builds the CSS editor from @csspart metadata, the existing base container remains undiscoverable. Document sqm-base here as well.
    packages/mint-components/src/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.tsx:343
  • This new container part is rendered by sqm-banking-info-form, but the component JSDoc in sqm-banking-info-form.tsx does not declare @csspart container. Portal discovers editable parts from that metadata, so this part will not appear in the CSS editor. Add the matching annotation to the component JSDoc.
    packages/mint-components/src/components/tax-and-cash/sqm-docusign-form/sqm-docusign-form-view.tsx:197
  • This new container part is rendered by sqm-docusign-form, but the component JSDoc in sqm-docusign-form.tsx does not declare @csspart container. Portal discovers editable parts from that metadata, so this part will not appear in the CSS editor. Add the matching annotation to the component JSDoc.

packages/mint-components/src/components/sqm-referral-table/sqm-referral-table.tsx:110

  • These props are over-indented relative to the surrounding JSX and the matching GenericTableView call in sqm-rewards-table.tsx; this is not the formatting produced by the repository's Prettier style. Reindent the four props to the same level as the opening tag's attributes.
  • Files reviewed: 91/92 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

Copilot AI review requested due to automatic review settings September 18, 2026 00:50

Copilot AI left a comment

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.

🔵 Needs a closer look

The broad public CSS-part API still has unresolved metadata and shadow-boundary gaps and requires human validation.

Review details

Suppressed comments (5)

Previously missed (4) — in code that hasn't changed since the last review.

packages/mint-components/src/components/sqm-widget-verification/sqm-email-verification/sqm-email-verification.tsx:20

  • These newly documented step parts are not exposed by the public sqm-widget-verification component. Its shadow root renders sqm-email-verification, sqm-code-verification, or sqm-partner-info-modal without exportparts, and the wrapper has no matching @csspart metadata. Portal styles targeting the wrapper therefore cannot reach any of these parts. Add stable aliases to each child host's exportparts and document those aliases on sqm-widget-verification.
    packages/mint-components/src/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.tsx:343
  • This introduces a container part on sqm-banking-info-form, but that component has no matching @csspart container annotation. Since Portal builds the editable-part list from component metadata, the new part remains undiscoverable when this component is used directly. Add the annotation to sqm-banking-info-form.tsx.
    packages/mint-components/src/components/tax-and-cash/sqm-docusign-form/sqm-docusign-form-view.tsx:197
  • This introduces a container part on sqm-docusign-form, but that component has no matching @csspart container annotation. Since Portal builds the editable-part list from component metadata, the new part remains undiscoverable when this component is used directly. Add the annotation to sqm-docusign-form.tsx.
    packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash/sqm-tax-and-cash.tsx:20
  • The error route renders alert-title and alert-description parts directly inside this component's shadow root, but only container is declared here. Portal will therefore omit both error-message parts from its editable-part list. Add matching metadata entries for them.

packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash/sqm-tax-and-cash.tsx:20

  • The documented container part is unavailable while step is /3 or /4. Those branches render sqm-docusign-form and sqm-banking-info-form without exportparts, so the new part="container" roots do not cross their shadow boundaries; styling sqm-tax-and-cash::part(container) therefore stops applying on those steps. Forward container from both child hosts, as the /1, /2, and dashboard branches already do.
  • Files reviewed: 91/92 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

Copilot AI review requested due to automatic review settings September 18, 2026 16:10

Copilot AI left a comment

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.

🔵 Needs a closer look

The broad public CSS-part contract still contains unusable and inconsistently exported targets that require correction and human verification.

Review details

Suppressed comments (2)

Previously missed (2) — in code that hasn't changed since the last review.

packages/mint-components/src/components/sqm-reward-exchange-list/sqm-reward-exchange-list.tsx:33

  • The metadata describes component-wide primary and secondary button parts, but only the choose-reward and choose-amount stages export these aliases. In sqm-reward-exchange-list-view.tsx, the confirmation Back/Redeem buttons and the success Done button omit exportparts, so Portal styling through these documented parts stops working when the flow advances. Export base under the matching primary/secondary alias from those later-stage buttons as well.
    packages/mint-components/src/components/tax-and-cash/sqm-tax-and-cash-dashboard/sqm-tax-and-cash-dashboard.tsx:19
  • The newly documented button parts are not exported by all dashboard actions. For example, the primary edit-payment buttons and the replace-tax-form dialog's primary action omit exportparts, while other dashboard actions expose the same button role. Portal styling through primarybutton-base therefore applies inconsistently across dashboard states. Add the matching base exports to every action represented by the documented primary or secondary aliases.
  • Files reviewed: 94/95 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Copilot AI review requested due to automatic review settings September 18, 2026 16:37

Copilot AI left a comment

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.

🔵 Needs a closer look

The broad public styling API lacks dedicated validation, and two newly exposed container parts remain absent from Portal metadata.

Review details
  • Files reviewed: 94/95 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants