create-tina-app 0.1.4 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{examples/tina-tailwind-sidebar-demo/LICENSE → LICENSE} +1 -26
- package/dist/index.js +19 -11
- package/{examples/tina-tailwind-sidebar-demo/next-env.d.ts → dist/util/preRunChecks.d.ts} +1 -3
- package/package.json +11 -10
- package/CHANGELOG.md +0 -38
- package/examples/tina-tailwind-sidebar-demo/.tina/PageTemplate.ts +0 -427
- package/examples/tina-tailwind-sidebar-demo/.tina/ThemeTemplate.ts +0 -42
- package/examples/tina-tailwind-sidebar-demo/.tina/__generated__/_graphql.json +0 -4180
- package/examples/tina-tailwind-sidebar-demo/.tina/__generated__/_lookup.json +0 -68
- package/examples/tina-tailwind-sidebar-demo/.tina/__generated__/_schema.json +0 -851
- package/examples/tina-tailwind-sidebar-demo/.tina/__generated__/config/schema.json +0 -479
- package/examples/tina-tailwind-sidebar-demo/.tina/__generated__/schema.gql +0 -391
- package/examples/tina-tailwind-sidebar-demo/.tina/__generated__/types.ts +0 -520
- package/examples/tina-tailwind-sidebar-demo/.tina/schema.ts +0 -35
- package/examples/tina-tailwind-sidebar-demo/CHANGELOG.md +0 -95
- package/examples/tina-tailwind-sidebar-demo/README.md +0 -10
- package/examples/tina-tailwind-sidebar-demo/components/PageBlocks.tsx +0 -25
- package/examples/tina-tailwind-sidebar-demo/components/actions.js +0 -114
- package/examples/tina-tailwind-sidebar-demo/components/features.tsx +0 -171
- package/examples/tina-tailwind-sidebar-demo/components/footer.tsx +0 -247
- package/examples/tina-tailwind-sidebar-demo/components/hero.js +0 -156
- package/examples/tina-tailwind-sidebar-demo/components/icon.js +0 -264
- package/examples/tina-tailwind-sidebar-demo/components/modal.js +0 -79
- package/examples/tina-tailwind-sidebar-demo/components/nav.tsx +0 -121
- package/examples/tina-tailwind-sidebar-demo/components/section.js +0 -53
- package/examples/tina-tailwind-sidebar-demo/components/testimonial.tsx +0 -87
- package/examples/tina-tailwind-sidebar-demo/components/theme.tsx +0 -81
- package/examples/tina-tailwind-sidebar-demo/components/tina-wrapper.js +0 -85
- package/examples/tina-tailwind-sidebar-demo/content/data/homepage.json +0 -186
- package/examples/tina-tailwind-sidebar-demo/content/theme/NormalTheme.json +0 -5
- package/examples/tina-tailwind-sidebar-demo/graphql.config.js +0 -24
- package/examples/tina-tailwind-sidebar-demo/package.json +0 -41
- package/examples/tina-tailwind-sidebar-demo/pages/_app.js +0 -48
- package/examples/tina-tailwind-sidebar-demo/pages/admin.tsx +0 -26
- package/examples/tina-tailwind-sidebar-demo/pages/index.tsx +0 -186
- package/examples/tina-tailwind-sidebar-demo/postcss.config.js +0 -19
- package/examples/tina-tailwind-sidebar-demo/public/canal.jpg +0 -0
- package/examples/tina-tailwind-sidebar-demo/public/index.html +0 -42
- package/examples/tina-tailwind-sidebar-demo/styles.css +0 -20
- package/examples/tina-tailwind-sidebar-demo/tailwind.config.js +0 -83
- package/examples/tina-tailwind-sidebar-demo/tsconfig.json +0 -19
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
Copyright 2021 Forestry.io Holdings, Inc.
|
|
3
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
you may not use this file except in compliance with the License.
|
|
5
|
-
You may obtain a copy of the License at
|
|
6
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
Unless required by applicable law or agreed to in writing, software
|
|
8
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
9
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
10
|
-
See the License for the specific language governing permissions and
|
|
11
|
-
limitations under the License.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import * as React from 'react'
|
|
15
|
-
import { ThemeContext } from './theme'
|
|
16
|
-
import { BiRightArrowAlt } from 'react-icons/bi'
|
|
17
|
-
|
|
18
|
-
export const Actions = ({ actions }) => {
|
|
19
|
-
const theme = React.useContext(ThemeContext)
|
|
20
|
-
return (
|
|
21
|
-
<div className="w-full">
|
|
22
|
-
<div className="flex flex-wrap items-center -mx-3 -my-2">
|
|
23
|
-
{actions &&
|
|
24
|
-
actions.map(function (action, index) {
|
|
25
|
-
let element = null
|
|
26
|
-
if (action.type === 'button') {
|
|
27
|
-
element = (
|
|
28
|
-
<button
|
|
29
|
-
key={index}
|
|
30
|
-
className={`z-10 relative flex items-center px-7 py-3 mx-3 my-2 font-semibold text-lg transition duration-150 ease-out text-white transition duration-500 ease-in-out ${
|
|
31
|
-
theme?.btnStyle === 'rounded' && `rounded-lg`
|
|
32
|
-
} ${
|
|
33
|
-
theme?.btnStyle === 'round' && `rounded-full`
|
|
34
|
-
} transform bg-${theme.color}-500 hover:bg-${
|
|
35
|
-
theme.color
|
|
36
|
-
}-600 bg-gradient-to-r from-${theme.color}-400 to-${
|
|
37
|
-
theme.color
|
|
38
|
-
}-600 focus:shadow-outline focus:outline-none focus:ring-2 ring-offset-current ring-offset-2 whitespace-nowrap`}
|
|
39
|
-
style={{
|
|
40
|
-
textShadow: '0 2px 5px rgba(0,0,0,0.1)',
|
|
41
|
-
boxShadow: `0 0.5rem 3rem 0px rgba(var(--color-rgb-${theme.color}-600),0.35)`,
|
|
42
|
-
}}
|
|
43
|
-
>
|
|
44
|
-
{action.label}
|
|
45
|
-
{action.icon && (
|
|
46
|
-
<BiRightArrowAlt
|
|
47
|
-
className={`ml-1 -mr-1 w-6 h-6 text-${theme.color}-50`}
|
|
48
|
-
/>
|
|
49
|
-
)}
|
|
50
|
-
</button>
|
|
51
|
-
)
|
|
52
|
-
}
|
|
53
|
-
if (action.type === 'link' || action.type === 'linkExternal') {
|
|
54
|
-
element = (
|
|
55
|
-
<a
|
|
56
|
-
key={index}
|
|
57
|
-
href="#"
|
|
58
|
-
className={`inline-flex items-center font-semibold mx-3 my-2 text-lg transition duration-150 ease-out text-${theme.color}-600 dark:text-${theme.color}-400 hover:text-${theme.color}-400 dark:hover:text-${theme.color}-500`}
|
|
59
|
-
style={{
|
|
60
|
-
textShadow: `0 3px 7px rgba(var(--color-rgb-${theme.color}-400),0.2)`,
|
|
61
|
-
}}
|
|
62
|
-
>
|
|
63
|
-
{action.label}
|
|
64
|
-
{action.icon && (
|
|
65
|
-
<BiRightArrowAlt
|
|
66
|
-
className={`ml-0 mr-0 w-6 h-6 text-${theme.color}-500`}
|
|
67
|
-
/>
|
|
68
|
-
)}
|
|
69
|
-
</a>
|
|
70
|
-
)
|
|
71
|
-
}
|
|
72
|
-
return element
|
|
73
|
-
})}
|
|
74
|
-
</div>
|
|
75
|
-
</div>
|
|
76
|
-
)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export const ACTION_FIELDS = [
|
|
80
|
-
{
|
|
81
|
-
label: 'Actions',
|
|
82
|
-
name: 'actions',
|
|
83
|
-
component: 'group-list',
|
|
84
|
-
itemProps: (item) => ({
|
|
85
|
-
label: item.label,
|
|
86
|
-
}),
|
|
87
|
-
defaultItem: () => ({
|
|
88
|
-
label: 'Action Label',
|
|
89
|
-
type: 'button',
|
|
90
|
-
}),
|
|
91
|
-
fields: [
|
|
92
|
-
{
|
|
93
|
-
label: 'Label',
|
|
94
|
-
name: 'label',
|
|
95
|
-
component: 'text',
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
label: 'Type',
|
|
99
|
-
name: 'type',
|
|
100
|
-
component: 'radio-group',
|
|
101
|
-
variant: 'button',
|
|
102
|
-
options: [
|
|
103
|
-
{ label: 'Button', value: 'button' },
|
|
104
|
-
{ label: 'Link', value: 'link' },
|
|
105
|
-
],
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
label: 'Icon',
|
|
109
|
-
name: 'icon',
|
|
110
|
-
component: 'toggle',
|
|
111
|
-
},
|
|
112
|
-
],
|
|
113
|
-
},
|
|
114
|
-
]
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
Copyright 2021 Forestry.io Holdings, Inc.
|
|
3
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
you may not use this file except in compliance with the License.
|
|
5
|
-
You may obtain a copy of the License at
|
|
6
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
Unless required by applicable law or agreed to in writing, software
|
|
8
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
9
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
10
|
-
See the License for the specific language governing permissions and
|
|
11
|
-
limitations under the License.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import { Icon, ICON_FIELDS } from './icon'
|
|
15
|
-
import { Actions, ACTION_FIELDS } from './actions'
|
|
16
|
-
import { Section, SectionFields } from './section'
|
|
17
|
-
import {
|
|
18
|
-
Features_Data,
|
|
19
|
-
Features_Items_Data,
|
|
20
|
-
} from '../.tina/__generated__/types'
|
|
21
|
-
|
|
22
|
-
export const Feature = (data: Features_Items_Data) => {
|
|
23
|
-
return (
|
|
24
|
-
<div
|
|
25
|
-
className="px-8 py-6 w-full xl:w-auto flex-grow xl:flex-shrink"
|
|
26
|
-
style={{ flexBasis: '22rem' }}
|
|
27
|
-
>
|
|
28
|
-
<div className="max-w-lg">
|
|
29
|
-
<div className={`mb-6 w-auto inline-block`}>
|
|
30
|
-
<Icon icon={data?.icon} />
|
|
31
|
-
</div>
|
|
32
|
-
<h3 className="mb-4 transition duration-150 ease-out text-2xl font-semibold title-font">
|
|
33
|
-
{data?.title}
|
|
34
|
-
</h3>
|
|
35
|
-
<p className="mb-5 transition duration-150 ease-out text-base opacity-80 leading-relaxed">
|
|
36
|
-
{data?.text}
|
|
37
|
-
</p>
|
|
38
|
-
<Actions actions={data?.actions} />
|
|
39
|
-
</div>
|
|
40
|
-
</div>
|
|
41
|
-
)
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export const Features = (props: Features_Data) => {
|
|
45
|
-
return (
|
|
46
|
-
<Section variant={props?.style?.color || 'blue'}>
|
|
47
|
-
<div className="container py-12 lg:py-24 mx-auto">
|
|
48
|
-
<div className="flex flex-wrap text-left">
|
|
49
|
-
{props.items?.map((item, i) => {
|
|
50
|
-
return <Feature key={i} {...item} />
|
|
51
|
-
})}
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
</Section>
|
|
55
|
-
)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export const features_template = {
|
|
59
|
-
label: 'Features',
|
|
60
|
-
defaultItem: {
|
|
61
|
-
items: [
|
|
62
|
-
{
|
|
63
|
-
_template: 'feature',
|
|
64
|
-
icon: {
|
|
65
|
-
color: 'red',
|
|
66
|
-
name: 'BiTrophy',
|
|
67
|
-
style: 'circle',
|
|
68
|
-
},
|
|
69
|
-
title: 'Longer Information 1',
|
|
70
|
-
text: "By eleven o'clock the next day we were well upon our way to the old English capital.",
|
|
71
|
-
actions: [
|
|
72
|
-
{
|
|
73
|
-
label: 'Learn More',
|
|
74
|
-
type: 'link',
|
|
75
|
-
icon: 'true',
|
|
76
|
-
},
|
|
77
|
-
],
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
_template: 'feature',
|
|
81
|
-
icon: {
|
|
82
|
-
color: 'primary',
|
|
83
|
-
name: 'BiPieChartAlt2',
|
|
84
|
-
style: 'circle',
|
|
85
|
-
},
|
|
86
|
-
title: 'Longer Information 2',
|
|
87
|
-
text: 'Connect to any data source, edit with Tina. Designed for the Jamstack with a focus on React-based sites. ',
|
|
88
|
-
actions: [
|
|
89
|
-
{
|
|
90
|
-
label: 'Learn More',
|
|
91
|
-
type: 'link',
|
|
92
|
-
icon: 'true',
|
|
93
|
-
},
|
|
94
|
-
],
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
_template: 'feature',
|
|
98
|
-
icon: {
|
|
99
|
-
color: 'yellow',
|
|
100
|
-
name: 'BiMapAlt',
|
|
101
|
-
style: 'circle',
|
|
102
|
-
},
|
|
103
|
-
title: 'Longer Information 3',
|
|
104
|
-
text: 'Connect to any data source, edit with Tina. Designed for the Jamstack with a focus on React-based sites. ',
|
|
105
|
-
actions: [
|
|
106
|
-
{
|
|
107
|
-
label: 'Learn More',
|
|
108
|
-
type: 'link',
|
|
109
|
-
icon: 'true',
|
|
110
|
-
},
|
|
111
|
-
],
|
|
112
|
-
},
|
|
113
|
-
],
|
|
114
|
-
style: {
|
|
115
|
-
color: 'default',
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
fields: [
|
|
119
|
-
{
|
|
120
|
-
label: 'Features',
|
|
121
|
-
name: 'items',
|
|
122
|
-
component: 'group-list',
|
|
123
|
-
defaultItem: {
|
|
124
|
-
icon: {
|
|
125
|
-
color: 'primary',
|
|
126
|
-
name: '',
|
|
127
|
-
style: 'circle',
|
|
128
|
-
},
|
|
129
|
-
title: 'Feature Heading Text',
|
|
130
|
-
text: 'Connect to any data source, edit with Tina. Designed for the Jamstack with a focus on React-based sites. ',
|
|
131
|
-
actions: [
|
|
132
|
-
{
|
|
133
|
-
label: 'Learn More',
|
|
134
|
-
type: 'link',
|
|
135
|
-
icon: 'true',
|
|
136
|
-
},
|
|
137
|
-
],
|
|
138
|
-
style: {
|
|
139
|
-
color: 'default',
|
|
140
|
-
},
|
|
141
|
-
},
|
|
142
|
-
itemProps: (item) => ({
|
|
143
|
-
label: item.title,
|
|
144
|
-
}),
|
|
145
|
-
fields: [
|
|
146
|
-
...ICON_FIELDS,
|
|
147
|
-
{
|
|
148
|
-
name: 'title',
|
|
149
|
-
label: 'Title',
|
|
150
|
-
component: 'text',
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
name: 'text',
|
|
154
|
-
label: 'Text',
|
|
155
|
-
component: 'text',
|
|
156
|
-
},
|
|
157
|
-
...ACTION_FIELDS,
|
|
158
|
-
],
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
name: 'style',
|
|
162
|
-
label: 'Style',
|
|
163
|
-
component: 'group',
|
|
164
|
-
fields: [...SectionFields],
|
|
165
|
-
},
|
|
166
|
-
],
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
const FEATURE_BLOCKS = {
|
|
170
|
-
feature: Feature,
|
|
171
|
-
}
|
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
Copyright 2021 Forestry.io Holdings, Inc.
|
|
3
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
you may not use this file except in compliance with the License.
|
|
5
|
-
You may obtain a copy of the License at
|
|
6
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
Unless required by applicable law or agreed to in writing, software
|
|
8
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
9
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
10
|
-
See the License for the specific language governing permissions and
|
|
11
|
-
limitations under the License.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import * as React from 'react'
|
|
15
|
-
import { ThemeContext } from './theme'
|
|
16
|
-
import { Blocks } from './PageBlocks'
|
|
17
|
-
import { FaInstagram, FaFacebookF, FaTwitter, FaGithub } from 'react-icons/fa'
|
|
18
|
-
import { Homepage_Footer_Data, Nav_Data } from '../.tina/__generated__/types'
|
|
19
|
-
|
|
20
|
-
export const Footer = ({
|
|
21
|
-
footer,
|
|
22
|
-
name = '',
|
|
23
|
-
navList,
|
|
24
|
-
}: {
|
|
25
|
-
footer: Homepage_Footer_Data
|
|
26
|
-
name: string
|
|
27
|
-
navList: Nav_Data[]
|
|
28
|
-
}) => {
|
|
29
|
-
const theme = React.useContext(ThemeContext)
|
|
30
|
-
|
|
31
|
-
return (
|
|
32
|
-
<footer className="text-white bg-gradient-to-br from-gray-700 to-gray-800 dark:from-gray-900 dark:to-gray-800 body-font">
|
|
33
|
-
<div className="relative">
|
|
34
|
-
<div className="relative container mx-auto flex pt-8 lg:pt-3 z-10">
|
|
35
|
-
<div className="w-full flex flex-col lg:flex-row flex-wrap py-12 px-8">
|
|
36
|
-
<div className="mb-8 lg:mr-48 flex-grow-0 inline-block">
|
|
37
|
-
<a className="">
|
|
38
|
-
<h2 className="text-lg font-bold tracking-tight text-white uppercase transition duration-500 ease-in-out transform hover:text-lightBlack-500">
|
|
39
|
-
{name}
|
|
40
|
-
</h2>
|
|
41
|
-
</a>
|
|
42
|
-
</div>
|
|
43
|
-
<div className="flex-grow flex flex-wrap justify-between -mx-6">
|
|
44
|
-
{navList?.map((item, i) => {
|
|
45
|
-
switch (item.__typename) {
|
|
46
|
-
case 'Nav_Data':
|
|
47
|
-
return <FooterNav key={i} {...item} />
|
|
48
|
-
}
|
|
49
|
-
})}
|
|
50
|
-
{/* <Blocks data={data.navlist} blocks={FOOTER_BLOCKS} /> */}
|
|
51
|
-
</div>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
<div
|
|
55
|
-
className={`overflow-hidden absolute top-0 left-0 w-full h-full flex flex-row justify-center`}
|
|
56
|
-
>
|
|
57
|
-
<span
|
|
58
|
-
className={`absolute opacity-30 w-2/3 h-64 bg-${theme.color}-500 -bottom-48 rounded-t-full`}
|
|
59
|
-
style={{ filter: 'blur(10rem)' }}
|
|
60
|
-
></span>
|
|
61
|
-
</div>
|
|
62
|
-
<div
|
|
63
|
-
className={`relative w-full opacity-90 z-10 bg-gradient-to-r from-gray-800 via-${theme.color}-400 to-gray-800`}
|
|
64
|
-
style={{ height: '3px' }}
|
|
65
|
-
></div>
|
|
66
|
-
<div className="bg-gray-800 dark:bg-gray-900 z-0 relative">
|
|
67
|
-
<div className="container flex flex-col flex-wrap p-7 mx-auto sm:flex-row justify-center">
|
|
68
|
-
<div className="flex justify-center">
|
|
69
|
-
{footer?.social?.facebook && (
|
|
70
|
-
<a
|
|
71
|
-
href={footer.social.facebook}
|
|
72
|
-
target="_blank"
|
|
73
|
-
className="mx-2"
|
|
74
|
-
>
|
|
75
|
-
<FaFacebookF
|
|
76
|
-
className={`h-6 w-auto text-white hover:text-${theme.color}-500`}
|
|
77
|
-
/>
|
|
78
|
-
</a>
|
|
79
|
-
)}
|
|
80
|
-
{footer?.social?.twitter && (
|
|
81
|
-
<a
|
|
82
|
-
href={footer.social.twitter}
|
|
83
|
-
target="_blank"
|
|
84
|
-
className="mx-2"
|
|
85
|
-
>
|
|
86
|
-
<FaTwitter
|
|
87
|
-
className={`h-6 w-auto text-white hover:text-${theme.color}-500`}
|
|
88
|
-
/>
|
|
89
|
-
</a>
|
|
90
|
-
)}
|
|
91
|
-
{footer?.social?.instagram && (
|
|
92
|
-
<a
|
|
93
|
-
href={footer.social.instagram}
|
|
94
|
-
target="_blank"
|
|
95
|
-
className="mx-2"
|
|
96
|
-
>
|
|
97
|
-
<FaInstagram
|
|
98
|
-
className={`h-6 w-auto text-white hover:text-${theme.color}-500`}
|
|
99
|
-
/>
|
|
100
|
-
</a>
|
|
101
|
-
)}
|
|
102
|
-
{footer?.social?.github && (
|
|
103
|
-
<a href={footer.social.github} target="_blank" className="mx-2">
|
|
104
|
-
<FaGithub
|
|
105
|
-
className={`h-6 w-auto text-white hover:text-${theme.color}-500`}
|
|
106
|
-
/>
|
|
107
|
-
</a>
|
|
108
|
-
)}
|
|
109
|
-
</div>
|
|
110
|
-
</div>
|
|
111
|
-
</div>
|
|
112
|
-
</div>
|
|
113
|
-
</footer>
|
|
114
|
-
)
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
export const FooterNav = (data: Nav_Data) => {
|
|
118
|
-
const theme = React.useContext(ThemeContext)
|
|
119
|
-
|
|
120
|
-
return (
|
|
121
|
-
<div className="flex-grow px-6">
|
|
122
|
-
<h3
|
|
123
|
-
className={`mb-3 text-sm font-semibold tracking-widest text-${theme.color}-400 uppercase title-font`}
|
|
124
|
-
style={{
|
|
125
|
-
textShadow: `0 1px 3px rgba(var(--color-rgb-${theme.color}-600),0.3)`,
|
|
126
|
-
}}
|
|
127
|
-
>
|
|
128
|
-
{data.title}
|
|
129
|
-
</h3>
|
|
130
|
-
<nav className="pb-8 list-none">
|
|
131
|
-
{data.items &&
|
|
132
|
-
data.items.map(function (item, index) {
|
|
133
|
-
return (
|
|
134
|
-
<li key={index}>
|
|
135
|
-
<a
|
|
136
|
-
href={item?.link || ''}
|
|
137
|
-
className="text-sm text-gray-200 hover:text-white"
|
|
138
|
-
>
|
|
139
|
-
{item?.label || ''}
|
|
140
|
-
</a>
|
|
141
|
-
</li>
|
|
142
|
-
)
|
|
143
|
-
})}
|
|
144
|
-
</nav>
|
|
145
|
-
</div>
|
|
146
|
-
)
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export const footer_nav_template = {
|
|
150
|
-
label: 'Footer Nav',
|
|
151
|
-
defaultItem: {
|
|
152
|
-
title: 'Product',
|
|
153
|
-
items: [
|
|
154
|
-
{
|
|
155
|
-
label: 'Form Templates',
|
|
156
|
-
link: '#',
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
label: 'Landing Page',
|
|
160
|
-
link: '#',
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
label: 'Figma Files',
|
|
164
|
-
link: '#',
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
label: 'Background Info',
|
|
168
|
-
link: '#',
|
|
169
|
-
},
|
|
170
|
-
],
|
|
171
|
-
},
|
|
172
|
-
itemProps: (item) => ({
|
|
173
|
-
label: item.title,
|
|
174
|
-
}),
|
|
175
|
-
fields: [
|
|
176
|
-
{
|
|
177
|
-
name: 'title',
|
|
178
|
-
label: 'Title',
|
|
179
|
-
component: 'text',
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
name: 'items',
|
|
183
|
-
label: 'Nav Items',
|
|
184
|
-
component: 'group-list',
|
|
185
|
-
itemProps: (item) => ({
|
|
186
|
-
label: item.label,
|
|
187
|
-
}),
|
|
188
|
-
fields: [
|
|
189
|
-
{
|
|
190
|
-
name: 'label',
|
|
191
|
-
label: 'Label',
|
|
192
|
-
component: 'text',
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
name: 'link',
|
|
196
|
-
label: 'Link',
|
|
197
|
-
component: 'text',
|
|
198
|
-
},
|
|
199
|
-
],
|
|
200
|
-
},
|
|
201
|
-
],
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
const FOOTER_BLOCKS = {
|
|
205
|
-
nav: FooterNav,
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
export const FOOTER_FIELDS = [
|
|
209
|
-
{
|
|
210
|
-
label: 'Nav List',
|
|
211
|
-
name: 'navlist',
|
|
212
|
-
component: 'blocks',
|
|
213
|
-
itemProps: (item) => ({
|
|
214
|
-
label: item.title,
|
|
215
|
-
}),
|
|
216
|
-
templates: {
|
|
217
|
-
nav: footer_nav_template,
|
|
218
|
-
},
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
name: 'social',
|
|
222
|
-
label: 'Social Media',
|
|
223
|
-
component: 'group',
|
|
224
|
-
fields: [
|
|
225
|
-
{
|
|
226
|
-
name: 'facebook',
|
|
227
|
-
label: 'Facebook',
|
|
228
|
-
component: 'text',
|
|
229
|
-
},
|
|
230
|
-
{
|
|
231
|
-
name: 'twitter',
|
|
232
|
-
label: 'Twitter',
|
|
233
|
-
component: 'text',
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
name: 'instagram',
|
|
237
|
-
label: 'Instagram',
|
|
238
|
-
component: 'text',
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
name: 'github',
|
|
242
|
-
label: 'Github',
|
|
243
|
-
component: 'text',
|
|
244
|
-
},
|
|
245
|
-
],
|
|
246
|
-
},
|
|
247
|
-
]
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
Copyright 2021 Forestry.io Holdings, Inc.
|
|
3
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
you may not use this file except in compliance with the License.
|
|
5
|
-
You may obtain a copy of the License at
|
|
6
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
Unless required by applicable law or agreed to in writing, software
|
|
8
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
9
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
10
|
-
See the License for the specific language governing permissions and
|
|
11
|
-
limitations under the License.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import * as React from 'react'
|
|
15
|
-
import { ThemeContext } from './theme'
|
|
16
|
-
import { ACTION_FIELDS, Actions } from './actions'
|
|
17
|
-
import { Section, SectionFields } from './section'
|
|
18
|
-
|
|
19
|
-
export const Hero = (data) => {
|
|
20
|
-
const theme = React.useContext(ThemeContext)
|
|
21
|
-
|
|
22
|
-
return (
|
|
23
|
-
<Section variant={data?.style?.color || 'blue'}>
|
|
24
|
-
<div className="w-full pt-20 lg:py-56 lg:text-left">
|
|
25
|
-
<div className="px-8 pb-20 lg:pb-0 lg:w-1/2 lg:px-12">
|
|
26
|
-
<div className="max-w-3xl mx-auto">
|
|
27
|
-
<h2 className="w-full mb-5 text-md font-bold tracking-wide title-font">
|
|
28
|
-
{data.tagline}
|
|
29
|
-
</h2>
|
|
30
|
-
<h3
|
|
31
|
-
className={`w-full relative mb-6 text-5xl font-extrabold tracking-normal text-left title-font`}
|
|
32
|
-
>
|
|
33
|
-
{data.style?.color === 'primary' ? (
|
|
34
|
-
<span
|
|
35
|
-
className={`bg-clip-text text-transparent bg-gradient-to-r from-gray-600 to-gray-800`}
|
|
36
|
-
style={{
|
|
37
|
-
textShadow: `0 0.5rem 3rem rgba(var(--color-rgb-${theme.color}-600),0.35)`,
|
|
38
|
-
boxDecorationBreak: 'clone',
|
|
39
|
-
WebkitBoxDecorationBreak: 'clone',
|
|
40
|
-
}}
|
|
41
|
-
>
|
|
42
|
-
{data.headline}
|
|
43
|
-
</span>
|
|
44
|
-
) : (
|
|
45
|
-
<span
|
|
46
|
-
className={`bg-clip-text text-transparent bg-gradient-to-r from-${theme.color}-400 to-${theme.color}-600`}
|
|
47
|
-
style={{
|
|
48
|
-
textShadow: `0 0.5rem 3rem rgba(var(--color-rgb-${theme.color}-600),0.35)`,
|
|
49
|
-
boxDecorationBreak: 'clone',
|
|
50
|
-
WebkitBoxDecorationBreak: 'clone',
|
|
51
|
-
}}
|
|
52
|
-
>
|
|
53
|
-
{data.headline}
|
|
54
|
-
</span>
|
|
55
|
-
)}
|
|
56
|
-
</h3>
|
|
57
|
-
<p className="w-full max-w-xl mb-8 opacity-80 transition duration-150 ease-out text-left text-lg leading-relaxed lg:text-xl lg:leading-relaxed">
|
|
58
|
-
{data.paragraph}
|
|
59
|
-
</p>
|
|
60
|
-
<Actions actions={data.actions} />
|
|
61
|
-
</div>
|
|
62
|
-
</div>
|
|
63
|
-
<div className="relative w-full h-auto lg:absolute lg:inset-y-0 lg:right-0 lg:w-1/2 lg:h-full">
|
|
64
|
-
{data?.image && (
|
|
65
|
-
<img
|
|
66
|
-
className="lg:absolute lg:inset-0 w-full h-auto max-h-96 md:max-h-128 lg:max-h-full lg:h-full object-cover"
|
|
67
|
-
alt={data.image.alt}
|
|
68
|
-
src={data.image.src}
|
|
69
|
-
/>
|
|
70
|
-
)}
|
|
71
|
-
</div>
|
|
72
|
-
</div>
|
|
73
|
-
</Section>
|
|
74
|
-
)
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export const IMAGE_FIELDS = [
|
|
78
|
-
{
|
|
79
|
-
name: 'src',
|
|
80
|
-
label: 'Image Source',
|
|
81
|
-
component: 'text',
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
name: 'alt',
|
|
85
|
-
label: 'Alt Text',
|
|
86
|
-
component: 'text',
|
|
87
|
-
},
|
|
88
|
-
]
|
|
89
|
-
|
|
90
|
-
export const hero_template = {
|
|
91
|
-
label: 'Hero',
|
|
92
|
-
defaultItem: {
|
|
93
|
-
tagline: 'TAGLINE ABOVE TEXT',
|
|
94
|
-
headline: 'This is a large display heading.',
|
|
95
|
-
text: 'Give your team a contextual, intuitive editing experience without sacrificing code quality.',
|
|
96
|
-
image: {
|
|
97
|
-
src: '/canal.jpg',
|
|
98
|
-
alt: 'Photo from Unsplash',
|
|
99
|
-
},
|
|
100
|
-
actions: [
|
|
101
|
-
{
|
|
102
|
-
label: 'Primary Action',
|
|
103
|
-
type: 'button',
|
|
104
|
-
icon: 'true',
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
label: 'Learn More',
|
|
108
|
-
type: 'link',
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
style: {
|
|
112
|
-
color: 'tint',
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
fields: [
|
|
116
|
-
{
|
|
117
|
-
name: '',
|
|
118
|
-
label: 'Text',
|
|
119
|
-
component: 'group',
|
|
120
|
-
fields: [...SectionFields],
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
name: 'image',
|
|
124
|
-
label: 'Image',
|
|
125
|
-
component: 'group',
|
|
126
|
-
fields: IMAGE_FIELDS,
|
|
127
|
-
},
|
|
128
|
-
...ACTION_FIELDS,
|
|
129
|
-
{
|
|
130
|
-
name: 'style',
|
|
131
|
-
label: 'Style',
|
|
132
|
-
component: 'group',
|
|
133
|
-
fields: [
|
|
134
|
-
{
|
|
135
|
-
name: 'color',
|
|
136
|
-
label: 'Color',
|
|
137
|
-
component: 'select',
|
|
138
|
-
options: [
|
|
139
|
-
{
|
|
140
|
-
label: 'Default',
|
|
141
|
-
value: 'default',
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
label: 'Tint',
|
|
145
|
-
value: 'tint',
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
label: 'Primary',
|
|
149
|
-
value: 'primary',
|
|
150
|
-
},
|
|
151
|
-
],
|
|
152
|
-
},
|
|
153
|
-
],
|
|
154
|
-
},
|
|
155
|
-
],
|
|
156
|
-
}
|