Collabz · Design System · v0.3.0
DS Collabz
Tokens, composants et patterns UX de l'app mobile Collabz. Source de vérité : app/src/design/tokens.ts.
Principes fondateurs
Tokens first
Aucune valeur hardcodée dans l'app. Couleurs, spacing, radius, typo, shadows, motion : tout passe par tokens.ts.
8-point grid
Tous les padding, margin, gap sont des multiples de 4. Interdit : 5, 7, 13, 15, 17. Si tu veux 15, prends 16.
Atomic Design
Atoms (Button, Typography) → Molecules → Organisms. Les atoms vivent dans app/src/design/, le reste dans les features.
Dark mode first-class
Light et dark au même niveau. Dark = noir pur OLED (#000000). Chaque composant testé dans les 2 modes.
WCAG 2.2 AA
Contraste minimum 4.5:1 pour le texte normal, 3:1 pour le gros texte. Touch targets 44×44 minimum.
Free libraries
Zéro UI kit externe. Pas de Tamagui, Gluestack, Unistyles, Storybook. Seul Reanimated + Expo LinearGradient autorisés.
Couleurs — Light
Palette de référence en mode clair
background
#f8f9fa
backgroundSecondary
#ffffff
backgroundTertiary
#f1f3f4
backgroundElevated
#ffffff
backgroundOverlay
rgba(0, 0, 0, 0.5)
text
#1a1a1a
textSecondary
#495057
textTertiary
#6c757d
textInverse
#ffffff
border
#e9ecef
separator
#f1f3f4
card
#ffffff
cardShadow
#000000
headerBackground
#f8f9fa
tabBarBackground
rgba(245, 245, 245, 0.82)
tabBarActive
#1a1a1a
tabBarInactive
rgba(0, 0, 0, 0.35)
inputBackground
#f1f2f6
inputText
#1a1a1a
inputPlaceholder
#adb5bd
inputBorder
#e9ecef
icon
#6c757d
iconActive
#333333
skeletonBase
#e9ecef
skeletonHighlight
#f8f9fa
primary
#00a8ff
danger
#e74c3c
success
#10B981
warning
#F59E0B
info
#3498db
accent
#e84393
Couleurs — Dark
Palette noir pur OLED
background
#000000
backgroundSecondary
#111111
backgroundTertiary
#1a1a1a
backgroundElevated
#111111
backgroundOverlay
rgba(0, 0, 0, 0.7)
text
#f0f0f0
textSecondary
#b0b0b0
textTertiary
#808080
textInverse
#000000
border
#1a1a1a
separator
#151515
card
#111111
cardShadow
#000000
headerBackground
#000000
tabBarBackground
rgba(10, 10, 10, 0.85)
tabBarActive
#ffffff
tabBarInactive
rgba(255, 255, 255, 0.4)
inputBackground
#1a1a1a
inputText
#f0f0f0
inputPlaceholder
#555555
inputBorder
#222222
icon
#808080
iconActive
#f0f0f0
skeletonBase
#111111
skeletonHighlight
#1a1a1a
primary
#00a8ff
danger
#e74c3c
success
#10B981
warning
#F59E0B
info
#3498db
accent
#e84393
Gradients
10 gradients nommés
white
black
blue
red
orange
primary
premium
success
danger
Spacing
8-point grid, valeurs autorisées
none0pxxxs2pxxs4pxsm8pxmd12pxlg16pxxl20pxxxl24pxxxxl32pxhuge40pxmega48pxgiga64pxRadius
Échelle stricte
none0pxsm4pxmd8pxlg12pxxl16pxxxl20pxmodal25pxpill∞Typography
10 presets, 4 familles de polices
h136px · PoppinsThe quick brown fox jumps over the lazy dog
h230px · PoppinsThe quick brown fox jumps over the lazy dog
h324px · PoppinsThe quick brown fox jumps over the lazy dog
h420px · PoppinsThe quick brown fox jumps over the lazy dog
body16px · PoppinsThe quick brown fox jumps over the lazy dog
bodyBold16px · PoppinsThe quick brown fox jumps over the lazy dog
bodySmall14px · PoppinsThe quick brown fox jumps over the lazy dog
caption12px · PoppinsThe quick brown fox jumps over the lazy dog
label14px · PoppinsThe quick brown fox jumps over the lazy dog
display48px · PlayfairDisplayThe quick brown fox jumps over the lazy dog
Shadows
3 niveaux uniquement
shadows.subtleoffset (0, 1) · radius 2 · opacity 0.05
shadows.defaultoffset (0, 2) · radius 8 · opacity 0.1
shadows.prominentoffset (0, 4) · radius 16 · opacity 0.15
Motion
Durées et easings
Durées
instant0msfast150msbase250msslow400msslower600msSpring presets (Reanimated)
gentledamping 20 · stiffness 100defaultdamping 15 · stiffness 150bouncydamping 10 · stiffness 180snappydamping 25 · stiffness 300Opacity
États standards
disabled0.4
pressed0.7
hover0.85
overlay0.5
Haptics patterns
Conventions iOS (implémentées via expo-haptics)
lightmediumheavysuccesswarningerrorselectionComposants
13 atoms stables v0.3.0 — screenshots iOS à venir
Typography
stableTous les textes de l'app. 10 presets.
h1 · h2 · h3 · h4 · body · bodyBold · bodySmall · caption · label · display
Button
stableBouton principal avec support gradient.
primary · secondary · outline · ghost × small/medium/large
Card
stableConteneur standard.
default · elevated · outline · gradient
TextInput
stableChamp de saisie avec label/helper/error.
default · search × sm/md/lg
Modal
stableModal centered ou bottom sheet avec drag handle.
centered · sheet
Badge
stablePastille d'état.
default · premium · verified · pro · success · warning · danger
Avatar
stableAvatar rond, fallback initiales gradient.
sm · md · lg · custom + ring + badge
Skeleton
stablePlaceholder loading.
shimmer · pulse
Divider
stableSéparateur horizontal ou vertical.
horizontal · vertical
AnimatedTouchable
stableTouchable avec scale 0.92 au press.
scale custom
Toast
stableFeedback transient.
success · error · info
DiscreteToast
stableToast discret bas d'écran.
message simple
GradientOverlay
stableOverlay gradient pour images.
top · bottom · diagonal
Règles d'or
Non négociables
- Zéro couleur hardcodée hors de
tokens.ts. - Zéro spacing hors scale 8-point.
- Zéro borderRadius hors scale.
- Typographie via
<Typography variant="...">uniquement. - Elevation : 3 niveaux max (
subtle,default,prominent). - Animation : durées et easings depuis
tokens.motion. - Touch target minimum 44×44.
- Tout composant DS a son type dans
types.ts. tokens.tsest pur TypeScript (aucun import RN).- Chaque modif de token → entrée dans
docs/design-system.md#changelog.