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
This commit is contained in:
Eric FELIXINE
2026-06-01 18:00:35 -04:00
parent 08ca495bde
commit e30ae8ed09
35578 changed files with 3703534 additions and 43 deletions

View File

@@ -0,0 +1,48 @@
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
import * as React from 'react';
import { Platform } from 'react-native';
import CheckboxAndroid from './CheckboxAndroid';
import CheckboxIOS from './CheckboxIOS';
import { useInternalTheme } from '../../core/theming';
/**
* Checkboxes allow the selection of multiple options from a set.
*
* ## Usage
* ```js
* import * as React from 'react';
* import { Checkbox } from 'react-native-paper';
*
* const MyComponent = () => {
* const [checked, setChecked] = React.useState(false);
*
* return (
* <Checkbox
* status={checked ? 'checked' : 'unchecked'}
* onPress={() => {
* setChecked(!checked);
* }}
* />
* );
* };
*
* export default MyComponent;
* ```
*/
const Checkbox = ({
theme: themeOverrides,
...props
}) => {
const theme = useInternalTheme(themeOverrides);
return Platform.OS === 'ios' ? /*#__PURE__*/React.createElement(CheckboxIOS, _extends({}, props, {
theme: theme
})) : /*#__PURE__*/React.createElement(CheckboxAndroid, _extends({}, props, {
theme: theme
}));
};
export default Checkbox;
// @component-docs ignore-next-line
const CheckboxWithTheme = Checkbox;
// @component-docs ignore-next-line
export { CheckboxWithTheme as Checkbox };
//# sourceMappingURL=Checkbox.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","Platform","CheckboxAndroid","CheckboxIOS","useInternalTheme","Checkbox","theme","themeOverrides","props","OS","createElement","_extends","CheckboxWithTheme"],"sourceRoot":"../../../../src","sources":["components/Checkbox/Checkbox.tsx"],"mappings":";AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAAgCC,QAAQ,QAAQ,cAAc;AAE9D,OAAOC,eAAe,MAAM,mBAAmB;AAC/C,OAAOC,WAAW,MAAM,eAAe;AACvC,SAASC,gBAAgB,QAAQ,oBAAoB;AAkCrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,QAAQ,GAAGA,CAAC;EAAEC,KAAK,EAAEC,cAAc;EAAE,GAAGC;AAAa,CAAC,KAAK;EAC/D,MAAMF,KAAK,GAAGF,gBAAgB,CAACG,cAAc,CAAC;EAC9C,OAAON,QAAQ,CAACQ,EAAE,KAAK,KAAK,gBAC1BT,KAAA,CAAAU,aAAA,CAACP,WAAW,EAAAQ,QAAA,KAAKH,KAAK;IAAEF,KAAK,EAAEA;EAAM,EAAE,CAAC,gBAExCN,KAAA,CAAAU,aAAA,CAACR,eAAe,EAAAS,QAAA,KAAKH,KAAK;IAAEF,KAAK,EAAEA;EAAM,EAAE,CAC5C;AACH,CAAC;AAED,eAAeD,QAAQ;;AAEvB;AACA,MAAMO,iBAAiB,GAAGP,QAAQ;AAClC;AACA,SAASO,iBAAiB,IAAIP,QAAQ","ignoreList":[]}

View File

