SCSS, BEM naming, and design tokens.
regionClass with a *.region.module.scss: token-only paint on a Box or FlexBox host that the props do not coverfind-pattern skill: when no prop or part existssx prop or sxStylesstyled-componentsBox, FlexBox, and shipped parts)style={{}}className on a @prepared911/ui part@layer chroma.* in a product stylesheet (including @layer chroma.overrides to beat Box or component props)regionClass for token-only host paint the props do not cover, such as a host :hover@prepared911/ui styles with className or chroma layers; request gaps via find-pattern@layer chroma.*; consumer stylelint rejects every chroma layerbem() is not an export of @prepared911/uibem() and prefixClass() are not exports of @prepared911/ui. Consumers do not pass className to any @prepared911/ui part. Layout and paint go through Box and FlexBox props and shipped parts; gaps use find-pattern (ADR 0002 consumer call-site rules).
Match component filename convention:
MyComponent.tsx → MyComponent.scss (PascalCase)filter-bar.tsx → filter-bar.scss (kebab-case)styles.scssbem() and prefixClass() are not exports of @prepared911/ui. Layout and paint go through Box and FlexBox props. className is deprecated outside the design system, and pnpm lint:classname rejects it on a published part.
For token-only paint the props do not cover, pass regionClass on Box or FlexBox a class from a colocated *.region.module.scss file. The module styles only its host class, optionally with :hover or :focus-visible, and sets colors, borders and opacity; layout stays in props. It declares no @layer chroma.*.
regionClass takes styles.card directly, not a conditional. A region module cannot select descendants, data-* attributes or :has(), so paint that follows product state, such as an active card, comes from a shipped part's state prop, or is requested through the find-pattern skill.
When props and shipped parts do not cover a state such as :hover on host paint, use regionClass as above or file a find-pattern request.
For spacing and paint in consumer screens, use Box and FlexBox props as in the example above. Token names and semantics live on the Tokens page; consumer stylesheets stay token-only and must not repeat layout in CSS modules.
Use Box/FlexBox props when:
regionClass with a *.region.module.scss when:
:hover or :focus-visible on that paintfind-pattern request.
Request it through the find-pattern skill when: