import { View, Text, FlatList, Pressable, StyleSheet } from "react-native";
import React, { useState } from "react";
import CreateLyricsHeader from "./components/CreateLyricsHeader";
import { BlurView } from "expo-blur";
import { GOALS, SONG_STYLE } from "../../data/data";
import { Palette, Style } from "../../styles";
import CustomInput from "./components/CustomInput";
import { FONT_FAMILY } from "../../styles/Fonts";
import ItemContainer from "../../components/ItemContainer/ItemContainer";

const SongStyle = ({
  selected: selectedProp,
  setSelected: setSelectedProp,
  otherStyle,
  setOtherStyle,
}) => {
  const [internalSelected, setInternalSelected] = useState(null);
  const selected = selectedProp ?? internalSelected;
  const setSelected = setSelectedProp ?? setInternalSelected;

  const onPressSelect = (item) => {
    if (selected === item) {
      setSelected(null);
    } else {
      setSelected(item);
    }
  };

  return (
    <View style={{ flex: 1, gap: 16, marginTop: 16 }}>
      <View style={{ gap: 10 }}>
        <CreateLyricsHeader
          title={`Quel est le style de ta chanson ?`}
          subTitle="Choisis l'ambiance émotions que tu veux faire passer."
        />
        <ItemContainer>
          <FlatList
            data={SONG_STYLE}
            showsVerticalScrollIndicator={false}
            contentContainerStyle={styles.contentContainer}
            renderItem={({ item }) => {
              const selectedItem = selected === item.title;

              return (
                <CreateLyricsHeader
                  colors={
                    selectedItem
                      ? ["#FFFFFF00", "#FFFFFF"]
                      : [Palette.tran, Palette.tran]
                  }
                  tint={selectedItem ? "default" : "dark"}
                  onPress={() => onPressSelect(item.title)}
                  containerStyle={{
                    ...styles.itemContainer,
                  }}
                >
                  <View style={{ paddingVertical: 6 }}>
                    <Text
                      style={{
                        fontSize: 16,
                        color: Palette.white,
                        fontFamily: FONT_FAMILY.InterRegular,
                      }}
                    >
                      <Text style={{ fontFamily: FONT_FAMILY.InterBold }}>
                        {item.title}
                      </Text>{" "}
                      : {item.description}
                    </Text>
                  </View>
                </CreateLyricsHeader>
              );
            }}
          />
        </ItemContainer>
      </View>
      <CustomInput
        label="Tu as un autre style de chanson ?"
        placeholder="Décrire l’objectif"
        value={otherStyle}
        setValue={setOtherStyle}
      />
    </View>
  );
};

export default SongStyle;

const styles = StyleSheet.create({
  contentContainer: {
    flexGrow: 1,
    padding: 8,
    gap: 10,
    backgroundColor: "#FFFFFF00",
    paddingBottom: 50,
  },
  itemContainer: {
    borderRadius: 14,
    shadowColor: "#00000040",
    shadowOffset: {
      width: 0,
      height: 2,
    },
    shadowOpacity: 0.25,
    shadowRadius: 3.84,

    elevation: 5,
  },
  itemText: {
    fontSize: 16,
    color: Palette.white,
    fontFamily: FONT_FAMILY.InterRegular,
    textAlign: "center",
  },
});