@@ -0,0 +1,127 @@
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
import * as React from 'react';
import { Animated, StyleSheet, View } from 'react-native';
import { getAndroidSelectionControlColor } from './utils';
import { useInternalTheme } from '../../core/theming';
import MaterialCommunityIcon from '../MaterialCommunityIcon';
import TouchableRipple from '../TouchableRipple/TouchableRipple';
// From https://material.io/design/motion/speed.html#duration
const ANIMATION_DURATION = 100;
/**
* Checkboxes allow the selection of multiple options from a set.
* This component follows platform guidelines for Android, but can be used
* on any platform.
*
* @extends TouchableRipple props https://callstack.github.io/react-native-paper/docs/components/TouchableRipple
*/
const CheckboxAndroid = ({
status,
theme: themeOverrides,
disabled,
onPress,
testID,
...rest
}) => {
const theme = useInternalTheme(themeOverrides);
const {
current: scaleAnim
} = React.useRef(new Animated.Value(1));
const isFirstRendering = React.useRef(true);
const {
animation: {
scale
}
} = theme;
React.useEffect(() => {
// Do not run animation on very first rendering
if (isFirstRendering.current) {
isFirstRendering.current = false;
return;
}
const checked = status === 'checked';
Animated.sequence([Animated.timing(scaleAnim, {
toValue: 0.85,
duration: checked ? ANIMATION_DURATION * scale : 0,
useNativeDriver: false
}), Animated.timing(scaleAnim, {
toValue: 1,
duration: checked ? ANIMATION_DURATION * scale : ANIMATION_DURATION * scale * 1.75,
useNativeDriver: false
})]).start();
}, [status, scaleAnim, scale]);
const checked = status === 'checked';
const indeterminate = status === 'indeterminate';
const {
rippleColor,
selectionControlColor
} = getAndroidSelectionControlColor({
theme,
disabled,
checked,
customColor: rest.color,
customUncheckedColor: rest.uncheckedColor
});
const borderWidth = scaleAnim.interpolate({
inputRange: [0.8, 1],
outputRange: [7, 0]
});
const icon = indeterminate ? 'minus-box' : checked ? 'checkbox-marked' : 'checkbox-blank-outline';
return /*#__PURE__*/React.createElement(TouchableRipple, _extends({}, rest, {
borderless: true,
rippleColor: rippleColor,
onPress: onPress,
disabled: disabled,
accessibilityRole: "checkbox",
accessibilityState: {
disabled,
checked
},
accessibilityLiveRegion: "polite",
style: styles.container,
testID: testID,
theme: theme
}), /*#__PURE__*/React.createElement(Animated.View, {
style: {
transform: [{
scale: scaleAnim
}]
}
}, /*#__PURE__*/React.createElement(MaterialCommunityIcon, {
allowFontScaling: false,
name: icon,
size: 24,
color: selectionControlColor,
direction: "ltr"
}), /*#__PURE__*/React.createElement(View, {
style: [StyleSheet.absoluteFill, styles.fillContainer]
}, /*#__PURE__*/React.createElement(Animated.View, {
style: [styles.fill, {
borderColor: selectionControlColor
}, {
borderWidth
}]
}))));
};
CheckboxAndroid.displayName = 'Checkbox.Android';
const styles = StyleSheet.create({
container: {
borderRadius: 18,
width: 36,
height: 36,
padding: 6
},
fillContainer: {
alignItems: 'center',
justifyContent: 'center'
},
fill: {
height: 14,
width: 14
}
});
export default CheckboxAndroid;
// @component-docs ignore-next-line
export { CheckboxAndroid };
//# sourceMappingURL=CheckboxAndroid.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","Animated","StyleSheet","View","getAndroidSelectionControlColor","useInternalTheme","MaterialCommunityIcon","TouchableRipple","ANIMATION_DURATION","CheckboxAndroid","status","theme","themeOverrides","disabled","onPress","testID","rest","current","scaleAnim","useRef","Value","isFirstRendering","animation","scale","useEffect","checked","sequence","timing","toValue","duration","useNativeDriver","start","indeterminate","rippleColor","selectionControlColor","customColor","color","customUncheckedColor","uncheckedColor","borderWidth","interpolate","inputRange","outputRange","icon","createElement","_extends","borderless","accessibilityRole","accessibilityState","accessibilityLiveRegion","style","styles","container","transform","allowFontScaling","name","size","direction","absoluteFill","fillContainer","fill","borderColor","displayName","create","borderRadius","width","height","padding","alignItems","justifyContent"],"sourceRoot":"../../../../src","sources":["components/Checkbox/CheckboxAndroid.tsx"],"mappings":"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","ignoreList":[]}

View File

