1
1
import React from 'react' ;
2
- import LandingSection from '../../landing/LandingSection' ;
3
- import LandingHeader from '../../landing/LandingHeader' ;
4
- import Footer from '../../landing/Footer' ;
5
- import { ArrowRight , PlusSquareIcon , CopyIcon , ArrowLeftCircleIcon , ListIcon , RefreshCcwIcon , DeleteIcon } from 'lucide-react' ;
6
- import LayoutProvider from '@theme/Layout/Provider' ;
7
- import { Helmet } from 'react-helmet-async' ;
8
- import { useColorMode } from '@docusaurus/theme-common' ;
9
2
10
-
11
- function Screenshot ( { darkScreenshot, lightScreenshot} ) {
12
- const { colorMode } = useColorMode ( ) ;
13
- const screenshot = colorMode === 'dark' ? darkScreenshot :lightScreenshot
14
-
15
- return (
16
- < img
17
- src = { screenshot }
18
- className = "w-full rounded-lg"
19
- />
20
- )
21
- }
3
+ import {
4
+ PlusSquareIcon ,
5
+ CopyIcon ,
6
+ ArrowLeftCircleIcon ,
7
+ ListIcon ,
8
+ RefreshCcwIcon ,
9
+ DeleteIcon
10
+ } from 'lucide-react' ;
11
+ import Solution from '../../components/Solutions' ;
22
12
23
13
export default function Content ( ) {
24
14
const color = '#E9B13D' ;
25
- const name = " Airtable"
26
- const website = " https://www.airtable.com/"
15
+ const name = ' Airtable' ;
16
+ const website = ' https://www.airtable.com/' ;
27
17
const windmill_color = '#4E80EE' ;
28
18
29
19
const data = {
30
20
title : `Build internal tools with ${ name } ` ,
31
21
subtitle : `Windmill unlocks your creation of internal tools with ${ name } . From scripts, build admin panels, BI dashboards, workflows, and more.` ,
32
22
description : (
33
- < div className = "flex flex-col gap-4" >
34
- < p >
35
- < a href = { website } target = "_blank" >
36
- < strong > < span style = { { color } } > { name } </ span > </ strong >
37
- </ a > is a comprehensive inbound marketing, sales, and CRM platform.
38
- </ p >
39
- < p > Connecting Windmill to < span > { name } </ span > takes a few seconds and lets you build internal tools from it and integrate with any other platform.</ p >
40
- < p > From scripts supported in multiple languages, build UIs and flows that you can monitor and trigger on demand, by schedule or webhooks.</ p >
41
- </ div >
23
+ < div className = "flex flex-col gap-4" >
24
+ < p >
25
+ < a href = { website } target = "_blank" >
26
+ < strong >
27
+ < span style = { { color } } > { name } </ span >
28
+ </ strong >
29
+ </ a > { ' ' }
30
+ is a comprehensive inbound marketing, sales, and CRM platform.
31
+ </ p >
32
+ < p >
33
+ Connecting Windmill to < span > { name } </ span > takes a few seconds and lets you build
34
+ internal tools from it and integrate with any other platform.
35
+ </ p >
36
+ < p >
37
+ From scripts supported in multiple languages, build UIs and flows that you can monitor and
38
+ trigger on demand, by schedule or webhooks.
39
+ </ p >
40
+ </ div >
42
41
) ,
43
42
darkScreenshot : '/integrations/solutions_dark.png' ,
44
43
lightScreenshot : '/integrations/solutions_light.png' ,
45
44
documentationLink : 'https://docs.windmillui.com/' ,
46
- message_postgres : (
47
- < div className = "flex flex-col gap-4" >
48
- < p > Windmill also supports < a href = "/docs/getting_started/scripts_quickstart/sql" target = "_blank" >
49
- < strong > < span style = { { windmill_color } } > PostgreSQL</ span > </ strong >
50
- </ a > as a language. For
51
- < span > { name } </ span > , this means you can connect your database via the Postgres protocol and execute any SQL query from your internal tools.
52
- </ p >
53
- </ div >
54
- ) ,
45
+
55
46
integrations_sub_title : `Write any script, flow or app targeting ${ name } API, or pick them from WindmillHub community library.` ,
56
47
hubIntegrations : [
57
48
{
58
49
title : 'Create Single Record' ,
59
50
link : 'https://hub.windmill.dev/scripts/airtable/302/create-single-record-airtable' ,
60
- description : " Add a new record to an Airtable base." ,
51
+ description : ' Add a new record to an Airtable base.' ,
61
52
icon : PlusSquareIcon
62
53
} ,
63
54
{
64
55
title : 'Create Multiple Records' ,
65
- description : " Add multiple new records to an Airtable base." ,
56
+ description : ' Add multiple new records to an Airtable base.' ,
66
57
link : 'https://hub.windmill.dev/scripts/airtable/298/create-multiple-records-airtable' ,
67
58
icon : CopyIcon
68
59
} ,
69
60
{
70
61
title : 'Get Record' ,
71
62
link : 'https://hub.windmill.dev/scripts/airtable/303/get-record-airtable' ,
72
- description : " Retrieve a specific record from an Airtable base." ,
63
+ description : ' Retrieve a specific record from an Airtable base.' ,
73
64
icon : ArrowLeftCircleIcon
74
65
} ,
75
66
{
76
67
title : 'List Records' ,
77
68
link : 'https://hub.windmill.dev/scripts/airtable/300/list-records-airtable' ,
78
- description : " List all or specific records from an Airtable base." ,
69
+ description : ' List all or specific records from an Airtable base.' ,
79
70
icon : ListIcon
80
71
} ,
81
72
{
82
73
title : 'Update record' ,
83
74
link : 'https://hub.windmill.dev/scripts/airtable/301/update-record-airtable' ,
84
- description : " Update a specific record in an Airtable base." ,
75
+ description : ' Update a specific record in an Airtable base.' ,
85
76
icon : RefreshCcwIcon
86
77
} ,
87
78
{
88
79
title : 'Delete Record' ,
89
80
link : 'https://hub.windmill.dev/scripts/airtable/304/delete-record-airtable' ,
90
- description : " Remove a record from an Airtable base." ,
81
+ description : ' Remove a record from an Airtable base.' ,
91
82
icon : DeleteIcon
92
- } ,
93
- ]
83
+ }
84
+ ]
94
85
} ;
95
86
96
- return (
97
- < LayoutProvider >
98
- < main >
99
- < Helmet >
100
- < title > { name } | Windmill</ title >
101
- < meta name = { data . title } content = { data . subtitle } />
102
- < meta name = { data . title } content = { data . subtitle } />
103
- </ Helmet >
104
- < LandingHeader />
105
- < LandingSection bgClass = "relative" >
106
- < div className = "max-w-6xl mx-auto px-4 sm:px-6" >
107
- < div className = "py-12 md:py-20" >
108
- < div className = " pb-12 md:pb-20" >
109
- < h1
110
- className = "leading-10 mb-2 !text-4xl text-gray-900 dark:text-white"
111
- style = { {
112
- color : color
113
- } }
114
- >
115
- { data . title }
116
- </ h1 >
117
- < p className = "text-md text-gray-600 dark:text-gray-400" > { data . subtitle } </ p >
118
- </ div >
119
- < div className = "grid grid-cols-2 gap-2" >
120
- < div className = "flex items-start flex-col justify-center gap-6" >
121
- < div className = "text-lg font-normal text-gray-800 dark:text-gray-200" > { data . description } </ div >
122
- < div className = "flex flex-row gap-2" >
123
- < a
124
- type = "button"
125
- tag = "no_follow"
126
- href = "https://app.windmill.dev/user/login"
127
- target = "_blank"
128
- className = "flex items-center gap-2 rounded-md bg-[#4285F4] px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-blue-600 hover:text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
129
- >
130
- Start building with { name }
131
- < ArrowRight className = "" aria-hidden = "true" />
132
- </ a >
133
- < a
134
- type = "button"
135
- href = { `/docs/integrations/${ name } ` }
136
- target = "_blank"
137
- className = "flex items-center gap-2 rounded-md bg-blue-50 px-4 py-2 text-sm font-semibold text-gray-900 hover:text-gray-900 hover:bg-blue-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 "
138
- >
139
- Documentation
140
- < ArrowRight className = "" aria-hidden = "true" />
141
- </ a >
142
- </ div >
143
- </ div >
144
- < div className = "w-full" >
145
- < Screenshot lightScreenshot = { data . lightScreenshot } darkScreenshot = { data . darkScreenshot } />
146
- </ div >
147
- </ div >
148
- </ div >
149
-
150
-
151
- < div className = "py-12 md:py-20" >
152
- < h2 className = "leading-8 mb-8" >
153
- < p > Scripts for
154
- < span style = { { color} } > { name } </ span >
155
- </ p >
156
- < p className = "text-base font-normal text-gray-500 dark:text-gray-400" > { data . integrations_sub_title } </ p >
157
- </ h2 >
158
- < div className = "grid grid-cols-3 gap-8 grid-rows-8" >
159
- { data . hubIntegrations . map ( ( integration ) => (
160
- < div >
161
- < div className = "bg-blue-100 text-blue-900 rounded-full p-2 w-8" >
162
- < integration . icon size = { 16 } />
163
- </ div >
164
- < div className = "font-semibold leading-6 text-sm text-gray-700 dark:text-white" > { integration . title } </ div >
165
- < div className = "text-sm text-gray-700 dark:text-white" > { integration . description } </ div >
166
- < a
167
- type = "button"
168
- href = { integration . link }
169
- target = "_blank"
170
- className = "rounded py-1 text-xs font-semibold text-gray-400 hover:text-blue-800 flex flex-row gap-2 dark:text-gray-400"
171
- >
172
- View on the Hub
173
- < ArrowRight size = { 16 } className = "" aria-hidden = "true" />
174
- </ a >
175
- </ div >
176
- ) ) }
177
- </ div >
178
- </ div >
179
- </ div >
180
- </ LandingSection >
181
- < Footer />
182
- </ main >
183
- </ LayoutProvider >
184
- ) ;
185
- }
87
+ return < Solution data = { data } name = { name } color = { color } /> ;
88
+ }
0 commit comments