@wereform/pkgm-wire 1.0.3 → 1.0.5

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.
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.WireChannelMetadata=WireChannelMetadata;var _reactNative=require("react-native");var _WireChannelMetadataStyles=require("../styles/WireChannelMetadataStyles");var _vectorIcons=require("@expo/vector-icons");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\mobile\\packages\\begenone-pkgm-wire\\src\\components\\WireChannelMetadata.jsx";function WireChannelMetadata(_ref){var channelLogo=_ref.channelLogo,userName=_ref.userName,subscribersCount=_ref.subscribersCount,timeAgo=_ref.timeAgo,viewsText=_ref.viewsText,containerStyles=_ref.containerStyles;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.channelMetaContainer,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.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:_WireChannelMetadataStyles.WireChannelMetadataStyles.userImage}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.nameSubcountContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.userName,children:userName||"Default Username"}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.subCountContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.subCount,children:subscribersCount||"0"}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.subText,children:"Subscribers"})]})]})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[_WireChannelMetadataStyles.WireChannelMetadataStyles.dateViewsContainer,containerStyles],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.dateContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.dateText,children:timeAgo||"14 Hours Ago"}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.dateIcon,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"calendar",size:16,color:"white"})})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.viewsContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.viewsText,children:viewsText||"0"}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.eyeIcon,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"eye-outline",size:16,color:"white"})})]})]})]});}
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.WireChannelMetadata=WireChannelMetadata;var _reactNative=require("react-native");var _WireChannelMetadataStyles=require("../styles/WireChannelMetadataStyles");var _vectorIcons=require("@expo/vector-icons");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-wire\\src\\components\\WireChannelMetadata.jsx";function WireChannelMetadata(_ref){var channelLogo=_ref.channelLogo,userName=_ref.userName,subscribersCount=_ref.subscribersCount,timeAgo=_ref.timeAgo,viewsText=_ref.viewsText,containerStyles=_ref.containerStyles;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.channelMetaContainer,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.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:_WireChannelMetadataStyles.WireChannelMetadataStyles.userImage}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.nameSubcountContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.userName,children:userName||"Default Username"}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.subCountContainer,children:subscribersCount>0&&(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.subCount,children:subscribersCount||"0"}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.subText,children:"Subscribers"})]})})]})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[_WireChannelMetadataStyles.WireChannelMetadataStyles.dateViewsContainer,containerStyles],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.dateContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.dateText,children:timeAgo||"14 Hours Ago"}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.dateIcon,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"calendar",size:16,color:"white"})})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.viewsContainer,children:viewsText>0&&(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.viewsText,children:viewsText||"0"}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:_WireChannelMetadataStyles.WireChannelMetadataStyles.eyeIcon,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"eye-outline",size:16,color:"white"})})]})})]})]});}
@@ -1,8 +1,8 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.WireCardLayout=WireCardLayout;var _reactNative=require("react-native");var _pkgmShared=require("@wereform/pkgm-shared");var _vectorIcons=require("@expo/vector-icons");var _WireChannelMetadata=require("../components/WireChannelMetadata");var _WireCardLayoutStyles=require("../styles/WireCardLayoutStyles");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\mobile\\packages\\begenone-pkgm-wire\\src\\layout\\WireCardLayout.jsx";function WireCardLayout(_ref){var _this=this;var content=_ref.content,channelLogo=_ref.channelLogo,userName=_ref.userName,subscribersCount=_ref.subscribersCount,timeAgo=_ref.timeAgo,viewsText=_ref.viewsText,onPress=_ref.onPress;var limit=8;var contentText=content!=null?content:`Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero quidem
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.WireCardLayout=WireCardLayout;var _reactNative=require("react-native");var _pkgmShared=require("@wereform/pkgm-shared");var _vectorIcons=require("@expo/vector-icons");var _WireChannelMetadata=require("../components/WireChannelMetadata");var _WireCardLayoutStyles=require("../styles/WireCardLayoutStyles");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-wire\\src\\layout\\WireCardLayout.jsx";function WireCardLayout(_ref){var _this=this;var content=_ref.content,channelLogo=_ref.channelLogo,userName=_ref.userName,subscribersCount=_ref.subscribersCount,timeAgo=_ref.timeAgo,viewsText=_ref.viewsText,onPress=_ref.onPress;var limit=8;var contentText=content!=null?content:`Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero quidem
2
2
  distinctio porro qui minus totam eius. Sed laudantium nisi expedita
3
3
  distinctio dignissimos dicta praesentium nihil iste velit cumque!
4
4
  Assumenda illum veritatis, ipsam sint
5
5
 
6
6
  vero corporis distinctio rem
7
7
  quisquam natus iste. Unde esse consequuntur maiores repellendus, cum
