aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/app/components/EnMarchaAnnouncement.tsx
blob: 0e7d0ddbf1f2ff7267f27385e88f751525dabba7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import { AlertCircle, CheckCircle2, ExternalLink, Smartphone, X } from "lucide-react";
import React from "react";
import { useTranslation } from "react-i18next";
import { Sheet } from "react-modal-sheet";

interface EnMarchaAnnouncementProps {
  isOpen: boolean;
  onClose: () => void;
}

export const EnMarchaAnnouncement: React.FC<EnMarchaAnnouncementProps> = ({
  isOpen,
  onClose,
}) => {
  const { t } = useTranslation();

  const features = [
    "feature_planner",
    "feature_realtime",
    "feature_operators",
    "feature_ui",
    "feature_more",
  ];

  return (
    <Sheet isOpen={isOpen} onClose={onClose} detent="content">
      <Sheet.Container className="bg-white! dark:bg-black! !rounded-t-[20px]">
        <Sheet.Header className="bg-white! dark:bg-black! !rounded-t-[20px]" />
        <Sheet.Content>
          <div className="p-6 pb-10 flex flex-col gap-6 overflow-y-auto max-h-[85vh] text-slate-900 dark:text-slate-100">
            <div className="flex justify-between items-start">
              <h2 className="text-2xl font-bold tracking-tight">
                {t("enmarcha_announcement.title")}
              </h2>
              <button
                onClick={onClose}
                className="p-2 rounded-full hover:bg-slate-100 dark:hover:bg-slate-800 transition-colors"
                aria-label={t("enmarcha_announcement.close")}
              >
                <X className="w-6 h-6 text-slate-400" />
              </button>
            </div>

            <div className="space-y-4">
              <div className="p-4 rounded-xl bg-amber-50 dark:bg-amber-900/20 border border-amber-100 dark:border-amber-900/30 flex gap-3 items-center">
                <AlertCircle className="w-5 h-5 text-amber-600 dark:text-amber-400 shrink-0" />
                <p className="text-sm font-semibold text-amber-800 dark:text-amber-300">
                  {t("enmarcha_announcement.discontinuation_notice")}
                </p>
              </div>

              <p className="text-slate-600 dark:text-slate-300 leading-relaxed">
                {t("enmarcha_announcement.description")}
              </p>

              <div className="space-y-3 py-2">
                <h3 className="font-bold text-sm uppercase tracking-wider text-slate-500 dark:text-slate-400">
                  {t("enmarcha_announcement.features_title")}
                </h3>
                <ul className="space-y-2">
                  {features.map((feature) => (
                    <li key={feature} className="flex gap-3 items-start text-sm">
                      <CheckCircle2 className="w-4 h-4 text-blue-600 dark:text-blue-400 shrink-0 mt-0.5" />
                      <span>{t(`enmarcha_announcement.${feature}`)}</span>
                    </li>
                  ))}
                </ul>
              </div>

              <a
                href="https://enmarcha.app"
                target="_blank"
                rel="noopener noreferrer"
                className="flex items-center justify-center gap-2 w-full py-3 px-6 bg-blue-600 hover:bg-blue-700 text-white font-bold rounded-xl transition-all active:scale-[0.98]"
              >
                {t("enmarcha_announcement.link_text")}
                <ExternalLink className="w-5 h-5" />
              </a>
            </div>

            <div className="space-y-4 pt-2">
              <div className="flex items-center gap-2">
                <Smartphone className="w-5 h-5 text-slate-400" />
                <h3 className="font-bold text-lg">
                  {t("enmarcha_announcement.install_title")}
                </h3>
              </div>

              <div className="grid gap-3">
                <div className="p-4 rounded-xl bg-slate-50 dark:bg-slate-900 border border-slate-100 dark:border-slate-800">
                  <h4 className="font-bold text-slate-700 dark:text-slate-300 mb-1">Android</h4>
                  <div className="space-y-2 text-sm text-slate-600 dark:text-slate-400">
                    <p>{t("enmarcha_announcement.android_chrome")}</p>
                    <p>{t("enmarcha_announcement.android_firefox")}</p>
                  </div>
                </div>

                <div className="p-4 rounded-xl bg-slate-50 dark:bg-slate-900 border border-slate-100 dark:border-slate-800">
                  <h4 className="font-bold text-slate-700 dark:text-slate-300 mb-1">iOS</h4>
                  <p className="text-sm text-slate-600 dark:text-slate-400">
                    {t("enmarcha_announcement.ios_safari")}
                  </p>
                </div>
              </div>
            </div>

            <button
              onClick={onClose}
              className="w-full py-2 text-slate-500 dark:text-slate-400 text-sm font-medium hover:text-slate-700 dark:hover:text-slate-200 transition-colors"
            >
              {t("enmarcha_announcement.close")}
            </button>
          </div>
        </Sheet.Content>
      </Sheet.Container>
      <Sheet.Backdrop onTap={onClose} />
    </Sheet>
  );
};