@@ -0,0 +1,73 @@
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
import * as React from 'react';
import { StyleSheet, View } from 'react-native';
import { getSelectionControlIOSColor } from './utils';
import { useInternalTheme } from '../../core/theming';
import MaterialCommunityIcon from '../MaterialCommunityIcon';
import TouchableRipple from '../TouchableRipple/TouchableRipple';
/**
* Checkboxes allow the selection of multiple options from a set.
* This component follows platform guidelines for iOS, but can be used
* on any platform.
*
* @extends TouchableRipple props https://callstack.github.io/react-native-paper/docs/components/TouchableRipple
*/
const CheckboxIOS = ({
status,
disabled,
onPress,
theme: themeOverrides,
testID,
...rest
}) => {
const theme = useInternalTheme(themeOverrides);
const checked = status === 'checked';
const indeterminate = status === 'indeterminate';
const {
checkedColor,
rippleColor
} = getSelectionControlIOSColor({
theme,
disabled,
customColor: rest.color
});
const icon = indeterminate ? 'minus' : 'check';
const opacity = indeterminate || checked ? 1 : 0;
return /*#__PURE__*/React.createElement(TouchableRipple, _extends({}, rest, {
borderless: true,
rippleColor: rippleColor,
onPress: onPress,
disabled: disabled,
accessibilityRole: "checkbox",
accessibilityState: {
disabled,
checked
},
accessibilityLiveRegion: "polite",
style: styles.container,
testID: testID,
theme: theme
}), /*#__PURE__*/React.createElement(View, {
style: {
opacity
}
}, /*#__PURE__*/React.createElement(MaterialCommunityIcon, {
allowFontScaling: false,
name: icon,
size: 24,
color: checkedColor,
direction: "ltr"
})));
};
CheckboxIOS.displayName = 'Checkbox.IOS';
const styles = StyleSheet.create({
container: {
borderRadius: 18,
padding: 6
}
});
export default CheckboxIOS;
// @component-docs ignore-next-line
export { CheckboxIOS };
//# sourceMappingURL=CheckboxIOS.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","StyleSheet","View","getSelectionControlIOSColor","useInternalTheme","MaterialCommunityIcon","TouchableRipple","CheckboxIOS","status","disabled","onPress","theme","themeOverrides","testID","rest","checked","indeterminate","checkedColor","rippleColor","customColor","color","icon","opacity","createElement","_extends","borderless","accessibilityRole","accessibilityState","accessibilityLiveRegion","style","styles","container","allowFontScaling","name","size","direction","displayName","create","borderRadius","padding"],"sourceRoot":"../../../../src","sources":["components/Checkbox/CheckboxIOS.tsx"],"mappings":";AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAAgCC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAEtE,SAASC,2BAA2B,QAAQ,SAAS;AACrD,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,OAAOC,qBAAqB,MAAM,0BAA0B;AAC5D,OAAOC,eAAe,MAAM,oCAAoC;AA6BhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,WAAW,GAAGA,CAAC;EACnBC,MAAM;EACNC,QAAQ;EACRC,OAAO;EACPC,KAAK,EAAEC,cAAc;EACrBC,MAAM;EACN,GAAGC;AACE,CAAC,KAAK;EACX,MAAMH,KAAK,GAAGP,gBAAgB,CAACQ,cAAc,CAAC;EAC9C,MAAMG,OAAO,GAAGP,MAAM,KAAK,SAAS;EACpC,MAAMQ,aAAa,GAAGR,MAAM,KAAK,eAAe;EAEhD,MAAM;IAAES,YAAY;IAAEC;EAAY,CAAC,GAAGf,2BAA2B,CAAC;IAChEQ,KAAK;IACLF,QAAQ;IACRU,WAAW,EAAEL,IAAI,CAACM;EACpB,CAAC,CAAC;EAEF,MAAMC,IAAI,GAAGL,aAAa,GAAG,OAAO,GAAG,OAAO;EAC9C,MAAMM,OAAO,GAAGN,aAAa,IAAID,OAAO,GAAG,CAAC,GAAG,CAAC;EAEhD,oBACEf,KAAA,CAAAuB,aAAA,CAACjB,eAAe,EAAAkB,QAAA,KACVV,IAAI;IACRW,UAAU;IACVP,WAAW,EAAEA,WAAY;IACzBR,OAAO,EAAEA,OAAQ;IACjBD,QAAQ,EAAEA,QAAS;IACnBiB,iBAAiB,EAAC,UAAU;IAC5BC,kBAAkB,EAAE;MAAElB,QAAQ;MAAEM;IAAQ,CAAE;IAC1Ca,uBAAuB,EAAC,QAAQ;IAChCC,KAAK,EAAEC,MAAM,CAACC,SAAU;IACxBlB,MAAM,EAAEA,MAAO;IACfF,KAAK,EAAEA;EAAM,iBAEbX,KAAA,CAAAuB,aAAA,CAACrB,IAAI;IAAC2B,KAAK,EAAE;MAAEP;IAAQ;EAAE,gBACvBtB,KAAA,CAAAuB,aAAA,CAAClB,qBAAqB;IACpB2B,gBAAgB,EAAE,KAAM;IACxBC,IAAI,EAAEZ,IAAK;IACXa,IAAI,EAAE,EAAG;IACTd,KAAK,EAAEH,YAAa;IACpBkB,SAAS,EAAC;EAAK,CAChB,CACG,CACS,CAAC;AAEtB,CAAC;AAED5B,WAAW,CAAC6B,WAAW,GAAG,cAAc;AAExC,MAAMN,MAAM,GAAG7B,UAAU,CAACoC,MAAM,CAAC;EAC/BN,SAAS,EAAE;IACTO,YAAY,EAAE,EAAE;IAChBC,OAAO,EAAE;EACX;AACF,CAAC,CAAC;AAEF,eAAehC,WAAW;;AAE1B;AACA,SAASA,WAAW","ignoreList":[]}

