class Events extends Shadow {

    events = [
        {
            date: `January 23, 2025`,
            title: `Hyperia Winter Ball`,
            description: `Join us in Austin, Texas for a dance. Live music and drinks will be included. <br>Admission for men is $50, women are free. Open to the public.`,
            location: `Austin, TX`
        }
    ]

    render() {
        ZStack(() => {
            VStack(() => {
    
                h1("HYPERIA")
                .marginBottom(0, em)

                p("Public Events")
                .fontSize(1.2, em)
                .marginBottom(2, em)
    
                const Stack = window.isMobile() ? VStack : HStack
                Stack(() => {
        
                    VStack(() => {
                        p(`January 23, 2025`)
        
                        p(`Hyperia Winter Ball`)
                        .fontSize(1.2, em)
        
                        p(`Austin, TX`)
    
                    })
    
                    p(`Join us in Austin, Texas for a great dance, with free drinks and live music. <br><br>Admission: $35 for men, women are free.`)
                        .marginRight(4, em)

                    HStack(() => {
                        img("/_/icons/creditcards/visa.svg")
                        img("/_/icons/creditcards/mastercard.svg")
                        img("/_/icons/creditcards/discover.svg")
                        img("/_/icons/creditcards/amex.svg")
                    })
                    .alignSelf("flex-start")
                    .height(2, em)
                    .maxWidth(40, vw)
    
                    button("Buy Ticket")
                        .color("var(--darkbrown")
                        .border("1px solid #ab2f007d")
                        .background('var(--green)')
                        .marginLeft("auto")
                        .onClick(async function() {
                            this.innerText = "Loading..."
                            const res = await fetch("/create-checkout-session", { method: "POST" });
                            const data = await res.json();
                            window.location = data.url;                        
                        })
                })
                .gap(3, em)
                .color("var(--darkbrown)")
                .background(`var(--accent)`)
                .padding(1, em)
                .borderRadius(12, px)
                .border("2px solid #ab2f007d")
            })
            .marginLeft(window.isMobile() ? 0 : 15, vmax)
            .marginRight(window.isMobile() ? 0 : 15, vmax)
            .marginTop(10, vmax)

            HStack(() => {
                p("Privacy Policy")
                .onHover(function (hovering) {
                    if(hovering) {
                        this.style.color = "var(--darkbrown)"
                    } else {
                        this.style.color = ""
                    }
                })
                .onClick(() => {
                    this.$("#policyWindow").style.display = "flex"
                })
                p("Refund and Return Policy")
                .onHover(function (hovering) {
                    if(hovering) {
                        this.style.color = "var(--darkbrown)"
                    } else {
                        this.style.color = ""
                    }
                })
                .onClick(() => {
                    this.$("#refundWindow").style.display = "flex"
                })
                p("Contact Us")
                .onHover(function (hovering) {
                    if(hovering) {
                        this.style.color = "var(--darkbrown)"
                    } else {
                        this.style.color = ""
                    }
                })
                .onClick(() => {
                    this.$("#contactWindow").style.display = "flex"
                })
            })
            .x(50, vw).yBottom(0, vh)
            .center()
            .gap(2, em)
            .opacity(0.5)
            .cursor("default")
        })

        VStack(() => {

                p("Privacy Policy")
                    .fontSize(2, em)
                    .fontWeight(600)
                    .marginBottom(1, em)

                p("We value your privacy. This Privacy Policy explains how we collect, use, store, and protect your information when you use our website or services.")

                p("1. Information We Collect")
                    .fontWeight(600)
                    .marginTop(1, em)

                p("• Personal information you provide, such as your name, email address, or other contact details.")
                p("• Automatically collected data, including IP address, browser type, device information, and usage statistics.")
                p("• Cookies or similar tracking technologies that help us improve the user experience.")

                p("2. How We Use Your Information")
                    .fontWeight(600)
                    .marginTop(1, em)

                p("• To operate and improve our website and services.")
                p("• To communicate with you about updates, support requests, or account-related matters.")
                p("• To maintain security, prevent fraud, and ensure proper functionality.")

                p("3. How We Share Information")
                    .fontWeight(600)
                    .marginTop(1, em)

                p("We do not sell your personal information. We may share data only with trusted service providers who help us operate the platform, or when required by law.")

                p("4. Data Storage & Security")
                    .fontWeight(600)
                    .marginTop(1, em)

                p("We use reasonable technical and administrative safeguards to protect your information. However, no system is completely secure, and we cannot guarantee absolute protection.")

                p("5. Cookies")
                    .fontWeight(600)
                    .marginTop(1, em)

                p("Our site may use cookies to remember preferences, analyze traffic, and enhance usability. You can disable cookies in your browser settings, but some features may stop working.")

                p("6. Your Rights")
                    .fontWeight(600)
                    .marginTop(1, em)

                p("Depending on your location, you may have rights to access, update, delete, or request a copy of your personal data. Contact us if you wish to exercise these rights.")

                p("7. Third-Party Links")
                    .fontWeight(600)
                    .marginTop(1, em)

                p("Our website may contain links to third-party sites. We are not responsible for their content or privacy practices.")

                p("8. Changes to This Policy")
                    .fontWeight(600)
                    .marginTop(1, em)

                p("We may update this Privacy Policy from time to time. Updated versions will be posted on this page with the effective date.")

                p("9. Contact Us")
                    .fontWeight(600)
                    .marginTop(1, em)

                p("If you have any questions about this Privacy Policy, feel free to contact us at info@hyperia.so.")

                p("x")
                    .onClick(function (done) {
                        if(done) {
                            this.parentElement.style.display = "none"
                        }
                    })
                    .color("var(--red)")
                    .xRight(1, em).y(1, em)
                    .fontSize(2, em)
                    .cursor("pointer")

        })
        .x(50, vw).y(50, vh)
        .width(70, vw).height(70, vh)
        .center()
        .backgroundColor("var(--accent)")
        .display("none")
        .overflow("scroll")
        .padding(1, em)
        .border("3px solid black")
        .color("var(--darkbrown)")
        .attr({ id: "policyWindow" })

        VStack(() => {

            p("Refund & Return Policy")
                .fontSize(2, em)
                .fontWeight(600)
                .marginBottom(1, em)

            p("1. Eligibility for Refunds")
                .fontWeight(600)
                .marginTop(1, em)

            p("• Refund requests may be considered when submitted within 14 days of purchase.")
            p("• To qualify, you must provide proof of purchase and a valid reason for the request.")
            p("• Certain digital products or services may be non-refundable once accessed or downloaded.")

            p("2. Non-Refundable Items")
                .fontWeight(600)
                .marginTop(1, em)

            p("• Products or services that have already been delivered, downloaded, or accessed in full.")
            p("• Custom work, personalized items, or one-time service fees.")
            p("• Any promotional or discounted items, unless required by law.")

            p("3. Returns (If Applicable)")
                .fontWeight(600)
                .marginTop(1, em)

            p("• Physical items must be returned in their original condition.")
            p("• You are responsible for return shipping costs unless the item was defective or incorrect.")
            p("• Items damaged through misuse or neglect cannot be returned.")

            p("4. Processing Refunds")
                .fontWeight(600)
                .marginTop(1, em)

            p("• Approved refunds are issued to the original payment method.")
            p("• Processing times may vary depending on your bank or payment provider.")
            p("• We will notify you once your refund has been initiated.")

            p("5. Cancellations")
                .fontWeight(600)
                .marginTop(1, em)

            p("• Orders or subscriptions may be cancelled before fulfillment or renewal.")
            p("• If Hyperia declare a cancellation of any product or event, a refund will be issued to all parties.")

            p("6. Contact for Refund Requests")
                .fontWeight(600)
                .marginTop(1, em)

            p("If you need to request a refund, return an item, or cancel an order, please contact us at info@hyperia.so. Include your order number and relevant details so we can assist you promptly.")

            p("7. Policy Updates")
                .fontWeight(600)
                .marginTop(1, em)

            p("We may update this Refund & Return Policy from time to time. Any changes will be posted on this page with the effective date.")

            p("x")
                .onClick(function (done) {
                    if(done) {
                        this.parentElement.style.display = "none"
                    }
                })
                .color("var(--red)")
                .xRight(1, em).y(1, em)
                .fontSize(2, em)
                .cursor("pointer")

        })
        .x(50, vw).y(50, vh)
        .width(70, vw).height(70, vh)
        .center()
        .backgroundColor("var(--accent)")
        .display("none")
        .overflow("scroll")
        .padding(1, em)
        .border("3px solid black")
        .color("var(--darkbrown)")
        .attr({ id: "refundWindow" })


        VStack(() => {

                p("Contact Us")
                    .fontSize(2, em)
                    .fontWeight(600)
                    .marginBottom(1, em)

                p("Email: info@hyperia.so")
                p("Phone: 813-373-9100")
                p("Address: 2014 E 9th St, Unit A, Austin TX")

                p("x")
                    .onClick(function (done) {
                        if(done) {
                            this.parentElement.style.display = "none"
                        }
                    })
                    .color("var(--red)")
                    .xRight(1, em).y(1, em)
                    .fontSize(2, em)
                    .cursor("pointer")

        })
        .gap(2, em)
        .x(50, vw).y(50, vh)
        .width(50, vw).height(50, vh)
        .center()
        .backgroundColor("var(--accent)")
        .display("none")
        .overflow("scroll")
        .padding(1, em)
        .border("3px solid black")
        .color("var(--darkbrown)")
        .attr({ id: "contactWindow" })


    }
}

register(Events)