- 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
73 lines
2.3 KiB
Objective-C
73 lines
2.3 KiB
Objective-C
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#import <UIKit/UIKit.h>
|
|
|
|
#import <React/RCTDefines.h>
|
|
#import <yoga/Yoga.h>
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
@class RCTShadowView;
|
|
|
|
typedef NS_ENUM(NSInteger, RCTDisplayType) {
|
|
RCTDisplayTypeNone,
|
|
RCTDisplayTypeFlex,
|
|
RCTDisplayTypeInline,
|
|
};
|
|
|
|
struct RCTLayoutMetrics {
|
|
CGRect frame;
|
|
CGRect contentFrame;
|
|
UIEdgeInsets borderWidth;
|
|
RCTDisplayType displayType;
|
|
UIUserInterfaceLayoutDirection layoutDirection;
|
|
};
|
|
typedef struct CG_BOXABLE RCTLayoutMetrics RCTLayoutMetrics;
|
|
|
|
struct RCTLayoutContext {
|
|
CGPoint absolutePosition;
|
|
__unsafe_unretained NSPointerArray *_Nonnull affectedShadowViews;
|
|
__unsafe_unretained NSHashTable<NSString *> *_Nonnull other;
|
|
};
|
|
typedef struct CG_BOXABLE RCTLayoutContext RCTLayoutContext;
|
|
|
|
static inline BOOL RCTLayoutMetricsEqualToLayoutMetrics(RCTLayoutMetrics a, RCTLayoutMetrics b)
|
|
{
|
|
return CGRectEqualToRect(a.frame, b.frame) && CGRectEqualToRect(a.contentFrame, b.contentFrame) &&
|
|
UIEdgeInsetsEqualToEdgeInsets(a.borderWidth, b.borderWidth) && a.displayType == b.displayType &&
|
|
a.layoutDirection == b.layoutDirection;
|
|
}
|
|
|
|
RCT_EXTERN RCTLayoutMetrics RCTLayoutMetricsFromYogaNode(YGNodeRef yogaNode);
|
|
|
|
/**
|
|
* Converts float values between Yoga and CoreGraphics representations,
|
|
* especially in terms of edge cases.
|
|
*/
|
|
RCT_EXTERN float RCTYogaFloatFromCoreGraphicsFloat(CGFloat value);
|
|
RCT_EXTERN CGFloat RCTCoreGraphicsFloatFromYogaFloat(float value);
|
|
|
|
/**
|
|
* Converts compound `YGValue` to simple `CGFloat` value.
|
|
*/
|
|
RCT_EXTERN CGFloat RCTCoreGraphicsFloatFromYogaValue(YGValue value, CGFloat baseFloatValue);
|
|
|
|
/**
|
|
* Converts `YGDirection` to `UIUserInterfaceLayoutDirection` and vise versa.
|
|
*/
|
|
RCT_EXTERN YGDirection RCTYogaLayoutDirectionFromUIKitLayoutDirection(UIUserInterfaceLayoutDirection direction);
|
|
RCT_EXTERN UIUserInterfaceLayoutDirection RCTUIKitLayoutDirectionFromYogaLayoutDirection(YGDirection direction);
|
|
|
|
/**
|
|
* Converts `YGDisplay` to `RCTDisplayType` and vise versa.
|
|
*/
|
|
RCT_EXTERN YGDisplay RCTYogaDisplayTypeFromReactDisplayType(RCTDisplayType displayType);
|
|
RCT_EXTERN RCTDisplayType RCTReactDisplayTypeFromYogaDisplayType(YGDisplay displayType);
|
|
|
|
NS_ASSUME_NONNULL_END
|