View File

@@ -0,0 +1,118 @@
import * as React from 'react';
import { StyleSheet, View } from 'react-native';
import Checkbox from './Checkbox';
import CheckboxAndroid from './CheckboxAndroid';
import CheckboxIOS from './CheckboxIOS';
import { useInternalTheme } from '../../core/theming';
import TouchableRipple from '../TouchableRipple/TouchableRipple';
import Text from '../Typography/Text';
/**
* Checkbox.Item allows you to press the whole row (item) instead of only the Checkbox.
*
* ## Usage
* ```js
* import * as React from 'react';
* import { View } from 'react-native';
* import { Checkbox } from 'react-native-paper';
*
* const MyComponent = () => (
* <View>
* <Checkbox.Item label="Item" status="checked" />
* </View>
* );
*
* export default MyComponent;
*```
*/
const CheckboxItem = ({
style,
status,
label,
onPress,
onLongPress,
labelStyle,
theme: themeOverrides,
testID,
mode,
position = 'trailing',
accessibilityLabel = label,
disabled,
labelVariant = 'bodyLarge',
labelMaxFontSizeMultiplier = 1.5,
rippleColor,
background,
hitSlop,
...props
}) => {
const theme = useInternalTheme(themeOverrides);
const checkboxProps = {
...props,
status,
theme,
disabled
};
const isLeading = position === 'leading';
let checkbox;
if (mode === 'android') {
checkbox = /*#__PURE__*/React.createElement(CheckboxAndroid, checkboxProps);
} else if (mode === 'ios') {
checkbox = /*#__PURE__*/React.createElement(CheckboxIOS, checkboxProps);
} else {
checkbox = /*#__PURE__*/React.createElement(Checkbox, checkboxProps);
}
const textColor = theme.isV3 ? theme.colors.onSurface : theme.colors.text;
const disabledTextColor = theme.isV3 ? theme.colors.onSurfaceDisabled : theme.colors.disabled;
const textAlign = isLeading ? 'right' : 'left';
const computedStyle = {
color: disabled ? disabledTextColor : textColor,
textAlign
};
return /*#__PURE__*/React.createElement(TouchableRipple, {
accessibilityLabel: accessibilityLabel,
accessibilityRole: "checkbox",
accessibilityState: {
checked: status === 'checked',
disabled
},
onPress: onPress,
onLongPress: onLongPress,
testID: testID,
disabled: disabled,
rippleColor: rippleColor,
theme: theme,
background: background,
hitSlop: hitSlop
}, /*#__PURE__*/React.createElement(View, {
style: [styles.container, style],
pointerEvents: "none",
importantForAccessibility: "no-hide-descendants"
}, isLeading && checkbox, /*#__PURE__*/React.createElement(Text, {
variant: labelVariant,
testID: `${testID}-text`,
maxFontSizeMultiplier: labelMaxFontSizeMultiplier,
style: [styles.label, !theme.isV3 && styles.font, computedStyle, labelStyle]
}, label), !isLeading && checkbox));
};
CheckboxItem.displayName = 'Checkbox.Item';
export default CheckboxItem;
// @component-docs ignore-next-line
export { CheckboxItem };
const styles = StyleSheet.create({
container: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
paddingVertical: 8,
paddingHorizontal: 16
},
label: {
flexShrink: 1,
flexGrow: 1
},
font: {
fontSize: 16
}
});
//# sourceMappingURL=CheckboxItem.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","StyleSheet","View","Checkbox","CheckboxAndroid","CheckboxIOS","useInternalTheme","TouchableRipple","Text","CheckboxItem","style","status","label","onPress","onLongPress","labelStyle","theme","themeOverrides","testID","mode","position","accessibilityLabel","disabled","labelVariant","labelMaxFontSizeMultiplier","rippleColor","background","hitSlop","props","checkboxProps","isLeading","checkbox","createElement","textColor","isV3","colors","onSurface","text","disabledTextColor","onSurfaceDisabled","textAlign","computedStyle","color","accessibilityRole","accessibilityState","checked","styles","container","pointerEvents","importantForAccessibility","variant","maxFontSizeMultiplier","font","displayName","create","flexDirection","alignItems","justifyContent","paddingVertical","paddingHorizontal","flexShrink","flexGrow","fontSize"],"sourceRoot":"../../../../src","sources":["components/Checkbox/CheckboxItem.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAKEC,UAAU,EAEVC,IAAI,QAEC,cAAc;AAErB,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,eAAe,MAAM,mBAAmB;AAC/C,OAAOC,WAAW,MAAM,eAAe;AACvC,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,OAAOC,eAAe,MAEf,oCAAoC;AAC3C,OAAOC,IAAI,MAAM,oBAAoB;AAgGrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,YAAY,GAAGA,CAAC;EACpBC,KAAK;EACLC,MAAM;EACNC,KAAK;EACLC,OAAO;EACPC,WAAW;EACXC,UAAU;EACVC,KAAK,EAAEC,cAAc;EACrBC,MAAM;EACNC,IAAI;EACJC,QAAQ,GAAG,UAAU;EACrBC,kBAAkB,GAAGT,KAAK;EAC1BU,QAAQ;EACRC,YAAY,GAAG,WAAW;EAC1BC,0BAA0B,GAAG,GAAG;EAChCC,WAAW;EACXC,UAAU;EACVC,OAAO;EACP,GAAGC;AACE,CAAC,KAAK;EACX,MAAMZ,KAAK,GAAGV,gBAAgB,CAACW,cAAc,CAAC;EAC9C,MAAMY,aAAa,GAAG;IAAE,GAAGD,KAAK;IAAEjB,MAAM;IAAEK,KAAK;IAAEM;EAAS,CAAC;EAC3D,MAAMQ,SAAS,GAAGV,QAAQ,KAAK,SAAS;EACxC,IAAIW,QAAQ;EAEZ,IAAIZ,IAAI,KAAK,SAAS,EAAE;IACtBY,QAAQ,gBAAG/B,KAAA,CAAAgC,aAAA,CAAC5B,eAAe,EAAKyB,aAAgB,CAAC;EACnD,CAAC,MAAM,IAAIV,IAAI,KAAK,KAAK,EAAE;IACzBY,QAAQ,gBAAG/B,KAAA,CAAAgC,aAAA,CAAC3B,WAAW,EAAKwB,aAAgB,CAAC;EAC/C,CAAC,MAAM;IACLE,QAAQ,gBAAG/B,KAAA,CAAAgC,aAAA,CAAC7B,QAAQ,EAAK0B,aAAgB,CAAC;EAC5C;EAEA,MAAMI,SAAS,GAAGjB,KAAK,CAACkB,IAAI,GAAGlB,KAAK,CAACmB,MAAM,CAACC,SAAS,GAAGpB,KAAK,CAACmB,MAAM,CAACE,IAAI;EACzE,MAAMC,iBAAiB,GAAGtB,KAAK,CAACkB,IAAI,GAChClB,KAAK,CAACmB,MAAM,CAACI,iBAAiB,GAC9BvB,KAAK,CAACmB,MAAM,CAACb,QAAQ;EACzB,MAAMkB,SAAS,GAAGV,SAAS,GAAG,OAAO,GAAG,MAAM;EAE9C,MAAMW,aAAa,GAAG;IACpBC,KAAK,EAAEpB,QAAQ,GAAGgB,iBAAiB,GAAGL,SAAS;IAC/CO;EACF,CAAc;EAEd,oBACExC,KAAA,CAAAgC,aAAA,CAACzB,eAAe;IACdc,kBAAkB,EAAEA,kBAAmB;IACvCsB,iBAAiB,EAAC,UAAU;IAC5BC,kBAAkB,EAAE;MAClBC,OAAO,EAAElC,MAAM,KAAK,SAAS;MAC7BW;IACF,CAAE;IACFT,OAAO,EAAEA,OAAQ;IACjBC,WAAW,EAAEA,WAAY;IACzBI,MAAM,EAAEA,MAAO;IACfI,QAAQ,EAAEA,QAAS;IACnBG,WAAW,EAAEA,WAAY;IACzBT,KAAK,EAAEA,KAAM;IACbU,UAAU,EAAEA,UAAW;IACvBC,OAAO,EAAEA;EAAQ,gBAEjB3B,KAAA,CAAAgC,aAAA,CAAC9B,IAAI;IACHQ,KAAK,EAAE,CAACoC,MAAM,CAACC,SAAS,EAAErC,KAAK,CAAE;IACjCsC,aAAa,EAAC,MAAM;IACpBC,yBAAyB,EAAC;EAAqB,GAE9CnB,SAAS,IAAIC,QAAQ,eACtB/B,KAAA,CAAAgC,aAAA,CAACxB,IAAI;IACH0C,OAAO,EAAE3B,YAAa;IACtBL,MAAM,EAAE,GAAGA,MAAM,OAAQ;IACzBiC,qBAAqB,EAAE3B,0BAA2B;IAClDd,KAAK,EAAE,CACLoC,MAAM,CAAClC,KAAK,EACZ,CAACI,KAAK,CAACkB,IAAI,IAAIY,MAAM,CAACM,IAAI,EAC1BX,aAAa,EACb1B,UAAU;EACV,GAEDH,KACG,CAAC,EACN,CAACkB,SAAS,IAAIC,QACX,CACS,CAAC;AAEtB,CAAC;AAEDtB,YAAY,CAAC4C,WAAW,GAAG,eAAe;AAE1C,eAAe5C,YAAY;;AAE3B;AACA,SAASA,YAAY;AAErB,MAAMqC,MAAM,GAAG7C,UAAU,CAACqD,MAAM,CAAC;EAC/BP,SAAS,EAAE;IACTQ,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,eAAe;IAC/BC,eAAe,EAAE,CAAC;IAClBC,iBAAiB,EAAE;EACrB,CAAC;EACD/C,KAAK,EAAE;IACLgD,UAAU,EAAE,CAAC;IACbC,QAAQ,EAAE;EACZ,CAAC;EACDT,IAAI,EAAE;IACJU,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}

