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/android/
|
||||
|
||||
# dependances
|
||||
node_modules/
|
||||
# Virtual environment
|
||||
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
|
||||
style={styles.notifButton}
|
||||
activeOpacity={0.7}
|
||||
onPress={() => navigation.navigate("Profile")}
|
||||
onPress={() => navigation.navigate("Settings")}
|
||||
>
|
||||
<Ionicons
|
||||
name="person-outline"
|
||||
name="settings-outline"
|
||||
size={22}
|
||||
color={colors.neutral[800]}
|
||||
/>
|
||||
|
|
@ -65,13 +65,13 @@ const styles = StyleSheet.create({
|
|||
flex: 1,
|
||||
},
|
||||
brandTitle: {
|
||||
fontSize: 32,
|
||||
fontSize: 24,
|
||||
fontWeight: "900", // Très gras pour l'identité
|
||||
color: colors.primary[900],
|
||||
letterSpacing: -1, // Look "Logo"
|
||||
},
|
||||
greetingText: {
|
||||
fontSize: 10,
|
||||
fontSize: 14,
|
||||
fontWeight: "500",
|
||||
color: colors.neutral[500],
|
||||
marginTop: -2,
|
||||
|
|
@ -81,27 +81,16 @@ const styles = StyleSheet.create({
|
|||
backgroundColor: "#FFFFFF",
|
||||
borderWidth: 1,
|
||||
borderColor: "#F0F0F0",
|
||||
borderRadius: 16,
|
||||
borderRadius: 32,
|
||||
},
|
||||
notifButton: {
|
||||
height: 48,
|
||||
width: 48,
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
borderRadius: 16,
|
||||
backgroundColor: "#FFFFFF",
|
||||
|
||||
...Platform.select({
|
||||
ios: {
|
||||
shadowColor: "#000",
|
||||
shadowOffset: { width: 0, height: 4 },
|
||||
shadowOpacity: 0.05,
|
||||
shadowRadius: 10,
|
||||
},
|
||||
android: {
|
||||
elevation: 3,
|
||||
},
|
||||
}),
|
||||
borderRadius: 32,
|
||||
|
||||
|
||||
},
|
||||
notifBadge: {
|
||||
position: "absolute",
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ const styles = StyleSheet.create({
|
|||
input: {
|
||||
flex: 1,
|
||||
fontSize: 15,
|
||||
|
||||
fontWeight: "500",
|
||||
color: colors.neutral[900],
|
||||
// Évite le décalage de texte sur Android
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ const styles = StyleSheet.create({
|
|||
flexDirection: "row",
|
||||
alignItems: "center",
|
||||
justifyContent: "space-between",
|
||||
marginBottom: 16, // Espace constant sous le header
|
||||
|
||||
paddingHorizontal: 4,
|
||||
},
|
||||
title: {
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ function MyCustomTabBar({ state, descriptors, navigation }: any) {
|
|||
backgroundColor: colors.primary[800],
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
marginTop: -28,
|
||||
marginTop: -25,
|
||||
shadowColor: colors.primary[900],
|
||||
shadowOffset: { width: 0, height: 4 },
|
||||
shadowOpacity: 0.3,
|
||||
|
|
@ -122,7 +122,7 @@ function MyCustomTabBar({ state, descriptors, navigation }: any) {
|
|||
strokeWidth={isFocused ? 2.5 : 1.8}
|
||||
/>
|
||||
)}
|
||||
{/* <Text
|
||||
<Text
|
||||
numberOfLines={1}
|
||||
style={{
|
||||
fontSize: 11,
|
||||
|
|
@ -132,7 +132,7 @@ function MyCustomTabBar({ state, descriptors, navigation }: any) {
|
|||
}}
|
||||
>
|
||||
{label}
|
||||
</Text> */}
|
||||
</Text>
|
||||
</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