Feat/adding css part metadata - #536
Ashley Osuna (ashley-osuna) wants to merge 39 commits into
Conversation
This commit was generated by GitHub Actions CI
This commit was generated by GitHub Actions CI
This reverts commit 5ad0144.
This commit was generated by GitHub Actions CI
This commit was generated by GitHub Actions CI
There was a problem hiding this comment.
🟡 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.
There was a problem hiding this comment.
🟡 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 alwaystype="primary". Advertisingprimarybutton-baseandsecondarybutton-baseproduces 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 exposessqm-cell-value. Move this CSS-part metadata tosqm-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 GenericTableViewrenders the table root as a plain<div>with nosqm-basepart, 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, whilerenderCell()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 onsqm-rewards-tableinstead (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@csspartmetadata. This leaves the generated API incomplete for both direct use and the forwarding added insqm-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-containerpart is missing from this component’s metadata. Add it so the generated CSS-part API matches the part forwarded bysqm-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-containeris exposed by the view and forwarded bysqm-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:18dashboard-containeris now exposed and forwarded as the monolith’scontainer, 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:18form-containeris 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 thatsqm-tax-and-cashrelies 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
There was a problem hiding this comment.
🟡 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 (@Componentomitsshadow: 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-baseas 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-fieldhas no shadow root, so the newly documentedsqm-basepart is not reachable withsqm-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 withshadow: true.
packages/mint-components/src/components/sqm-name-fields/sqm-name-fields.tsx:15 - Because
sqm-name-fieldsrenders 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-fieldomitsshadow: true, so its host cannot exposesqm-base,input-label, orinput-basevia::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:12sqm-popup-containeromitsshadow: true, so neither of these elements is exposed throughsqm-popup-container::part(...); they remain ordinary light-DOMpartattributes. 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 allowssuccess,info,warning,danger,default, andtext(withdefaultbeing 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>
There was a problem hiding this comment.
🔵 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
LinkButtonViewrenderspart="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 unlesssqm-baseis also documented.
packages/mint-components/src/components/sqm-referral-card/sqm-referral-card.tsx:16ReferralCardViewrenderssqm-column-containerfor the left/right content wrapper as well assqm-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-textis enabled and a code is copied,CopyTextViewrenderspart="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
exportpartsattributes. As a result, the advertisedprimarybutton-baseandsecondarybutton-baseparts work in the choose stages but stop applying after the user advances. Export Shoelace'sbasepart from those three buttons with the corresponding public names.
packages/mint-components/src/components/sqm-titled-section/sqm-titled-section.tsx:14 PortalSectionViewrenders bothsqm-baseandsqm-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 missingsqm-baseentry.
packages/mint-components/src/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.tsx:343- This adds a rendered
containerpart, butsqm-banking-info-formstill has no@csspartmetadata. Portal therefore cannot discover this part or the view's existingalert-title,radio-base,primarybutton-base, andsecondarybutton-baseexports. 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
containerpart, butsqm-docusign-formstill has no@csspartmetadata. Portal therefore cannot discover this part or the view's existingalert-titleandprimarybutton-baseexports. 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
alertInfoand both replace-tax-form dialog buttons lackexportparts, so Portal CSS targetingprimarybutton-baseorsecondarybutton-basestops applying in those states. Export each button's Shoelacebasepart with the matching public name.
packages/mint-components/src/components/sqm-referred-registration/sqm-referred-registration.tsx:20
- This component renders
EmailRegistrationView, which emitserroralert-textfor 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 PortalGoogleLoginrenders the samePortalLoginViewassqm-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 exposessqm-base,erroralert-text, anderroralert-iconin 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 LeadInputFieldViewalso exports the underlying input'slabelandbaseparts asinput-labelandinput-base. Listing onlysqm-basemeans 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
LeadDropdownFieldViewexportsinput-labelandinput-basefrom its control, but the metadata only advertisessqm-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
LeadCheckboxFieldViewexports the checkboxlabelandbaseasinput-labelandinput-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
PortalRegistrationFormViewinside its shadow root, which also emitssqm-base,erroralert-text, anderroralert-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 PortalLoginViewis rendered inside this component's shadow root and emitssqm-base, the error text/icon, both input parts, andprimarybutton-base. Listing onlyforgot-password-linkprevents 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
labelandbaseasinput-labelandinput-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 onsqm-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
labelandbaseasinput-labelandinput-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
labelandbaseasinput-labelandinput-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
alertInfobranch, but thebelowPayoutThresholdinfo message at line 1044 still exportsbase: alert-base, icon: alert-icon.sqm-form-messageemitsinfoalert-baseandinfoalert-iconfortype="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
EmailRegistrationViewemitserroralert-textfor registration errors, but this component documents onlyerroralert-iconand 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 LeadInputFieldViewexportsinput-labelandinput-basefrom itssl-input, but this metadata declares onlysqm-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
LeadDropdownFieldViewexportsinput-labelandinput-basefrom itssl-select, but this metadata declares onlysqm-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
LeadCheckboxFieldViewexportsinput-labelandinput-basefrom itssl-checkbox, but this metadata declares onlysqm-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
PortalRegistrationFormViewfor the non-base flow, whose shadow-root markup emitssqm-base,erroralert-text, anderroralert-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 PortalGoogleLoginrenders the sharedPortalLoginView, which emitssqm-base,erroralert-text,erroralert-icon,input-label,input-base, andprimarybutton-base; onlyforgot-password-linkis 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 genericbase/iconnames, butsqm-form-messageexports type-specificinfoalert-base/infoalert-icon. Update that branch as well, otherwisealert-baseandalert-iconwork 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 emitssqm-base,erroralert-text,erroralert-icon,input-label,input-base, andprimarybutton-basein its shadow tree, but this annotation exposes onlyforgot-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
PortalRegistrationFormViewafter switching from the base/Google mode, and that shared view exposessqm-base,erroralert-text, anderroralert-iconin 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 EmailRegistrationViewrenders anerroralert-textpart alongside the exportederroralert-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
There was a problem hiding this comment.
🔵 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 onlysqm-base. Add the missing declaration so Portal discovers both editable parts.
packages/mint-components/src/components/sqm-referral-code/sqm-referral-code.tsx:17 CopyTextViewrenderspart="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, andtypesupportsprimary,secondary,success,info,warning,danger,default, andtext. 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-baseandsqm-label, but the metadata lists only the label. Addsqm-baseso 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, butsqm-banking-info-form.tsxhas no matching@csspart containerdeclaration. 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, butsqm-docusign-form.tsxhas no matching@csspart containerdeclaration. 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-iconparts are still not exported for the below-threshold branch: the precedingtype="info"sqm-form-messagemapsbase/icon, butsqm-form-messageexposesinfoalert-base/infoalert-iconinstead. 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
containerpart is forwarded for steps 1, 2, and the dashboard, but steps/3and/4still rendersqm-docusign-formandsqm-banking-info-formwithout 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
exportpartsmapping foralertInfo, but the below-thresholdsqm-form-messageabove still usesexportparts="base: alert-base, icon:alert-icon".sqm-form-messageexportsinfoalert-base/infoalert-iconfor that state, so the dashboard's documentedalert-baseandalert-iconparts 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 thebelowPayoutThresholdbranch above still usesexportparts="base: alert-base, icon:alert-icon"onsqm-form-message. That child exposesinfoalert-base/infoalert-icon, notbase/icon, so the newly documentedalert-baseandalert-icondisappear in that state. Update that sibling mapping toinfoalert-base: alert-base, infoalert-icon: alert-iconas well.
- Files reviewed: 88/90 changed files
- Comments generated: 0 new
- Review effort level: Balanced
There was a problem hiding this comment.
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-barnaming tosqm-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-icontosuccessalert-iconcan 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.
| }, | ||
| "dependencies": { | ||
| "@raisins/stencil-docs-target": "^1.3.0", | ||
| "@raisins/stencil-docs-target": "^1.4.0-0", |
There was a problem hiding this comment.
🔵 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 rendersBaseRegistrationFormView, whose root wrapper has nopart="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 parentsqm-rewards-tablemounts in its own shadow root. The same mismatch exists forsqm-referral-table-rewards-columnandsqm-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 typedefaults todefaultand also supportssuccess,info,warning,danger, andtext. 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
There was a problem hiding this comment.
🔵 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
PortalSectionViewrenders bothpart="sqm-base"andpart="sqm-label", but this metadata declares only the label. Because Portal builds the CSS editor from@csspartmetadata, the existing base container remains undiscoverable. Documentsqm-basehere as well.
packages/mint-components/src/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.tsx:343- This new
containerpart is rendered bysqm-banking-info-form, but the component JSDoc insqm-banking-info-form.tsxdoes 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
containerpart is rendered bysqm-docusign-form, but the component JSDoc insqm-docusign-form.tsxdoes 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
GenericTableViewcall insqm-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
There was a problem hiding this comment.
🔵 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-verificationcomponent. Its shadow root renderssqm-email-verification,sqm-code-verification, orsqm-partner-info-modalwithoutexportparts, and the wrapper has no matching@csspartmetadata. Portal styles targeting the wrapper therefore cannot reach any of these parts. Add stable aliases to each child host'sexportpartsand document those aliases onsqm-widget-verification.
packages/mint-components/src/components/tax-and-cash/sqm-banking-info-form/sqm-banking-info-form-view.tsx:343 - This introduces a
containerpart onsqm-banking-info-form, but that component has no matching@csspart containerannotation. Since Portal builds the editable-part list from component metadata, the new part remains undiscoverable when this component is used directly. Add the annotation tosqm-banking-info-form.tsx.
packages/mint-components/src/components/tax-and-cash/sqm-docusign-form/sqm-docusign-form-view.tsx:197 - This introduces a
containerpart onsqm-docusign-form, but that component has no matching@csspart containerannotation. Since Portal builds the editable-part list from component metadata, the new part remains undiscoverable when this component is used directly. Add the annotation tosqm-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-titleandalert-descriptionparts directly inside this component's shadow root, but onlycontaineris 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
containerpart is unavailable whilestepis/3or/4. Those branches rendersqm-docusign-formandsqm-banking-info-formwithoutexportparts, so the newpart="container"roots do not cross their shadow boundaries; stylingsqm-tax-and-cash::part(container)therefore stops applying on those steps. Forwardcontainerfrom 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
There was a problem hiding this comment.
🔵 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 omitexportparts, so Portal styling through these documented parts stops working when the flow advances. Exportbaseunder 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 throughprimarybutton-basetherefore applies inconsistently across dashboard states. Add the matchingbaseexports to every action represented by the documented primary or secondary aliases.
- Files reviewed: 94/95 changed files
- Comments generated: 2
- Review effort level: Balanced
There was a problem hiding this comment.
🔵 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
Description of the change
Type of change
Links
Checklists
Development
Paperwork
Code review