name: dev-patterns description: Styling and structure conventions for stream-chat-react. Use when adding or editing components, SCSS, or icons in this repo—file layout, styling folder structure, SCSS imports, and icon placement.
stream-chat-react Development Patterns
Apply when generating or modifying UI code in this repo.
Styling
File and folder structure
- Format:
.scssonly. - Location:
src/components/<ComponentName>/styling/. - Required: Each component styling folder has an
index.scss. - Registration: Each
src/components/<ComponentName>/styling/index.scssis imported insrc/styling/index.scsswith an alias. - Specificity: Each component has own
.scssfile in thesrc/components/<ComponentName>/stylingfolder
Import order in src/styling/index.scss:
- Three groups; within each group, alphabetical order.
- Group 1: imports from
src/styling/. - Group 2: general components (Button, Dialog, etc.).
- Group 3: chat components (MessageList, etc.).
SCSS practices
- Use full class names instead of only
&__suffixso selectors are easy to search. - Avoid duplicate blocks for the same resolved CSS selector (after nesting).
Icons
- Icons live in
src/components/Icons. - Do not move icons out of SCSS into
src/components/Icons; keep existing icon placement unless explicitly refactoring icons.
Source: .ai/DEV_PATTERNS.md.
Translating quantities (plurals)
- Use plural suffixes only:
_one,_other, and_few,_manywhere the locale requires them. - Do not add a standalone key (e.g.
"{{count}} new messages"). Only add quantified variants:"{{count}} new messages_one","{{count}} new messages_other", etc. - Follow existing patterns in
src/i18n/(e.g.{{count}} unread_one,unreadMessagesSeparatorText_other). - Locale plural rules (CLDR):
en,de,nl,tr,hi,ko,jause_one+_other;es,fr,it,ptadd_many;ruuses_one,_few,_many,_other.
Imports
When importing from 'stream-chat' library, always import by library name (from 'stream-chat'), not relative path (from '..path/to/from 'stream-chat-js/src').
React components
Try to avoid inline style attribute and prefer adding styles to .scss files.