- 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
1 line
1.7 KiB
Plaintext
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"]} |