View File

@@ -0,0 +1,16 @@
import CheckboxComponent from './Checkbox';
import CheckboxAndroid from './CheckboxAndroid';
import CheckboxIOS from './CheckboxIOS';
import CheckboxItem from './CheckboxItem';
const Checkbox = Object.assign(
// @component ./Checkbox.tsx
CheckboxComponent, {
// @component ./CheckboxItem.tsx
Item: CheckboxItem,
// @component ./CheckboxAndroid.tsx
Android: CheckboxAndroid,
// @component ./CheckboxIOS.tsx
IOS: CheckboxIOS
});
export default Checkbox;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["CheckboxComponent","CheckboxAndroid","CheckboxIOS","CheckboxItem","Checkbox","Object","assign","Item","Android","IOS"],"sourceRoot":"../../../../src","sources":["components/Checkbox/index.ts"],"mappings":"AAAA,OAAOA,iBAAiB,MAAM,YAAY;AAC1C,OAAOC,eAAe,MAAM,mBAAmB;AAC/C,OAAOC,WAAW,MAAM,eAAe;AACvC,OAAOC,YAAY,MAAM,gBAAgB;AAEzC,MAAMC,QAAQ,GAAGC,MAAM,CAACC,MAAM;AAC5B;AACAN,iBAAiB,EACjB;EACE;EACAO,IAAI,EAAEJ,YAAY;EAClB;EACAK,OAAO,EAAEP,eAAe;EACxB;EACAQ,GAAG,EAAEP;AACP,CACF,CAAC;AAED,eAAeE,QAAQ","ignoreList":[]}