8
- voluptatem vero incidunt temporibus.`;var finalText=contentText?contentText.replace(/\r\n/g,"\n").split("\n"):[];return(0,_jsxRuntime.jsxs)(_reactNative.TouchableOpacity,{style:_WireCardLayoutStyles.WireCardLayoutStyles.container,onPress:onPress,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_WireChannelMetadata.WireChannelMetadata,{channelLogo:channelLogo||"https://begenone-images.s3.us-east-1.amazonaws.com/default-user-photo.jpg",userName:userName,subscribersCount:subscribersCount,timeAgo:timeAgo,viewsText:viewsText}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireCardLayoutStyles.WireCardLayoutStyles.mainTextContainer,children:[finalText.length>0&&(0,_jsxRuntime.jsx)(_reactNative.Text,{numberOfLines:limit,style:_WireCardLayoutStyles.WireCardLayoutStyles.mainText,children:finalText.map(function(text,index){return(0,_jsxRuntime.jsxs)(_reactNative.Text,{children:[text.trim().replace(/\s+/g," "),index<finalText.length-1?"\n":""]},index);})}),(0,_jsxRuntime.jsx)(_reactNative.Text,{children:" "}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireCardLayoutStyles.WireCardLayoutStyles.seeMore,children:"See more \u2192"})]})]}),(0,_jsxRuntime.jsx)(_pkgmShared.MenuInteraction,{containerStyles:{marginBottom:12}})]});}
8
+ voluptatem vero incidunt temporibus.`;var finalText=contentText?contentText.replace(/\r\n/g,"\n").split("\n"):[];return(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{style:_WireCardLayoutStyles.WireCardLayoutStyles.container,onPress:onPress,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_WireChannelMetadata.WireChannelMetadata,{channelLogo:channelLogo||"https://begenone-images.s3.us-east-1.amazonaws.com/default-user-photo.jpg",userName:userName,subscribersCount:subscribersCount,timeAgo:timeAgo,viewsText:viewsText}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireCardLayoutStyles.WireCardLayoutStyles.mainTextContainer,children:[finalText.length>0&&(0,_jsxRuntime.jsx)(_reactNative.Text,{numberOfLines:limit,style:_WireCardLayoutStyles.WireCardLayoutStyles.mainText,children:finalText.map(function(text,index){return(0,_jsxRuntime.jsxs)(_reactNative.Text,{children:[text.trim().replace(/\s+/g," "),index<finalText.length-1?"\n":""]},index);})}),(0,_jsxRuntime.jsx)(_reactNative.Text,{children:" "}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireCardLayoutStyles.WireCardLayoutStyles.seeMore,children:"See more \u2192"})]})]})});}
@@ -1 +1 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.WireUploadLayout=WireUploadLayout;var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _react=require("react");var _reactNative=require("react-native");var ImagePicker=_interopRequireWildcard(require("expo-image-picker"));var VideoThumbnails=_interopRequireWildcard(require("expo-video-thumbnails"));var _vectorIcons=require("@expo/vector-icons");var _WireUploadStyles=require("../styles/WireUploadStyles");var _pkgmShared=require("@wereform/pkgm-shared");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\mobile\\packages\\begenone-pkgm-wire\\src\\layout\\WireUploadLayout.jsx";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 WireUploadLayout(_ref){var _this=this;var profilePic=_ref.profilePic,userName=_ref.userName,onPressVideoUploadScreen=_ref.onPressVideoUploadScreen,onPressWireUpload=_ref.onPressWireUpload;var _useState=(0,_react.useState)(``),_useState2=(0,_slicedToArray2.default)(_useState,2),wireText=_useState2[0],setWireText=_useState2[1];var _useState3=(0,_react.useState)(null),_useState4=(0,_slicedToArray2.default)(_useState3,2),media=_useState4[0],setMedia=_useState4[1];var _useState5=(0,_react.useState)([]),_useState6=(0,_slicedToArray2.default)(_useState5,2),thumbnails=_useState6[0],setThumbnails=_useState6[1];var _useState7=(0,_react.useState)("Default Heading!"),_useState8=(0,_slicedToArray2.default)(_useState7,2),heading=_useState8[0],setHeading=_useState8[1];var pickMedia=function(){var _ref2=(0,_asyncToGenerator2.default)(function*(){var result=yield ImagePicker.launchImageLibraryAsync({mediaTypes:["images","videos"],allowsMultipleSelection:true,selectionLimit:4,quality:1});if(result.canceled)return;var assets=result.assets;setMedia(assets);var finalThumbs=yield Promise.all(assets.map(function(){var _ref3=(0,_asyncToGenerator2.default)(function*(asset){var _asset$mimeType;var isVideo=asset.type==="video"||((_asset$mimeType=asset.mimeType)==null?void 0:_asset$mimeType.startsWith("video"));if(isVideo){try{var _yield$VideoThumbnail=yield VideoThumbnails.getThumbnailAsync(asset.uri,{time:1000}),uri=_yield$VideoThumbnail.uri;return uri;}catch(err){console.log("Video thumbnail error:",err);return null;}}return asset.uri;});return function(_x){return _ref3.apply(this,arguments);};}()));console.log(finalThumbs);setThumbnails(finalThumbs);});return function pickMedia(){return _ref2.apply(this,arguments);};}();console.log(wireText);return(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.container,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.profileSection,children:[(0,_jsxRuntime.jsx)(_reactNative.Image,{source:{uri:profilePic||"https://begenone-images.s3.us-east-1.amazonaws.com/default-user-photo.jpg"},style:_WireUploadStyles.WireUploadStyles.userImage}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.userInfo,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireUploadStyles.WireUploadStyles.userName,children:userName||"Default Username"})})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.wireInputContainer,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flexDirection:"row",justifyContent:"space-between",alignItems:"center"},children:[(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:{color:"#fff",fontWeight:"900",fontSize:24,paddingBottom:12,flexGrow:1,justifyContent:"flex-start"},children:["Create ",(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:"#ff6000"},children:"Wire"})]}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:onPressVideoUploadScreen,children:(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:{color:"#fff",fontWeight:"500",fontSize:14,paddingBottom:12,alignSelf:"center"},children:["Upload ",(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:"#ff6000"},children:"Video"})]})})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.wireInputTextContainer,children:[(0,_jsxRuntime.jsx)(_pkgmShared.InputField,{multiline:true,placeholder:"Write your Wire...",inputWrapper:_WireUploadStyles.WireUploadStyles.inputWrapper,inputStyle:_WireUploadStyles.WireUploadStyles.aboutTextArea,value:wireText,onChangeText:setWireText}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.mediaContainer,children:thumbnails.map(function(uri,index){return(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:pickMedia,children:(0,_jsxRuntime.jsx)(_reactNative.Image,{source:{uri:uri},style:_WireUploadStyles.WireUploadStyles.mediaThumb,resizeMode:"cover"})},index);})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.uploadButtonContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{style:_WireUploadStyles.WireUploadStyles.AIGenerateButton,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"sparkles-outline",size:24,color:"#fff"})}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:pickMedia,style:_WireUploadStyles.WireUploadStyles.uploadImageButton,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"image",size:24,color:"#fff"})})]})]}),(0,_jsxRuntime.jsx)(_pkgmShared.DropDown,{styles:{marginLeft:0,marginRight:0,marginTop:18},iconStyles:{paddingRight:16},selectText:"Select Age Group",data:[{key:1,label:"Under 14 of age"},{key:2,label:"Above 14 of age"}]}),(0,_jsxRuntime.jsx)(_pkgmShared.DropDown,{styles:{marginLeft:0,marginRight:0,marginTop:18},selectText:"Comments",iconStyles:{paddingRight:16},data:[{key:1,label:"Turn — ON"},{key:2,label:"Turn — OFF"}]})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:{flexDirection:"row",width:"auto",justifyContent:"space-between",marginTop:60,marginLeft:24,marginRight:24},children:(0,_jsxRuntime.jsx)(_pkgmShared.CustomizedButton,{label:"Post Wire",style:{backgroundColor:"#ff6000",marginRight:6},fontWeight:"900",textColor:"#fff",onPress:function onPress(){return onPressWireUpload(wireText,heading);}})})]})});}var styles=_reactNative.StyleSheet.create({});
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.WireUploadLayout=WireUploadLayout;var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _react=require("react");var _reactNative=require("react-native");var ImagePicker=_interopRequireWildcard(require("expo-image-picker"));var VideoThumbnails=_interopRequireWildcard(require("expo-video-thumbnails"));var _vectorIcons=require("@expo/vector-icons");var _WireUploadStyles=require("../styles/WireUploadStyles");var _pkgmShared=require("@wereform/pkgm-shared");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-wire\\src\\layout\\WireUploadLayout.jsx";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 WireUploadLayout(_ref){var _this=this;var profilePic=_ref.profilePic,userName=_ref.userName,onPressVideoUploadScreen=_ref.onPressVideoUploadScreen,onPressWireUpload=_ref.onPressWireUpload,_ref$showUploadContai=_ref.showUploadContainers,showUploadContainers=_ref$showUploadContai===void 0?false:_ref$showUploadContai,_ref$showDropDowns=_ref.showDropDowns,showDropDowns=_ref$showDropDowns===void 0?false:_ref$showDropDowns;var _useState=(0,_react.useState)(``),_useState2=(0,_slicedToArray2.default)(_useState,2),wireText=_useState2[0],setWireText=_useState2[1];var _useState3=(0,_react.useState)(null),_useState4=(0,_slicedToArray2.default)(_useState3,2),media=_useState4[0],setMedia=_useState4[1];var _useState5=(0,_react.useState)([]),_useState6=(0,_slicedToArray2.default)(_useState5,2),thumbnails=_useState6[0],setThumbnails=_useState6[1];var _useState7=(0,_react.useState)("Default Heading!"),_useState8=(0,_slicedToArray2.default)(_useState7,2),heading=_useState8[0],setHeading=_useState8[1];var pickMedia=function(){var _ref2=(0,_asyncToGenerator2.default)(function*(){var result=yield ImagePicker.launchImageLibraryAsync({mediaTypes:["images","videos"],allowsMultipleSelection:true,selectionLimit:4,quality:1});if(result.canceled)return;var assets=result.assets;setMedia(assets);var finalThumbs=yield Promise.all(assets.map(function(){var _ref3=(0,_asyncToGenerator2.default)(function*(asset){var _asset$mimeType;var isVideo=asset.type==="video"||((_asset$mimeType=asset.mimeType)==null?void 0:_asset$mimeType.startsWith("video"));if(isVideo){try{var _yield$VideoThumbnail=yield VideoThumbnails.getThumbnailAsync(asset.uri,{time:1000}),uri=_yield$VideoThumbnail.uri;return uri;}catch(err){console.log("Video thumbnail error:",err);return null;}}return asset.uri;});return function(_x){return _ref3.apply(this,arguments);};}()));console.log(finalThumbs);setThumbnails(finalThumbs);});return function pickMedia(){return _ref2.apply(this,arguments);};}();console.log(wireText);return(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.container,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.profileSection,children:[(0,_jsxRuntime.jsx)(_reactNative.Image,{source:{uri:profilePic||"https://begenone-images.s3.us-east-1.amazonaws.com/default-user-photo.jpg"},style:_WireUploadStyles.WireUploadStyles.userImage}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.userInfo,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WireUploadStyles.WireUploadStyles.userName,children:userName||"Default Username"})})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.wireInputContainer,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flexDirection:"row",justifyContent:"space-between",alignItems:"center"},children:[(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:{color:"#fff",fontWeight:"900",fontSize:24,paddingBottom:12,flexGrow:1,justifyContent:"flex-start"},children:["Create ",(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:"#ff6000"},children:"Wire"})]}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:onPressVideoUploadScreen,children:(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:{color:"#fff",fontWeight:"500",fontSize:14,paddingBottom:12,alignSelf:"center"},children:["Upload ",(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:"#ff6000"},children:"Video"})]})})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.wireInputTextContainer,children:[(0,_jsxRuntime.jsx)(_pkgmShared.InputField,{multiline:true,placeholder:"Write your Wire...",inputWrapper:_WireUploadStyles.WireUploadStyles.inputWrapper,inputStyle:_WireUploadStyles.WireUploadStyles.aboutTextArea,value:wireText,onChangeText:setWireText}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.mediaContainer,children:thumbnails.map(function(uri,index){return(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:pickMedia,children:(0,_jsxRuntime.jsx)(_reactNative.Image,{source:{uri:uri},style:_WireUploadStyles.WireUploadStyles.mediaThumb,resizeMode:"cover"})},index);})}),showUploadContainers&&(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WireUploadStyles.WireUploadStyles.uploadButtonContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{style:_WireUploadStyles.WireUploadStyles.AIGenerateButton,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"sparkles-outline",size:24,color:"#fff"})}),(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,{onPress:pickMedia,style:_WireUploadStyles.WireUploadStyles.uploadImageButton,children:(0,_jsxRuntime.jsx)(_vectorIcons.Ionicons,{name:"image",size:24,color:"#fff"})})]})]}),showDropDowns&&(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_pkgmShared.DropDown,{styles:{marginLeft:0,marginRight:0,marginTop:18},iconStyles:{paddingRight:16},selectText:"Select Age Group",data:[{key:1,label:"Under 14 of age"},{key:2,label:"Above 14 of age"}]}),(0,_jsxRuntime.jsx)(_pkgmShared.DropDown,{styles:{marginLeft:0,marginRight:0,marginTop:18},selectText:"Comments",iconStyles:{paddingRight:16},data:[{key:1,label:"Turn — ON"},{key:2,label:"Turn — OFF"}]})]})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:{flexDirection:"row",width:"auto",justifyContent:"space-between",marginTop:60,marginLeft:24,marginRight:24},children:(0,_jsxRuntime.jsx)(_pkgmShared.CustomizedButton,{label:"Post Wire",style:{backgroundColor:"#ff6000",marginRight:6},fontWeight:"900",textColor:"#fff",onPress:function onPress(){return onPressWireUpload(wireText,heading);}})})]})});}var styles=_reactNative.StyleSheet.create({});
@@ -1,4 +1,4 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.WireViewLayout=WireViewLayout;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _reactNative=require("react-native");var _WireChannelMetadata=require("../components/WireChannelMetadata");var _WireCardLayoutStyles=require("../styles/WireCardLayoutStyles");var _pkgmShared=require("@wereform/pkgm-shared");var _WireViewLayoutStyles=require("../styles/WireViewLayoutStyles");var _react=require("react");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\mobile\\packages\\begenone-pkgm-wire\\src\\layout\\WireViewLayout.jsx";function WireViewLayout(_ref){var _this=this;var content=_ref.content,channelLogo=_ref.channelLogo,userName=_ref.userName,subscribersCount=_ref.subscribersCount,timeAgo=_ref.timeAgo,viewsText=_ref.viewsText,isItMe=_ref.isItMe,onPressDeleteButton=_ref.onPressDeleteButton;var _useState=(0,_react.useState)(false),_useState2=(0,_slicedToArray2.default)(_useState,2),isPressed=_useState2[0],setPressed=_useState2[1];var contentText=content!=null?content:`Curiosity is the real engine of progress. You don’t need certainty — you need movement. Every experiment, every failure, every weird idea you chase sharpens your understanding of reality.
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.WireViewLayout=WireViewLayout;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _reactNative=require("react-native");var _WireChannelMetadata=require("../components/WireChannelMetadata");var _WireCardLayoutStyles=require("../styles/WireCardLayoutStyles");var _pkgmShared=require("@wereform/pkgm-shared");var _WireViewLayoutStyles=require("../styles/WireViewLayoutStyles");var _react=require("react");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="F:\\WeReform Corporation\\Products\\BEGENONE\\App\\Mobile\\packages\\begenone-pkgm-wire\\src\\layout\\WireViewLayout.jsx";function WireViewLayout(_ref){var _this=this;var content=_ref.content,channelLogo=_ref.channelLogo,userName=_ref.userName,subscribersCount=_ref.subscribersCount,timeAgo=_ref.timeAgo,viewsText=_ref.viewsText,isItMe=_ref.isItMe,onPressDeleteButton=_ref.onPressDeleteButton;var _useState=(0,_react.useState)(false),_useState2=(0,_slicedToArray2.default)(_useState,2),isPressed=_useState2[0],setPressed=_useState2[1];var contentText=content!=null?content:`Curiosity is the real engine of progress. You don’t need certainty — you need movement. Every experiment, every failure, every weird idea you chase sharpens your understanding of reality.
2
2
 
3
3
  Stop waiting to “figure it out” first. Dive in, break things, rebuild smarter. The mind grows through friction, not comfort.
4
4
 
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.WireUploadStyles=void 0;var _reactNative=require("react-native");var _globalStyles=require("./globalStyles");var WireUploadStyles=exports.WireUploadStyles=_reactNative.StyleSheet.create({container:{flex:1,backgroundColor:"#141414",marginBottom:120},profileSection:{flexDirection:"row",alignItems:"center",borderBottomWidth:1,paddingTop:18,paddingBottom:18,marginLeft:36,marginRight:36,borderColor:_globalStyles.globalStyles.colors.colorPrimary450},userImage:{width:60,height:60,borderRadius:12,marginRight:16},userInfo:{flexDirection:"column",justifyContent:"center"},userName:{color:"white",fontSize:18,fontWeight:"600"},channelSettingsText:{color:"#ff6600",marginTop:4},wireInputContainer:{marginRight:24,marginLeft:24,marginTop:24},wireInputTextContainer:{backgroundColor:"#202020",borderRadius:12},inputWrapper:{backgroundColor:"#202020",width:"auto",borderBottomRightRadius:0,borderBottomLeftRadius:0},aboutTextArea:{textAlignVertical:"top",whiteSpace:"pre",height:"auto",minHeight:200,color:"white",paddingTop:16,marginTop:0,lineHeight:24,fontWeight:400,fontSize:18,paddingBottom:36},media:{width:"auto",height:200,borderRadius:14,backgroundColor:"#000"},uploadButtonContainer:{flexDirection:"row",alignItems:"center",justifyContent:"flex-end"},AIGenerateButton:{paddingRight:24},uploadImageButton:{paddingRight:24,paddingVertical:24,borderRadius:12},uploadButtonText:{color:"#fff",fontSize:14,fontWeight:"600",marginLeft:8},mediaContainer:{flexDirection:"row",flexWrap:"wrap",gap:10,width:"auto",marginBottom:16,paddingLeft:6,paddingRight:6,justifyContent:"space-evenly"},mediaThumb:{width:120,height:120,borderRadius:12,backgroundColor:"#000"}});
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.WireUploadStyles=void 0;var _reactNative=require("react-native");var _globalStyles=require("./globalStyles");var WireUploadStyles=exports.WireUploadStyles=_reactNative.StyleSheet.create({container:{flex:1,backgroundColor:"#141414",marginBottom:120},profileSection:{flexDirection:"row",alignItems:"center",borderBottomWidth:1,paddingTop:18,paddingBottom:18,marginLeft:36,marginRight:36,borderColor:_globalStyles.globalStyles.colors.colorPrimary450},userImage:{width:60,height:60,borderRadius:12,marginRight:16},userInfo:{flexDirection:"column",justifyContent:"center"},userName:{color:"white",fontSize:18,fontWeight:"600"},channelSettingsText:{color:"#ff6600",marginTop:4},wireInputContainer:{marginRight:24,marginLeft:24,marginTop:24},wireInputTextContainer:{backgroundColor:"#202020",borderRadius:12},inputWrapper:{backgroundColor:"#202020",width:"auto",borderBottomRightRadius:0,borderBottomLeftRadius:0},aboutTextArea:{textAlignVertical:"top",whiteSpace:"pre",height:"auto",minHeight:200,color:"white",paddingTop:16,lineHeight:24,fontWeight:400,fontSize:18,paddingBottom:36},media:{width:"auto",height:200,borderRadius:14,backgroundColor:"#000"},uploadButtonContainer:{flexDirection:"row",alignItems:"center",justifyContent:"flex-end"},AIGenerateButton:{paddingRight:24},uploadImageButton:{paddingRight:24,paddingVertical:24,borderRadius:12},uploadButtonText:{color:"#fff",fontSize:14,fontWeight:"600",marginLeft:8},mediaContainer:{flexDirection:"row",flexWrap:"wrap",gap:10,width:"auto",marginBottom:16,paddingLeft:6,paddingRight:6,justifyContent:"space-evenly"},mediaThumb:{width:120,height:120,borderRadius:12,backgroundColor:"#000"}});
package/package.json CHANGED
@@ -1,37 +1,38 @@
1
- {
2
- "name": "@wereform/pkgm-wire",
3
- "version": "1.0.3",
4
- "source": "src/index.js",
5
- "main": "dist/index.js",
6
- "react-native": "src/index.js",
7
- "files": [
8
- "dist",
9
- "src",
10
- "README.md"
11
- ],
12
- "publishConfig": {
13
- "access": "public"
14
- },
15
- "peerDependencies": {
16
- "@expo/vector-icons": "*",
17
- "react": "*",
18
- "react-native": "*"
19
- },
20
- "dependencies": {
21
- "@wereform/pkgm-channel": "^1.0.3",
22
- "@wereform/pkgm-settings": "^1.0.2",
23
- "@wereform/pkgm-shared": "^1.0.2",
24
- "@wereform/pkgm-video": "^1.0.2",
25
- "expo-image-picker": "^17.0.8",
26
- "expo-video-thumbnails": "^10.0.7"
27
- },
28
- "devDependencies": {
29
- "@babel/cli": "^7.28.3",
30
- "@babel/core": "^7.28.5",
31
- "@babel/preset-env": "^7.28.5",
32
- "metro-react-native-babel-preset": "^0.77.0"
33
- },
34
- "scripts": {
35
- "build": "babel src --out-dir dist --extensions .js,.jsx"
36
- }
37
- }
1
+ {
2
+ "name": "@wereform/pkgm-wire",
3
+ "version": "1.0.5",
4
+ "source": "dist/index.js",
5
+ "main": "dist/index.js",
6
+ "react-native": "dist/index.js",
7
+ "files": [
8
+ "dist",
9
+ "src",
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
+ "@expo/vector-icons": "*",
21
+ "react": "*",
22
+ "react-native": "*"
23
+ },
24
+ "dependencies": {
25
+ "@wereform/pkgm-channel": "^1.0.5",
26
+ "@wereform/pkgm-settings": "^1.0.6",
27
+ "@wereform/pkgm-shared": "^1.0.4",
28
+ "@wereform/pkgm-video": "^1.0.4",
29
+ "expo-image-picker": "^17.0.8",
30
+ "expo-video-thumbnails": "^10.0.7"
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
+ }
@@ -2,6 +2,42 @@ import { Image, Pressable, Text, View } from "react-native";
2
2
  import { WireChannelMetadataStyles } from "../styles/WireChannelMetadataStyles";
3
3
  import { Ionicons } from "@expo/vector-icons";
4
4
 
5
+ /**
6
+ * WireChannelMetadata
7
+ *
8
+ * Displays channel-level metadata for a Wire post.
9
+ * Designed for compact, inline presentation under wire content.
10
+ *
11
+ * Props:
12
+ * - channelLogo: string (URL)
13
+ * URL of the channel or user profile image.
14
+ * Falls back to a default placeholder image if not provided.
15
+ *
16
+ * - userName: string
17
+ * Display name of the channel or user.
18
+ *
19
+ * - subscribersCount: string | number
20
+ * Total number of subscribers for the channel.
21
+ *
22
+ * - timeAgo: string
23
+ * Human-readable timestamp (e.g. "14 Hours Ago").
24
+ *
25
+ * - viewsText: string | number
26
+ * View count displayed alongside the eye icon.
27
+ *
28
+ * - containerStyles: object (optional)
29
+ * Style overrides for the date/views container.
30
+ *
31
+ * Behavior:
32
+ * - Renders channel identity (logo, name, subscriber count)
33
+ * - Displays publish time and views with icons
34
+ * - Uses sensible defaults when props are missing
35
+ *
36
+ * Usage:
37
+ * - Intended for Wire feeds, post headers, or lightweight metadata rows
38
+ * - Optimized for mobile layouts
39
+ */
40
+
5
41
  export function WireChannelMetadata({
6
42
  channelLogo,
7
43
  userName,
@@ -26,10 +62,16 @@ export function WireChannelMetadata({
26
62
  {userName || "Default Username"}
27
63
  </Text>
28
64
  <View style={WireChannelMetadataStyles.subCountContainer}>
29
- <Text style={WireChannelMetadataStyles.subCount}>
30
- {subscribersCount || "0"}
31
- </Text>
32
- <Text style={WireChannelMetadataStyles.subText}>Subscribers</Text>
65
+ {subscribersCount > 0 && (
66
+ <>
67
+ <Text style={WireChannelMetadataStyles.subCount}>
68
+ {subscribersCount || "0"}
69
+ </Text>
70
+ <Text style={WireChannelMetadataStyles.subText}>
71
+ Subscribers
72
+ </Text>
73
+ </>
74
+ )}
33
75
  </View>
34
76
  </View>
35
77
  </View>
@@ -45,12 +87,16 @@ export function WireChannelMetadata({
45
87
  </View>
46
88
  </View>
47
89
  <View style={WireChannelMetadataStyles.viewsContainer}>
48
- <Text style={WireChannelMetadataStyles.viewsText}>
49
- {viewsText || "0"}
50
- </Text>
51
- <View style={WireChannelMetadataStyles.eyeIcon}>
52
- <Ionicons name="eye-outline" size={16} color="white" />
53
- </View>
90
+ {viewsText > 0 && (
91
+ <>
92
+ <Text style={WireChannelMetadataStyles.viewsText}>
93
+ {viewsText || "0"}
94
+ </Text>
95
+ <View style={WireChannelMetadataStyles.eyeIcon}>
96
+ <Ionicons name="eye-outline" size={16} color="white" />
97
+ </View>
98
+ </>
99
+ )}
54
100
  </View>
55
101
  </View>
56
102
  </View>
@@ -4,6 +4,45 @@ import { Ionicons } from "@expo/vector-icons";
4
4
  import { WireChannelMetadata } from "../components/WireChannelMetadata";
5
5
  import { WireCardLayoutStyles } from "../styles/WireCardLayoutStyles";
6
6
 
7
+ /**
8
+ * WireCardLayout
9
+ *
10
+ * Compact, tappable preview card for rendering a Wire in feeds or lists.
11
+ *
12
+ * Responsibilities:
13
+ * - Displays channel metadata (via WireChannelMetadata)
14
+ * - Renders multi-line wire content with a soft line limit
15
+ * - Provides interaction actions via MenuInteraction
16
+ * - Acts as a navigation trigger when pressed
17
+ *
18
+ * Props:
19
+ * - content: string
20
+ * Full wire text content.
21
+ *
22
+ * - channelLogo: string (URL)
23
+ * Channel or user avatar image.
24
+ *
25
+ * - userName: string
26
+ * Channel or author display name.
27
+ *
28
+ * - subscribersCount: string | number
29
+ * Subscriber count shown in metadata.
30
+ *
31
+ * - timeAgo: string
32
+ * Relative publish time (e.g. "2h ago").
33
+ *
34
+ * - viewsText: string | number
35
+ * View count for the wire.
36
+ *
37
+ * - onPress: function
38
+ * Triggered when the card is tapped.
39
+ *
40
+ * Behavior:
41
+ * - Normalizes line breaks and whitespace
42
+ * - Limits visible lines for feed readability
43
+ * - Shows "See more" affordance for full view
44
+ */
45
+
7
46
  export function WireCardLayout({
8
47
  content,
9
48
  channelLogo,
@@ -60,7 +99,7 @@ export function WireCardLayout({
60
99
  <Text style={WireCardLayoutStyles.seeMore}>See more →</Text>
61
100
  </View>
62
101
  </View>
63
- <MenuInteraction containerStyles={{ marginBottom: 12 }} />
102
+ {/* <MenuInteraction containerStyles={{ marginBottom: 12 }} /> */}
64
103
  </TouchableOpacity>
65
104
  );
66
105
  }
@@ -15,11 +15,54 @@ import { Ionicons } from "@expo/vector-icons";
15
15
  import { WireUploadStyles } from "../styles/WireUploadStyles";
16
16
  import { CustomizedButton, DropDown, InputField } from "@wereform/pkgm-shared";
17
17
 
18
+ /**
19
+ * WireUploadLayout
20
+ *
21
+ * Full wire composer layout with optional media, AI hooks, and settings.
22
+ *
23
+ * Responsibilities:
24
+ * - Wire text composition
25
+ * - Image/video selection with thumbnail previews
26
+ * - Optional dropdowns for moderation & audience controls
27
+ * - Entry point to video upload flow
28
+ *
29
+ * Props:
30
+ * - profilePic: string (URL)
31
+ * Current user profile image.
32
+ *
33
+ * - userName: string
34
+ * Display name of the posting user.
35
+ *
36
+ * - onPressVideoUploadScreen: function
37
+ * Navigates to video upload flow.
38
+ *
39
+ * - onPressWireUpload: function
40
+ * Called with (wireText, heading) when posting.
41
+ *
42
+ * - showUploadContainers: boolean
43
+ * Toggles AI/media action buttons.
44
+ *
45
+ * - showDropDowns: boolean
46
+ * Toggles age-group and comment settings dropdowns.
47
+ *
48
+ * Internal State:
49
+ * - wireText: string
50
+ * - media: selected assets
51
+ * - thumbnails: preview URIs for selected media
52
+ *
53
+ * Behavior:
54
+ * - Supports mixed image/video selection
55
+ * - Auto-generates video thumbnails
56
+ * - Keeps UI vertically structured for mobile ergonomics
57
+ */
58
+
18
59
  export function WireUploadLayout({
19
60
  profilePic,
20
61
  userName,
21
62
  onPressVideoUploadScreen,
22
63
  onPressWireUpload,
64
+ showUploadContainers = false,
65
+ showDropDowns = false,
23
66
  }) {
24
67
  const [wireText, setWireText] = useState(``);
25
68
  const [media, setMedia] = useState(null); // image/video URI
@@ -160,43 +203,49 @@ export function WireUploadLayout({
160
203
  </View>
161
204
 
162
205
  {/* 3 — Upload Button */}
163
- <View style={WireUploadStyles.uploadButtonContainer}>
164
- <TouchableOpacity style={WireUploadStyles.AIGenerateButton}>
165
- <Ionicons name="sparkles-outline" size={24} color="#fff" />
166
- </TouchableOpacity>
167
- <TouchableOpacity
168
- onPress={pickMedia}
169
- style={WireUploadStyles.uploadImageButton}
170
- >
171
- <Ionicons name="image" size={24} color="#fff" />
172
- </TouchableOpacity>
173
- </View>
206
+ {showUploadContainers && (
207
+ <View style={WireUploadStyles.uploadButtonContainer}>
208
+ <TouchableOpacity style={WireUploadStyles.AIGenerateButton}>
209
+ <Ionicons name="sparkles-outline" size={24} color="#fff" />
210
+ </TouchableOpacity>
211
+ <TouchableOpacity
212
+ onPress={pickMedia}
213
+ style={WireUploadStyles.uploadImageButton}
214
+ >
215
+ <Ionicons name="image" size={24} color="#fff" />
216
+ </TouchableOpacity>
217
+ </View>
218
+ )}
174
219
  </View>
175
220
 
176
- <DropDown
177
- styles={{
178
- marginLeft: 0,
179
- marginRight: 0,
180
- marginTop: 18,
181
- // paddingRight: 24,
182
- }}
183
- iconStyles={{ paddingRight: 16 }}
184
- selectText={"Select Age Group"}
185
- data={[
186
- { key: 1, label: "Under 14 of age" },
187
- { key: 2, label: "Above 14 of age" },
188
- ]}
189
- />
221
+ {showDropDowns && (
222
+ <>
223
+ <DropDown
224
+ styles={{
225
+ marginLeft: 0,
226
+ marginRight: 0,
227
+ marginTop: 18,
228
+ // paddingRight: 24,
229
+ }}
230
+ iconStyles={{ paddingRight: 16 }}
231
+ selectText={"Select Age Group"}
232
+ data={[
233
+ { key: 1, label: "Under 14 of age" },
234
+ { key: 2, label: "Above 14 of age" },
235
+ ]}
236
+ />
190
237
 
191
- <DropDown
192
- styles={{ marginLeft: 0, marginRight: 0, marginTop: 18 }}
193
- selectText={"Comments"}
194
- iconStyles={{ paddingRight: 16 }}
195
- data={[
196
- { key: 1, label: "Turn — ON" },
197
- { key: 2, label: "Turn — OFF" },
198
- ]}
199
- />
238
+ <DropDown
239
+ styles={{ marginLeft: 0, marginRight: 0, marginTop: 18 }}
240
+ selectText={"Comments"}
241
+ iconStyles={{ paddingRight: 16 }}
242
+ data={[
243
+ { key: 1, label: "Turn — ON" },
244
+ { key: 2, label: "Turn — OFF" },
245
+ ]}
246
+ />
247
+ </>
248
+ )}
200
249
  </View>
201
250
 
202
251
  <View
@@ -9,6 +9,38 @@ import {
9
9
  import { WireViewLayoutStyles } from "../styles/WireViewLayoutStyles";
10
10
  import { useState } from "react";
11
11
 
12
+ /**
13
+ * WireViewLayout
14
+ *
15
+ * Full-screen wire reader view.
16
+ *
17
+ * Responsibilities:
18
+ * - Displays complete wire content
19
+ * - Shows channel metadata and engagement actions
20
+ * - Conditionally exposes destructive actions for owner
21
+ *
22
+ * Props:
23
+ * - content: string
24
+ * Full wire text.
25
+ *
26
+ * - channelLogo: string (URL)
27
+ * - userName: string
28
+ * - subscribersCount: string | number
29
+ * - timeAgo: string
30
+ * - viewsText: string | number
31
+ *
32
+ * - isItMe: boolean
33
+ * Indicates ownership of the wire.
34
+ *
35
+ * - onPressDeleteButton: function
36
+ * Triggered when delete is confirmed.
37
+ *
38
+ * Behavior:
39
+ * - Preserves original paragraph formatting
40
+ * - Uses MenuInteraction for engagement UI
41
+ * - Reveals delete action only when owned + explicitly triggered
42
+ */
43
+
12
44
  export function WireViewLayout({
13
45
  content,
14
46
  channelLogo,
@@ -1,12 +1,35 @@
1
1
  import { StyleSheet } from "react-native";
2
2
  import { globalStyles } from "./globalStyles";
3
3
 
4
+ /*
5
+ WireCardLayoutStyles
6
+
7
+ Purpose:
8
+ Styles for the Wire card container and text content used in
9
+ short-form, text-first Wire posts.
10
+
11
+ Design constraints:
12
+ - Card spacing and padding are tuned for feed readability.
13
+ - Background and border radius must remain consistent with
14
+ global design tokens to avoid visual drift across feeds.
15
+ - Height is flexible, but constrained to prevent runaway text
16
+ from breaking scroll performance.
17
+ */
18
+
4
19
  export const WireCardLayoutStyles = StyleSheet.create({
5
20
  container: {
21
+ /*
22
+ Core card container for a single Wire.
23
+
24
+ Intent:
25
+ - Flexible height to accommodate variable text length.
26
+ - Space-between ensures metadata and actions stay anchored.
27
+ - Margin creates separation between feed items.
28
+ */
6
29
  width: "auto",
7
30
  minHeight: 200,
8
31
  justifyContent: "space-between",
9
- // aspectRatio: 1 / 1,
32
+ // aspectRatio intentionally disabled; text-driven cards must grow vertically
10
33
  margin: 12,
11
34
  padding: 12,
12
35
  backgroundColor: globalStyles.colors.colorPrimary350,
@@ -14,6 +37,14 @@ export const WireCardLayoutStyles = StyleSheet.create({
14
37
  },
15
38
 
16
39
  mainTextContainer: {
40
+ /*
41
+ Wrapper around the main Wire text.
42
+
43
+ Constraint:
44
+ - maxHeight prevents extremely long posts from dominating
45
+ the feed and degrading scroll performance.
46
+ - Rounded edges visually separate text from card background.
47
+ */
17
48
  borderRadius: 12,
18
49
  paddingVertical: 12,
19
50
  paddingHorizontal: 10,
@@ -22,6 +53,13 @@ export const WireCardLayoutStyles = StyleSheet.create({
22
53
  },
23
54
 
24
55
  mainText: {
56
+ /*
57
+ Primary Wire text styling.
58
+
59
+ Readability choices:
60
+ - Slightly increased lineHeight for dense text blocks.
61
+ - Subtle letterSpacing improves legibility on mobile screens.
62
+ */
25
63
  color: "#ddd",
26
64
  fontSize: 15,
27
65
  lineHeight: 22,
@@ -29,6 +67,13 @@ export const WireCardLayoutStyles = StyleSheet.create({
29
67
  },
30
68
 
31
69
  seeMore: {
70
+ /*
71
+ "See more" affordance for truncated text.
72
+
73
+ Intent:
74
+ - Visually distinct but not dominant.
75
+ - Must remain tappable and readable on small screens.
76
+ */
32
77
  color: "#fff",
33
78
  fontWeight: "600",
34
79
  marginTop: 4,
@@ -1,8 +1,29 @@
1
1
  import { Platform, StyleSheet } from "react-native";
2
2
  import { globalStyles } from "./globalStyles";
3
3
 
4
+ /*
5
+ WireChannelMetadataStyles
6
+
7
+ Purpose:
8
+ Styles for rendering channel-level metadata on a Wire card,
9
+ including author info, subscription state, date, and view count.
10
+
11
+ Design constraints:
12
+ - Metadata must remain compact and right-aligned to avoid
13
+ competing with main Wire content.
14
+ - Font sizes are platform-tuned to maintain visual parity
15
+ between iOS and Android.
16
+ */
17
+
4
18
  export const WireChannelMetadataStyles = StyleSheet.create({
5
19
  dateViewsContainer: {
20
+ /*
21
+ Container for date and view count metadata.
22
+
23
+ Intent:
24
+ - Column layout keeps metadata vertically stacked.
25
+ - Right alignment ensures consistent edge anchoring in feeds.
26
+ */
6
27
  flexDirection: "column",
7
28
  width: "auto",
8
29
  justifyContent: "center",
@@ -10,63 +31,95 @@ export const WireChannelMetadataStyles = StyleSheet.create({
10
31
  },
11
32
 
12
33
  dateContainer: {
34
+ /*
35
+ Wrapper for date icon + text.
36
+ Row layout allows optional icon insertion without layout changes.
37
+ */
13
38
  flexDirection: "row",
14
39
  paddingBottom: 4,
15
- // rowGap: 20,
16
40
  },
17
41
 
18
- // dateIcon: {
19
- // marginRight: 8,
20
- // },
21
-
22
42
  viewsContainer: {
43
+ /*
44
+ Wrapper for views icon + text.
45
+ Kept separate from date for independent spacing control.
46
+ */
23
47
  flexDirection: "row",
24
48
  justifyContent: "flex-end",
25
49
  },
26
50
 
27
- // eyeIcon: {
28
- // marginRight: 8,
29
- // },
30
-
31
51
  dateText: {
52
+ /*
53
+ Date text styling.
54
+
55
+ Platform note:
56
+ - iOS text renders visually smaller at the same fontSize,
57
+ so sizes are adjusted for parity.
58
+ */
32
59
  color: globalStyles.colors.colorPrimary600,
33
60
  marginRight: 8,
34
61
  fontSize: Platform.OS === "ios" ? 14 : 12,
35
62
  },
36
63
 
37
64
  viewsText: {
65
+ /*
66
+ Views count text styling.
67
+ Intentionally matches dateText for visual consistency.
68
+ */
38
69
  color: globalStyles.colors.colorPrimary600,
39
70
  marginRight: 8,
40
71
  fontSize: Platform.OS === "ios" ? 14 : 12,
41
72
  },
42
73
 
43
74
  channelMetaContainer: {
75
+ /*
76
+ Primary container for channel metadata row.
77
+
78
+ Intent:
79
+ - Separates channel identity from Wire content.
80
+ - Uses global tokens to remain consistent across surfaces.
81
+ */
44
82
  width: "auto",
45
83
  flexDirection: "row",
46
84
  backgroundColor: globalStyles.colors.colorPrimary200,
47
85
  justifyContent: "space-between",
48
- // margin: 12,
49
86
  padding: 12,
50
87
  borderRadius: globalStyles.borders.borderPrimary100,
51
88
  },
52
89
 
53
90
  channelMetaContainer_ColumnOne: {
91
+ /*
92
+ Left column containing user avatar and identity.
93
+ */
54
94
  flexDirection: "row",
55
95
  },
56
96
 
57
97
  userImage: {
98
+ /*
99
+ Channel/user avatar.
100
+
101
+ Constraint:
102
+ - Fixed size ensures layout stability across feeds.
103
+ */
58
104
  width: 40,
59
105
  height: 40,
60
106
  borderRadius: globalStyles.borders.borderPrimary50,
61
107
  },
62
108
 
63
109
  nameSubcountContainer: {
110
+ /*
111
+ Wrapper for username and subscriber count.
112
+ */
64
113
  flexDirection: "column",
65
114
  justifyContent: "center",
66
115
  paddingLeft: 12,
67
116
  },
68
117
 
69
118
  userName: {
119
+ /*
120
+ Channel display name.
121
+ Strong visual weight to establish authorship.
122
+ */
70
123
  color: "#fff",
71
124
  fontSize: 16,
72
125
  paddingBottom: 4,
@@ -74,10 +127,17 @@ export const WireChannelMetadataStyles = StyleSheet.create({
74
127
  },
75
128
 
76
129
  subCountContainer: {
130
+ /*
131
+ Row container for subscriber count + label.
132
+ */
77
133
  flexDirection: "row",
78
134
  },
79
135
 
80
136
  subCount: {
137
+ /*
138
+ Numeric subscriber count.
139
+ Highlighted to draw attention without overpowering username.
140
+ */
81
141
  color: globalStyles.colors.colorPrimary600,
82
142
  paddingRight: 6,
83
143
  fontSize: 12,
@@ -85,11 +145,20 @@ export const WireChannelMetadataStyles = StyleSheet.create({
85
145
  },
86
146
 
87
147
  subText: {
148
+ /*
149
+ Subscriber label text.
150
+ */
88
151
  color: "#fff",
89
152
  fontSize: 12,
90
153
  },
91
154
 
92
155
  subscribeButtonContainer: {
156
+ /*
157
+ Subscribe / subscribed action button.
158
+
159
+ Constraint:
160
+ - Fixed width ensures consistent hit area.
161
+ */
93
162
  backgroundColor: globalStyles.colors.colorPrimary600,
94
163
  width: 100,
95
164
  borderRadius: globalStyles.borders.borderPrimary400,
@@ -98,6 +167,9 @@ export const WireChannelMetadataStyles = StyleSheet.create({
98
167
  },
99
168
 
100
169
  subscribeButtonText: {
170
+ /*
171
+ Subscribe button label.
172
+ */
101
173
  color: "#fff",
102
174
  fontWeight: "bold",
103
175
  },
@@ -1,20 +1,42 @@
1
1
  import { StyleSheet } from "react-native";
2
2
  import { globalStyles } from "./globalStyles";
3
3
 
4
+ /*
5
+ WireUploadStyles
6
+
7
+ Purpose:
8
+ Styles for the Wire creation / upload screen, including
9
+ user identity, text input, media previews, and upload actions.
10
+
11
+ Design constraints:
12
+ - Screen must scroll comfortably on small devices.
13
+ - Text input must support long-form drafting without breaking layout.
14
+ - Media previews are constrained to predictable sizes.
15
+ */
16
+
4
17
  export const WireUploadStyles = StyleSheet.create({
5
18
  container: {
19
+ /*
20
+ Root container for the Wire upload screen.
21
+
22
+ Constraint:
23
+ - Bottom margin reserves space for fixed navigation / actions.
24
+ */
6
25
  flex: 1,
7
26
  backgroundColor: "#141414",
8
27
  marginBottom: 120,
9
- // paddingHorizontal: 16,
10
- // paddingTop: 20,
11
28
  },
12
29
 
13
30
  profileSection: {
31
+ /*
32
+ Top section displaying user identity and channel access.
33
+
34
+ Intent:
35
+ - Visually anchors authorship before content creation.
36
+ - Bottom border separates identity from input area.
37
+ */
14
38
  flexDirection: "row",
15
39
  alignItems: "center",
16
- // paddingHorizontal: 36,
17
-
18
40
  borderBottomWidth: 1,
19
41
  paddingTop: 18,
20
42
  paddingBottom: 18,
@@ -22,40 +44,68 @@ export const WireUploadStyles = StyleSheet.create({
22
44
  marginRight: 36,
23
45
  borderColor: globalStyles.colors.colorPrimary450,
24
46
  },
47
+
25
48
  userImage: {
49
+ /*
50
+ User avatar in upload context.
51
+ Slightly larger than feed avatars to emphasize authorship.
52
+ */
26
53
  width: 60,
27
54
  height: 60,
28
55
  borderRadius: 12,
29
56
  marginRight: 16,
30
57
  },
58
+
31
59
  userInfo: {
60
+ /*
61
+ Wrapper for username and channel settings link.
62
+ */
32
63
  flexDirection: "column",
33
64
  justifyContent: "center",
34
65
  },
66
+
35
67
  userName: {
68
+ /*
69
+ Display name of the active channel/user.
70
+ */
36
71
  color: "white",
37
72
  fontSize: 18,
38
73
  fontWeight: "600",
39
74
  },
75
+
40
76
  channelSettingsText: {
77
+ /*
78
+ Link-style text for channel settings access.
79
+ Intentionally accent-colored to signal interactivity.
80
+ */
41
81
  color: "#ff6600",
42
82
  marginTop: 4,
43
83
  },
44
84
 
45
- // /////////////////
46
-
47
85
  wireInputContainer: {
86
+ /*
87
+ Outer container for Wire text input and media.
88
+ */
48
89
  marginRight: 24,
49
90
  marginLeft: 24,
50
91
  marginTop: 24,
51
92
  },
52
93
 
53
94
  wireInputTextContainer: {
95
+ /*
96
+ Visual wrapper around the text input area.
97
+ */
54
98
  backgroundColor: "#202020",
55
99
  borderRadius: 12,
56
100
  },
57
101
 
58
102
  inputWrapper: {
103
+ /*
104
+ Inner wrapper for text input.
105
+
106
+ Constraint:
107
+ - Bottom corners remain square to visually attach media previews.
108
+ */
59
109
  backgroundColor: "#202020",
60
110
  width: "auto",
61
111
  borderBottomRightRadius: 0,
@@ -63,15 +113,19 @@ export const WireUploadStyles = StyleSheet.create({
63
113
  },
64
114
 
65
115
  aboutTextArea: {
116
+ /*
117
+ Main Wire text input.
118
+
119
+ Intent:
120
+ - Supports long-form drafting.
121
+ - Preserves whitespace for intentional line breaks.
122
+ */
66
123
  textAlignVertical: "top",
67
- // whiteSpace: "pre-line",
68
124
  whiteSpace: "pre",
69
-
70
125
  height: "auto",
71
126
  minHeight: 200,
72
127
  color: "white",
73
128
  paddingTop: 16,
74
- marginTop: 0,
75
129
  lineHeight: 24,
76
130
  fontWeight: 400,
77
131
  fontSize: 18,
@@ -79,33 +133,45 @@ export const WireUploadStyles = StyleSheet.create({
79
133
  },
80
134
 
81
135
  media: {
136
+ /*
137
+ Large media preview (single attachment).
138
+ */
82
139
  width: "auto",
83
140
  height: 200,
84
141
  borderRadius: 14,
85
- // marginBottom: 16,
86
142
  backgroundColor: "#000",
87
143
  },
88
144
 
89
145
  uploadButtonContainer: {
146
+ /*
147
+ Container for upload-related action buttons.
148
+ */
90
149
  flexDirection: "row",
91
150
  alignItems: "center",
92
151
  justifyContent: "flex-end",
93
152
  },
94
153
 
95
154
  AIGenerateButton: {
155
+ /*
156
+ Optional AI-assisted content generation action.
157
+ */
96
158
  paddingRight: 24,
97
159
  },
98
160
 
99
161
  uploadImageButton: {
162
+ /*
163
+ Media upload action.
164
+ Padding increases tap target for accessibility.
165
+ */
100
166
  paddingRight: 24,
101
- // backgroundColor: "#252525",
102
167
  paddingVertical: 24,
103
168
  borderRadius: 12,
104
- // marginBottom: 20,
105
- // marginTop: 20,
106
169
  },
107
170
 
108
171
  uploadButtonText: {
172
+ /*
173
+ Label for upload-related buttons.
174
+ */
109
175
  color: "#fff",
110
176
  fontSize: 14,
111
177
  fontWeight: "600",
@@ -113,6 +179,12 @@ export const WireUploadStyles = StyleSheet.create({
113
179
  },
114
180
 
115
181
  mediaContainer: {
182
+ /*
183
+ Grid container for multiple media thumbnails.
184
+
185
+ Constraint:
186
+ - Uses wrapping and even spacing to handle variable counts.
187
+ */
116
188
  flexDirection: "row",
117
189
  flexWrap: "wrap",
118
190
  gap: 10,
@@ -124,6 +196,9 @@ export const WireUploadStyles = StyleSheet.create({
124
196
  },
125
197
 
126
198
  mediaThumb: {
199
+ /*
200
+ Individual media thumbnail preview.
201
+ */
127
202
  width: 120,
128
203
  height: 120,
129
204
  borderRadius: 12,
@@ -1,8 +1,29 @@
1
1
  import { StyleSheet } from "react-native";
2
2
  import { globalStyles } from "./globalStyles";
3
3
 
4
+ /*
5
+ WireViewLayoutStyles
6
+
7
+ Purpose:
8
+ Styles for the full Wire view screen, where a single Wire
9
+ is read in isolation (expanded, focused context).
10
+
11
+ Design constraints:
12
+ - Prioritize long-form readability over feed density.
13
+ - Spacing is intentionally more generous than card layouts.
14
+ - Bottom margin reserves space for fixed actions or navigation.
15
+ */
16
+
4
17
  export const WireViewLayoutStyles = StyleSheet.create({
5
18
  container: {
19
+ /*
20
+ Primary container for an expanded Wire.
21
+
22
+ Intent:
23
+ - Acts as a reading surface, not a feed card.
24
+ - Increased horizontal padding improves text legibility.
25
+ - Bottom margin prevents overlap with persistent UI elements.
26
+ */
6
27
  width: "auto",
7
28
  margin: 12,
8
29
  paddingTop: 12,
@@ -15,11 +36,25 @@ export const WireViewLayoutStyles = StyleSheet.create({
15
36
  },
16
37
 
17
38
  secondaryContainer: {
39
+ /*
40
+ Inner vertical stack for content blocks
41
+ (text, metadata, media, actions).
42
+
43
+ Constraint:
44
+ - Column layout ensures predictable reading flow.
45
+ */
18
46
  flexDirection: "column",
19
47
  paddingBottom: 24,
20
48
  },
21
49
 
22
50
  mainText: {
51
+ /*
52
+ Primary Wire text in expanded view.
53
+
54
+ Readability choices:
55
+ - Larger fontSize and lineHeight than feed cards.
56
+ - Optimized for sustained reading, not scanning.
57
+ */
23
58
  color: "#fff",
24
59
  lineHeight: 28,
25
60
  fontSize: 18,