from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, TextAreaField, SelectField, BooleanField, SubmitField, FileField, EmailField
from wtforms.validators import DataRequired, Email, Length, Optional

class LoginForm(FlaskForm):
    identity = StringField("Username atau email", validators=[DataRequired(), Length(max=160)])
    password = PasswordField("Password", validators=[DataRequired(), Length(max=128)])
    submit = SubmitField("Masuk")

class NewsForm(FlaskForm):
    title = StringField("Judul", validators=[DataRequired(), Length(max=220)])
    slug = StringField("Slug", validators=[Optional(), Length(max=240)])
    summary = TextAreaField("Ringkasan", validators=[Optional(), Length(max=500)])
    body = TextAreaField("Isi berita", validators=[DataRequired()])
    category_id = SelectField("Kategori", coerce=int, validators=[Optional()])
    status = SelectField("Status", choices=[("draft","Draft"),("pending","Menunggu persetujuan"),("published","Terbit"),("archived","Diarsipkan")])
    image = FileField("Gambar utama")
    submit = SubmitField("Simpan")

class ActivityForm(FlaskForm):
    title = StringField("Judul aktivitas", validators=[DataRequired(), Length(max=220)])
    slug = StringField("Slug", validators=[Optional(), Length(max=240)])
    category = StringField("Kategori", validators=[DataRequired(), Length(max=80)])
    location = StringField("Lokasi", validators=[Optional(), Length(max=180)])
    description = TextAreaField("Deskripsi", validators=[DataRequired()])
    status = SelectField("Status", choices=[("draft","Draft"),("published","Terbit"),("archived","Diarsipkan")])
    submit = SubmitField("Simpan")

class ContactForm(FlaskForm):
    name = StringField("Nama", validators=[DataRequired(), Length(max=120)])
    email = EmailField("Email", validators=[DataRequired(), Email(), Length(max=180)])
    subject = StringField("Subjek", validators=[DataRequired(), Length(max=200)])
    message = TextAreaField("Pesan", validators=[DataRequired(), Length(min=10, max=4000)])
    submit = SubmitField("Kirim pesan")

class SettingForm(FlaskForm):
    program_name = StringField("Nama program studi", validators=[DataRequired(), Length(max=160)])
    tagline = StringField("Tagline", validators=[Optional(), Length(max=240)])
    email = EmailField("Email resmi", validators=[Optional(), Email(), Length(max=180)])
    address = TextAreaField("Alamat", validators=[Optional(), Length(max=500)])
    hero_title = StringField("Judul hero", validators=[DataRequired(), Length(max=240)])
    hero_description = TextAreaField("Deskripsi hero", validators=[Optional(), Length(max=800)])
    submit = SubmitField("Simpan pengaturan")