View File

@@ -0,0 +1,141 @@
import color from 'color';
const getAndroidCheckedColor = ({
theme,
customColor
}) => {
if (customColor) {
return customColor;
}
if (theme.isV3) {
return theme.colors.primary;
}
return theme.colors.accent;
};
const getAndroidUncheckedColor = ({
theme,
customUncheckedColor
}) => {
if (customUncheckedColor) {
return customUncheckedColor;
}
if (theme.isV3) {
return theme.colors.onSurfaceVariant;
}
if (theme.dark) {
return color(theme.colors.text).alpha(0.7).rgb().string();
}
return color(theme.colors.text).alpha(0.54).rgb().string();
};
const getAndroidRippleColor = ({
theme,
checkedColor,
disabled
}) => {
if (disabled) {
if (theme.isV3) {
return color(theme.colors.onSurface).alpha(0.16).rgb().string();
}
return color(theme.colors.text).alpha(0.16).rgb().string();
}
return color(checkedColor).fade(0.32).rgb().string();
};
const getAndroidControlColor = ({
theme,
checked,
disabled,
checkedColor,
uncheckedColor
}) => {
if (disabled) {
if (theme.isV3) {
return theme.colors.onSurfaceDisabled;
}
return theme.colors.disabled;
}
if (checked) {
return checkedColor;
}
return uncheckedColor;
};
export const getAndroidSelectionControlColor = ({
theme,
disabled,
checked,
customColor,
customUncheckedColor
}) => {
const checkedColor = getAndroidCheckedColor({
theme,
customColor
});
const uncheckedColor = getAndroidUncheckedColor({
theme,
customUncheckedColor
});
return {
rippleColor: getAndroidRippleColor({
theme,
checkedColor,
disabled
}),
selectionControlColor: getAndroidControlColor({
theme,
disabled,
checked,
checkedColor,
uncheckedColor
})
};
};
const getIOSCheckedColor = ({
theme,
disabled,
customColor
}) => {
if (disabled) {
if (theme.isV3) {
return theme.colors.onSurfaceDisabled;
}
return theme.colors.disabled;
}
if (customColor) {
return customColor;
}
if (theme.isV3) {
return theme.colors.primary;
}
return theme.colors.accent;
};
const getIOSRippleColor = ({
theme,
checkedColor,
disabled
}) => {
if (disabled) {
if (theme.isV3) {
return color(theme.colors.onSurface).alpha(0.16).rgb().string();
}
return color(theme.colors.text).alpha(0.16).rgb().string();
}
return color(checkedColor).fade(0.32).rgb().string();
};
export const getSelectionControlIOSColor = ({
theme,
disabled,
customColor
}) => {
const checkedColor = getIOSCheckedColor({
theme,
disabled,
customColor
});
return {
checkedColor,
rippleColor: getIOSRippleColor({
theme,
checkedColor,
disabled
})
};
};
//# sourceMappingURL=utils.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["color","getAndroidCheckedColor","theme","customColor","isV3","colors","primary","accent","getAndroidUncheckedColor","customUncheckedColor","onSurfaceVariant","dark","text","alpha","rgb","string","getAndroidRippleColor","checkedColor","disabled","onSurface","fade","getAndroidControlColor","checked","uncheckedColor","onSurfaceDisabled","getAndroidSelectionControlColor","rippleColor","selectionControlColor","getIOSCheckedColor","getIOSRippleColor","getSelectionControlIOSColor"],"sourceRoot":"../../../../src","sources":["components/Checkbox/utils.ts"],"mappings":"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","ignoreList":[]}