Tecton is Q2's library of design system components and platform interface capabilities. It allows Q2 and our partners to build cohesive and consistent UI experiences for end users across a variety of Q2 products.
Tecton consists of:
We're excited to see what you'll build! To get started, feel free to check out some of the following links:
q2-select for scenarios where users need to search rather than browse a known list.length="[3,3]") for full control over digit cluster sizes, replacing the previous binary split property. A new showSendCode property lets consumers control send-code button visibility independently from the component's ready state.form attribute that associates a button with any form by its ID, enabling form submission even when the button is placed outside the form element in the DOM.vertical-align property allows decorators and single-slot content to be aligned to the top, center, or bottom of the item, giving layouts precise control over content positioning.status property on data table rows displays a colored accent bar and icon to convey row-level status (info, alert, error, warning, success), with CSS variables to customize the status column width, icon size, and accent bar colors per status type.--tct-input-placeholder-font-size, --tct-input-placeholder-font-weight, --tct-input-placeholder-line-height, --tct-input-placeholder-padding) allow placeholder text to be styled independently from the input value, enabling use cases like large masked-input glyphs at normal label size.--tct-section-border-radius to allow consumers to customize the section wrapper's border radius (defaults to --app-border-radius-1, 4px).--tct-tag-clickable-size variable removed. Size customization remains available through existing CSS variables.refocus and refocusContainer options on the show-modal capability allow modals to automatically restore keyboard focus to the previously active element — or a specified fallback container — when the modal closes, improving keyboard navigation and accessibility in iframe-based applications.loadDesignSystem can now be called before the <body> is parsed, resolving a timing issue that caused elements to fail to initialize when the SDK setup script was placed in the document <head>.