update home UI tweaks + add tab labels + vineye-admin setup + gitignore
- SearchHeader: settings icon, smaller brand title, rounded buttons - BottomTabNavigator: re-enable tab labels, adjust FAB offset - homeheader: remove bottom margin - Add .claude config, root package.json, updated .gitignore Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
af299e816a
commit
269cc55c77
10
.claude/memory/MEMORY.md
Normal file
10
.claude/memory/MEMORY.md
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
# MEMORY — Projet
|
||||||
|
|
||||||
|
## Vue d'ensemble
|
||||||
|
<!-- Remplir au fil des sessions -->
|
||||||
|
|
||||||
|
## Décisions techniques importantes
|
||||||
|
<!-- Patterns, choix d'architecture, gotchas découverts -->
|
||||||
|
|
||||||
|
## État actuel
|
||||||
|
<!-- Ce qui est fait, ce qui reste à faire -->
|
||||||
29
.claude/notes/_features.md
Normal file
29
.claude/notes/_features.md
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Index des fonctionnalités — ce projet
|
||||||
|
|
||||||
|
> Mis à jour automatiquement. Compléter les README.md de chaque feature après implémentation.
|
||||||
|
> **Règle** : Avant de travailler sur une feature → lire son README. Après → le mettre à jour.
|
||||||
|
|
||||||
|
## Fonctionnalités détectées
|
||||||
|
|
||||||
|
| Feature | Documentation | Status | Dernière MAJ |
|
||||||
|
|---------|--------------|--------|-------------|
|
||||||
|
|
||||||
|
|
||||||
|
## Fichiers critiques globaux
|
||||||
|
|
||||||
|
| Fichier | Rôle |
|
||||||
|
|---------|------|
|
||||||
|
| `CLAUDE.md` | Contexte projet chargé automatiquement |
|
||||||
|
| `.claude/notes/_features.md` | Cet index |
|
||||||
|
| `.claude/rules/` | Rules spécifiques au projet |
|
||||||
|
|
||||||
|
## Stack détectée
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Convention de mise à jour
|
||||||
|
Après chaque feature implémentée :
|
||||||
|
1. Ouvrir `.claude/notes/<feature>/README.md`
|
||||||
|
2. Compléter : description, fichiers clés, endpoints, gotchas
|
||||||
|
3. Mettre à jour le status dans cet index (🟡 → ✅)
|
||||||
11
.gitignore
vendored
11
.gitignore
vendored
|
|
@ -24,5 +24,12 @@ VinEye/dist/
|
||||||
VinEye/ios/
|
VinEye/ios/
|
||||||
VinEye/android/
|
VinEye/android/
|
||||||
|
|
||||||
# dependances
|
# Virtual environment
|
||||||
node_modules/
|
venv/
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# vineye-admin
|
||||||
|
vineye-admin/node_modules/
|
||||||
|
vineye-admin/.next/
|
||||||
44
CLAUDE.md
Normal file
44
CLAUDE.md
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
# Projet
|
||||||
|
|
||||||
|
> Généré par project-init. Compléter avec les spécificités du projet.
|
||||||
|
> **Limite : 200 lignes.** Aller à l'essentiel — les détails sont dans `.claude/notes/`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Stack
|
||||||
|
| Couche | Technologies |
|
||||||
|
|--------|-------------|
|
||||||
|
| Frontend | — |
|
||||||
|
| Backend | — |
|
||||||
|
| ORM | — |
|
||||||
|
| Auth | JWT (access + refresh tokens) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
```
|
||||||
|
docs/ venv/ VinEye/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Fonctionnalités clés
|
||||||
|
> Voir `.claude/notes/_features.md` pour le détail de chaque feature.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Conventions
|
||||||
|
- Package manager : **pnpm**
|
||||||
|
- Composants : shadcn/ui → Magic UI → custom (dans cet ordre)
|
||||||
|
- Server Components par défaut, `"use client"` uniquement si nécessaire
|
||||||
|
- Max 300 lignes par fichier
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## À compléter
|
||||||
|
- [ ] Design tokens / palette couleurs
|
||||||
|
- [ ] Variables d'environnement nécessaires
|
||||||
|
- [ ] URLs de déploiement
|
||||||
|
- [ ] Spécificités métier importantes
|
||||||
|
|
@ -38,10 +38,10 @@ export default function SearchHeader() {
|
||||||
<TouchableOpacity
|
<TouchableOpacity
|
||||||
style={styles.notifButton}
|
style={styles.notifButton}
|
||||||
activeOpacity={0.7}
|
activeOpacity={0.7}
|
||||||
onPress={() => navigation.navigate("Profile")}
|
onPress={() => navigation.navigate("Settings")}
|
||||||
>
|
>
|
||||||
<Ionicons
|
<Ionicons
|
||||||
name="person-outline"
|
name="settings-outline"
|
||||||
size={22}
|
size={22}
|
||||||
color={colors.neutral[800]}
|
color={colors.neutral[800]}
|
||||||
/>
|
/>
|
||||||
|
|
@ -65,13 +65,13 @@ const styles = StyleSheet.create({
|
||||||
flex: 1,
|
flex: 1,
|
||||||
},
|
},
|
||||||
brandTitle: {
|
brandTitle: {
|
||||||
fontSize: 32,
|
fontSize: 24,
|
||||||
fontWeight: "900", // Très gras pour l'identité
|
fontWeight: "900", // Très gras pour l'identité
|
||||||
color: colors.primary[900],
|
color: colors.primary[900],
|
||||||
letterSpacing: -1, // Look "Logo"
|
letterSpacing: -1, // Look "Logo"
|
||||||
},
|
},
|
||||||
greetingText: {
|
greetingText: {
|
||||||
fontSize: 10,
|
fontSize: 14,
|
||||||
fontWeight: "500",
|
fontWeight: "500",
|
||||||
color: colors.neutral[500],
|
color: colors.neutral[500],
|
||||||
marginTop: -2,
|
marginTop: -2,
|
||||||
|
|
@ -81,27 +81,16 @@ const styles = StyleSheet.create({
|
||||||
backgroundColor: "#FFFFFF",
|
backgroundColor: "#FFFFFF",
|
||||||
borderWidth: 1,
|
borderWidth: 1,
|
||||||
borderColor: "#F0F0F0",
|
borderColor: "#F0F0F0",
|
||||||
borderRadius: 16,
|
borderRadius: 32,
|
||||||
},
|
},
|
||||||
notifButton: {
|
notifButton: {
|
||||||
height: 48,
|
height: 48,
|
||||||
width: 48,
|
width: 48,
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
justifyContent: "center",
|
justifyContent: "center",
|
||||||
borderRadius: 16,
|
borderRadius: 32,
|
||||||
backgroundColor: "#FFFFFF",
|
|
||||||
|
|
||||||
...Platform.select({
|
|
||||||
ios: {
|
|
||||||
shadowColor: "#000",
|
|
||||||
shadowOffset: { width: 0, height: 4 },
|
|
||||||
shadowOpacity: 0.05,
|
|
||||||
shadowRadius: 10,
|
|
||||||
},
|
|
||||||
android: {
|
|
||||||
elevation: 3,
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
notifBadge: {
|
notifBadge: {
|
||||||
position: "absolute",
|
position: "absolute",
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ const styles = StyleSheet.create({
|
||||||
input: {
|
input: {
|
||||||
flex: 1,
|
flex: 1,
|
||||||
fontSize: 15,
|
fontSize: 15,
|
||||||
|
|
||||||
fontWeight: "500",
|
fontWeight: "500",
|
||||||
color: colors.neutral[900],
|
color: colors.neutral[900],
|
||||||
// Évite le décalage de texte sur Android
|
// Évite le décalage de texte sur Android
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ const styles = StyleSheet.create({
|
||||||
flexDirection: "row",
|
flexDirection: "row",
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
justifyContent: "space-between",
|
justifyContent: "space-between",
|
||||||
marginBottom: 16, // Espace constant sous le header
|
|
||||||
paddingHorizontal: 4,
|
paddingHorizontal: 4,
|
||||||
},
|
},
|
||||||
title: {
|
title: {
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ function MyCustomTabBar({ state, descriptors, navigation }: any) {
|
||||||
backgroundColor: colors.primary[800],
|
backgroundColor: colors.primary[800],
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
justifyContent: "center",
|
justifyContent: "center",
|
||||||
marginTop: -28,
|
marginTop: -25,
|
||||||
shadowColor: colors.primary[900],
|
shadowColor: colors.primary[900],
|
||||||
shadowOffset: { width: 0, height: 4 },
|
shadowOffset: { width: 0, height: 4 },
|
||||||
shadowOpacity: 0.3,
|
shadowOpacity: 0.3,
|
||||||
|
|
@ -122,7 +122,7 @@ function MyCustomTabBar({ state, descriptors, navigation }: any) {
|
||||||
strokeWidth={isFocused ? 2.5 : 1.8}
|
strokeWidth={isFocused ? 2.5 : 1.8}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{/* <Text
|
<Text
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
style={{
|
style={{
|
||||||
fontSize: 11,
|
fontSize: 11,
|
||||||
|
|
@ -132,7 +132,7 @@ function MyCustomTabBar({ state, descriptors, navigation }: any) {
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{label}
|
{label}
|
||||||
</Text> */}
|
</Text>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
|
|
||||||
6
package.json
Normal file
6
package.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"lucide-react": "^1.7.0",
|
||||||
|
"lucide-react-native": "^1.7.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
2741
pnpm-lock.yaml
Normal file
2741
pnpm-lock.yaml
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue