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

summaryrefslogtreecommitdiffhomepage
path: root/apps/web/components/site/AreaIcon.tsx
blob: 2a1f594eda63c170a481d93325e407e169e41a2b (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
// SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com>
// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1

/** The areas of the Progmasoft technology pool, in the order the home page lists them. */
export const areaKinds = [
  "languages",
  "build",
  "tools",
  "quality",
  "identity",
  "infrastructure",
] as const;
export type AreaKind = (typeof areaKinds)[number];

const paths: Record<AreaKind, string> = {
  // Angle brackets around a slash: source code.
  languages: "M8 7 3 12l5 5M16 7l5 5-5 5M14 4l-4 16",
  // Stacked boxes: packages.
  build: "M4 8l8-4 8 4-8 4-8-4Zm0 0v8l8 4 8-4V8M12 12v8",
  // A wrench.
  tools:
    "M14.5 4.5a4 4 0 0 0-5 5L4 15l5 5 5.5-5.5a4 4 0 0 0 5-5l-2.5 2.5-3-.5-.5-3 3-3Z",
  // A check inside a shield.
  quality: "M12 3l7 3v5c0 5-3 8-7 10-4-2-7-5-7-10V6l7-3Zm-3 9 2 2 4-4",
  // A key.
  identity: "M15 9a4 4 0 1 1-8 0 4 4 0 0 1 8 0Zm-1 3 7 7m-3-3 2-2m-4 0 2-2",
  // Three stacked servers.
  infrastructure:
    "M4 4h16v5H4V4Zm0 6h16v5H4v-5Zm0 6h16v4H4v-4ZM7 6.5h.01M7 12.5h.01M7 18h.01",
};

/** A line icon for an area of the technology pool. */
export function AreaIcon({ kind }: { kind: AreaKind }) {
  return (
    <svg
      viewBox="0 0 24 24"
      width="24"
      height="24"
      fill="none"
      stroke="currentColor"
      strokeWidth="1.7"
      strokeLinecap="round"
      strokeLinejoin="round"
      aria-hidden="true"
    >
      <path d={paths[kind]} />
    </svg>
  );
}