aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/docs/src/components/Features/index.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/docs/src/components/Features/index.tsx')
-rw-r--r--subprojects/docs/src/components/Features/index.tsx114
1 files changed, 114 insertions, 0 deletions
diff --git a/subprojects/docs/src/components/Features/index.tsx b/subprojects/docs/src/components/Features/index.tsx
new file mode 100644
index 00000000..57012725
--- /dev/null
+++ b/subprojects/docs/src/components/Features/index.tsx
@@ -0,0 +1,114 @@
1/*
2 * SPDX-FileCopyrightText: 2024 The Refinery Authors
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6
7import clsx from 'clsx';
8
9import Fi1 from './fi1.svg';
10import Fi2 from './fi2.svg';
11import Fi3 from './fi3.svg';
12import Fi4 from './fi4.svg';
13import Fi5 from './fi5.svg';
14import styles from './index.module.css';
15
16function Feature({
17 icon,
18 title,
19 offset,
20 even,
21 children,
22}: {
23 icon: React.ReactNode;
24 title: string;
25 offset?: number;
26 even?: boolean;
27 children: React.ReactNode;
28}) {
29 return (
30 <div
31 className={clsx(
32 'col',
33 'col--4',
34 { [`col--offset-${offset}`]: offset !== undefined },
35 styles['feature__container'],
36 )}
37 >
38 <div
39 className={clsx(styles['feature'], {
40 [styles['feature--even']!]: even,
41 })}
42 >
43 <div className={styles['feature__icon']}>{icon}</div>
44 <div className={styles['feature__contents']}>
45 <h3 className={styles['feature__title']}>{title}</h3>
46 <p className={styles['feature__text']}>{children}</p>
47 </div>
48 </div>
49 </div>
50 );
51}
52
53Feature.defaultProps = {
54 offset: undefined,
55 even: false,
56};
57
58export default function Features() {
59 return (
60 <div className="container">
61 <svg xmlns="ttp://www.w3.org/2000/svg" className={styles['lg']}>
62 <defs>
63 <linearGradient
64 id="fi-lg"
65 x1="0"
66 y1="0"
67 x2="0"
68 y2="366"
69 gradientUnits="userSpaceOnUse"
70 >
71 <stop offset="0%" className={styles['lg__start']} />
72 <stop offset="100%" className={styles['lg__end']} />
73 </linearGradient>
74 </defs>
75 </svg>
76 <h2 className="sr-only">Features</h2>
77 <div className="row">
78 <Feature icon={<Fi1 />} title="Diverse graph generation">
79 Refinery provides a framework for the automated generation of graphs.
80 </Feature>
81 <Feature icon={<Fi2 />} title="Model with uncertainty" even>
82 Partial modeling allows us to explicitly represent unknown or
83 uncertain knowledge in our models. The Refinery framework enables us
84 to explore design alternatives systematically.
85 </Feature>
86 <Feature icon={<Fi3 />} title="Formal logic reasoning">
87 Refinery combines the mathematical precision of formal logic
88 structures with the expressiveness of graph-based models. Underlying
89 solver algorithms ensure formal correctness and completeness of
90 generation processes.
91 </Feature>
92 </div>
93 <div className="row">
94 <Feature
95 icon={<Fi4 />}
96 title="Advanced web-based editor"
97 offset={2}
98 even
99 >
100 Designers are supported with state-of-the-art web-based editors with
101 advanced IDE features and visualization techniques. The framework can
102 be applied as a simple command-line interface program or deployed on
103 the cloud.
104 </Feature>
105 <Feature icon={<Fi5 />} title="Powerful graph algorithms">
106 Refinery is equipped with powerful algorithms such as incremental
107 query evaluation, efficient graph isomorphism checking, and
108 version-controlled data structures to solve various modeling and graph
109 processing problems.
110 </Feature>
111 </div>
112 </div>
113 );
114}