@wereform/pkgm-shared 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/buttons/CustomizableButton.js +1 -1
- package/dist/components/dropdowns/DropDown.js +1 -1
- package/dist/components/headers/HeaderGlobal.js +1 -1
- package/dist/components/inputs/InputComment.js +1 -1
- package/dist/components/inputs/InputField.js +1 -1
- package/dist/components/menus/MenuChannelMeta.js +1 -1
- package/dist/components/menus/MenuInteraction.js +1 -1
- package/dist/components/menus/MenuNav.js +1 -1
- package/dist/components/titles/CustomizedTitle.js +1 -1
- package/dist/styles/MenuChannelMetaStyles.js +1 -1
- package/dist/utils/DateViews.js +1 -1
- package/package.json +38 -34
- package/src/components/buttons/CustomizableButton.jsx +85 -0
- package/src/components/dropdowns/DropDown.jsx +60 -0
- package/src/components/headers/HeaderGlobal.jsx +38 -0
- package/src/components/inputs/InputComment.jsx +27 -0
- package/src/components/inputs/InputField.jsx +113 -0
- package/src/components/menus/MenuChannelMeta.jsx +115 -0
- package/src/components/menus/MenuInteraction.jsx +68 -0
- package/src/components/menus/MenuNav.jsx +48 -0
- package/src/components/titles/CustomizedTitle.jsx +62 -0
- package/src/index.js +11 -0
- package/src/styles/MenuChannelMetaStyles.js +127 -0
- package/src/styles/MenuInteractionStyles.js +23 -0
- package/src/styles/commentInputStyles.js +27 -0
- package/src/styles/customizableButtonStyles.js +30 -0
- package/src/styles/dropDownStyles.js +57 -0
- package/src/styles/globalStyles.js +27 -0
- package/src/styles/headerGlobalStyles.js +30 -0
- package/src/styles/inputStyles.js +41 -0
- package/src/styles/menuNavStyles.js +22 -0
- package/src/utils/DateViews.jsx +72 -0
- package/src/utils/dateHelpers.js +0 -0
- package/src/utils/formatters.js +0 -0
- package/src/utils/index.js +0 -0
- package/src/utils/normalizeUrl.js +14 -0
- package/src/utils/validators.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.CustomizedButton=CustomizedButton;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _reactNative=require("react-native");var _customizableButtonStyles=require("../../styles/customizableButtonStyles");var _react=require("react");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.CustomizedButton=CustomizedButton;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _reactNative=require("react-native");var _customizableButtonStyles=require("../../styles/customizableButtonStyles");var _react=require("react");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-shared\\src\\components\\buttons\\CustomizableButton.jsx";function CustomizedButton(_ref){var label=_ref.label,onPress=_ref.onPress,onPressStyle=_ref.onPressStyle,textColor=_ref.textColor,fontSize=_ref.fontSize,fontFamily=_ref.fontFamily,fontWeight=_ref.fontWeight,customIcon=_ref.customIcon,style=_ref.style,isDisabled=_ref.isDisabled;if(!label){console.warn("CustomizedButton: 'label' prop is missing.");}var _useState=(0,_react.useState)(false),_useState2=(0,_slicedToArray2.default)(_useState,2),pressed=_useState2[0],setPressed=_useState2[1];return(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:onPress||function(){return console.warn("CustomizedButton: onPress not provided");},onPressIn:function onPressIn(){return setPressed(true);},onPressOut:function onPressOut(){return setPressed(false);},style:[_customizableButtonStyles.customizableButtonStyles.buttonContainer,style,pressed&&onPressStyle],activeOpacity:1,disabled:isDisabled,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:customIcon?{flexDirection:"row",width:"100%",justifyContent:"space-between",alignItems:"center",paddingRight:12}:{},children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[_customizableButtonStyles.customizableButtonStyles.buttonText,{color:textColor||"#fff",fontSize:fontSize||16,fontFamily:fontFamily,fontWeight:fontWeight}],children:label||"Default Button"}),(0,_jsxRuntime.jsx)(_reactNative.View,{children:customIcon&&customIcon})]})});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.DropDown=DropDown;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _reactNative=require("react-native");var _reactNativeModalSelector=_interopRequireDefault(require("react-native-modal-selector"));var _react=require("react");var _dropDownStyles=require("../../styles/dropDownStyles");var _vectorIcons=require("@expo/vector-icons");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.DropDown=DropDown;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _reactNative=require("react-native");var _reactNativeModalSelector=_interopRequireDefault(require("react-native-modal-selector"));var _react=require("react");var _dropDownStyles=require("../../styles/dropDownStyles");var _vectorIcons=require("@expo/vector-icons");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-shared\\src\\components\\dropdowns\\DropDown.jsx";function DropDown(_ref){var selectText=_ref.selectText,data=_ref.data,styles=_ref.styles,iconStyles=_ref.iconStyles;var _useState=(0,_react.useState)(selectText),_useState2=(0,_slicedToArray2.default)(_useState,2),selected=_useState2[0],setSelected=_useState2[1];return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[_dropDownStyles.dropDownStyles.container,styles],children:(0,_jsxRuntime.jsx)(_reactNativeModalSelector.default,{data:data,initValue:selectText||"Select Option",onChange:function onChange(option){console.log("Selected option:",option);setSelected(option);},overlayStyle:_dropDownStyles.dropDownStyles.overlayStyle,optionTextStyle:{color:"#fff",fontWeight:"500"},optionContainerStyle:_dropDownStyles.dropDownStyles.optionContainerStyle,cancelTextStyle:{color:"#000",fontFamily:"Inter",fontWeight:"800"},cancelStyle:_dropDownStyles.dropDownStyles.cancelContainerStyle,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_dropDownStyles.dropDownStyles.dropDownContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_dropDownStyles.dropDownStyles.dropDownText,children:typeof selected==="string"?selected:(selected==null?void 0:selected.label)||"Select Option"}),(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"caret-down",size:16,color:"white",style:iconStyles})]})})});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.HeaderGlobal=HeaderGlobal;var _reactNative=require("react-native");var _headerGlobalStyles=require("../../styles/headerGlobalStyles");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.HeaderGlobal=HeaderGlobal;var _reactNative=require("react-native");var _headerGlobalStyles=require("../../styles/headerGlobalStyles");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-shared\\src\\components\\headers\\HeaderGlobal.jsx";function HeaderGlobal(_ref){var aiIcon=_ref.aiIcon,notificationIcon=_ref.notificationIcon,searchIcon=_ref.searchIcon;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_headerGlobalStyles.headerGlobalStyles.container,children:[(0,_jsxRuntime.jsx)(_reactNative.Image,{source:{uri:"https://begenone-images.s3.us-east-1.amazonaws.com/begenone-white-transparent-logo-beta-min.png"},style:_headerGlobalStyles.headerGlobalStyles.image}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_headerGlobalStyles.headerGlobalStyles.iconsContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{style:_headerGlobalStyles.headerGlobalStyles.icons,children:aiIcon}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{style:_headerGlobalStyles.headerGlobalStyles.icons,children:notificationIcon}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{style:_headerGlobalStyles.headerGlobalStyles.icons,children:searchIcon})]})]});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.InputComment=InputComment;var _reactNative=require("react-native");var _commentInputStyles=require("../../styles/commentInputStyles");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.InputComment=InputComment;var _reactNative=require("react-native");var _commentInputStyles=require("../../styles/commentInputStyles");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-shared\\src\\components\\inputs\\InputComment.jsx";function InputComment(_ref){var placeholder=_ref.placeholder,submitIcon=_ref.submitIcon,props=_ref.props;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_commentInputStyles.commentInputStyles.container,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,Object.assign({placeholder:placeholder,placeholderTextColor:"#999",style:[_commentInputStyles.commentInputStyles.input]},props)),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{children:submitIcon})]});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.InputField=InputField;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _inputStyles=require("../../styles/inputStyles");var _inter=require("@expo-google-fonts/inter");var _vectorIcons=require("@expo/vector-icons");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.InputField=InputField;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _inputStyles=require("../../styles/inputStyles");var _inter=require("@expo-google-fonts/inter");var _vectorIcons=require("@expo/vector-icons");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-shared\\src\\components\\inputs\\InputField.jsx";var _excluded=["placeholder","error","iconLeft","iconRight","onIconPress","iconRightColor","inputStyle","inputWrapper","multiline","onChangeText","isEditable","secureTextEntry","Children"];function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap(),n=new WeakMap();return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f);}for(var _t in e)"default"!==_t&&{}.hasOwnProperty.call(e,_t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,_t))&&(i.get||i.set)?o(f,_t,i):f[_t]=e[_t]);return f;})(e,t);}function InputField(_ref){var placeholder=_ref.placeholder,error=_ref.error,iconLeft=_ref.iconLeft,iconRight=_ref.iconRight,onIconPress=_ref.onIconPress,iconRightColor=_ref.iconRightColor,inputStyle=_ref.inputStyle,inputWrapper=_ref.inputWrapper,multiline=_ref.multiline,onChangeText=_ref.onChangeText,isEditable=_ref.isEditable,secureTextEntry=_ref.secureTextEntry,Children=_ref.Children,props=(0,_objectWithoutProperties2.default)(_ref,_excluded);var _useFonts=(0,_inter.useFonts)({Inter_400Regular:_inter.Inter_400Regular,Inter_700Bold:_inter.Inter_700Bold}),_useFonts2=(0,_slicedToArray2.default)(_useFonts,1),fontsLoaded=_useFonts2[0];if(!fontsLoaded){return null;}var isMultiline=multiline||false;return(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[_inputStyles.inputStyles.inputWrapper,inputWrapper],children:[iconLeft&&(0,_jsxRuntime.jsx)(_reactNative.View,{style:_inputStyles.inputStyles.icon,children:iconLeft}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,Object.assign({editable:isEditable,placeholder:placeholder,placeholderTextColor:"#999",multiline:isMultiline,style:[_inputStyles.inputStyles.input,inputStyle,isMultiline&&{textAlignVertical:"top"}],onChangeText:onChangeText,secureTextEntry:secureTextEntry},props)),iconRight&&(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{style:_inputStyles.inputStyles.icon,onPress:onIconPress,disabled:!onIconPress,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:iconRight,size:18,color:iconRightColor||"#fff"})})]}),error&&(0,_jsxRuntime.jsx)(_reactNative.Text,{style:customErrorStyle,children:error})]});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.MenuChannelMeta=void 0;var _reactNative=require("react-native");var _MenuChannelMetaStyles=require("../../styles/MenuChannelMetaStyles");var _vectorIcons=require("@expo/vector-icons");var _react=require("react");var _jsxRuntime=require("react/jsx-runtime");var _this=this,_jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.MenuChannelMeta=void 0;var _reactNative=require("react-native");var _MenuChannelMetaStyles=require("../../styles/MenuChannelMetaStyles");var _vectorIcons=require("@expo/vector-icons");var _react=require("react");var _jsxRuntime=require("react/jsx-runtime");var _this=this,_jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-shared\\src\\components\\menus\\MenuChannelMeta.jsx";var calcWidth;var calcHeight;var MenuChannelMeta=exports.MenuChannelMeta=function MenuChannelMeta(_ref){var timeAgo=_ref.timeAgo,viewsText=_ref.viewsText,channelLogo=_ref.channelLogo,userName=_ref.userName,subscribersCount=_ref.subscribersCount,containerStyles=_ref.containerStyles,channelContainerStyles=_ref.channelContainerStyles;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[_MenuChannelMetaStyles.MenuChannelMetaStyles.container,containerStyles],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:_MenuChannelMetaStyles.MenuChannelMetaStyles.dateViewsContainer,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_MenuChannelMetaStyles.MenuChannelMetaStyles.dateContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:_MenuChannelMetaStyles.MenuChannelMetaStyles.dateIcon,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"calendar",size:16,color:"white"})}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_MenuChannelMetaStyles.MenuChannelMetaStyles.dateText,children:timeAgo||"14 Hours Ago"})]})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_MenuChannelMetaStyles.MenuChannelMetaStyles.channelMetaContainer,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_MenuChannelMetaStyles.MenuChannelMetaStyles.channelMetaContainer_ColumnOne,children:[(0,_jsxRuntime.jsx)(_reactNative.Image,{source:{uri:channelLogo||"https://begenone-images.s3.us-east-1.amazonaws.com/default-user-photo.jpg"},style:_MenuChannelMetaStyles.MenuChannelMetaStyles.userImage}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_MenuChannelMetaStyles.MenuChannelMetaStyles.nameSubcountContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[_MenuChannelMetaStyles.MenuChannelMetaStyles.userName,inlineStyles.userName],children:userName||"Default Username"}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_MenuChannelMetaStyles.MenuChannelMetaStyles.subCountContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_MenuChannelMetaStyles.MenuChannelMetaStyles.subCount,children:subscribersCount||"0"}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_MenuChannelMetaStyles.MenuChannelMetaStyles.subText,children:"Subscribers"})]})]})]}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:[_MenuChannelMetaStyles.MenuChannelMetaStyles.subscribeButtonContainer,{backgroundColor:"#303030"}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[_MenuChannelMetaStyles.MenuChannelMetaStyles.subscribeButtonText,{color:"#7f7f7f"}],children:"Subscribe"})})]})]});};var inlineStyles=_reactNative.StyleSheet.create({userName:{width:""}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.MenuInteraction=void 0;var _reactNative=require("react-native");var _MenuInteractionStyles=require("../../styles/MenuInteractionStyles");var _vectorIcons=require("@expo/vector-icons");var _react=require("react");var _jsxRuntime=require("react/jsx-runtime");var _this=this,_jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.MenuInteraction=void 0;var _reactNative=require("react-native");var _MenuInteractionStyles=require("../../styles/MenuInteractionStyles");var _vectorIcons=require("@expo/vector-icons");var _react=require("react");var _jsxRuntime=require("react/jsx-runtime");var _this=this,_jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-shared\\src\\components\\menus\\MenuInteraction.jsx";var MenuInteraction=exports.MenuInteraction=function MenuInteraction(_ref){var containerStyles=_ref.containerStyles,columnMainIconStyles=_ref.columnMainIconStyles,pressed=_ref.pressed;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[_MenuInteractionStyles.MenuInteractionStyles.container,containerStyles],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[_MenuInteractionStyles.MenuInteractionStyles.column_mainIcons,columnMainIconStyles],children:[(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:_MenuInteractionStyles.MenuInteractionStyles.icon,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"arrow-redo",size:24,color:"white"})})}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:_MenuInteractionStyles.MenuInteractionStyles.icon,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"chatbubble-ellipses",size:24,color:"white"})})}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:_MenuInteractionStyles.MenuInteractionStyles.icon,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"repeat-outline",size:24,color:"white"})})}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:_MenuInteractionStyles.MenuInteractionStyles.icon,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"thumbs-up-outline",size:24,color:"white"})})}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:_MenuInteractionStyles.MenuInteractionStyles.icon,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"thumbs-down-outline",size:24,color:"white"})})})]}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:function onPress(){return pressed(true);},children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"ellipsis-vertical-outline",size:24,color:"white"})})]});};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.MenuNav=MenuNav;var _reactNative=require("react-native");var _menuNavStyles=require("../../styles/menuNavStyles");var _vectorIcons=require("@expo/vector-icons");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.MenuNav=MenuNav;var _reactNative=require("react-native");var _menuNavStyles=require("../../styles/menuNavStyles");var _vectorIcons=require("@expo/vector-icons");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-shared\\src\\components\\menus\\MenuNav.jsx";function MenuNav(_ref){var homeIcon=_ref.homeIcon,wireIcon=_ref.wireIcon,uploadIcon=_ref.uploadIcon,channelIcon=_ref.channelIcon,profileIcon=_ref.profileIcon,onPressHome=_ref.onPressHome,onPressWire=_ref.onPressWire,onPressUpload=_ref.onPressUpload,onPressChannel=_ref.onPressChannel,onPressProfile=_ref.onPressProfile;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_menuNavStyles.menuNavStyles.container,children:[(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:onPressHome,children:homeIcon}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:onPressWire,children:wireIcon}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:onPressUpload,children:uploadIcon}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:onPressChannel,children:channelIcon}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:onPressProfile,children:profileIcon||(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"person-outline",size:24,color:"white"})})]});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.CustomizedTitle=CustomizedTitle;var _reactNative=require("react-native");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.CustomizedTitle=CustomizedTitle;var _reactNative=require("react-native");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-shared\\src\\components\\titles\\CustomizedTitle.jsx";function CustomizedTitle(_ref){var title=_ref.title,fontSize=_ref.fontSize,fontFamily=_ref.fontFamily,textColor=_ref.textColor,style=_ref.style,textStyle=_ref.textStyle,dateTextStyles=_ref.dateTextStyles;var displayTitle=title&&title.length>75?title.slice(0,75)+"…":title||"Here is your default Title!";return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{width:"100%"},style],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{flexShrink:1,fontFamily:fontFamily,fontSize:fontSize,color:textColor,flexWrap:"wrap"},textStyle],numberOfLines:2,children:displayTitle})});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.MenuChannelMetaStyles=void 0;var _reactNative=require("react-native");var _globalStyles=require("./globalStyles");var MenuChannelMetaStyles=exports.MenuChannelMetaStyles=_reactNative.StyleSheet.create({container:{width:"auto",marginRight:12,marginLeft:12},dateViewsContainer:{width:"100%",flexDirection:"row",justifyContent:"space-between",marginTop:12,paddingRight:6,paddingLeft:6},dateContainer:{flexDirection:"row",rowGap:20},dateIcon:{marginRight:8},viewsContainer:{flexDirection:"row",alignItems:"center"},eyeIcon:{marginRight:8,marginLeft:8},dateText:{color:_globalStyles.globalStyles.colors.colorPrimary600},viewsText:{color:_globalStyles.globalStyles.colors.colorPrimary600},channelMetaContainer:{flexDirection:"row",backgroundColor:_globalStyles.globalStyles.colors.colorPrimary200,padding:12,marginBottom:6,marginTop:12,borderRadius:_globalStyles.globalStyles.borders.borderPrimary100,justifyContent:"space-between"},channelMetaContainer_ColumnOne:{flexDirection:"row"},userImage:{width:40,height:40,borderRadius:_globalStyles.globalStyles.borders.borderPrimary50},nameSubcountContainer:{flexDirection:"column",paddingLeft:12},userName:{color:"#fff",fontSize:_reactNative.Platform.OS==="ios"?16:14,paddingBottom:4,fontWeight:"bold"},subCountContainer:{flexDirection:"row"},subCount:{color:_globalStyles.globalStyles.colors.colorPrimary600,paddingRight:6,fontSize:12,fontWeight:"bold"},subText:{color:"#fff",fontSize:12},subscribeButtonContainer:{backgroundColor:_globalStyles.globalStyles.colors.colorPrimary600,width:_reactNative.Platform.OS==="ios"?100:80,borderRadius:_globalStyles.globalStyles.borders.borderPrimary400,alignItems:"center",justifyContent:"center"},subscribeButtonText:{color:"#fff",fontWeight:"bold",fontSize:_reactNative.Platform==="ios"?18:12}});
|
package/dist/utils/DateViews.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.DateViews=DateViews;var _reactNative=require("react-native");var _globalStyles=require("../styles/globalStyles");var _vectorIcons=require("@expo/vector-icons");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.DateViews=DateViews;var _reactNative=require("react-native");var _globalStyles=require("../styles/globalStyles");var _vectorIcons=require("@expo/vector-icons");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-shared\\src\\utils\\DateViews.jsx";function DateViews(_ref){var timeAgo=_ref.timeAgo,viewsText=_ref.viewsText,containerStyles=_ref.containerStyles,dateTextStyles=_ref.dateTextStyles,viewsTextStyles=_ref.viewsTextStyles,dateContainerStyles=_ref.dateContainerStyles;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.dateViewsContainer,containerStyles],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.dateContainer,dateContainerStyles],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.dateIcon],children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"calendar-clear-outline",size:16,color:"white"})}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.dateText,dateTextStyles],children:timeAgo||"14 Hours Ago"})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.viewsContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.eyeIcon],children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"eye-outline",size:16,color:"white"})}),(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[styles.viewsText,viewsTextStyles],children:[viewsText||"123.400",(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:"white"},children:" Views"})]})]})]});}var styles=_reactNative.StyleSheet.create({dateViewsContainer:{width:"100%",height:30,flexDirection:"row",justifyContent:"space-between",marginTop:12,paddingRight:8},dateContainer:{flexDirection:"row",rowGap:20,paddingRight:16},dateIcon:{marginRight:8},viewsContainer:{flexDirection:"row"},eyeIcon:{marginRight:8},dateText:{color:_globalStyles.globalStyles.colors.colorPrimary600},viewsText:{color:_globalStyles.globalStyles.colors.colorPrimary600}});
|
package/package.json
CHANGED
|
@@ -1,34 +1,38 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@wereform/pkgm-shared",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
"react
|
|
22
|
-
"react-native
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"@
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@wereform/pkgm-shared",
|
|
3
|
+
"version": "1.0.4",
|
|
4
|
+
"source": "dist/index.js",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"react-native": "dist/index.js",
|
|
7
|
+
"files": [
|
|
8
|
+
"src",
|
|
9
|
+
"dist",
|
|
10
|
+
"README.md"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "babel src --out-dir dist --extensions .js,.jsx",
|
|
14
|
+
"prepublishOnly": "pnpm run build"
|
|
15
|
+
},
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
18
|
+
},
|
|
19
|
+
"peerDependencies": {
|
|
20
|
+
"@react-native-picker/picker": "^2.11.4",
|
|
21
|
+
"react": "19.1.0",
|
|
22
|
+
"react-native": "^0.81.4"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@expo-google-fonts/inter": "^0.4.2",
|
|
26
|
+
"@expo/vector-icons": "^15.0.3",
|
|
27
|
+
"expo-font": "^14.0.9",
|
|
28
|
+
"react-native-dropdown-select-list": "^2.0.5",
|
|
29
|
+
"react-native-modal-selector": "^2.1.2",
|
|
30
|
+
"react-native-picker-select": "^9.3.1"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@babel/cli": "^7.28.3",
|
|
34
|
+
"@babel/core": "^7.28.5",
|
|
35
|
+
"@babel/preset-env": "^7.28.5",
|
|
36
|
+
"metro-react-native-babel-preset": "^0.77.0"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Text, TouchableOpacity, View } from "react-native";
|
|
2
|
+
import { customizableButtonStyles } from "../../styles/customizableButtonStyles";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* CustomizedButton
|
|
7
|
+
*
|
|
8
|
+
* A reusable, press-aware button component with optional icon support.
|
|
9
|
+
* Handles pressed state styling and basic prop validation.
|
|
10
|
+
*
|
|
11
|
+
* Props:
|
|
12
|
+
* - label: string (button text)
|
|
13
|
+
* - onPress: function (callback when pressed)
|
|
14
|
+
* - onPressStyle: style applied while pressed
|
|
15
|
+
* - textColor, fontSize, fontFamily, fontWeight: text customization
|
|
16
|
+
* - customIcon: optional icon rendered on the right
|
|
17
|
+
* - style: container style overrides
|
|
18
|
+
* - isDisabled: disables interaction
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
export function CustomizedButton({
|
|
22
|
+
label,
|
|
23
|
+
onPress,
|
|
24
|
+
onPressStyle,
|
|
25
|
+
textColor,
|
|
26
|
+
fontSize,
|
|
27
|
+
fontFamily,
|
|
28
|
+
fontWeight,
|
|
29
|
+
customIcon,
|
|
30
|
+
style,
|
|
31
|
+
isDisabled,
|
|
32
|
+
}) {
|
|
33
|
+
if (!label) {
|
|
34
|
+
console.warn("CustomizedButton: 'label' prop is missing.");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const [pressed, setPressed] = useState(false);
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<TouchableOpacity
|
|
41
|
+
onPress={
|
|
42
|
+
onPress ||
|
|
43
|
+
(() => console.warn("CustomizedButton: onPress not provided"))
|
|
44
|
+
}
|
|
45
|
+
onPressIn={() => setPressed(true)}
|
|
46
|
+
onPressOut={() => setPressed(false)}
|
|
47
|
+
style={[
|
|
48
|
+
customizableButtonStyles.buttonContainer,
|
|
49
|
+
style,
|
|
50
|
+
pressed && onPressStyle,
|
|
51
|
+
]}
|
|
52
|
+
activeOpacity={1}
|
|
53
|
+
disabled={isDisabled}
|
|
54
|
+
>
|
|
55
|
+
<View
|
|
56
|
+
style={
|
|
57
|
+
customIcon
|
|
58
|
+
? {
|
|
59
|
+
flexDirection: "row",
|
|
60
|
+
width: "100%",
|
|
61
|
+
justifyContent: "space-between",
|
|
62
|
+
alignItems: "center",
|
|
63
|
+
paddingRight: 12,
|
|
64
|
+
}
|
|
65
|
+
: {}
|
|
66
|
+
}
|
|
67
|
+
>
|
|
68
|
+
<Text
|
|
69
|
+
style={[
|
|
70
|
+
customizableButtonStyles.buttonText,
|
|
71
|
+
{
|
|
72
|
+
color: textColor || "#fff",
|
|
73
|
+
fontSize: fontSize || 16,
|
|
74
|
+
fontFamily: fontFamily,
|
|
75
|
+
fontWeight: fontWeight,
|
|
76
|
+
},
|
|
77
|
+
]}
|
|
78
|
+
>
|
|
79
|
+
{label || "Default Button"}
|
|
80
|
+
</Text>
|
|
81
|
+
<View>{customIcon && customIcon}</View>
|
|
82
|
+
</View>
|
|
83
|
+
</TouchableOpacity>
|
|
84
|
+
);
|
|
85
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Text, View } from "react-native";
|
|
2
|
+
import ModalSelector from "react-native-modal-selector";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { dropDownStyles } from "../../styles/dropDownStyles";
|
|
5
|
+
import { Ionicons } from "@expo/vector-icons";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* DropDown
|
|
9
|
+
*
|
|
10
|
+
* Wrapper around react-native-modal-selector for selecting a value
|
|
11
|
+
* from a list of options.
|
|
12
|
+
*
|
|
13
|
+
* Props:
|
|
14
|
+
* - selectText: default placeholder text
|
|
15
|
+
* - data: array of { key, label } options
|
|
16
|
+
* - styles: container style overrides
|
|
17
|
+
* - iconStyles: caret icon style overrides
|
|
18
|
+
*
|
|
19
|
+
* Internal State:
|
|
20
|
+
* - selected: currently selected option or placeholder
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
export function DropDown({ selectText, data, styles, iconStyles }) {
|
|
24
|
+
const [selected, setSelected] = useState(selectText);
|
|
25
|
+
return (
|
|
26
|
+
<View style={[dropDownStyles.container, styles]}>
|
|
27
|
+
<ModalSelector
|
|
28
|
+
data={data}
|
|
29
|
+
initValue={selectText || "Select Option"}
|
|
30
|
+
onChange={option => {
|
|
31
|
+
console.log("Selected option:", option); // <-- key + label!
|
|
32
|
+
setSelected(option);
|
|
33
|
+
}}
|
|
34
|
+
overlayStyle={dropDownStyles.overlayStyle}
|
|
35
|
+
optionTextStyle={{ color: "#fff", fontWeight: "500" }}
|
|
36
|
+
optionContainerStyle={dropDownStyles.optionContainerStyle}
|
|
37
|
+
cancelTextStyle={{
|
|
38
|
+
color: "#000",
|
|
39
|
+
fontFamily: "Inter",
|
|
40
|
+
fontWeight: "800",
|
|
41
|
+
}}
|
|
42
|
+
cancelStyle={dropDownStyles.cancelContainerStyle}
|
|
43
|
+
>
|
|
44
|
+
<View style={dropDownStyles.dropDownContainer}>
|
|
45
|
+
<Text style={dropDownStyles.dropDownText}>
|
|
46
|
+
{typeof selected === "string"
|
|
47
|
+
? selected // shows default selectText
|
|
48
|
+
: selected?.label || "Select Option"}
|
|
49
|
+
</Text>
|
|
50
|
+
<Ionicons
|
|
51
|
+
name="caret-down"
|
|
52
|
+
size={16}
|
|
53
|
+
color={"white"}
|
|
54
|
+
style={iconStyles}
|
|
55
|
+
/>
|
|
56
|
+
</View>
|
|
57
|
+
</ModalSelector>
|
|
58
|
+
</View>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Image, TouchableOpacity, View } from "react-native";
|
|
2
|
+
import { headerGlobalStyles } from "../../styles/headerGlobalStyles";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* HeaderGlobal
|
|
6
|
+
*
|
|
7
|
+
* App-wide header component with logo and action icons.
|
|
8
|
+
* Icons are injected to keep this component presentation-only.
|
|
9
|
+
*
|
|
10
|
+
* Props:
|
|
11
|
+
* - aiIcon: ReactNode
|
|
12
|
+
* - notificationIcon: ReactNode
|
|
13
|
+
* - searchIcon: ReactNode
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export function HeaderGlobal({ aiIcon, notificationIcon, searchIcon }) {
|
|
17
|
+
return (
|
|
18
|
+
<View style={headerGlobalStyles.container}>
|
|
19
|
+
<Image
|
|
20
|
+
source={{
|
|
21
|
+
uri: "https://begenone-images.s3.us-east-1.amazonaws.com/begenone-white-transparent-logo-beta-min.png",
|
|
22
|
+
}}
|
|
23
|
+
style={headerGlobalStyles.image}
|
|
24
|
+
/>
|
|
25
|
+
<View style={headerGlobalStyles.iconsContainer}>
|
|
26
|
+
<TouchableOpacity style={headerGlobalStyles.icons}>
|
|
27
|
+
{aiIcon}
|
|
28
|
+
</TouchableOpacity>
|
|
29
|
+
<TouchableOpacity style={headerGlobalStyles.icons}>
|
|
30
|
+
{notificationIcon}
|
|
31
|
+
</TouchableOpacity>
|
|
32
|
+
<TouchableOpacity style={headerGlobalStyles.icons}>
|
|
33
|
+
{searchIcon}
|
|
34
|
+
</TouchableOpacity>
|
|
35
|
+
</View>
|
|
36
|
+
</View>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Pressable, TextInput, View } from "react-native";
|
|
2
|
+
import { commentInputStyles } from "../../styles/commentInputStyles";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* InputComment
|
|
6
|
+
*
|
|
7
|
+
* Lightweight comment input field with an optional submit action.
|
|
8
|
+
*
|
|
9
|
+
* Props:
|
|
10
|
+
* - placeholder: input placeholder text
|
|
11
|
+
* - submitIcon: icon/button rendered on the right
|
|
12
|
+
* - props: spread-through TextInput props (onChangeText, value, etc.)
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
export function InputComment({ placeholder, submitIcon, props }) {
|
|
16
|
+
return (
|
|
17
|
+
<View style={commentInputStyles.container}>
|
|
18
|
+
<TextInput
|
|
19
|
+
placeholder={placeholder}
|
|
20
|
+
placeholderTextColor="#999"
|
|
21
|
+
style={[commentInputStyles.input]}
|
|
22
|
+
{...props}
|
|
23
|
+
/>
|
|
24
|
+
<Pressable>{submitIcon}</Pressable>
|
|
25
|
+
</View>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// packages/begenone-pkgm-shared/src/components/inputs/InputField.jsx
|
|
2
|
+
import React, { useState } from "react";
|
|
3
|
+
import {
|
|
4
|
+
View,
|
|
5
|
+
TextInput,
|
|
6
|
+
Text,
|
|
7
|
+
StyleSheet,
|
|
8
|
+
TouchableOpacity,
|
|
9
|
+
} from "react-native";
|
|
10
|
+
import { inputStyles } from "../../styles/inputStyles";
|
|
11
|
+
import {
|
|
12
|
+
useFonts,
|
|
13
|
+
Inter_400Regular,
|
|
14
|
+
Inter_700Bold,
|
|
15
|
+
} from "@expo-google-fonts/inter";
|
|
16
|
+
import { Ionicons } from "@expo/vector-icons";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* InputField
|
|
20
|
+
*
|
|
21
|
+
* Fully featured, reusable input component with:
|
|
22
|
+
* - optional left/right icons
|
|
23
|
+
* - error display
|
|
24
|
+
* - secure text support
|
|
25
|
+
* - multiline handling
|
|
26
|
+
* - Expo font loading (Inter)
|
|
27
|
+
*
|
|
28
|
+
* Props:
|
|
29
|
+
* - placeholder: string
|
|
30
|
+
* - error: validation error message
|
|
31
|
+
* - iconLeft: ReactNode
|
|
32
|
+
* - iconRight: Ionicons name
|
|
33
|
+
* - onIconPress: callback for right icon
|
|
34
|
+
* - iconRightColor: color override
|
|
35
|
+
* - inputStyle, inputWrapper: style overrides
|
|
36
|
+
* - multiline: boolean
|
|
37
|
+
* - onChangeText: input handler
|
|
38
|
+
* - isEditable: toggle input editability
|
|
39
|
+
* - secureTextEntry: password mode
|
|
40
|
+
*
|
|
41
|
+
* Notes:
|
|
42
|
+
* - Font loading is required before render
|
|
43
|
+
* - Multiline inputs adjust vertical alignment automatically
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
export function InputField({
|
|
47
|
+
placeholder,
|
|
48
|
+
error,
|
|
49
|
+
iconLeft,
|
|
50
|
+
iconRight,
|
|
51
|
+
onIconPress,
|
|
52
|
+
iconRightColor,
|
|
53
|
+
inputStyle,
|
|
54
|
+
inputWrapper,
|
|
55
|
+
multiline,
|
|
56
|
+
onChangeText,
|
|
57
|
+
isEditable,
|
|
58
|
+
secureTextEntry,
|
|
59
|
+
Children,
|
|
60
|
+
// onPressFunction,
|
|
61
|
+
...props
|
|
62
|
+
}) {
|
|
63
|
+
const [fontsLoaded] = useFonts({
|
|
64
|
+
Inter_400Regular,
|
|
65
|
+
Inter_700Bold,
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
if (!fontsLoaded) {
|
|
69
|
+
return null; // or <AppLoading />
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// console.log(`Multi Line CHECK`, multiline);
|
|
73
|
+
|
|
74
|
+
const isMultiline = multiline || false;
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<View>
|
|
78
|
+
<View style={[inputStyles.inputWrapper, inputWrapper]}>
|
|
79
|
+
{iconLeft && <View style={inputStyles.icon}>{iconLeft}</View>}
|
|
80
|
+
<TextInput
|
|
81
|
+
editable={isEditable}
|
|
82
|
+
placeholder={placeholder}
|
|
83
|
+
placeholderTextColor="#999"
|
|
84
|
+
multiline={isMultiline}
|
|
85
|
+
style={[
|
|
86
|
+
inputStyles.input,
|
|
87
|
+
inputStyle,
|
|
88
|
+
isMultiline && { textAlignVertical: "top" },
|
|
89
|
+
]}
|
|
90
|
+
onChangeText={onChangeText}
|
|
91
|
+
secureTextEntry={secureTextEntry}
|
|
92
|
+
{...props}
|
|
93
|
+
/>
|
|
94
|
+
{iconRight && (
|
|
95
|
+
<TouchableOpacity
|
|
96
|
+
style={inputStyles.icon}
|
|
97
|
+
onPress={onIconPress}
|
|
98
|
+
disabled={!onIconPress}
|
|
99
|
+
>
|
|
100
|
+
<Ionicons
|
|
101
|
+
name={iconRight}
|
|
102
|
+
size={18}
|
|
103
|
+
color={iconRightColor || "#fff"}
|
|
104
|
+
/>
|
|
105
|
+
</TouchableOpacity>
|
|
106
|
+
)}
|
|
107
|
+
</View>
|
|
108
|
+
{error && <Text style={customErrorStyle}>{error}</Text>}
|
|
109
|
+
</View>
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
// ~2.28.0
|
|
113
|
+
// ~4.16.0
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Image,
|
|
3
|
+
Platform,
|
|
4
|
+
Pressable,
|
|
5
|
+
StyleSheet,
|
|
6
|
+
Text,
|
|
7
|
+
useWindowDimensions,
|
|
8
|
+
View,
|
|
9
|
+
} from "react-native";
|
|
10
|
+
import { MenuChannelMetaStyles } from "../../styles/MenuChannelMetaStyles";
|
|
11
|
+
import { Ionicons } from "@expo/vector-icons";
|
|
12
|
+
import { useEffect } from "react";
|
|
13
|
+
|
|
14
|
+
let calcWidth;
|
|
15
|
+
let calcHeight;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* MenuChannelMeta
|
|
19
|
+
*
|
|
20
|
+
* Displays channel-level metadata for a menu or content view.
|
|
21
|
+
* Includes publish time, channel identity, subscriber count,
|
|
22
|
+
* and a static subscribe button.
|
|
23
|
+
*
|
|
24
|
+
* Props:
|
|
25
|
+
* - timeAgo: string (e.g. "14 Hours Ago")
|
|
26
|
+
* - viewsText: string (currently unused / commented out)
|
|
27
|
+
* - channelLogo: image URL for channel avatar
|
|
28
|
+
* - userName: channel display name
|
|
29
|
+
* - subscribersCount: subscriber total
|
|
30
|
+
* - containerStyles: style overrides for root container
|
|
31
|
+
* - channelContainerStyles: reserved for future layout control
|
|
32
|
+
*
|
|
33
|
+
* Notes:
|
|
34
|
+
* - Provides safe fallbacks for missing data
|
|
35
|
+
* - Subscribe button is visual-only for now
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
export const MenuChannelMeta = ({
|
|
39
|
+
timeAgo,
|
|
40
|
+
viewsText,
|
|
41
|
+
channelLogo,
|
|
42
|
+
userName,
|
|
43
|
+
subscribersCount,
|
|
44
|
+
containerStyles,
|
|
45
|
+
channelContainerStyles,
|
|
46
|
+
}) => {
|
|
47
|
+
return (
|
|
48
|
+
<View style={[MenuChannelMetaStyles.container, containerStyles]}>
|
|
49
|
+
<View style={MenuChannelMetaStyles.dateViewsContainer}>
|
|
50
|
+
<View style={MenuChannelMetaStyles.dateContainer}>
|
|
51
|
+
<View style={MenuChannelMetaStyles.dateIcon}>
|
|
52
|
+
<Ionicons name="calendar" size={16} color="white" />
|
|
53
|
+
</View>
|
|
54
|
+
<Text style={MenuChannelMetaStyles.dateText}>
|
|
55
|
+
{timeAgo || "14 Hours Ago"}
|
|
56
|
+
</Text>
|
|
57
|
+
</View>
|
|
58
|
+
{/* <View style={MenuChannelMetaStyles.viewsContainer}>
|
|
59
|
+
<Text style={MenuChannelMetaStyles.viewsText}>
|
|
60
|
+
{viewsText || "0"}
|
|
61
|
+
</Text>
|
|
62
|
+
<View style={MenuChannelMetaStyles.eyeIcon}>
|
|
63
|
+
<Ionicons name="eye" size={16} color="white" />
|
|
64
|
+
</View>
|
|
65
|
+
</View> */}
|
|
66
|
+
</View>
|
|
67
|
+
<View style={MenuChannelMetaStyles.channelMetaContainer}>
|
|
68
|
+
<View style={MenuChannelMetaStyles.channelMetaContainer_ColumnOne}>
|
|
69
|
+
<Image
|
|
70
|
+
source={{
|
|
71
|
+
uri:
|
|
72
|
+
channelLogo ||
|
|
73
|
+
"https://begenone-images.s3.us-east-1.amazonaws.com/default-user-photo.jpg",
|
|
74
|
+
}}
|
|
75
|
+
style={MenuChannelMetaStyles.userImage}
|
|
76
|
+
/>
|
|
77
|
+
<View style={MenuChannelMetaStyles.nameSubcountContainer}>
|
|
78
|
+
<Text
|
|
79
|
+
style={[MenuChannelMetaStyles.userName, inlineStyles.userName]}
|
|
80
|
+
>
|
|
81
|
+
{userName || "Default Username"}
|
|
82
|
+
</Text>
|
|
83
|
+
<View style={MenuChannelMetaStyles.subCountContainer}>
|
|
84
|
+
<Text style={MenuChannelMetaStyles.subCount}>
|
|
85
|
+
{subscribersCount || "0"}
|
|
86
|
+
</Text>
|
|
87
|
+
<Text style={MenuChannelMetaStyles.subText}>Subscribers</Text>
|
|
88
|
+
</View>
|
|
89
|
+
</View>
|
|
90
|
+
</View>
|
|
91
|
+
<Pressable
|
|
92
|
+
style={[
|
|
93
|
+
MenuChannelMetaStyles.subscribeButtonContainer,
|
|
94
|
+
{ backgroundColor: "#303030" },
|
|
95
|
+
]}
|
|
96
|
+
>
|
|
97
|
+
<Text
|
|
98
|
+
style={[
|
|
99
|
+
MenuChannelMetaStyles.subscribeButtonText,
|
|
100
|
+
{ color: "#7f7f7f" },
|
|
101
|
+
]}
|
|
102
|
+
>
|
|
103
|
+
Subscribe
|
|
104
|
+
</Text>
|
|
105
|
+
</Pressable>
|
|
106
|
+
</View>
|
|
107
|
+
</View>
|
|
108
|
+
);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const inlineStyles = StyleSheet.create({
|
|
112
|
+
userName: {
|
|
113
|
+
width: "",
|
|
114
|
+
},
|
|
115
|
+
});
|