Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/apps/web/app
diff options
context:
space:
mode:
authorLeitwolf112026-11-09 01:18:34 +0300
committerLeitwolf112026-11-09 01:18:34 +0300
commitc0bafe9050161ea6ca0c49f54897f908ca16ce84 (patch)
tree7496e782c0a82a9ff5ea9b59b85e3607fd7794d6 /apps/web/app
parent66f3cc196a9b91d471a90e021b12630100181c4a (diff)
parent3ac256e69f10a3bb78d394c77d03a88a72261597 (diff)
downloadprogmaweb-security/cloudflare-real-ip.tar.gz
Merge remote-tracking branch 'origin/main' into security/cloudflare-real-ipsecurity/cloudflare-real-ip
Diffstat (limited to 'apps/web/app')
-rw-r--r--apps/web/app/ides/layout.tsx11
-rw-r--r--apps/web/app/ides/page.tsx53
-rw-r--r--apps/web/app/ides/xide/page.tsx93
3 files changed, 0 insertions, 157 deletions
diff --git a/apps/web/app/ides/layout.tsx b/apps/web/app/ides/layout.tsx
deleted file mode 100644
index 8b1c6b7..0000000
--- a/apps/web/app/ides/layout.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-// SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com>
-// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1
-
-import type { ReactNode } from "react";
-import "../site.css";
-
-export default function IdesLayout({
- children,
-}: Readonly<{ children: ReactNode }>) {
- return children;
-}
diff --git a/apps/web/app/ides/page.tsx b/apps/web/app/ides/page.tsx
deleted file mode 100644
index 3a832a8..0000000
--- a/apps/web/app/ides/page.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-// SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com>
-// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1
-
-import type { Metadata } from "next";
-import { Footer } from "@/components/Footer";
-import { SiteHeader } from "@/components/SiteHeader";
-import { getLocale } from "@/lib/locale.server";
-import { forwardArrow } from "@/lib/localization";
-import { getCatalogMessages, products } from "@/lib/products";
-import { getSitesMessages } from "@/lib/product-sites";
-
-export async function generateMetadata(): Promise<Metadata> {
- const { ides } = getSitesMessages(await getLocale());
- return {
- title: ides.title,
- description: ides.description,
- alternates: { canonical: "https://ides.progmasoft.com/" },
- };
-}
-
-/** ides.progmasoft.com: the development environments of Progmasoft. */
-export default async function IdesPage() {
- const locale = await getLocale();
- const { ides } = getSitesMessages(locale);
- const xide = getCatalogMessages(locale).products.xide;
- return (
- <div className="pm-page">
- <SiteHeader locale={locale} />
- <main>
- <section className="pm-hero">
- <div className="pm-shell pm-product-hero">
- <h1>{ides.title}</h1>
- <p className="pm-lede">{ides.description}</p>
- </div>
- </section>
- <section className="pm-section">
- <div className="pm-shell pm-product-grid">
- <a className="pm-card pm-product-card" href="/xide">
- <span className={`pm-accent pm-accent-${products.xide.accent}`} />
- <span className="pm-tag">{xide.category}</span>
- <h3>{products.xide.name}</h3>
- <p>{xide.tagline}</p>
- <span className="pm-more">
- {ides.open} {forwardArrow(locale)}
- </span>
- </a>
- </div>
- </section>
- </main>
- <Footer locale={locale} />
- </div>
- );
-}
diff --git a/apps/web/app/ides/xide/page.tsx b/apps/web/app/ides/xide/page.tsx
deleted file mode 100644
index 86022e0..0000000
--- a/apps/web/app/ides/xide/page.tsx
+++ /dev/null
@@ -1,93 +0,0 @@
-// SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com>
-// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1
-
-import type { Metadata } from "next";
-import { Footer } from "@/components/Footer";
-import { SiteHeader } from "@/components/SiteHeader";
-import { getLocale } from "@/lib/locale.server";
-import { products } from "@/lib/products";
-import { getSitesMessages } from "@/lib/product-sites";
-
-export async function generateMetadata(): Promise<Metadata> {
- const { xide } = getSitesMessages(await getLocale());
- return {
- title: `Xide · ${xide.tagline}`,
- description: xide.description,
- alternates: { canonical: "https://ides.progmasoft.com/xide" },
- };
-}
-
-/** ides.progmasoft.com/xide: the site of Xide. */
-export default async function XidePage() {
- const locale = await getLocale();
- const { xide, common } = getSitesMessages(locale);
- return (
- <div className="pm-page">
- <SiteHeader locale={locale} />
- <main>
- <section className="pm-hero">
- <div className="pm-shell pm-hero-inner">
- <div>
- <p className="eyebrow">{xide.eyebrow}</p>
- <h1>
- Xide <span>{xide.tagline}</span>
- </h1>
- <p className="pm-lede">{xide.description}</p>
- <div className="pm-actions">
- <a className="button" href={products.xide.source}>
- {common.source}
- </a>
- <a
- className="button button-secondary"
- href="https://product.progmasoft.com/xide"
- >
- {common.productPage}
- </a>
- </div>
- </div>
- <aside className="pm-aside">
- <span className="pm-tag">{common.status}</span>
- <p>{xide.status}</p>
- </aside>
- </div>
- </section>
-
- <section className="pm-section">
- <div className="pm-shell">
- <div className="pm-heading">
- <h2>{xide.layoutTitle}</h2>
- </div>
- <div className="pm-bento">
- {xide.layout.map(([title, description]) => (
- <article className="pm-card" key={title}>
- <h3>{title}</h3>
- <p>{description}</p>
- </article>
- ))}
- </div>
- </div>
- </section>
-
- <section className="pm-section pm-section-muted">
- <div className="pm-shell pm-detail">
- <div className="pm-heading">
- <h2>{xide.languagesTitle}</h2>
- <p>{xide.languagesDescription}</p>
- </div>
- <div>
- <div className="pm-heading">
- <h2>{xide.architectureTitle}</h2>
- </div>
- <ul className="pm-features">
- {xide.architecture.map((item) => (
- <li key={item}>{item}</li>
- ))}
- </ul>
- </div>
- </div>
- </section>
- </main>
- <Footer locale={locale} />
- </div>
- );
-}