aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/docs/src/components/Features/index.tsx
blob: 570127256bf62bea6e74a1e474d6a5e92e29c17b (plain) (blame)
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
/*
 * SPDX-FileCopyrightText: 2024 The Refinery Authors
 *
 * SPDX-License-Identifier: EPL-2.0
 */

import clsx from 'clsx';

import Fi1 from './fi1.svg';
import Fi2 from './fi2.svg';
import Fi3 from './fi3.svg';
import Fi4 from './fi4.svg';
import Fi5 from './fi5.svg';
import styles from './index.module.css';

function Feature({
  icon,
  title,
  offset,
  even,
  children,
}: {
  icon: React.ReactNode;
  title: string;
  offset?: number;
  even?: boolean;
  children: React.ReactNode;
}) {
  return (
    <div
      className={clsx(
        'col',
        'col--4',
        { [`col--offset-${offset}`]: offset !== undefined },
        styles['feature__container'],
      )}
    >
      <div
        className={clsx(styles['feature'], {
          [styles['feature--even']!]: even,
        })}
      >
        <div className={styles['feature__icon']}>{icon}</div>
        <div className={styles['feature__contents']}>
          <h3 className={styles['feature__title']}>{title}</h3>
          <p className={styles['feature__text']}>{children}</p>
        </div>
      </div>
    </div>
  );
}

Feature.defaultProps = {
  offset: undefined,
  even: false,
};

export default function Features() {
  return (
    <div className="container">
      <svg xmlns="ttp://www.w3.org/2000/svg" className={styles['lg']}>
        <defs>
          <linearGradient
            id="fi-lg"
            x1="0"
            y1="0"
            x2="0"
            y2="366"
            gradientUnits="userSpaceOnUse"
          >
            <stop offset="0%" className={styles['lg__start']} />
            <stop offset="100%" className={styles['lg__end']} />
          </linearGradient>
        </defs>
      </svg>
      <h2 className="sr-only">Features</h2>
      <div className="row">
        <Feature icon={<Fi1 />} title="Diverse graph generation">
          Refinery provides a framework for the automated generation of graphs.
        </Feature>
        <Feature icon={<Fi2 />} title="Model with uncertainty" even>
          Partial modeling allows us to explicitly represent unknown or
          uncertain knowledge in our models. The Refinery framework enables us
          to explore design alternatives systematically.
        </Feature>
        <Feature icon={<Fi3 />} title="Formal logic reasoning">
          Refinery combines the mathematical precision of formal logic
          structures with the expressiveness of graph-based models. Underlying
          solver algorithms ensure formal correctness and completeness of
          generation processes.
        </Feature>
      </div>
      <div className="row">
        <Feature
          icon={<Fi4 />}
          title="Advanced web-based editor"
          offset={2}
          even
        >
          Designers are supported with state-of-the-art web-based editors with
          advanced IDE features and visualization techniques. The framework can
          be applied as a simple command-line interface program or deployed on
          the cloud.
        </Feature>
        <Feature icon={<Fi5 />} title="Powerful graph algorithms">
          Refinery is equipped with powerful algorithms such as incremental
          query evaluation, efficient graph isomorphism checking, and
          version-controlled data structures to solve various modeling and graph
          processing problems.
        </Feature>
      </div>
    </div>
  );
}