From dbb8d3c6855529188c9b154c3ac9037fc93cf8ba Mon Sep 17 00:00:00 2001 From: Kavindu_Methpura Date: Tue, 4 Feb 2025 00:04:28 +0530 Subject: [PATCH] new status --- app/(tabs)/leaderboard.tsx | 63 ++++++++++++++++++++++++++--- components/status/StatusInput.tsx | 49 ++++++++++++++++++++++ components/status/StatusMessage.tsx | 38 +++++++++++++++++ 3 files changed, 145 insertions(+), 5 deletions(-) create mode 100644 components/status/StatusInput.tsx create mode 100644 components/status/StatusMessage.tsx diff --git a/app/(tabs)/leaderboard.tsx b/app/(tabs)/leaderboard.tsx index b3c51aa..f3f60c4 100644 --- a/app/(tabs)/leaderboard.tsx +++ b/app/(tabs)/leaderboard.tsx @@ -1,15 +1,68 @@ import AppHeader from "@/components/AppHeader"; -import React from "react"; -import { Text, View } from "react-native"; +import StatusInput from "@/components/status/StatusInput"; +import StatusMessage from "@/components/status/StatusMessage"; +import React, { useState } from "react"; +import { View, ScrollView, Text, StyleSheet } from "react-native"; +import { FAB } from "react-native-paper"; export default function LeaderBoard() { + const [messages, setMessages] = useState>([]); + + // Function to handle sending messages + const handleSend = (text: string) => { + setMessages([...messages, { text, isUser: true }]); + // Simulate a system response + setTimeout(() => { + setMessages((prev) => [...prev, { text: 'Thank you for your message!', isUser: false }]); + }, 1000); + }; + return ( <> - - textInComponent - LeaderBoard + + Recent Updates + + {messages.map((msg, index) => ( + + ))} + + + setMessages([])} // Clear messages or refresh data + /> ); } + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#f0f2f5", + padding: 16, + }, + title: { + fontSize: 20, + fontWeight: "bold", + color: "#000", + marginBottom: 16, + }, + messagesContainer: { + flex: 1, + marginBottom: 16, + }, + fab: { + position: "absolute", + margin: 16, + right: 0, + bottom: 80, + backgroundColor: "#1877f2", // Facebook blue + }, +}); + + diff --git a/components/status/StatusInput.tsx b/components/status/StatusInput.tsx new file mode 100644 index 0000000..866de30 --- /dev/null +++ b/components/status/StatusInput.tsx @@ -0,0 +1,49 @@ +import React, { useState } from 'react'; +import { View, TextInput, TouchableOpacity, StyleSheet } from 'react-native'; +import Icon from 'react-native-vector-icons/FontAwesome'; + // Install this package + +const StatusInput = ({ onSend }: { onSend: (text: string) => void }) => { + const [message, setMessage] = useState(''); + + const handleSend = () => { + if (message.trim()) { + onSend(message); + setMessage(''); + } + }; + + return ( + + + + + + + ); +}; + +const styles = StyleSheet.create({ + inputContainer: { + flexDirection: 'row', + alignItems: 'center', + padding: 8, + backgroundColor: '#fff', + borderTopWidth: 1, + borderTopColor: '#e0e0e0', + }, + input: { + flex: 1, + padding: 8, + borderRadius: 20, + backgroundColor: '#f0f2f5', + marginRight: 8, + }, +}); + +export default StatusInput; \ No newline at end of file diff --git a/components/status/StatusMessage.tsx b/components/status/StatusMessage.tsx new file mode 100644 index 0000000..27459de --- /dev/null +++ b/components/status/StatusMessage.tsx @@ -0,0 +1,38 @@ +import React from 'react'; +import { View, Text, StyleSheet } from 'react-native'; + +type MessageProps = { + text: string; + isUser: boolean; // To differentiate between user and system messages +}; + +const StatusMessage = ({ text, isUser }: MessageProps) => { + return ( + + {text} + + ); +}; + +const styles = StyleSheet.create({ + messageContainer: { + maxWidth: '80%', + padding: 12, + borderRadius: 12, + marginVertical: 4, + }, + userMessage: { + alignSelf: 'flex-end', + backgroundColor: '#1877f2', // Facebook blue + }, + systemMessage: { + alignSelf: 'flex-start', + backgroundColor: '#e4e6eb', // Light gray + }, + messageText: { + fontSize: 16, + color: '#000', + }, +}); + +export default StatusMessage; \ No newline at end of file