Files
Eric FELIXINE e30ae8ed09 feat(smart-app): implement complete mobile app MVP
- App.tsx: full navigation (Auth stack + Main tabs with 5 screens)
- Auth: LoginScreen, RegisterScreen, ForgotPasswordScreen
- HomeScreen: dashboard with IoT metrics, weather widget, alerts, quick actions, sensors
- MapScreen: interactive map with layer toggles (6 layers)
- MarketplaceScreen: categories (6), products (5), search
- ChatScreen: AI chat with quick prompts (4), bot responses
- ProfileScreen: user info, stats, menu (9 items), logout
- AlertsScreen: alert list with severity, acknowledge
- SensorsScreen: sensor list with type filters (6 types), search
- ZonesScreen: zone cards with stats
- SettingsScreen: language picker (FR/EN/ES/DE), privacy, about
- Stores: iotStore (sensors, zones, alerts), notificationStore, uiStore + i18n
- Hooks: useSensors, useAlerts, useNotifications, useLocation
- Components: Card, Button, LoadingSpinner, ErrorBoundary, Header
- Services: iotService, notificationService (with axios API client)
- Utils: formatters (temp, AQI, noise, dates), validators (email, password, IBAN)
- Theme: colors.ts with full design system (Blue Ocean palette)
- Ditto: fixed MongoDB connection, new JWT secrets, official gateway image
2026-06-01 18:00:35 -04:00

1 line
1.7 KiB
Plaintext

{"version":3,"sources":["index.css"],"names":[],"mappings":"AAAA,UAEE,wCAA2C,CAC3C,eAAgB,CAChB,eAAgB,CAChB,WAAY,CACZ,QAAS,CACT,SACF,CACA,UACE,iBAAkB,CAClB,UAAW,CACX,qBAAsB,CACtB,4BAAgC,CAChC,gBAAiB,CACjB,kBAAmB,CACnB,WACF,CACA,SACE,YACF,CACA,YACE,gBACF,CACA,UACE,wBAAyB,CACzB,aACF,CACA,gBACE,aACF,CACA,QACE,aACF,CACA,qBACE,qBACF,CAEA,SACE,qBAAsB,CACtB,eAAgB,CAChB,YAAa,CACb,iBAAkB,CAClB,6BAAuC,CACvC,iBAAkB,CAClB,wBAAoC,CACpC,qCAA8C,CAC9C,aAAqB,CACrB,cAAe,CACf,eAAgB,CAChB,eACF,CAEA,WACE,YACF,CAEA,sBACE,QACF,CAEA,eACE,kBAA0B,CAC1B,yBAAmC,CACnC,aACF","file":"ui.e31bb0bc.css","sourceRoot":"../../src/ui","sourcesContent":["html,\nbody {\n font-family: Helvetica, Verdana, sans-serif;\n font-size: large;\n font-weight: 200;\n height: 100%;\n margin: 0;\n padding: 0;\n}\n.shortcut {\n border-radius: 4px;\n color: #eee;\n background-color: #333;\n font-family: 'Monaco', monospace;\n font-size: medium;\n letter-spacing: 3px;\n padding: 4px;\n}\n.content {\n padding: 10px;\n}\n.reload-btn {\n padding: 5px 10px;\n}\nbody.dark {\n background-color: #242424;\n color: #afafaf;\n}\n.dark .shortcut {\n color: #c1c1c1;\n}\n.dark a {\n color: #3b99fc;\n}\ninput[type='checkbox'] {\n vertical-align: middle;\n}\n\n.warning {\n box-sizing: border-box;\n max-width: 800px;\n padding: 16px;\n margin-bottom: 1em;\n border-left: 5px solid rgb(230, 167, 0);\n border-radius: 6px;\n background-color: rgb(255, 248, 230);\n box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px 0px;\n color: rgb(77, 56, 0);\n font-size: 16px;\n font-weight: 500;\n line-height: 1.6;\n}\n\n.warning p {\n margin-top: 0;\n}\n\n.warning p:last-child {\n margin: 0;\n}\n\n.dark .warning {\n background: rgb(77, 56, 0);\n border-left-color: rgb(230, 167, 0);\n color: rgb(255, 248, 230);\n}\n"]}