@wasto/cms-components
v1.5.19
Published
Wast'O CMS React Native components
Readme
@wasto/cms-components
Composants CMS pour apps Expo / React Native (New Architecture, Bridgeless).
Metro doit charger le source (src/, champ "react-native"), pas seulement dist/. Ne pas forcer react-native-safe-area-context/lib/commonjs dans metro.config.js : ça casse le codegen Fabric (RNCSafeArea*).
Peers
| Package | Obligatoire | Notes |
|--------|-------------|--------|
| react, react-native | oui | RN 0.81+ / Expo 54+ |
| react-native-safe-area-context | oui | ~5.6.0 — une seule copie, hoisted |
| @react-navigation/bottom-tabs | oui | Types BottomTab (tabBar) |
| expo-image, lucide-react-native, @react-native-async-storage/async-storage, @wasto/sdk | oui | |
| expo-router | optionnel | Apps Expo Router : fournir NavigationProvider qui délègue à router |
| @maplibre/maplibre-react-native | optionnel | Requis sur iOS/Android pour afficher la carte |
| maplibre-gl | optionnel | Requis sur web (PWA / playground) pour la carte tuiles |
Navigation
Header / NextCollection n’importent plus expo-router. L’hôte enveloppe l’app avec NavigationProvider :
import { NavigationProvider } from "@wasto/cms-components";
import { router } from "expo-router"; // ou React Navigation
<NavigationProvider
value={{
push: (href) => router.push(href as never),
canGoBack: () => router.canGoBack(),
goBack: () => router.back(),
}}
>
…
</NavigationProvider>Carte (LocationsMap)
import { LocationsMap } from "@wasto/cms-components"- iOS / Android : Metro charge
LocationsMap.native.tsx(MapLibre React Native). - Web : Metro charge
LocationsMapView.web.tsx(MapLibre GL JS, style OpenFreeMap) simaplibre-glest installé ; sinon fallback pins (LocationsMapView.tsx).
Sur native : dépendance + plugin Expo @maplibre/maplibre-react-native, puis rebuild (expo run:ios). pnpm : le module doit être résolvable depuis la racine (shamefully-hoist ou extraNodeModules).
